wanted to fix the "loading/saving jpeg causes SEGV" bugs but ended up with
2000-02-08 Michael Natterer <mitch@gimp.org> * plug-ins/common/jpeg.c: wanted to fix the "loading/saving jpeg causes SEGV" bugs but ended up with just some more callbacks removed (works fine on my system anyway).
This commit is contained in:

committed by
Michael Natterer

parent
074eb27563
commit
a56c872b6a
@ -1,3 +1,9 @@
|
|||||||
|
2000-02-08 Michael Natterer <mitch@gimp.org>
|
||||||
|
|
||||||
|
* plug-ins/common/jpeg.c: wanted to fix the "loading/saving jpeg
|
||||||
|
causes SEGV" bugs but ended up with just some more callbacks
|
||||||
|
removed (works fine on my system anyway).
|
||||||
|
|
||||||
Tue Feb 8 14:59:43 CET 2000 Sven Neumann <sven@gimp.org>
|
Tue Feb 8 14:59:43 CET 2000 Sven Neumann <sven@gimp.org>
|
||||||
|
|
||||||
* libgimp/gimpexport.c: Be more intelligent when dealing with invisible
|
* libgimp/gimpexport.c: Be more intelligent when dealing with invisible
|
||||||
|
@ -164,7 +164,10 @@
|
|||||||
#define DEFAULT_COMMENT "Created with The GIMP"
|
#define DEFAULT_COMMENT "Created with The GIMP"
|
||||||
|
|
||||||
/* sg - these should not be global... */
|
/* sg - these should not be global... */
|
||||||
static gint32 volatile image_ID_global = -1, orig_image_ID_global, drawable_ID_global = -1, layer_ID_global = -1;
|
static gint32 volatile image_ID_global = -1;
|
||||||
|
static gint32 orig_image_ID_global;
|
||||||
|
static gint32 drawable_ID_global = -1;
|
||||||
|
static gint32 layer_ID_global = -1;
|
||||||
static GtkWidget *preview_size = NULL;
|
static GtkWidget *preview_size = NULL;
|
||||||
static GDrawable *drawable_global = NULL;
|
static GDrawable *drawable_global = NULL;
|
||||||
|
|
||||||
@ -233,21 +236,10 @@ static void save_close_callback (GtkWidget *widget,
|
|||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_ok_callback (GtkWidget *widget,
|
static void save_ok_callback (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val);
|
|
||||||
static void save_restart_toggle_update (GtkWidget *toggle,
|
static void save_restart_toggle_update (GtkWidget *toggle,
|
||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void save_restart_update (GtkAdjustment *adjustment,
|
static void save_restart_update (GtkAdjustment *adjustment,
|
||||||
GtkWidget *toggle);
|
GtkWidget *toggle);
|
||||||
static void save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
|
|
||||||
static void make_preview (void);
|
static void make_preview (void);
|
||||||
static void destroy_preview (void);
|
static void destroy_preview (void);
|
||||||
@ -283,7 +275,7 @@ static JpegSaveInterface jsint =
|
|||||||
FALSE /* run */
|
FALSE /* run */
|
||||||
};
|
};
|
||||||
|
|
||||||
char *image_comment=NULL;
|
static gchar *image_comment = NULL;
|
||||||
|
|
||||||
static GtkWidget *restart_markers_scale = NULL;
|
static GtkWidget *restart_markers_scale = NULL;
|
||||||
static GtkWidget *restart_markers_label = NULL;
|
static GtkWidget *restart_markers_label = NULL;
|
||||||
@ -687,10 +679,11 @@ COM_handler (j_decompress_ptr cinfo)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct my_error_mgr {
|
typedef struct my_error_mgr
|
||||||
struct jpeg_error_mgr pub; /* "public" fields */
|
{
|
||||||
|
struct jpeg_error_mgr pub; /* "public" fields */
|
||||||
|
|
||||||
jmp_buf setjmp_buffer; /* for return to caller */
|
jmp_buf setjmp_buffer; /* for return to caller */
|
||||||
} *my_error_ptr;
|
} *my_error_ptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -712,9 +705,9 @@ my_error_exit (j_common_ptr cinfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gint32
|
static gint32
|
||||||
load_image (char *filename,
|
load_image (gchar *filename,
|
||||||
GRunModeType runmode,
|
GRunModeType runmode,
|
||||||
int preview)
|
gint preview)
|
||||||
{
|
{
|
||||||
GPixelRgn pixel_rgn;
|
GPixelRgn pixel_rgn;
|
||||||
GDrawable *drawable;
|
GDrawable *drawable;
|
||||||
@ -726,12 +719,12 @@ load_image (char *filename,
|
|||||||
guchar *buf;
|
guchar *buf;
|
||||||
guchar * volatile padded_buf = NULL;
|
guchar * volatile padded_buf = NULL;
|
||||||
guchar **rowbuf;
|
guchar **rowbuf;
|
||||||
char *name;
|
gchar *name;
|
||||||
int image_type;
|
gint image_type;
|
||||||
int layer_type;
|
gint layer_type;
|
||||||
int tile_height;
|
gint tile_height;
|
||||||
int scanlines;
|
gint scanlines;
|
||||||
int i, start, end;
|
gint i, start, end;
|
||||||
|
|
||||||
#ifdef GIMP_HAVE_PARASITES
|
#ifdef GIMP_HAVE_PARASITES
|
||||||
JpegSaveVals local_save_vals;
|
JpegSaveVals local_save_vals;
|
||||||
@ -1086,8 +1079,8 @@ background_jpeg_save (gpointer *ptr)
|
|||||||
preview_persistent *pp = (preview_persistent *)ptr;
|
preview_persistent *pp = (preview_persistent *)ptr;
|
||||||
guchar *t;
|
guchar *t;
|
||||||
guchar *s;
|
guchar *s;
|
||||||
int i, j;
|
gint i, j;
|
||||||
int yend;
|
gint yend;
|
||||||
|
|
||||||
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
||||||
{
|
{
|
||||||
@ -1186,14 +1179,15 @@ save_image (char *filename,
|
|||||||
guchar *temp, *t;
|
guchar *temp, *t;
|
||||||
guchar *data;
|
guchar *data;
|
||||||
guchar *src, *s;
|
guchar *src, *s;
|
||||||
char *name;
|
gchar *name;
|
||||||
int has_alpha;
|
gint has_alpha;
|
||||||
int rowstride, yend;
|
gint rowstride, yend;
|
||||||
int i, j;
|
gint i, j;
|
||||||
|
|
||||||
drawable = gimp_drawable_get (drawable_ID);
|
drawable = gimp_drawable_get (drawable_ID);
|
||||||
drawable_type = gimp_drawable_type (drawable_ID);
|
drawable_type = gimp_drawable_type (drawable_ID);
|
||||||
gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
gimp_pixel_rgn_init (&pixel_rgn, drawable,
|
||||||
|
0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
||||||
|
|
||||||
if (!preview)
|
if (!preview)
|
||||||
{
|
{
|
||||||
@ -1500,16 +1494,17 @@ save_image (char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
make_preview ()
|
make_preview (void)
|
||||||
{
|
{
|
||||||
char *tn;
|
gchar *tn;
|
||||||
|
|
||||||
destroy_preview ();
|
destroy_preview ();
|
||||||
|
|
||||||
if (jsvals.preview)
|
if (jsvals.preview)
|
||||||
{
|
{
|
||||||
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
||||||
save_image (tn, image_ID_global, drawable_ID_global, orig_image_ID_global, TRUE);
|
save_image (tn, image_ID_global,
|
||||||
|
drawable_ID_global, orig_image_ID_global, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1523,7 +1518,7 @@ make_preview ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destroy_preview ()
|
destroy_preview (void)
|
||||||
{
|
{
|
||||||
if (abort_me)
|
if (abort_me)
|
||||||
{
|
{
|
||||||
@ -1545,11 +1540,12 @@ destroy_preview ()
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_menu_item (GtkWidget *menu,
|
add_menu_item (GtkWidget *menu,
|
||||||
char *label,
|
gchar *label,
|
||||||
guint op_no,
|
guint op_no,
|
||||||
GtkSignalFunc callback)
|
GtkSignalFunc callback)
|
||||||
{
|
{
|
||||||
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
||||||
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
||||||
(GtkSignalFunc) callback, &op_no);
|
(GtkSignalFunc) callback, &op_no);
|
||||||
@ -1557,13 +1553,13 @@ add_menu_item (GtkWidget *menu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_gtk ()
|
init_gtk (void)
|
||||||
{
|
{
|
||||||
gchar **argv;
|
gchar **argv;
|
||||||
gint argc;
|
gint argc;
|
||||||
|
|
||||||
argc = 1;
|
argc = 1;
|
||||||
argv = g_new (gchar *, 1);
|
argv = g_new (gchar *, 1);
|
||||||
argv[0] = g_strdup ("jpeg");
|
argv[0] = g_strdup ("jpeg");
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
@ -1638,7 +1634,10 @@ save_dialog (void)
|
|||||||
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_preview_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.preview);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
||||||
gtk_widget_show (preview);
|
gtk_widget_show (preview);
|
||||||
@ -1678,8 +1677,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.quality);
|
&jsvals.quality);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
label = gtk_label_new (_("Smoothing:"));
|
label = gtk_label_new (_("Smoothing:"));
|
||||||
@ -1697,8 +1699,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.smoothing);
|
&jsvals.smoothing);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
/* sg - have to init scale here */
|
/* sg - have to init scale here */
|
||||||
@ -1747,7 +1752,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_optimize_update),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.optimize);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
@ -1756,7 +1764,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_progressive_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.progressive);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
||||||
jsvals.progressive);
|
jsvals.progressive);
|
||||||
@ -1770,7 +1781,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_baseline_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.baseline);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
||||||
jsvals.baseline);
|
jsvals.baseline);
|
||||||
@ -1902,14 +1916,6 @@ save_ok_callback (GtkWidget *widget,
|
|||||||
gtk_widget_destroy (GTK_WIDGET (data));
|
gtk_widget_destroy (GTK_WIDGET (data));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val)
|
|
||||||
{
|
|
||||||
*scale_val = adjustment->value;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_restart_toggle_update (GtkWidget *widget,
|
save_restart_toggle_update (GtkWidget *widget,
|
||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
@ -1923,49 +1929,19 @@ save_restart_update (GtkAdjustment *adjustment,
|
|||||||
{
|
{
|
||||||
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
||||||
|
|
||||||
gtk_widget_set_sensitive (restart_markers_label, (jsvals.restart ? TRUE : FALSE));
|
gtk_widget_set_sensitive (restart_markers_label,
|
||||||
gtk_widget_set_sensitive (restart_markers_scale, (jsvals.restart ? TRUE : FALSE));
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
gtk_widget_set_sensitive (restart_markers_scale,
|
||||||
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.optimize = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.progressive = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.baseline = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.preview = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
subsmp_callback (GtkWidget *widget,
|
subsmp_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.subsmp = *((guchar *)data);
|
jsvals.subsmp = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1973,6 +1949,6 @@ static void
|
|||||||
dct_callback (GtkWidget *widget,
|
dct_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.dct = *((guchar *)data);
|
jsvals.dct = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,10 @@
|
|||||||
#define DEFAULT_COMMENT "Created with The GIMP"
|
#define DEFAULT_COMMENT "Created with The GIMP"
|
||||||
|
|
||||||
/* sg - these should not be global... */
|
/* sg - these should not be global... */
|
||||||
static gint32 volatile image_ID_global = -1, orig_image_ID_global, drawable_ID_global = -1, layer_ID_global = -1;
|
static gint32 volatile image_ID_global = -1;
|
||||||
|
static gint32 orig_image_ID_global;
|
||||||
|
static gint32 drawable_ID_global = -1;
|
||||||
|
static gint32 layer_ID_global = -1;
|
||||||
static GtkWidget *preview_size = NULL;
|
static GtkWidget *preview_size = NULL;
|
||||||
static GDrawable *drawable_global = NULL;
|
static GDrawable *drawable_global = NULL;
|
||||||
|
|
||||||
@ -233,21 +236,10 @@ static void save_close_callback (GtkWidget *widget,
|
|||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_ok_callback (GtkWidget *widget,
|
static void save_ok_callback (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val);
|
|
||||||
static void save_restart_toggle_update (GtkWidget *toggle,
|
static void save_restart_toggle_update (GtkWidget *toggle,
|
||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void save_restart_update (GtkAdjustment *adjustment,
|
static void save_restart_update (GtkAdjustment *adjustment,
|
||||||
GtkWidget *toggle);
|
GtkWidget *toggle);
|
||||||
static void save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
|
|
||||||
static void make_preview (void);
|
static void make_preview (void);
|
||||||
static void destroy_preview (void);
|
static void destroy_preview (void);
|
||||||
@ -283,7 +275,7 @@ static JpegSaveInterface jsint =
|
|||||||
FALSE /* run */
|
FALSE /* run */
|
||||||
};
|
};
|
||||||
|
|
||||||
char *image_comment=NULL;
|
static gchar *image_comment = NULL;
|
||||||
|
|
||||||
static GtkWidget *restart_markers_scale = NULL;
|
static GtkWidget *restart_markers_scale = NULL;
|
||||||
static GtkWidget *restart_markers_label = NULL;
|
static GtkWidget *restart_markers_label = NULL;
|
||||||
@ -687,10 +679,11 @@ COM_handler (j_decompress_ptr cinfo)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct my_error_mgr {
|
typedef struct my_error_mgr
|
||||||
struct jpeg_error_mgr pub; /* "public" fields */
|
{
|
||||||
|
struct jpeg_error_mgr pub; /* "public" fields */
|
||||||
|
|
||||||
jmp_buf setjmp_buffer; /* for return to caller */
|
jmp_buf setjmp_buffer; /* for return to caller */
|
||||||
} *my_error_ptr;
|
} *my_error_ptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -712,9 +705,9 @@ my_error_exit (j_common_ptr cinfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gint32
|
static gint32
|
||||||
load_image (char *filename,
|
load_image (gchar *filename,
|
||||||
GRunModeType runmode,
|
GRunModeType runmode,
|
||||||
int preview)
|
gint preview)
|
||||||
{
|
{
|
||||||
GPixelRgn pixel_rgn;
|
GPixelRgn pixel_rgn;
|
||||||
GDrawable *drawable;
|
GDrawable *drawable;
|
||||||
@ -726,12 +719,12 @@ load_image (char *filename,
|
|||||||
guchar *buf;
|
guchar *buf;
|
||||||
guchar * volatile padded_buf = NULL;
|
guchar * volatile padded_buf = NULL;
|
||||||
guchar **rowbuf;
|
guchar **rowbuf;
|
||||||
char *name;
|
gchar *name;
|
||||||
int image_type;
|
gint image_type;
|
||||||
int layer_type;
|
gint layer_type;
|
||||||
int tile_height;
|
gint tile_height;
|
||||||
int scanlines;
|
gint scanlines;
|
||||||
int i, start, end;
|
gint i, start, end;
|
||||||
|
|
||||||
#ifdef GIMP_HAVE_PARASITES
|
#ifdef GIMP_HAVE_PARASITES
|
||||||
JpegSaveVals local_save_vals;
|
JpegSaveVals local_save_vals;
|
||||||
@ -1086,8 +1079,8 @@ background_jpeg_save (gpointer *ptr)
|
|||||||
preview_persistent *pp = (preview_persistent *)ptr;
|
preview_persistent *pp = (preview_persistent *)ptr;
|
||||||
guchar *t;
|
guchar *t;
|
||||||
guchar *s;
|
guchar *s;
|
||||||
int i, j;
|
gint i, j;
|
||||||
int yend;
|
gint yend;
|
||||||
|
|
||||||
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
||||||
{
|
{
|
||||||
@ -1186,14 +1179,15 @@ save_image (char *filename,
|
|||||||
guchar *temp, *t;
|
guchar *temp, *t;
|
||||||
guchar *data;
|
guchar *data;
|
||||||
guchar *src, *s;
|
guchar *src, *s;
|
||||||
char *name;
|
gchar *name;
|
||||||
int has_alpha;
|
gint has_alpha;
|
||||||
int rowstride, yend;
|
gint rowstride, yend;
|
||||||
int i, j;
|
gint i, j;
|
||||||
|
|
||||||
drawable = gimp_drawable_get (drawable_ID);
|
drawable = gimp_drawable_get (drawable_ID);
|
||||||
drawable_type = gimp_drawable_type (drawable_ID);
|
drawable_type = gimp_drawable_type (drawable_ID);
|
||||||
gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
gimp_pixel_rgn_init (&pixel_rgn, drawable,
|
||||||
|
0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
||||||
|
|
||||||
if (!preview)
|
if (!preview)
|
||||||
{
|
{
|
||||||
@ -1500,16 +1494,17 @@ save_image (char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
make_preview ()
|
make_preview (void)
|
||||||
{
|
{
|
||||||
char *tn;
|
gchar *tn;
|
||||||
|
|
||||||
destroy_preview ();
|
destroy_preview ();
|
||||||
|
|
||||||
if (jsvals.preview)
|
if (jsvals.preview)
|
||||||
{
|
{
|
||||||
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
||||||
save_image (tn, image_ID_global, drawable_ID_global, orig_image_ID_global, TRUE);
|
save_image (tn, image_ID_global,
|
||||||
|
drawable_ID_global, orig_image_ID_global, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1523,7 +1518,7 @@ make_preview ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destroy_preview ()
|
destroy_preview (void)
|
||||||
{
|
{
|
||||||
if (abort_me)
|
if (abort_me)
|
||||||
{
|
{
|
||||||
@ -1545,11 +1540,12 @@ destroy_preview ()
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_menu_item (GtkWidget *menu,
|
add_menu_item (GtkWidget *menu,
|
||||||
char *label,
|
gchar *label,
|
||||||
guint op_no,
|
guint op_no,
|
||||||
GtkSignalFunc callback)
|
GtkSignalFunc callback)
|
||||||
{
|
{
|
||||||
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
||||||
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
||||||
(GtkSignalFunc) callback, &op_no);
|
(GtkSignalFunc) callback, &op_no);
|
||||||
@ -1557,13 +1553,13 @@ add_menu_item (GtkWidget *menu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_gtk ()
|
init_gtk (void)
|
||||||
{
|
{
|
||||||
gchar **argv;
|
gchar **argv;
|
||||||
gint argc;
|
gint argc;
|
||||||
|
|
||||||
argc = 1;
|
argc = 1;
|
||||||
argv = g_new (gchar *, 1);
|
argv = g_new (gchar *, 1);
|
||||||
argv[0] = g_strdup ("jpeg");
|
argv[0] = g_strdup ("jpeg");
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
@ -1638,7 +1634,10 @@ save_dialog (void)
|
|||||||
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_preview_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.preview);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
||||||
gtk_widget_show (preview);
|
gtk_widget_show (preview);
|
||||||
@ -1678,8 +1677,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.quality);
|
&jsvals.quality);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
label = gtk_label_new (_("Smoothing:"));
|
label = gtk_label_new (_("Smoothing:"));
|
||||||
@ -1697,8 +1699,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.smoothing);
|
&jsvals.smoothing);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
/* sg - have to init scale here */
|
/* sg - have to init scale here */
|
||||||
@ -1747,7 +1752,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_optimize_update),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.optimize);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
@ -1756,7 +1764,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_progressive_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.progressive);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
||||||
jsvals.progressive);
|
jsvals.progressive);
|
||||||
@ -1770,7 +1781,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_baseline_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.baseline);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
||||||
jsvals.baseline);
|
jsvals.baseline);
|
||||||
@ -1902,14 +1916,6 @@ save_ok_callback (GtkWidget *widget,
|
|||||||
gtk_widget_destroy (GTK_WIDGET (data));
|
gtk_widget_destroy (GTK_WIDGET (data));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val)
|
|
||||||
{
|
|
||||||
*scale_val = adjustment->value;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_restart_toggle_update (GtkWidget *widget,
|
save_restart_toggle_update (GtkWidget *widget,
|
||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
@ -1923,49 +1929,19 @@ save_restart_update (GtkAdjustment *adjustment,
|
|||||||
{
|
{
|
||||||
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
||||||
|
|
||||||
gtk_widget_set_sensitive (restart_markers_label, (jsvals.restart ? TRUE : FALSE));
|
gtk_widget_set_sensitive (restart_markers_label,
|
||||||
gtk_widget_set_sensitive (restart_markers_scale, (jsvals.restart ? TRUE : FALSE));
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
gtk_widget_set_sensitive (restart_markers_scale,
|
||||||
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.optimize = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.progressive = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.baseline = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.preview = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
subsmp_callback (GtkWidget *widget,
|
subsmp_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.subsmp = *((guchar *)data);
|
jsvals.subsmp = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1973,6 +1949,6 @@ static void
|
|||||||
dct_callback (GtkWidget *widget,
|
dct_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.dct = *((guchar *)data);
|
jsvals.dct = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,10 @@
|
|||||||
#define DEFAULT_COMMENT "Created with The GIMP"
|
#define DEFAULT_COMMENT "Created with The GIMP"
|
||||||
|
|
||||||
/* sg - these should not be global... */
|
/* sg - these should not be global... */
|
||||||
static gint32 volatile image_ID_global = -1, orig_image_ID_global, drawable_ID_global = -1, layer_ID_global = -1;
|
static gint32 volatile image_ID_global = -1;
|
||||||
|
static gint32 orig_image_ID_global;
|
||||||
|
static gint32 drawable_ID_global = -1;
|
||||||
|
static gint32 layer_ID_global = -1;
|
||||||
static GtkWidget *preview_size = NULL;
|
static GtkWidget *preview_size = NULL;
|
||||||
static GDrawable *drawable_global = NULL;
|
static GDrawable *drawable_global = NULL;
|
||||||
|
|
||||||
@ -233,21 +236,10 @@ static void save_close_callback (GtkWidget *widget,
|
|||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_ok_callback (GtkWidget *widget,
|
static void save_ok_callback (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val);
|
|
||||||
static void save_restart_toggle_update (GtkWidget *toggle,
|
static void save_restart_toggle_update (GtkWidget *toggle,
|
||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void save_restart_update (GtkAdjustment *adjustment,
|
static void save_restart_update (GtkAdjustment *adjustment,
|
||||||
GtkWidget *toggle);
|
GtkWidget *toggle);
|
||||||
static void save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
|
|
||||||
static void make_preview (void);
|
static void make_preview (void);
|
||||||
static void destroy_preview (void);
|
static void destroy_preview (void);
|
||||||
@ -283,7 +275,7 @@ static JpegSaveInterface jsint =
|
|||||||
FALSE /* run */
|
FALSE /* run */
|
||||||
};
|
};
|
||||||
|
|
||||||
char *image_comment=NULL;
|
static gchar *image_comment = NULL;
|
||||||
|
|
||||||
static GtkWidget *restart_markers_scale = NULL;
|
static GtkWidget *restart_markers_scale = NULL;
|
||||||
static GtkWidget *restart_markers_label = NULL;
|
static GtkWidget *restart_markers_label = NULL;
|
||||||
@ -687,10 +679,11 @@ COM_handler (j_decompress_ptr cinfo)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct my_error_mgr {
|
typedef struct my_error_mgr
|
||||||
struct jpeg_error_mgr pub; /* "public" fields */
|
{
|
||||||
|
struct jpeg_error_mgr pub; /* "public" fields */
|
||||||
|
|
||||||
jmp_buf setjmp_buffer; /* for return to caller */
|
jmp_buf setjmp_buffer; /* for return to caller */
|
||||||
} *my_error_ptr;
|
} *my_error_ptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -712,9 +705,9 @@ my_error_exit (j_common_ptr cinfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gint32
|
static gint32
|
||||||
load_image (char *filename,
|
load_image (gchar *filename,
|
||||||
GRunModeType runmode,
|
GRunModeType runmode,
|
||||||
int preview)
|
gint preview)
|
||||||
{
|
{
|
||||||
GPixelRgn pixel_rgn;
|
GPixelRgn pixel_rgn;
|
||||||
GDrawable *drawable;
|
GDrawable *drawable;
|
||||||
@ -726,12 +719,12 @@ load_image (char *filename,
|
|||||||
guchar *buf;
|
guchar *buf;
|
||||||
guchar * volatile padded_buf = NULL;
|
guchar * volatile padded_buf = NULL;
|
||||||
guchar **rowbuf;
|
guchar **rowbuf;
|
||||||
char *name;
|
gchar *name;
|
||||||
int image_type;
|
gint image_type;
|
||||||
int layer_type;
|
gint layer_type;
|
||||||
int tile_height;
|
gint tile_height;
|
||||||
int scanlines;
|
gint scanlines;
|
||||||
int i, start, end;
|
gint i, start, end;
|
||||||
|
|
||||||
#ifdef GIMP_HAVE_PARASITES
|
#ifdef GIMP_HAVE_PARASITES
|
||||||
JpegSaveVals local_save_vals;
|
JpegSaveVals local_save_vals;
|
||||||
@ -1086,8 +1079,8 @@ background_jpeg_save (gpointer *ptr)
|
|||||||
preview_persistent *pp = (preview_persistent *)ptr;
|
preview_persistent *pp = (preview_persistent *)ptr;
|
||||||
guchar *t;
|
guchar *t;
|
||||||
guchar *s;
|
guchar *s;
|
||||||
int i, j;
|
gint i, j;
|
||||||
int yend;
|
gint yend;
|
||||||
|
|
||||||
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
||||||
{
|
{
|
||||||
@ -1186,14 +1179,15 @@ save_image (char *filename,
|
|||||||
guchar *temp, *t;
|
guchar *temp, *t;
|
||||||
guchar *data;
|
guchar *data;
|
||||||
guchar *src, *s;
|
guchar *src, *s;
|
||||||
char *name;
|
gchar *name;
|
||||||
int has_alpha;
|
gint has_alpha;
|
||||||
int rowstride, yend;
|
gint rowstride, yend;
|
||||||
int i, j;
|
gint i, j;
|
||||||
|
|
||||||
drawable = gimp_drawable_get (drawable_ID);
|
drawable = gimp_drawable_get (drawable_ID);
|
||||||
drawable_type = gimp_drawable_type (drawable_ID);
|
drawable_type = gimp_drawable_type (drawable_ID);
|
||||||
gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
gimp_pixel_rgn_init (&pixel_rgn, drawable,
|
||||||
|
0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
||||||
|
|
||||||
if (!preview)
|
if (!preview)
|
||||||
{
|
{
|
||||||
@ -1500,16 +1494,17 @@ save_image (char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
make_preview ()
|
make_preview (void)
|
||||||
{
|
{
|
||||||
char *tn;
|
gchar *tn;
|
||||||
|
|
||||||
destroy_preview ();
|
destroy_preview ();
|
||||||
|
|
||||||
if (jsvals.preview)
|
if (jsvals.preview)
|
||||||
{
|
{
|
||||||
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
||||||
save_image (tn, image_ID_global, drawable_ID_global, orig_image_ID_global, TRUE);
|
save_image (tn, image_ID_global,
|
||||||
|
drawable_ID_global, orig_image_ID_global, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1523,7 +1518,7 @@ make_preview ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destroy_preview ()
|
destroy_preview (void)
|
||||||
{
|
{
|
||||||
if (abort_me)
|
if (abort_me)
|
||||||
{
|
{
|
||||||
@ -1545,11 +1540,12 @@ destroy_preview ()
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_menu_item (GtkWidget *menu,
|
add_menu_item (GtkWidget *menu,
|
||||||
char *label,
|
gchar *label,
|
||||||
guint op_no,
|
guint op_no,
|
||||||
GtkSignalFunc callback)
|
GtkSignalFunc callback)
|
||||||
{
|
{
|
||||||
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
||||||
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
||||||
(GtkSignalFunc) callback, &op_no);
|
(GtkSignalFunc) callback, &op_no);
|
||||||
@ -1557,13 +1553,13 @@ add_menu_item (GtkWidget *menu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_gtk ()
|
init_gtk (void)
|
||||||
{
|
{
|
||||||
gchar **argv;
|
gchar **argv;
|
||||||
gint argc;
|
gint argc;
|
||||||
|
|
||||||
argc = 1;
|
argc = 1;
|
||||||
argv = g_new (gchar *, 1);
|
argv = g_new (gchar *, 1);
|
||||||
argv[0] = g_strdup ("jpeg");
|
argv[0] = g_strdup ("jpeg");
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
@ -1638,7 +1634,10 @@ save_dialog (void)
|
|||||||
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_preview_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.preview);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
||||||
gtk_widget_show (preview);
|
gtk_widget_show (preview);
|
||||||
@ -1678,8 +1677,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.quality);
|
&jsvals.quality);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
label = gtk_label_new (_("Smoothing:"));
|
label = gtk_label_new (_("Smoothing:"));
|
||||||
@ -1697,8 +1699,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.smoothing);
|
&jsvals.smoothing);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
/* sg - have to init scale here */
|
/* sg - have to init scale here */
|
||||||
@ -1747,7 +1752,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_optimize_update),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.optimize);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
@ -1756,7 +1764,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_progressive_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.progressive);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
||||||
jsvals.progressive);
|
jsvals.progressive);
|
||||||
@ -1770,7 +1781,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_baseline_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.baseline);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
||||||
jsvals.baseline);
|
jsvals.baseline);
|
||||||
@ -1902,14 +1916,6 @@ save_ok_callback (GtkWidget *widget,
|
|||||||
gtk_widget_destroy (GTK_WIDGET (data));
|
gtk_widget_destroy (GTK_WIDGET (data));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val)
|
|
||||||
{
|
|
||||||
*scale_val = adjustment->value;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_restart_toggle_update (GtkWidget *widget,
|
save_restart_toggle_update (GtkWidget *widget,
|
||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
@ -1923,49 +1929,19 @@ save_restart_update (GtkAdjustment *adjustment,
|
|||||||
{
|
{
|
||||||
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
||||||
|
|
||||||
gtk_widget_set_sensitive (restart_markers_label, (jsvals.restart ? TRUE : FALSE));
|
gtk_widget_set_sensitive (restart_markers_label,
|
||||||
gtk_widget_set_sensitive (restart_markers_scale, (jsvals.restart ? TRUE : FALSE));
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
gtk_widget_set_sensitive (restart_markers_scale,
|
||||||
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.optimize = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.progressive = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.baseline = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.preview = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
subsmp_callback (GtkWidget *widget,
|
subsmp_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.subsmp = *((guchar *)data);
|
jsvals.subsmp = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1973,6 +1949,6 @@ static void
|
|||||||
dct_callback (GtkWidget *widget,
|
dct_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.dct = *((guchar *)data);
|
jsvals.dct = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,10 @@
|
|||||||
#define DEFAULT_COMMENT "Created with The GIMP"
|
#define DEFAULT_COMMENT "Created with The GIMP"
|
||||||
|
|
||||||
/* sg - these should not be global... */
|
/* sg - these should not be global... */
|
||||||
static gint32 volatile image_ID_global = -1, orig_image_ID_global, drawable_ID_global = -1, layer_ID_global = -1;
|
static gint32 volatile image_ID_global = -1;
|
||||||
|
static gint32 orig_image_ID_global;
|
||||||
|
static gint32 drawable_ID_global = -1;
|
||||||
|
static gint32 layer_ID_global = -1;
|
||||||
static GtkWidget *preview_size = NULL;
|
static GtkWidget *preview_size = NULL;
|
||||||
static GDrawable *drawable_global = NULL;
|
static GDrawable *drawable_global = NULL;
|
||||||
|
|
||||||
@ -233,21 +236,10 @@ static void save_close_callback (GtkWidget *widget,
|
|||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_ok_callback (GtkWidget *widget,
|
static void save_ok_callback (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val);
|
|
||||||
static void save_restart_toggle_update (GtkWidget *toggle,
|
static void save_restart_toggle_update (GtkWidget *toggle,
|
||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void save_restart_update (GtkAdjustment *adjustment,
|
static void save_restart_update (GtkAdjustment *adjustment,
|
||||||
GtkWidget *toggle);
|
GtkWidget *toggle);
|
||||||
static void save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
|
|
||||||
static void make_preview (void);
|
static void make_preview (void);
|
||||||
static void destroy_preview (void);
|
static void destroy_preview (void);
|
||||||
@ -283,7 +275,7 @@ static JpegSaveInterface jsint =
|
|||||||
FALSE /* run */
|
FALSE /* run */
|
||||||
};
|
};
|
||||||
|
|
||||||
char *image_comment=NULL;
|
static gchar *image_comment = NULL;
|
||||||
|
|
||||||
static GtkWidget *restart_markers_scale = NULL;
|
static GtkWidget *restart_markers_scale = NULL;
|
||||||
static GtkWidget *restart_markers_label = NULL;
|
static GtkWidget *restart_markers_label = NULL;
|
||||||
@ -687,10 +679,11 @@ COM_handler (j_decompress_ptr cinfo)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct my_error_mgr {
|
typedef struct my_error_mgr
|
||||||
struct jpeg_error_mgr pub; /* "public" fields */
|
{
|
||||||
|
struct jpeg_error_mgr pub; /* "public" fields */
|
||||||
|
|
||||||
jmp_buf setjmp_buffer; /* for return to caller */
|
jmp_buf setjmp_buffer; /* for return to caller */
|
||||||
} *my_error_ptr;
|
} *my_error_ptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -712,9 +705,9 @@ my_error_exit (j_common_ptr cinfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gint32
|
static gint32
|
||||||
load_image (char *filename,
|
load_image (gchar *filename,
|
||||||
GRunModeType runmode,
|
GRunModeType runmode,
|
||||||
int preview)
|
gint preview)
|
||||||
{
|
{
|
||||||
GPixelRgn pixel_rgn;
|
GPixelRgn pixel_rgn;
|
||||||
GDrawable *drawable;
|
GDrawable *drawable;
|
||||||
@ -726,12 +719,12 @@ load_image (char *filename,
|
|||||||
guchar *buf;
|
guchar *buf;
|
||||||
guchar * volatile padded_buf = NULL;
|
guchar * volatile padded_buf = NULL;
|
||||||
guchar **rowbuf;
|
guchar **rowbuf;
|
||||||
char *name;
|
gchar *name;
|
||||||
int image_type;
|
gint image_type;
|
||||||
int layer_type;
|
gint layer_type;
|
||||||
int tile_height;
|
gint tile_height;
|
||||||
int scanlines;
|
gint scanlines;
|
||||||
int i, start, end;
|
gint i, start, end;
|
||||||
|
|
||||||
#ifdef GIMP_HAVE_PARASITES
|
#ifdef GIMP_HAVE_PARASITES
|
||||||
JpegSaveVals local_save_vals;
|
JpegSaveVals local_save_vals;
|
||||||
@ -1086,8 +1079,8 @@ background_jpeg_save (gpointer *ptr)
|
|||||||
preview_persistent *pp = (preview_persistent *)ptr;
|
preview_persistent *pp = (preview_persistent *)ptr;
|
||||||
guchar *t;
|
guchar *t;
|
||||||
guchar *s;
|
guchar *s;
|
||||||
int i, j;
|
gint i, j;
|
||||||
int yend;
|
gint yend;
|
||||||
|
|
||||||
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
||||||
{
|
{
|
||||||
@ -1186,14 +1179,15 @@ save_image (char *filename,
|
|||||||
guchar *temp, *t;
|
guchar *temp, *t;
|
||||||
guchar *data;
|
guchar *data;
|
||||||
guchar *src, *s;
|
guchar *src, *s;
|
||||||
char *name;
|
gchar *name;
|
||||||
int has_alpha;
|
gint has_alpha;
|
||||||
int rowstride, yend;
|
gint rowstride, yend;
|
||||||
int i, j;
|
gint i, j;
|
||||||
|
|
||||||
drawable = gimp_drawable_get (drawable_ID);
|
drawable = gimp_drawable_get (drawable_ID);
|
||||||
drawable_type = gimp_drawable_type (drawable_ID);
|
drawable_type = gimp_drawable_type (drawable_ID);
|
||||||
gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
gimp_pixel_rgn_init (&pixel_rgn, drawable,
|
||||||
|
0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
||||||
|
|
||||||
if (!preview)
|
if (!preview)
|
||||||
{
|
{
|
||||||
@ -1500,16 +1494,17 @@ save_image (char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
make_preview ()
|
make_preview (void)
|
||||||
{
|
{
|
||||||
char *tn;
|
gchar *tn;
|
||||||
|
|
||||||
destroy_preview ();
|
destroy_preview ();
|
||||||
|
|
||||||
if (jsvals.preview)
|
if (jsvals.preview)
|
||||||
{
|
{
|
||||||
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
||||||
save_image (tn, image_ID_global, drawable_ID_global, orig_image_ID_global, TRUE);
|
save_image (tn, image_ID_global,
|
||||||
|
drawable_ID_global, orig_image_ID_global, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1523,7 +1518,7 @@ make_preview ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destroy_preview ()
|
destroy_preview (void)
|
||||||
{
|
{
|
||||||
if (abort_me)
|
if (abort_me)
|
||||||
{
|
{
|
||||||
@ -1545,11 +1540,12 @@ destroy_preview ()
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_menu_item (GtkWidget *menu,
|
add_menu_item (GtkWidget *menu,
|
||||||
char *label,
|
gchar *label,
|
||||||
guint op_no,
|
guint op_no,
|
||||||
GtkSignalFunc callback)
|
GtkSignalFunc callback)
|
||||||
{
|
{
|
||||||
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
||||||
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
||||||
(GtkSignalFunc) callback, &op_no);
|
(GtkSignalFunc) callback, &op_no);
|
||||||
@ -1557,13 +1553,13 @@ add_menu_item (GtkWidget *menu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_gtk ()
|
init_gtk (void)
|
||||||
{
|
{
|
||||||
gchar **argv;
|
gchar **argv;
|
||||||
gint argc;
|
gint argc;
|
||||||
|
|
||||||
argc = 1;
|
argc = 1;
|
||||||
argv = g_new (gchar *, 1);
|
argv = g_new (gchar *, 1);
|
||||||
argv[0] = g_strdup ("jpeg");
|
argv[0] = g_strdup ("jpeg");
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
@ -1638,7 +1634,10 @@ save_dialog (void)
|
|||||||
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_preview_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.preview);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
||||||
gtk_widget_show (preview);
|
gtk_widget_show (preview);
|
||||||
@ -1678,8 +1677,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.quality);
|
&jsvals.quality);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
label = gtk_label_new (_("Smoothing:"));
|
label = gtk_label_new (_("Smoothing:"));
|
||||||
@ -1697,8 +1699,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.smoothing);
|
&jsvals.smoothing);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
/* sg - have to init scale here */
|
/* sg - have to init scale here */
|
||||||
@ -1747,7 +1752,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_optimize_update),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.optimize);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
@ -1756,7 +1764,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_progressive_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.progressive);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
||||||
jsvals.progressive);
|
jsvals.progressive);
|
||||||
@ -1770,7 +1781,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_baseline_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.baseline);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
||||||
jsvals.baseline);
|
jsvals.baseline);
|
||||||
@ -1902,14 +1916,6 @@ save_ok_callback (GtkWidget *widget,
|
|||||||
gtk_widget_destroy (GTK_WIDGET (data));
|
gtk_widget_destroy (GTK_WIDGET (data));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val)
|
|
||||||
{
|
|
||||||
*scale_val = adjustment->value;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_restart_toggle_update (GtkWidget *widget,
|
save_restart_toggle_update (GtkWidget *widget,
|
||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
@ -1923,49 +1929,19 @@ save_restart_update (GtkAdjustment *adjustment,
|
|||||||
{
|
{
|
||||||
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
||||||
|
|
||||||
gtk_widget_set_sensitive (restart_markers_label, (jsvals.restart ? TRUE : FALSE));
|
gtk_widget_set_sensitive (restart_markers_label,
|
||||||
gtk_widget_set_sensitive (restart_markers_scale, (jsvals.restart ? TRUE : FALSE));
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
gtk_widget_set_sensitive (restart_markers_scale,
|
||||||
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.optimize = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.progressive = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.baseline = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.preview = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
subsmp_callback (GtkWidget *widget,
|
subsmp_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.subsmp = *((guchar *)data);
|
jsvals.subsmp = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1973,6 +1949,6 @@ static void
|
|||||||
dct_callback (GtkWidget *widget,
|
dct_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.dct = *((guchar *)data);
|
jsvals.dct = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,10 @@
|
|||||||
#define DEFAULT_COMMENT "Created with The GIMP"
|
#define DEFAULT_COMMENT "Created with The GIMP"
|
||||||
|
|
||||||
/* sg - these should not be global... */
|
/* sg - these should not be global... */
|
||||||
static gint32 volatile image_ID_global = -1, orig_image_ID_global, drawable_ID_global = -1, layer_ID_global = -1;
|
static gint32 volatile image_ID_global = -1;
|
||||||
|
static gint32 orig_image_ID_global;
|
||||||
|
static gint32 drawable_ID_global = -1;
|
||||||
|
static gint32 layer_ID_global = -1;
|
||||||
static GtkWidget *preview_size = NULL;
|
static GtkWidget *preview_size = NULL;
|
||||||
static GDrawable *drawable_global = NULL;
|
static GDrawable *drawable_global = NULL;
|
||||||
|
|
||||||
@ -233,21 +236,10 @@ static void save_close_callback (GtkWidget *widget,
|
|||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_ok_callback (GtkWidget *widget,
|
static void save_ok_callback (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val);
|
|
||||||
static void save_restart_toggle_update (GtkWidget *toggle,
|
static void save_restart_toggle_update (GtkWidget *toggle,
|
||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void save_restart_update (GtkAdjustment *adjustment,
|
static void save_restart_update (GtkAdjustment *adjustment,
|
||||||
GtkWidget *toggle);
|
GtkWidget *toggle);
|
||||||
static void save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
|
|
||||||
static void make_preview (void);
|
static void make_preview (void);
|
||||||
static void destroy_preview (void);
|
static void destroy_preview (void);
|
||||||
@ -283,7 +275,7 @@ static JpegSaveInterface jsint =
|
|||||||
FALSE /* run */
|
FALSE /* run */
|
||||||
};
|
};
|
||||||
|
|
||||||
char *image_comment=NULL;
|
static gchar *image_comment = NULL;
|
||||||
|
|
||||||
static GtkWidget *restart_markers_scale = NULL;
|
static GtkWidget *restart_markers_scale = NULL;
|
||||||
static GtkWidget *restart_markers_label = NULL;
|
static GtkWidget *restart_markers_label = NULL;
|
||||||
@ -687,10 +679,11 @@ COM_handler (j_decompress_ptr cinfo)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct my_error_mgr {
|
typedef struct my_error_mgr
|
||||||
struct jpeg_error_mgr pub; /* "public" fields */
|
{
|
||||||
|
struct jpeg_error_mgr pub; /* "public" fields */
|
||||||
|
|
||||||
jmp_buf setjmp_buffer; /* for return to caller */
|
jmp_buf setjmp_buffer; /* for return to caller */
|
||||||
} *my_error_ptr;
|
} *my_error_ptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -712,9 +705,9 @@ my_error_exit (j_common_ptr cinfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gint32
|
static gint32
|
||||||
load_image (char *filename,
|
load_image (gchar *filename,
|
||||||
GRunModeType runmode,
|
GRunModeType runmode,
|
||||||
int preview)
|
gint preview)
|
||||||
{
|
{
|
||||||
GPixelRgn pixel_rgn;
|
GPixelRgn pixel_rgn;
|
||||||
GDrawable *drawable;
|
GDrawable *drawable;
|
||||||
@ -726,12 +719,12 @@ load_image (char *filename,
|
|||||||
guchar *buf;
|
guchar *buf;
|
||||||
guchar * volatile padded_buf = NULL;
|
guchar * volatile padded_buf = NULL;
|
||||||
guchar **rowbuf;
|
guchar **rowbuf;
|
||||||
char *name;
|
gchar *name;
|
||||||
int image_type;
|
gint image_type;
|
||||||
int layer_type;
|
gint layer_type;
|
||||||
int tile_height;
|
gint tile_height;
|
||||||
int scanlines;
|
gint scanlines;
|
||||||
int i, start, end;
|
gint i, start, end;
|
||||||
|
|
||||||
#ifdef GIMP_HAVE_PARASITES
|
#ifdef GIMP_HAVE_PARASITES
|
||||||
JpegSaveVals local_save_vals;
|
JpegSaveVals local_save_vals;
|
||||||
@ -1086,8 +1079,8 @@ background_jpeg_save (gpointer *ptr)
|
|||||||
preview_persistent *pp = (preview_persistent *)ptr;
|
preview_persistent *pp = (preview_persistent *)ptr;
|
||||||
guchar *t;
|
guchar *t;
|
||||||
guchar *s;
|
guchar *s;
|
||||||
int i, j;
|
gint i, j;
|
||||||
int yend;
|
gint yend;
|
||||||
|
|
||||||
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
||||||
{
|
{
|
||||||
@ -1186,14 +1179,15 @@ save_image (char *filename,
|
|||||||
guchar *temp, *t;
|
guchar *temp, *t;
|
||||||
guchar *data;
|
guchar *data;
|
||||||
guchar *src, *s;
|
guchar *src, *s;
|
||||||
char *name;
|
gchar *name;
|
||||||
int has_alpha;
|
gint has_alpha;
|
||||||
int rowstride, yend;
|
gint rowstride, yend;
|
||||||
int i, j;
|
gint i, j;
|
||||||
|
|
||||||
drawable = gimp_drawable_get (drawable_ID);
|
drawable = gimp_drawable_get (drawable_ID);
|
||||||
drawable_type = gimp_drawable_type (drawable_ID);
|
drawable_type = gimp_drawable_type (drawable_ID);
|
||||||
gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
gimp_pixel_rgn_init (&pixel_rgn, drawable,
|
||||||
|
0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
||||||
|
|
||||||
if (!preview)
|
if (!preview)
|
||||||
{
|
{
|
||||||
@ -1500,16 +1494,17 @@ save_image (char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
make_preview ()
|
make_preview (void)
|
||||||
{
|
{
|
||||||
char *tn;
|
gchar *tn;
|
||||||
|
|
||||||
destroy_preview ();
|
destroy_preview ();
|
||||||
|
|
||||||
if (jsvals.preview)
|
if (jsvals.preview)
|
||||||
{
|
{
|
||||||
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
||||||
save_image (tn, image_ID_global, drawable_ID_global, orig_image_ID_global, TRUE);
|
save_image (tn, image_ID_global,
|
||||||
|
drawable_ID_global, orig_image_ID_global, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1523,7 +1518,7 @@ make_preview ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destroy_preview ()
|
destroy_preview (void)
|
||||||
{
|
{
|
||||||
if (abort_me)
|
if (abort_me)
|
||||||
{
|
{
|
||||||
@ -1545,11 +1540,12 @@ destroy_preview ()
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_menu_item (GtkWidget *menu,
|
add_menu_item (GtkWidget *menu,
|
||||||
char *label,
|
gchar *label,
|
||||||
guint op_no,
|
guint op_no,
|
||||||
GtkSignalFunc callback)
|
GtkSignalFunc callback)
|
||||||
{
|
{
|
||||||
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
||||||
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
||||||
(GtkSignalFunc) callback, &op_no);
|
(GtkSignalFunc) callback, &op_no);
|
||||||
@ -1557,13 +1553,13 @@ add_menu_item (GtkWidget *menu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_gtk ()
|
init_gtk (void)
|
||||||
{
|
{
|
||||||
gchar **argv;
|
gchar **argv;
|
||||||
gint argc;
|
gint argc;
|
||||||
|
|
||||||
argc = 1;
|
argc = 1;
|
||||||
argv = g_new (gchar *, 1);
|
argv = g_new (gchar *, 1);
|
||||||
argv[0] = g_strdup ("jpeg");
|
argv[0] = g_strdup ("jpeg");
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
@ -1638,7 +1634,10 @@ save_dialog (void)
|
|||||||
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_preview_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.preview);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
||||||
gtk_widget_show (preview);
|
gtk_widget_show (preview);
|
||||||
@ -1678,8 +1677,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.quality);
|
&jsvals.quality);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
label = gtk_label_new (_("Smoothing:"));
|
label = gtk_label_new (_("Smoothing:"));
|
||||||
@ -1697,8 +1699,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.smoothing);
|
&jsvals.smoothing);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
/* sg - have to init scale here */
|
/* sg - have to init scale here */
|
||||||
@ -1747,7 +1752,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_optimize_update),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.optimize);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
@ -1756,7 +1764,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_progressive_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.progressive);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
||||||
jsvals.progressive);
|
jsvals.progressive);
|
||||||
@ -1770,7 +1781,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_baseline_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.baseline);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
||||||
jsvals.baseline);
|
jsvals.baseline);
|
||||||
@ -1902,14 +1916,6 @@ save_ok_callback (GtkWidget *widget,
|
|||||||
gtk_widget_destroy (GTK_WIDGET (data));
|
gtk_widget_destroy (GTK_WIDGET (data));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val)
|
|
||||||
{
|
|
||||||
*scale_val = adjustment->value;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_restart_toggle_update (GtkWidget *widget,
|
save_restart_toggle_update (GtkWidget *widget,
|
||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
@ -1923,49 +1929,19 @@ save_restart_update (GtkAdjustment *adjustment,
|
|||||||
{
|
{
|
||||||
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
||||||
|
|
||||||
gtk_widget_set_sensitive (restart_markers_label, (jsvals.restart ? TRUE : FALSE));
|
gtk_widget_set_sensitive (restart_markers_label,
|
||||||
gtk_widget_set_sensitive (restart_markers_scale, (jsvals.restart ? TRUE : FALSE));
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
gtk_widget_set_sensitive (restart_markers_scale,
|
||||||
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.optimize = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.progressive = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.baseline = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.preview = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
subsmp_callback (GtkWidget *widget,
|
subsmp_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.subsmp = *((guchar *)data);
|
jsvals.subsmp = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1973,6 +1949,6 @@ static void
|
|||||||
dct_callback (GtkWidget *widget,
|
dct_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.dct = *((guchar *)data);
|
jsvals.dct = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,10 @@
|
|||||||
#define DEFAULT_COMMENT "Created with The GIMP"
|
#define DEFAULT_COMMENT "Created with The GIMP"
|
||||||
|
|
||||||
/* sg - these should not be global... */
|
/* sg - these should not be global... */
|
||||||
static gint32 volatile image_ID_global = -1, orig_image_ID_global, drawable_ID_global = -1, layer_ID_global = -1;
|
static gint32 volatile image_ID_global = -1;
|
||||||
|
static gint32 orig_image_ID_global;
|
||||||
|
static gint32 drawable_ID_global = -1;
|
||||||
|
static gint32 layer_ID_global = -1;
|
||||||
static GtkWidget *preview_size = NULL;
|
static GtkWidget *preview_size = NULL;
|
||||||
static GDrawable *drawable_global = NULL;
|
static GDrawable *drawable_global = NULL;
|
||||||
|
|
||||||
@ -233,21 +236,10 @@ static void save_close_callback (GtkWidget *widget,
|
|||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_ok_callback (GtkWidget *widget,
|
static void save_ok_callback (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val);
|
|
||||||
static void save_restart_toggle_update (GtkWidget *toggle,
|
static void save_restart_toggle_update (GtkWidget *toggle,
|
||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void save_restart_update (GtkAdjustment *adjustment,
|
static void save_restart_update (GtkAdjustment *adjustment,
|
||||||
GtkWidget *toggle);
|
GtkWidget *toggle);
|
||||||
static void save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
|
|
||||||
static void make_preview (void);
|
static void make_preview (void);
|
||||||
static void destroy_preview (void);
|
static void destroy_preview (void);
|
||||||
@ -283,7 +275,7 @@ static JpegSaveInterface jsint =
|
|||||||
FALSE /* run */
|
FALSE /* run */
|
||||||
};
|
};
|
||||||
|
|
||||||
char *image_comment=NULL;
|
static gchar *image_comment = NULL;
|
||||||
|
|
||||||
static GtkWidget *restart_markers_scale = NULL;
|
static GtkWidget *restart_markers_scale = NULL;
|
||||||
static GtkWidget *restart_markers_label = NULL;
|
static GtkWidget *restart_markers_label = NULL;
|
||||||
@ -687,10 +679,11 @@ COM_handler (j_decompress_ptr cinfo)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct my_error_mgr {
|
typedef struct my_error_mgr
|
||||||
struct jpeg_error_mgr pub; /* "public" fields */
|
{
|
||||||
|
struct jpeg_error_mgr pub; /* "public" fields */
|
||||||
|
|
||||||
jmp_buf setjmp_buffer; /* for return to caller */
|
jmp_buf setjmp_buffer; /* for return to caller */
|
||||||
} *my_error_ptr;
|
} *my_error_ptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -712,9 +705,9 @@ my_error_exit (j_common_ptr cinfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gint32
|
static gint32
|
||||||
load_image (char *filename,
|
load_image (gchar *filename,
|
||||||
GRunModeType runmode,
|
GRunModeType runmode,
|
||||||
int preview)
|
gint preview)
|
||||||
{
|
{
|
||||||
GPixelRgn pixel_rgn;
|
GPixelRgn pixel_rgn;
|
||||||
GDrawable *drawable;
|
GDrawable *drawable;
|
||||||
@ -726,12 +719,12 @@ load_image (char *filename,
|
|||||||
guchar *buf;
|
guchar *buf;
|
||||||
guchar * volatile padded_buf = NULL;
|
guchar * volatile padded_buf = NULL;
|
||||||
guchar **rowbuf;
|
guchar **rowbuf;
|
||||||
char *name;
|
gchar *name;
|
||||||
int image_type;
|
gint image_type;
|
||||||
int layer_type;
|
gint layer_type;
|
||||||
int tile_height;
|
gint tile_height;
|
||||||
int scanlines;
|
gint scanlines;
|
||||||
int i, start, end;
|
gint i, start, end;
|
||||||
|
|
||||||
#ifdef GIMP_HAVE_PARASITES
|
#ifdef GIMP_HAVE_PARASITES
|
||||||
JpegSaveVals local_save_vals;
|
JpegSaveVals local_save_vals;
|
||||||
@ -1086,8 +1079,8 @@ background_jpeg_save (gpointer *ptr)
|
|||||||
preview_persistent *pp = (preview_persistent *)ptr;
|
preview_persistent *pp = (preview_persistent *)ptr;
|
||||||
guchar *t;
|
guchar *t;
|
||||||
guchar *s;
|
guchar *s;
|
||||||
int i, j;
|
gint i, j;
|
||||||
int yend;
|
gint yend;
|
||||||
|
|
||||||
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
||||||
{
|
{
|
||||||
@ -1186,14 +1179,15 @@ save_image (char *filename,
|
|||||||
guchar *temp, *t;
|
guchar *temp, *t;
|
||||||
guchar *data;
|
guchar *data;
|
||||||
guchar *src, *s;
|
guchar *src, *s;
|
||||||
char *name;
|
gchar *name;
|
||||||
int has_alpha;
|
gint has_alpha;
|
||||||
int rowstride, yend;
|
gint rowstride, yend;
|
||||||
int i, j;
|
gint i, j;
|
||||||
|
|
||||||
drawable = gimp_drawable_get (drawable_ID);
|
drawable = gimp_drawable_get (drawable_ID);
|
||||||
drawable_type = gimp_drawable_type (drawable_ID);
|
drawable_type = gimp_drawable_type (drawable_ID);
|
||||||
gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
gimp_pixel_rgn_init (&pixel_rgn, drawable,
|
||||||
|
0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
||||||
|
|
||||||
if (!preview)
|
if (!preview)
|
||||||
{
|
{
|
||||||
@ -1500,16 +1494,17 @@ save_image (char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
make_preview ()
|
make_preview (void)
|
||||||
{
|
{
|
||||||
char *tn;
|
gchar *tn;
|
||||||
|
|
||||||
destroy_preview ();
|
destroy_preview ();
|
||||||
|
|
||||||
if (jsvals.preview)
|
if (jsvals.preview)
|
||||||
{
|
{
|
||||||
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
||||||
save_image (tn, image_ID_global, drawable_ID_global, orig_image_ID_global, TRUE);
|
save_image (tn, image_ID_global,
|
||||||
|
drawable_ID_global, orig_image_ID_global, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1523,7 +1518,7 @@ make_preview ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destroy_preview ()
|
destroy_preview (void)
|
||||||
{
|
{
|
||||||
if (abort_me)
|
if (abort_me)
|
||||||
{
|
{
|
||||||
@ -1545,11 +1540,12 @@ destroy_preview ()
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_menu_item (GtkWidget *menu,
|
add_menu_item (GtkWidget *menu,
|
||||||
char *label,
|
gchar *label,
|
||||||
guint op_no,
|
guint op_no,
|
||||||
GtkSignalFunc callback)
|
GtkSignalFunc callback)
|
||||||
{
|
{
|
||||||
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
||||||
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
||||||
(GtkSignalFunc) callback, &op_no);
|
(GtkSignalFunc) callback, &op_no);
|
||||||
@ -1557,13 +1553,13 @@ add_menu_item (GtkWidget *menu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_gtk ()
|
init_gtk (void)
|
||||||
{
|
{
|
||||||
gchar **argv;
|
gchar **argv;
|
||||||
gint argc;
|
gint argc;
|
||||||
|
|
||||||
argc = 1;
|
argc = 1;
|
||||||
argv = g_new (gchar *, 1);
|
argv = g_new (gchar *, 1);
|
||||||
argv[0] = g_strdup ("jpeg");
|
argv[0] = g_strdup ("jpeg");
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
@ -1638,7 +1634,10 @@ save_dialog (void)
|
|||||||
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_preview_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.preview);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
||||||
gtk_widget_show (preview);
|
gtk_widget_show (preview);
|
||||||
@ -1678,8 +1677,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.quality);
|
&jsvals.quality);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
label = gtk_label_new (_("Smoothing:"));
|
label = gtk_label_new (_("Smoothing:"));
|
||||||
@ -1697,8 +1699,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.smoothing);
|
&jsvals.smoothing);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
/* sg - have to init scale here */
|
/* sg - have to init scale here */
|
||||||
@ -1747,7 +1752,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_optimize_update),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.optimize);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
@ -1756,7 +1764,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_progressive_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.progressive);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
||||||
jsvals.progressive);
|
jsvals.progressive);
|
||||||
@ -1770,7 +1781,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_baseline_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.baseline);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
||||||
jsvals.baseline);
|
jsvals.baseline);
|
||||||
@ -1902,14 +1916,6 @@ save_ok_callback (GtkWidget *widget,
|
|||||||
gtk_widget_destroy (GTK_WIDGET (data));
|
gtk_widget_destroy (GTK_WIDGET (data));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val)
|
|
||||||
{
|
|
||||||
*scale_val = adjustment->value;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_restart_toggle_update (GtkWidget *widget,
|
save_restart_toggle_update (GtkWidget *widget,
|
||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
@ -1923,49 +1929,19 @@ save_restart_update (GtkAdjustment *adjustment,
|
|||||||
{
|
{
|
||||||
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
||||||
|
|
||||||
gtk_widget_set_sensitive (restart_markers_label, (jsvals.restart ? TRUE : FALSE));
|
gtk_widget_set_sensitive (restart_markers_label,
|
||||||
gtk_widget_set_sensitive (restart_markers_scale, (jsvals.restart ? TRUE : FALSE));
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
gtk_widget_set_sensitive (restart_markers_scale,
|
||||||
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.optimize = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.progressive = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.baseline = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.preview = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
subsmp_callback (GtkWidget *widget,
|
subsmp_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.subsmp = *((guchar *)data);
|
jsvals.subsmp = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1973,6 +1949,6 @@ static void
|
|||||||
dct_callback (GtkWidget *widget,
|
dct_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.dct = *((guchar *)data);
|
jsvals.dct = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,10 @@
|
|||||||
#define DEFAULT_COMMENT "Created with The GIMP"
|
#define DEFAULT_COMMENT "Created with The GIMP"
|
||||||
|
|
||||||
/* sg - these should not be global... */
|
/* sg - these should not be global... */
|
||||||
static gint32 volatile image_ID_global = -1, orig_image_ID_global, drawable_ID_global = -1, layer_ID_global = -1;
|
static gint32 volatile image_ID_global = -1;
|
||||||
|
static gint32 orig_image_ID_global;
|
||||||
|
static gint32 drawable_ID_global = -1;
|
||||||
|
static gint32 layer_ID_global = -1;
|
||||||
static GtkWidget *preview_size = NULL;
|
static GtkWidget *preview_size = NULL;
|
||||||
static GDrawable *drawable_global = NULL;
|
static GDrawable *drawable_global = NULL;
|
||||||
|
|
||||||
@ -233,21 +236,10 @@ static void save_close_callback (GtkWidget *widget,
|
|||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_ok_callback (GtkWidget *widget,
|
static void save_ok_callback (GtkWidget *widget,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
static void save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val);
|
|
||||||
static void save_restart_toggle_update (GtkWidget *toggle,
|
static void save_restart_toggle_update (GtkWidget *toggle,
|
||||||
GtkAdjustment *adjustment);
|
GtkAdjustment *adjustment);
|
||||||
static void save_restart_update (GtkAdjustment *adjustment,
|
static void save_restart_update (GtkAdjustment *adjustment,
|
||||||
GtkWidget *toggle);
|
GtkWidget *toggle);
|
||||||
static void save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
static void save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data);
|
|
||||||
|
|
||||||
|
|
||||||
static void make_preview (void);
|
static void make_preview (void);
|
||||||
static void destroy_preview (void);
|
static void destroy_preview (void);
|
||||||
@ -283,7 +275,7 @@ static JpegSaveInterface jsint =
|
|||||||
FALSE /* run */
|
FALSE /* run */
|
||||||
};
|
};
|
||||||
|
|
||||||
char *image_comment=NULL;
|
static gchar *image_comment = NULL;
|
||||||
|
|
||||||
static GtkWidget *restart_markers_scale = NULL;
|
static GtkWidget *restart_markers_scale = NULL;
|
||||||
static GtkWidget *restart_markers_label = NULL;
|
static GtkWidget *restart_markers_label = NULL;
|
||||||
@ -687,10 +679,11 @@ COM_handler (j_decompress_ptr cinfo)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct my_error_mgr {
|
typedef struct my_error_mgr
|
||||||
struct jpeg_error_mgr pub; /* "public" fields */
|
{
|
||||||
|
struct jpeg_error_mgr pub; /* "public" fields */
|
||||||
|
|
||||||
jmp_buf setjmp_buffer; /* for return to caller */
|
jmp_buf setjmp_buffer; /* for return to caller */
|
||||||
} *my_error_ptr;
|
} *my_error_ptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -712,9 +705,9 @@ my_error_exit (j_common_ptr cinfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static gint32
|
static gint32
|
||||||
load_image (char *filename,
|
load_image (gchar *filename,
|
||||||
GRunModeType runmode,
|
GRunModeType runmode,
|
||||||
int preview)
|
gint preview)
|
||||||
{
|
{
|
||||||
GPixelRgn pixel_rgn;
|
GPixelRgn pixel_rgn;
|
||||||
GDrawable *drawable;
|
GDrawable *drawable;
|
||||||
@ -726,12 +719,12 @@ load_image (char *filename,
|
|||||||
guchar *buf;
|
guchar *buf;
|
||||||
guchar * volatile padded_buf = NULL;
|
guchar * volatile padded_buf = NULL;
|
||||||
guchar **rowbuf;
|
guchar **rowbuf;
|
||||||
char *name;
|
gchar *name;
|
||||||
int image_type;
|
gint image_type;
|
||||||
int layer_type;
|
gint layer_type;
|
||||||
int tile_height;
|
gint tile_height;
|
||||||
int scanlines;
|
gint scanlines;
|
||||||
int i, start, end;
|
gint i, start, end;
|
||||||
|
|
||||||
#ifdef GIMP_HAVE_PARASITES
|
#ifdef GIMP_HAVE_PARASITES
|
||||||
JpegSaveVals local_save_vals;
|
JpegSaveVals local_save_vals;
|
||||||
@ -1086,8 +1079,8 @@ background_jpeg_save (gpointer *ptr)
|
|||||||
preview_persistent *pp = (preview_persistent *)ptr;
|
preview_persistent *pp = (preview_persistent *)ptr;
|
||||||
guchar *t;
|
guchar *t;
|
||||||
guchar *s;
|
guchar *s;
|
||||||
int i, j;
|
gint i, j;
|
||||||
int yend;
|
gint yend;
|
||||||
|
|
||||||
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
if (pp->abort_me || (pp->cinfo.next_scanline >= pp->cinfo.image_height))
|
||||||
{
|
{
|
||||||
@ -1186,14 +1179,15 @@ save_image (char *filename,
|
|||||||
guchar *temp, *t;
|
guchar *temp, *t;
|
||||||
guchar *data;
|
guchar *data;
|
||||||
guchar *src, *s;
|
guchar *src, *s;
|
||||||
char *name;
|
gchar *name;
|
||||||
int has_alpha;
|
gint has_alpha;
|
||||||
int rowstride, yend;
|
gint rowstride, yend;
|
||||||
int i, j;
|
gint i, j;
|
||||||
|
|
||||||
drawable = gimp_drawable_get (drawable_ID);
|
drawable = gimp_drawable_get (drawable_ID);
|
||||||
drawable_type = gimp_drawable_type (drawable_ID);
|
drawable_type = gimp_drawable_type (drawable_ID);
|
||||||
gimp_pixel_rgn_init (&pixel_rgn, drawable, 0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
gimp_pixel_rgn_init (&pixel_rgn, drawable,
|
||||||
|
0, 0, drawable->width, drawable->height, FALSE, FALSE);
|
||||||
|
|
||||||
if (!preview)
|
if (!preview)
|
||||||
{
|
{
|
||||||
@ -1500,16 +1494,17 @@ save_image (char *filename,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
make_preview ()
|
make_preview (void)
|
||||||
{
|
{
|
||||||
char *tn;
|
gchar *tn;
|
||||||
|
|
||||||
destroy_preview ();
|
destroy_preview ();
|
||||||
|
|
||||||
if (jsvals.preview)
|
if (jsvals.preview)
|
||||||
{
|
{
|
||||||
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
tn = tempnam(NULL, "gimp"); /* user temp dir? */
|
||||||
save_image (tn, image_ID_global, drawable_ID_global, orig_image_ID_global, TRUE);
|
save_image (tn, image_ID_global,
|
||||||
|
drawable_ID_global, orig_image_ID_global, TRUE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1523,7 +1518,7 @@ make_preview ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
destroy_preview ()
|
destroy_preview (void)
|
||||||
{
|
{
|
||||||
if (abort_me)
|
if (abort_me)
|
||||||
{
|
{
|
||||||
@ -1545,11 +1540,12 @@ destroy_preview ()
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
add_menu_item (GtkWidget *menu,
|
add_menu_item (GtkWidget *menu,
|
||||||
char *label,
|
gchar *label,
|
||||||
guint op_no,
|
guint op_no,
|
||||||
GtkSignalFunc callback)
|
GtkSignalFunc callback)
|
||||||
{
|
{
|
||||||
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
GtkWidget *menu_item = gtk_menu_item_new_with_label (label);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
gtk_container_add (GTK_CONTAINER (menu), menu_item);
|
||||||
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
gtk_signal_connect (GTK_OBJECT (menu_item), "activate",
|
||||||
(GtkSignalFunc) callback, &op_no);
|
(GtkSignalFunc) callback, &op_no);
|
||||||
@ -1557,13 +1553,13 @@ add_menu_item (GtkWidget *menu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_gtk ()
|
init_gtk (void)
|
||||||
{
|
{
|
||||||
gchar **argv;
|
gchar **argv;
|
||||||
gint argc;
|
gint argc;
|
||||||
|
|
||||||
argc = 1;
|
argc = 1;
|
||||||
argv = g_new (gchar *, 1);
|
argv = g_new (gchar *, 1);
|
||||||
argv[0] = g_strdup ("jpeg");
|
argv[0] = g_strdup ("jpeg");
|
||||||
|
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
@ -1638,7 +1634,10 @@ save_dialog (void)
|
|||||||
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
preview = gtk_check_button_new_with_label (_("Preview (in Image Window)"));
|
||||||
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
gtk_box_pack_start (GTK_BOX (vbox), preview, FALSE, FALSE, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_preview_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.preview);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (preview), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (preview), jsvals.preview);
|
||||||
gtk_widget_show (preview);
|
gtk_widget_show (preview);
|
||||||
@ -1678,8 +1677,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.quality);
|
&jsvals.quality);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
label = gtk_label_new (_("Smoothing:"));
|
label = gtk_label_new (_("Smoothing:"));
|
||||||
@ -1697,8 +1699,11 @@ save_dialog (void)
|
|||||||
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
gtk_scale_set_digits (GTK_SCALE (scale), 2);
|
||||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);
|
||||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
GTK_SIGNAL_FUNC (save_scale_update),
|
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
|
||||||
&jsvals.smoothing);
|
&jsvals.smoothing);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
|
NULL);
|
||||||
gtk_widget_show (scale);
|
gtk_widget_show (scale);
|
||||||
|
|
||||||
/* sg - have to init scale here */
|
/* sg - have to init scale here */
|
||||||
@ -1747,7 +1752,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
gtk_table_attach (GTK_TABLE (table), toggle, 0, 3, 4, 5,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_optimize_update),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.optimize);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (toggle), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), jsvals.optimize);
|
||||||
gtk_widget_show (toggle);
|
gtk_widget_show (toggle);
|
||||||
@ -1756,7 +1764,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
gtk_table_attach (GTK_TABLE (table), progressive, 0, 3, 5, 6,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_progressive_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.progressive);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (progressive), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (progressive),
|
||||||
jsvals.progressive);
|
jsvals.progressive);
|
||||||
@ -1770,7 +1781,10 @@ save_dialog (void)
|
|||||||
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
gtk_table_attach (GTK_TABLE (table), baseline, 0, 3, 6, 7,
|
||||||
GTK_FILL, 0, 0, 0);
|
GTK_FILL, 0, 0, 0);
|
||||||
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
GTK_SIGNAL_FUNC (save_baseline_toggle),
|
GTK_SIGNAL_FUNC (gimp_toggle_button_update),
|
||||||
|
&jsvals.baseline);
|
||||||
|
gtk_signal_connect (GTK_OBJECT (baseline), "toggled",
|
||||||
|
GTK_SIGNAL_FUNC (make_preview),
|
||||||
NULL);
|
NULL);
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (baseline),
|
||||||
jsvals.baseline);
|
jsvals.baseline);
|
||||||
@ -1902,14 +1916,6 @@ save_ok_callback (GtkWidget *widget,
|
|||||||
gtk_widget_destroy (GTK_WIDGET (data));
|
gtk_widget_destroy (GTK_WIDGET (data));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_scale_update (GtkAdjustment *adjustment,
|
|
||||||
double *scale_val)
|
|
||||||
{
|
|
||||||
*scale_val = adjustment->value;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_restart_toggle_update (GtkWidget *widget,
|
save_restart_toggle_update (GtkWidget *widget,
|
||||||
GtkAdjustment *adjustment)
|
GtkAdjustment *adjustment)
|
||||||
@ -1923,49 +1929,19 @@ save_restart_update (GtkAdjustment *adjustment,
|
|||||||
{
|
{
|
||||||
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
jsvals.restart = GTK_TOGGLE_BUTTON (toggle)->active ? adjustment->value : 0;
|
||||||
|
|
||||||
gtk_widget_set_sensitive (restart_markers_label, (jsvals.restart ? TRUE : FALSE));
|
gtk_widget_set_sensitive (restart_markers_label,
|
||||||
gtk_widget_set_sensitive (restart_markers_scale, (jsvals.restart ? TRUE : FALSE));
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
gtk_widget_set_sensitive (restart_markers_scale,
|
||||||
|
(jsvals.restart ? TRUE : FALSE));
|
||||||
|
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
save_optimize_update (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.optimize = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_progressive_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.progressive = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_baseline_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.baseline = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
save_preview_toggle (GtkWidget *widget,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
jsvals.preview = GTK_TOGGLE_BUTTON (widget)->active;
|
|
||||||
make_preview ();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
subsmp_callback (GtkWidget *widget,
|
subsmp_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.subsmp = *((guchar *)data);
|
jsvals.subsmp = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1973,6 +1949,6 @@ static void
|
|||||||
dct_callback (GtkWidget *widget,
|
dct_callback (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
jsvals.dct = *((guchar *)data);
|
jsvals.dct = *((guchar *) data);
|
||||||
make_preview ();
|
make_preview ();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user