ported to GimpAspectPreview, and some minor cleanups.

* plug-ins/common/AlienMap2.c: ported to GimpAspectPreview, and some minor
  cleanups.
This commit is contained in:
David Odin 2004-10-10 21:32:31 +00:00
parent e4e6bc4944
commit cbfc867db0
2 changed files with 84 additions and 112 deletions

View file

@ -1,3 +1,8 @@
2004-10-10 DindinX <dindinx@gimp.org>
* plug-ins/common/AlienMap2.c: ported to GimpAspectPreview, and some
minor cleanups.
2004-10-10 DindinX <dindinx@gimp.org>
* plug-ins/common/vpropagate.c: added a preview.

View file

@ -61,13 +61,9 @@ typedef struct
gboolean redmode;
gboolean greenmode;
gboolean bluemode;
gboolean preview;
} alienmap2_vals_t;
typedef struct
{
gint run;
} alienmap2_interface_t;
/* Declare local functions. */
static void query (void);
@ -82,12 +78,10 @@ static void transform (guchar *r,
guchar *g,
guchar *b);
static gint alienmap2_dialog (void);
static void dialog_update_preview (void);
static void dialog_update_preview (GimpDrawable *drawable,
GimpPreview *preview);
static void dialog_scale_update (GtkAdjustment *adjustment,
gdouble *value);
static void dialog_response (GtkWidget *widget,
gint response_id,
gpointer data);
static void alienmap2_toggle_update (GtkWidget *widget,
gpointer data);
static void alienmap2_radio_update (GtkWidget *widget,
@ -100,10 +94,7 @@ static void alienmap2_get_label_size (void);
/***** Variables *****/
#define PREVIEW_SIZE 128
static GtkWidget *preview;
static gint preview_width, preview_height, preview_bpp;
static guchar *preview_cache;
GimpPlugInInfo PLUG_IN_INFO =
{
@ -113,11 +104,6 @@ GimpPlugInInfo PLUG_IN_INFO =
run /* run_proc */
};
static alienmap2_interface_t wint =
{
FALSE /* run */
};
static alienmap2_vals_t wvals =
{
1.0,
@ -129,6 +115,7 @@ static alienmap2_vals_t wvals =
RGB_MODEL,
TRUE,
TRUE,
TRUE,
TRUE
};
@ -397,13 +384,16 @@ static gint
alienmap2_dialog (void)
{
GtkWidget *dialog;
GtkWidget *main_vbox;
GtkWidget *top_table;
GtkWidget *align;
GtkWidget *frame;
GtkWidget *toggle;
GtkWidget *hbox;
GtkWidget *vbox;
GtkWidget *table;
GtkObject *adj;
gboolean run;
gimp_ui_init ("alienmap2", TRUE);
@ -416,37 +406,24 @@ alienmap2_dialog (void)
NULL);
g_signal_connect (dialog, "response",
G_CALLBACK (dialog_response),
NULL);
g_signal_connect (dialog, "destroy",
G_CALLBACK (gtk_main_quit),
NULL);
main_vbox = gtk_vbox_new (FALSE, 12);
gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), main_vbox);
gtk_widget_show (main_vbox);
preview = gimp_aspect_preview_new (drawable, &wvals.preview);
gtk_box_pack_start_defaults (GTK_BOX (main_vbox), preview);
gtk_widget_show (preview);
g_signal_connect_swapped (preview, "invalidated",
G_CALLBACK (dialog_update_preview),
drawable);
top_table = gtk_table_new (2, 2, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (top_table), 12);
gtk_table_set_row_spacings (GTK_TABLE (top_table), 12);
gtk_container_set_border_width (GTK_CONTAINER (top_table), 12);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), top_table,
FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (main_vbox), top_table, FALSE, FALSE, 0);
gtk_widget_show (top_table);
/* Preview */
align = gtk_alignment_new (0.0, 0.0, 0.0, 0.0);
gtk_table_attach (GTK_TABLE (top_table), align, 0, 1, 0, 1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (align);
preview = gimp_preview_area_new ();
preview_width = preview_height = PREVIEW_SIZE;
preview_cache = gimp_drawable_get_thumbnail_data (drawable->drawable_id,
&preview_width,
&preview_height,
&preview_bpp);
gtk_widget_set_size_request (preview, preview_width, preview_height);
gtk_container_add (GTK_CONTAINER (align), preview);
gtk_widget_show (preview);
/* Controls */
table = gtk_table_new (6, 3, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
@ -528,10 +505,10 @@ alienmap2_dialog (void)
&wvals.blueangle);
/* Mode toggle box */
vbox = gtk_vbox_new (FALSE, 6);
gtk_table_attach (GTK_TABLE (top_table), vbox, 1, 2, 0, 1,
hbox = gtk_hbox_new (FALSE, 6);
gtk_table_attach (GTK_TABLE (top_table), hbox, 1, 2, 0, 1,
GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 0, 0);
gtk_widget_show (vbox);
gtk_widget_show (hbox);
frame =
gimp_int_radio_group_new (TRUE, _("Mode"),
@ -543,7 +520,11 @@ alienmap2_dialog (void)
NULL);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (hbox), frame, FALSE, FALSE, 0);
vbox = gtk_vbox_new (FALSE, 6);
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
gtk_widget_show (vbox);
toggle_modify_rh = toggle = gtk_check_button_new_with_mnemonic (NULL);
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 0);
@ -579,30 +560,32 @@ alienmap2_dialog (void)
alienmap2_set_labels ();
alienmap2_set_sensitive ();
dialog_update_preview ();
run = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK);
gtk_main ();
gtk_widget_destroy (dialog);
return wint.run;
return run;
}
static void
dialog_update_preview (void)
dialog_update_preview (GimpDrawable *drawable,
GimpPreview *preview)
{
guchar *dest;
guchar *dest, *src;
gint width, height, bpp;
gint i;
dest = g_new (guchar, preview_width * preview_height * preview_bpp);
gimp_preview_get_size (preview, &width, &height);
src = gimp_drawable_get_thumbnail_data (drawable->drawable_id,
&width, &height, &bpp);
dest = g_new (guchar, width * height * bpp);
for (i = 0 ; i < preview_width * preview_height ; i++)
alienmap2_func (preview_cache + i * preview_bpp,
dest + i * preview_bpp,
preview_bpp, NULL);
gimp_preview_area_draw (GIMP_PREVIEW_AREA (preview),
0, 0, preview_width, preview_height,
gimp_drawable_type (drawable->drawable_id),
dest,
preview_width * preview_bpp);
for (i = 0 ; i < width * height ; i++)
alienmap2_func (src + i * bpp, dest + i * bpp, bpp, NULL);
gimp_preview_draw_buffer (preview, dest, width * bpp);
g_free (src);
g_free (dest);
}
@ -612,23 +595,7 @@ dialog_scale_update (GtkAdjustment *adjustment,
{
gimp_double_adjustment_update (adjustment, value);
dialog_update_preview();
}
static void
dialog_response (GtkWidget *widget,
gint response_id,
gpointer data)
{
switch (response_id)
{
case GTK_RESPONSE_OK:
wint.run = TRUE;
default:
gtk_widget_destroy (widget);
break;
}
gimp_preview_invalidate (GIMP_PREVIEW (preview));
}
static void
@ -639,7 +606,7 @@ alienmap2_toggle_update (GtkWidget *widget,
alienmap2_set_sensitive ();
dialog_update_preview ();
gimp_preview_invalidate (GIMP_PREVIEW (preview));
}
static void
@ -650,7 +617,7 @@ alienmap2_radio_update (GtkWidget *widget,
alienmap2_set_labels ();
dialog_update_preview ();
gimp_preview_invalidate (GIMP_PREVIEW (preview));
}