mirror of https://github.com/GNOME/gimp.git
Multi-line comments, a little more sanity-checking.
Sat Jan 23 18:43:23 GMT 1999 Adam D. Moss <adam@gimp.org> * plug-ins/gif/gif.c: Multi-line comments, a little more sanity-checking. * app/convert.c: Cosmetic changes to the warning about having too many colours for saving transparent/animated GIFs. * app/gdisplay.c: Titlebar is correctly updated upon revert. * app/paint_funcs.c: Minor improvement. * docs/parasites.txt: Minor amendments. * plug-ins/jpeg/jpeg.c: Minor code comment amendments.
This commit is contained in:
parent
74fae96949
commit
176ea8da52
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
|||
Sat Jan 23 18:43:23 GMT 1999 Adam D. Moss <adam@gimp.org>
|
||||
|
||||
* plug-ins/gif/gif.c: Multi-line comments, a little more
|
||||
sanity-checking.
|
||||
|
||||
* app/convert.c: Cosmetic changes to the warning about having
|
||||
too many colours for saving transparent/animated GIFs.
|
||||
|
||||
* app/gdisplay.c: Titlebar is correctly updated upon revert.
|
||||
|
||||
* app/paint_funcs.c: Minor improvement.
|
||||
|
||||
* docs/parasites.txt: Minor amendments.
|
||||
|
||||
* plug-ins/jpeg/jpeg.c: Minor code comment amendments.
|
||||
|
||||
1999-01-22 Jay Cox <jaycox@earthlink.net>
|
||||
|
||||
* app/pixel_region.c, app/pixel_region.h: new function
|
||||
|
|
|
@ -284,6 +284,7 @@ static ActionAreaItem action_items[] =
|
|||
{ N_("Cancel"), indexed_cancel_callback, NULL, NULL }
|
||||
};
|
||||
|
||||
/*
|
||||
static void
|
||||
realize_text (GtkWidget *text, gpointer data)
|
||||
{
|
||||
|
@ -295,6 +296,7 @@ realize_text (GtkWidget *text, gpointer data)
|
|||
|
||||
gtk_text_thaw (GTK_TEXT (text));
|
||||
}
|
||||
*/
|
||||
|
||||
void
|
||||
convert_to_indexed (GimpImage *gimage)
|
||||
|
@ -302,12 +304,10 @@ convert_to_indexed (GimpImage *gimage)
|
|||
IndexedDialog *dialog;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *table;
|
||||
GtkWidget *label;
|
||||
GtkWidget *text;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *toggle;
|
||||
GtkWidget *scrollbar;
|
||||
GSList *group = NULL;
|
||||
|
||||
dialog = g_new(IndexedDialog, 1);
|
||||
|
@ -510,6 +510,14 @@ convert_to_indexed (GimpImage *gimage)
|
|||
gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog->shell)->vbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
label = gtk_label_new ("You are attempting to convert an image with alpha/layers from RGB/GRAY to INDEXED.\n"
|
||||
"\tYou should not generate a palette of more than 255 colors if you intend to create a transparent or animated GIF file from this image.");
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_FILL);
|
||||
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
|
||||
gtk_container_add (GTK_CONTAINER (frame), label);
|
||||
gtk_widget_show(label);
|
||||
|
||||
/*
|
||||
table = gtk_table_new (2, 1, FALSE);
|
||||
{
|
||||
gtk_container_set_border_width (GTK_CONTAINER (table), 1);
|
||||
|
@ -534,6 +542,7 @@ convert_to_indexed (GimpImage *gimage)
|
|||
gtk_widget_show (scrollbar);
|
||||
}
|
||||
gtk_widget_show(table);
|
||||
*/
|
||||
}
|
||||
gtk_widget_show(frame);
|
||||
}
|
||||
|
|
|
@ -284,6 +284,7 @@ static ActionAreaItem action_items[] =
|
|||
{ N_("Cancel"), indexed_cancel_callback, NULL, NULL }
|
||||
};
|
||||
|
||||
/*
|
||||
static void
|
||||
realize_text (GtkWidget *text, gpointer data)
|
||||
{
|
||||
|
@ -295,6 +296,7 @@ realize_text (GtkWidget *text, gpointer data)
|
|||
|
||||
gtk_text_thaw (GTK_TEXT (text));
|
||||
}
|
||||
*/
|
||||
|
||||
void
|
||||
convert_to_indexed (GimpImage *gimage)
|
||||
|
@ -302,12 +304,10 @@ convert_to_indexed (GimpImage *gimage)
|
|||
IndexedDialog *dialog;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *table;
|
||||
GtkWidget *label;
|
||||
GtkWidget *text;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *toggle;
|
||||
GtkWidget *scrollbar;
|
||||
GSList *group = NULL;
|
||||
|
||||
dialog = g_new(IndexedDialog, 1);
|
||||
|
@ -510,6 +510,14 @@ convert_to_indexed (GimpImage *gimage)
|
|||
gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog->shell)->vbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
label = gtk_label_new ("You are attempting to convert an image with alpha/layers from RGB/GRAY to INDEXED.\n"
|
||||
"\tYou should not generate a palette of more than 255 colors if you intend to create a transparent or animated GIF file from this image.");
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_FILL);
|
||||
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
|
||||
gtk_container_add (GTK_CONTAINER (frame), label);
|
||||
gtk_widget_show(label);
|
||||
|
||||
/*
|
||||
table = gtk_table_new (2, 1, FALSE);
|
||||
{
|
||||
gtk_container_set_border_width (GTK_CONTAINER (table), 1);
|
||||
|
@ -534,6 +542,7 @@ convert_to_indexed (GimpImage *gimage)
|
|||
gtk_widget_show (scrollbar);
|
||||
}
|
||||
gtk_widget_show(table);
|
||||
*/
|
||||
}
|
||||
gtk_widget_show(frame);
|
||||
}
|
||||
|
|
|
@ -1363,7 +1363,7 @@ gdisplay_remove_override_cursor (GDisplay *gdisp)
|
|||
}
|
||||
else
|
||||
{
|
||||
g_warning ("Tried to remove override-cursor from un-overridden gdisp.");
|
||||
/* g_warning ("Tried to remove override-cursor from un-overridden gdisp."); */
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1913,8 +1913,6 @@ gdisplay_reconnect (GDisplay *gdisp, GimpImage *gimage)
|
|||
|
||||
gimage_delete (gdisp->gimage);
|
||||
|
||||
gdisplay_format_title (gimage, title);
|
||||
|
||||
instance = gimage->instance_count;
|
||||
gimage->instance_count++;
|
||||
gimage->ref_count++;
|
||||
|
@ -1922,6 +1920,9 @@ gdisplay_reconnect (GDisplay *gdisp, GimpImage *gimage)
|
|||
gdisp->gimage = gimage;
|
||||
gdisp->instance = instance;
|
||||
|
||||
gdisplay_format_title (gimage, title);
|
||||
gdisplays_update_title (gimage);
|
||||
|
||||
gdisplay_expose_full (gdisp);
|
||||
gdisplay_flush (gdisp);
|
||||
}
|
||||
|
|
|
@ -1363,7 +1363,7 @@ gdisplay_remove_override_cursor (GDisplay *gdisp)
|
|||
}
|
||||
else
|
||||
{
|
||||
g_warning ("Tried to remove override-cursor from un-overridden gdisp.");
|
||||
/* g_warning ("Tried to remove override-cursor from un-overridden gdisp."); */
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1913,8 +1913,6 @@ gdisplay_reconnect (GDisplay *gdisp, GimpImage *gimage)
|
|||
|
||||
gimage_delete (gdisp->gimage);
|
||||
|
||||
gdisplay_format_title (gimage, title);
|
||||
|
||||
instance = gimage->instance_count;
|
||||
gimage->instance_count++;
|
||||
gimage->ref_count++;
|
||||
|
@ -1922,6 +1920,9 @@ gdisplay_reconnect (GDisplay *gdisp, GimpImage *gimage)
|
|||
gdisp->gimage = gimage;
|
||||
gdisp->instance = instance;
|
||||
|
||||
gdisplay_format_title (gimage, title);
|
||||
gdisplays_update_title (gimage);
|
||||
|
||||
gdisplay_expose_full (gdisp);
|
||||
gdisplay_flush (gdisp);
|
||||
}
|
||||
|
|
|
@ -1363,7 +1363,7 @@ gdisplay_remove_override_cursor (GDisplay *gdisp)
|
|||
}
|
||||
else
|
||||
{
|
||||
g_warning ("Tried to remove override-cursor from un-overridden gdisp.");
|
||||
/* g_warning ("Tried to remove override-cursor from un-overridden gdisp."); */
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1913,8 +1913,6 @@ gdisplay_reconnect (GDisplay *gdisp, GimpImage *gimage)
|
|||
|
||||
gimage_delete (gdisp->gimage);
|
||||
|
||||
gdisplay_format_title (gimage, title);
|
||||
|
||||
instance = gimage->instance_count;
|
||||
gimage->instance_count++;
|
||||
gimage->ref_count++;
|
||||
|
@ -1922,6 +1920,9 @@ gdisplay_reconnect (GDisplay *gdisp, GimpImage *gimage)
|
|||
gdisp->gimage = gimage;
|
||||
gdisp->instance = instance;
|
||||
|
||||
gdisplay_format_title (gimage, title);
|
||||
gdisplays_update_title (gimage);
|
||||
|
||||
gdisplay_expose_full (gdisp);
|
||||
gdisplay_flush (gdisp);
|
||||
}
|
||||
|
|
|
@ -284,6 +284,7 @@ static ActionAreaItem action_items[] =
|
|||
{ N_("Cancel"), indexed_cancel_callback, NULL, NULL }
|
||||
};
|
||||
|
||||
/*
|
||||
static void
|
||||
realize_text (GtkWidget *text, gpointer data)
|
||||
{
|
||||
|
@ -295,6 +296,7 @@ realize_text (GtkWidget *text, gpointer data)
|
|||
|
||||
gtk_text_thaw (GTK_TEXT (text));
|
||||
}
|
||||
*/
|
||||
|
||||
void
|
||||
convert_to_indexed (GimpImage *gimage)
|
||||
|
@ -302,12 +304,10 @@ convert_to_indexed (GimpImage *gimage)
|
|||
IndexedDialog *dialog;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *table;
|
||||
GtkWidget *label;
|
||||
GtkWidget *text;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *toggle;
|
||||
GtkWidget *scrollbar;
|
||||
GSList *group = NULL;
|
||||
|
||||
dialog = g_new(IndexedDialog, 1);
|
||||
|
@ -510,6 +510,14 @@ convert_to_indexed (GimpImage *gimage)
|
|||
gtk_container_set_border_width (GTK_CONTAINER (frame), 2);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog->shell)->vbox), frame, TRUE, TRUE, 0);
|
||||
|
||||
label = gtk_label_new ("You are attempting to convert an image with alpha/layers from RGB/GRAY to INDEXED.\n"
|
||||
"\tYou should not generate a palette of more than 255 colors if you intend to create a transparent or animated GIF file from this image.");
|
||||
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_FILL);
|
||||
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
|
||||
gtk_container_add (GTK_CONTAINER (frame), label);
|
||||
gtk_widget_show(label);
|
||||
|
||||
/*
|
||||
table = gtk_table_new (2, 1, FALSE);
|
||||
{
|
||||
gtk_container_set_border_width (GTK_CONTAINER (table), 1);
|
||||
|
@ -534,6 +542,7 @@ convert_to_indexed (GimpImage *gimage)
|
|||
gtk_widget_show (scrollbar);
|
||||
}
|
||||
gtk_widget_show(table);
|
||||
*/
|
||||
}
|
||||
gtk_widget_show(frame);
|
||||
}
|
||||
|
|
|
@ -2000,6 +2000,7 @@ combine_inten_a_and_inten_a_pixels (const unsigned char *src1,
|
|||
/* HEAD */
|
||||
i = (((int)m) & (sizeof(int)-1));
|
||||
if (i != 0)
|
||||
{
|
||||
i = sizeof(int) - i;
|
||||
length -= i;
|
||||
while (i--)
|
||||
|
@ -2027,6 +2028,7 @@ combine_inten_a_and_inten_a_pixels (const unsigned char *src1,
|
|||
dest += bytes;
|
||||
/* GUTS END */
|
||||
}
|
||||
}
|
||||
|
||||
/* BODY */
|
||||
mask_ip = (int*)m;
|
||||
|
@ -2113,6 +2115,7 @@ combine_inten_a_and_inten_a_pixels (const unsigned char *src1,
|
|||
/* HEAD */
|
||||
i = (((int)m) & (sizeof(int)-1));
|
||||
if (i != 0)
|
||||
{
|
||||
i = sizeof(int) - i;
|
||||
length -= i;
|
||||
while (i--)
|
||||
|
@ -2140,6 +2143,7 @@ combine_inten_a_and_inten_a_pixels (const unsigned char *src1,
|
|||
dest += bytes;
|
||||
/* GUTS END */
|
||||
}
|
||||
}
|
||||
|
||||
/* BODY */
|
||||
mask_ip = (int*)m;
|
||||
|
|
|
@ -2000,6 +2000,7 @@ combine_inten_a_and_inten_a_pixels (const unsigned char *src1,
|
|||
/* HEAD */
|
||||
i = (((int)m) & (sizeof(int)-1));
|
||||
if (i != 0)
|
||||
{
|
||||
i = sizeof(int) - i;
|
||||
length -= i;
|
||||
while (i--)
|
||||
|
@ -2027,6 +2028,7 @@ combine_inten_a_and_inten_a_pixels (const unsigned char *src1,
|
|||
dest += bytes;
|
||||
/* GUTS END */
|
||||
}
|
||||
}
|
||||
|
||||
/* BODY */
|
||||
mask_ip = (int*)m;
|
||||
|
@ -2113,6 +2115,7 @@ combine_inten_a_and_inten_a_pixels (const unsigned char *src1,
|
|||
/* HEAD */
|
||||
i = (((int)m) & (sizeof(int)-1));
|
||||
if (i != 0)
|
||||
{
|
||||
i = sizeof(int) - i;
|
||||
length -= i;
|
||||
while (i--)
|
||||
|
@ -2140,6 +2143,7 @@ combine_inten_a_and_inten_a_pixels (const unsigned char *src1,
|
|||
dest += bytes;
|
||||
/* GUTS END */
|
||||
}
|
||||
}
|
||||
|
||||
/* BODY */
|
||||
mask_ip = (int*)m;
|
||||
|
|
|
@ -5,13 +5,14 @@ PARASITE REGISTRY - 1998/10/09
|
|||
This document is designed for the convenience of GIMP developers.
|
||||
It does not need to concern users.
|
||||
|
||||
If your plugin or script writes parasites, please amend this file.
|
||||
>>>> If your plugin or script writes parasites, please
|
||||
>>>> amend this file in CVS or submit patches to
|
||||
>>>> gimp-developer@scam.xcf.berkeley.edu
|
||||
|
||||
|
||||
------------------------------------------------------------------
|
||||
*** PREFIXES:
|
||||
|
||||
"gif2" : The standard GIMP GIF plugin
|
||||
"tiff" : The standard GIMP TIFF plugin
|
||||
"gimp" : For common and standard parasites
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* GIF loading and saving file filter for The GIMP version 1.0
|
||||
/* GIF loading and saving file filter for The GIMP version 1.0/1.1
|
||||
*
|
||||
* - Adam D. Moss
|
||||
* - Peter Mattis
|
||||
|
@ -7,7 +7,7 @@
|
|||
* Based around original GIF code by David Koblas.
|
||||
*
|
||||
*
|
||||
* Version 2.1.0 - 98/10/09
|
||||
* Version 2.1.1 - 99/01/23
|
||||
* Adam D. Moss - <adam@gimp.org> <adam@foxbox.org>
|
||||
*/
|
||||
/*
|
||||
|
@ -23,6 +23,11 @@
|
|||
/*
|
||||
* REVISION HISTORY
|
||||
*
|
||||
* 99/01/23
|
||||
* 2.01.01 - Use a text-box to permit multi-line comments. Don't
|
||||
* try to write comment blocks which are longer than
|
||||
* permitted.
|
||||
*
|
||||
* 98/10/09
|
||||
* 2.01.00 - Added support for persistant GIF Comments through
|
||||
* the GIMP 1.1 Parasite mechanism where available.
|
||||
|
@ -212,8 +217,6 @@
|
|||
/*
|
||||
* TODO (more *'s means more important!)
|
||||
*
|
||||
* - Show GIF comments in a popup window?
|
||||
*
|
||||
* - PDB stuff for comments
|
||||
*
|
||||
* - 'requantize' option for INDEXEDA images which really have 256 colours
|
||||
|
@ -2053,11 +2056,14 @@ save_dialog ( gint32 image_ID )
|
|||
GtkWidget *toggle;
|
||||
GtkWidget *label;
|
||||
GtkWidget *entry;
|
||||
GtkWidget *text;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *menu;
|
||||
GtkWidget *disposal_option_menu;
|
||||
GtkWidget *com_table;
|
||||
GtkWidget *vscrollbar;
|
||||
#ifdef FACEHUGGERS
|
||||
Parasite* GIF2_CMNT;
|
||||
#endif
|
||||
|
@ -2133,9 +2139,17 @@ save_dialog ( gint32 image_ID )
|
|||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), 1);
|
||||
gtk_widget_show (toggle);
|
||||
|
||||
entry = gtk_entry_new ();
|
||||
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
|
||||
gtk_widget_set_usize (entry, 240, 0);
|
||||
com_table = gtk_table_new (1, 1, FALSE);
|
||||
/* gtk_container_border_width (GTK_CONTAINER (com_table), 10);*/
|
||||
gtk_box_pack_start (GTK_BOX (hbox), com_table, TRUE, TRUE, 0);
|
||||
|
||||
text = gtk_text_new (NULL, NULL);
|
||||
gtk_text_set_editable (GTK_TEXT (text), TRUE);
|
||||
gtk_widget_set_usize (text, 80,3);
|
||||
gtk_table_attach (GTK_TABLE (com_table), text, 0, 1, 0, 1,
|
||||
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
|
||||
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
|
||||
|
||||
if (globalcomment!=NULL)
|
||||
{
|
||||
g_free(globalcomment);
|
||||
|
@ -2157,11 +2171,17 @@ save_dialog ( gint32 image_ID )
|
|||
parasite_free (GIF2_CMNT);
|
||||
#endif
|
||||
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), globalcomment);
|
||||
gtk_signal_connect (GTK_OBJECT (entry), "changed",
|
||||
gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,globalcomment,-1);
|
||||
gtk_signal_connect (GTK_OBJECT (text), "changed",
|
||||
(GtkSignalFunc) comment_entry_callback,
|
||||
NULL);
|
||||
gtk_widget_show (entry);
|
||||
|
||||
vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
|
||||
gtk_table_attach (GTK_TABLE (com_table), vscrollbar, 1, 2, 0, 1,
|
||||
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
|
||||
gtk_widget_show (vscrollbar);
|
||||
gtk_widget_show (text);
|
||||
gtk_widget_show (com_table);
|
||||
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
|
@ -2833,6 +2853,12 @@ static void GIFEncodeCommentExt (FILE *fp, char *comment)
|
|||
return;
|
||||
}
|
||||
|
||||
if (strlen(comment)>240)
|
||||
{
|
||||
g_print ("GIF: warning: comment too large - comment block not written.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
fputc(0x21,fp);
|
||||
fputc(0xfe,fp);
|
||||
fputc(strlen(comment),fp);
|
||||
|
@ -3384,20 +3410,25 @@ comment_entry_callback (GtkWidget *widget,
|
|||
gpointer data)
|
||||
{
|
||||
gint ssize;
|
||||
gchar* str;
|
||||
|
||||
ssize = strlen(gtk_entry_get_text (GTK_ENTRY (widget)));
|
||||
str = gtk_editable_get_chars(GTK_EDITABLE (widget),0,-1);
|
||||
ssize = strlen(str);
|
||||
|
||||
/* Temporary kludge for overlength strings - just return */
|
||||
if (ssize>240)
|
||||
{
|
||||
g_message ("GIF save: Your comment string is too long.\n");
|
||||
g_free(str);
|
||||
return;
|
||||
}
|
||||
|
||||
if (globalcomment!=NULL) g_free(globalcomment);
|
||||
globalcomment = g_malloc(ssize+1);
|
||||
|
||||
strcpy(globalcomment, gtk_entry_get_text (GTK_ENTRY (widget)));
|
||||
/*strcpy(globalcomment, gtk_entry_get_text (GTK_ENTRY (widget)));*/
|
||||
strcpy(globalcomment, str);
|
||||
g_free(str);
|
||||
|
||||
/* g_print ("COMMENT: %s\n",globalcomment); */
|
||||
}
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
* progressive loads - gimp doesn't) loads the image it first gets a
|
||||
* low res version displayed and then the image is progressively
|
||||
* enhanced until you get the final version. It doesn't add any size
|
||||
* to the image - the only draw back is some might find it annoying.
|
||||
* to the image (actually it often results in smaller file size) - the
|
||||
* only draw backs are that progressive jpegs are not supported by some
|
||||
* older viewers/browsers, and some might find it annoying.
|
||||
*/
|
||||
|
||||
#include <setjmp.h>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* GIF loading and saving file filter for The GIMP version 1.0
|
||||
/* GIF loading and saving file filter for The GIMP version 1.0/1.1
|
||||
*
|
||||
* - Adam D. Moss
|
||||
* - Peter Mattis
|
||||
|
@ -7,7 +7,7 @@
|
|||
* Based around original GIF code by David Koblas.
|
||||
*
|
||||
*
|
||||
* Version 2.1.0 - 98/10/09
|
||||
* Version 2.1.1 - 99/01/23
|
||||
* Adam D. Moss - <adam@gimp.org> <adam@foxbox.org>
|
||||
*/
|
||||
/*
|
||||
|
@ -23,6 +23,11 @@
|
|||
/*
|
||||
* REVISION HISTORY
|
||||
*
|
||||
* 99/01/23
|
||||
* 2.01.01 - Use a text-box to permit multi-line comments. Don't
|
||||
* try to write comment blocks which are longer than
|
||||
* permitted.
|
||||
*
|
||||
* 98/10/09
|
||||
* 2.01.00 - Added support for persistant GIF Comments through
|
||||
* the GIMP 1.1 Parasite mechanism where available.
|
||||
|
@ -212,8 +217,6 @@
|
|||
/*
|
||||
* TODO (more *'s means more important!)
|
||||
*
|
||||
* - Show GIF comments in a popup window?
|
||||
*
|
||||
* - PDB stuff for comments
|
||||
*
|
||||
* - 'requantize' option for INDEXEDA images which really have 256 colours
|
||||
|
@ -2053,11 +2056,14 @@ save_dialog ( gint32 image_ID )
|
|||
GtkWidget *toggle;
|
||||
GtkWidget *label;
|
||||
GtkWidget *entry;
|
||||
GtkWidget *text;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *menu;
|
||||
GtkWidget *disposal_option_menu;
|
||||
GtkWidget *com_table;
|
||||
GtkWidget *vscrollbar;
|
||||
#ifdef FACEHUGGERS
|
||||
Parasite* GIF2_CMNT;
|
||||
#endif
|
||||
|
@ -2133,9 +2139,17 @@ save_dialog ( gint32 image_ID )
|
|||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), 1);
|
||||
gtk_widget_show (toggle);
|
||||
|
||||
entry = gtk_entry_new ();
|
||||
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
|
||||
gtk_widget_set_usize (entry, 240, 0);
|
||||
com_table = gtk_table_new (1, 1, FALSE);
|
||||
/* gtk_container_border_width (GTK_CONTAINER (com_table), 10);*/
|
||||
gtk_box_pack_start (GTK_BOX (hbox), com_table, TRUE, TRUE, 0);
|
||||
|
||||
text = gtk_text_new (NULL, NULL);
|
||||
gtk_text_set_editable (GTK_TEXT (text), TRUE);
|
||||
gtk_widget_set_usize (text, 80,3);
|
||||
gtk_table_attach (GTK_TABLE (com_table), text, 0, 1, 0, 1,
|
||||
GTK_EXPAND | GTK_SHRINK | GTK_FILL,
|
||||
GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
|
||||
|
||||
if (globalcomment!=NULL)
|
||||
{
|
||||
g_free(globalcomment);
|
||||
|
@ -2157,11 +2171,17 @@ save_dialog ( gint32 image_ID )
|
|||
parasite_free (GIF2_CMNT);
|
||||
#endif
|
||||
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), globalcomment);
|
||||
gtk_signal_connect (GTK_OBJECT (entry), "changed",
|
||||
gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,globalcomment,-1);
|
||||
gtk_signal_connect (GTK_OBJECT (text), "changed",
|
||||
(GtkSignalFunc) comment_entry_callback,
|
||||
NULL);
|
||||
gtk_widget_show (entry);
|
||||
|
||||
vscrollbar = gtk_vscrollbar_new (GTK_TEXT (text)->vadj);
|
||||
gtk_table_attach (GTK_TABLE (com_table), vscrollbar, 1, 2, 0, 1,
|
||||
GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
|
||||
gtk_widget_show (vscrollbar);
|
||||
gtk_widget_show (text);
|
||||
gtk_widget_show (com_table);
|
||||
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
|
@ -2833,6 +2853,12 @@ static void GIFEncodeCommentExt (FILE *fp, char *comment)
|
|||
return;
|
||||
}
|
||||
|
||||
if (strlen(comment)>240)
|
||||
{
|
||||
g_print ("GIF: warning: comment too large - comment block not written.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
fputc(0x21,fp);
|
||||
fputc(0xfe,fp);
|
||||
fputc(strlen(comment),fp);
|
||||
|
@ -3384,20 +3410,25 @@ comment_entry_callback (GtkWidget *widget,
|
|||
gpointer data)
|
||||
{
|
||||
gint ssize;
|
||||
gchar* str;
|
||||
|
||||
ssize = strlen(gtk_entry_get_text (GTK_ENTRY (widget)));
|
||||
str = gtk_editable_get_chars(GTK_EDITABLE (widget),0,-1);
|
||||
ssize = strlen(str);
|
||||
|
||||
/* Temporary kludge for overlength strings - just return */
|
||||
if (ssize>240)
|
||||
{
|
||||
g_message ("GIF save: Your comment string is too long.\n");
|
||||
g_free(str);
|
||||
return;
|
||||
}
|
||||
|
||||
if (globalcomment!=NULL) g_free(globalcomment);
|
||||
globalcomment = g_malloc(ssize+1);
|
||||
|
||||
strcpy(globalcomment, gtk_entry_get_text (GTK_ENTRY (widget)));
|
||||
/*strcpy(globalcomment, gtk_entry_get_text (GTK_ENTRY (widget)));*/
|
||||
strcpy(globalcomment, str);
|
||||
g_free(str);
|
||||
|
||||
/* g_print ("COMMENT: %s\n",globalcomment); */
|
||||
}
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
* progressive loads - gimp doesn't) loads the image it first gets a
|
||||
* low res version displayed and then the image is progressively
|
||||
* enhanced until you get the final version. It doesn't add any size
|
||||
* to the image - the only draw back is some might find it annoying.
|
||||
* to the image (actually it often results in smaller file size) - the
|
||||
* only draw backs are that progressive jpegs are not supported by some
|
||||
* older viewers/browsers, and some might find it annoying.
|
||||
*/
|
||||
|
||||
#include <setjmp.h>
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
* progressive loads - gimp doesn't) loads the image it first gets a
|
||||
* low res version displayed and then the image is progressively
|
||||
* enhanced until you get the final version. It doesn't add any size
|
||||
* to the image - the only draw back is some might find it annoying.
|
||||
* to the image (actually it often results in smaller file size) - the
|
||||
* only draw backs are that progressive jpegs are not supported by some
|
||||
* older viewers/browsers, and some might find it annoying.
|
||||
*/
|
||||
|
||||
#include <setjmp.h>
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
* progressive loads - gimp doesn't) loads the image it first gets a
|
||||
* low res version displayed and then the image is progressively
|
||||
* enhanced until you get the final version. It doesn't add any size
|
||||
* to the image - the only draw back is some might find it annoying.
|
||||
* to the image (actually it often results in smaller file size) - the
|
||||
* only draw backs are that progressive jpegs are not supported by some
|
||||
* older viewers/browsers, and some might find it annoying.
|
||||
*/
|
||||
|
||||
#include <setjmp.h>
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
* progressive loads - gimp doesn't) loads the image it first gets a
|
||||
* low res version displayed and then the image is progressively
|
||||
* enhanced until you get the final version. It doesn't add any size
|
||||
* to the image - the only draw back is some might find it annoying.
|
||||
* to the image (actually it often results in smaller file size) - the
|
||||
* only draw backs are that progressive jpegs are not supported by some
|
||||
* older viewers/browsers, and some might find it annoying.
|
||||
*/
|
||||
|
||||
#include <setjmp.h>
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
* progressive loads - gimp doesn't) loads the image it first gets a
|
||||
* low res version displayed and then the image is progressively
|
||||
* enhanced until you get the final version. It doesn't add any size
|
||||
* to the image - the only draw back is some might find it annoying.
|
||||
* to the image (actually it often results in smaller file size) - the
|
||||
* only draw backs are that progressive jpegs are not supported by some
|
||||
* older viewers/browsers, and some might find it annoying.
|
||||
*/
|
||||
|
||||
#include <setjmp.h>
|
||||
|
|
|
@ -45,7 +45,9 @@
|
|||
* progressive loads - gimp doesn't) loads the image it first gets a
|
||||
* low res version displayed and then the image is progressively
|
||||
* enhanced until you get the final version. It doesn't add any size
|
||||
* to the image - the only draw back is some might find it annoying.
|
||||
* to the image (actually it often results in smaller file size) - the
|
||||
* only draw backs are that progressive jpegs are not supported by some
|
||||
* older viewers/browsers, and some might find it annoying.
|
||||
*/
|
||||
|
||||
#include <setjmp.h>
|
||||
|
|
Loading…
Reference in New Issue