From 7a315530023b4097849b22bb96ffbebd7c563f8d Mon Sep 17 00:00:00 2001 From: Adrian Likins Date: Fri, 30 Jan 1998 00:31:16 +0000 Subject: [PATCH] Fixes for non-interactive operation of plugins including holes, exchange, grid, deinterlace -adrian --- ChangeLog | 7 + plug-ins/common/deinterlace.c | 5 +- plug-ins/common/exchange.c | 16 +- plug-ins/common/grid.c | 590 +++++++++++++++-------------- plug-ins/deinterlace/deinterlace.c | 5 +- plug-ins/exchange/exchange.c | 16 +- plug-ins/grid/grid.c | 590 +++++++++++++++-------------- plug-ins/holes/holes.c | 2 +- 8 files changed, 664 insertions(+), 567 deletions(-) diff --git a/ChangeLog b/ChangeLog index 84ed076b84..33fc7f56e6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Thu Jan 29 19:25:52 EST 1998 Adrian Likins + + * fixed the non-iteractive modes for plugins: + exchange, holes, grid, deinterlace + (mainly expecting wrong number of arguments or just ingome + non-interactive mood entirely) + Thu Jan 29 01:05:10 PST 1998 Manish Singh * updated refract and warp plugins diff --git a/plug-ins/common/deinterlace.c b/plug-ins/common/deinterlace.c index 9a82052903..12b3e1a1be 100644 --- a/plug-ins/common/deinterlace.c +++ b/plug-ins/common/deinterlace.c @@ -51,7 +51,7 @@ GPlugInInfo PLUG_IN_INFO = run, /* run_proc */ }; -static gint DeinterlaceValue = 1; +static gint DeinterlaceValue = 1; MAIN () @@ -108,10 +108,11 @@ run (char *name, break; case RUN_NONINTERACTIVE: - if (nparams != 1) + if (nparams != 4) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS) DeinterlaceValue = param[3].data.d_int32; + break; case RUN_WITH_LAST_VALS: diff --git a/plug-ins/common/exchange.c b/plug-ins/common/exchange.c index c68ebd9934..876f48c467 100644 --- a/plug-ins/common/exchange.c +++ b/plug-ins/common/exchange.c @@ -150,8 +150,20 @@ void run(char *name, int nparams, GParam *param, int *nreturn_vals, GParam **ret gimp_palette_get_foreground(&xargs.fromred, &xargs.fromgreen, &xargs.fromblue); break; case RUN_NONINTERACTIVE: - status = STATUS_EXECUTION_ERROR; - return; + if(nparams != 10) + status = STATUS_EXECUTION_ERROR; + if (status == STATUS_SUCCESS) + { + xargs.fromred = param[3].data.d_int8; + xargs.fromgreen = param[4].data.d_int8; + xargs.fromblue = param[5].data.d_int8; + xargs.tored = param[6].data.d_int8; + xargs.togreen = param[7].data.d_int8; + xargs.toblue = param[8].data.d_int8; + xargs.threshold = param[9].data.d_int32; + } + break; + default: break; } diff --git a/plug-ins/common/grid.c b/plug-ins/common/grid.c index 785750d246..cf45ccd972 100644 --- a/plug-ins/common/grid.c +++ b/plug-ins/common/grid.c @@ -17,363 +17,395 @@ #include "gtk/gtk.h" /* Declare local functions. */ -static void query(void); -static void run(char *name, - int nparams, - GParam * param, - int *nreturn_vals, - GParam ** return_vals); -static gint dialog(); +static void query (void); +static void run (char *name, + int nparams, + GParam * param, + int *nreturn_vals, + GParam ** return_vals); +static gint dialog (); -static void doit(GDrawable * drawable); +static void doit (GDrawable * drawable); GPlugInInfo PLUG_IN_INFO = { - NULL, /* init_proc */ - NULL, /* quit_proc */ - query, /* query_proc */ - run, /* run_proc */ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ }; gint bytes; gint sx1, sy1, sx2, sy2; int run_flag = 0; -typedef struct { - gint width, height; - gint x_offset, y_offset; -} config; +typedef struct + { + gint width, height; + gint x_offset, y_offset; + } +config; config my_config = { - 16, 16, /* width, height */ - 0, 0, /* x_offset, y_offset */ + 16, 16, /* width, height */ + 0, 0, /* x_offset, y_offset */ }; -MAIN() +MAIN () -static void query() + static void query () { - static GParamDef args[] = + static GParamDef args[] = + { + {PARAM_INT32, "run_mode", "Interactive, non-interactive"}, + {PARAM_IMAGE, "image", "Input image (unused)"}, + {PARAM_DRAWABLE, "drawable", "Input drawable"}, + {PARAM_INT32, "width", "Width"}, + {PARAM_INT32, "height", "Height"}, + {PARAM_INT32, "x_offset", "X Offset"}, + {PARAM_INT32, "y_offset", "Y Offset"}, + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof (args) / sizeof (args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure ("plug_in_grid", + "Draws a grid.", + "", + "Tim Newsome", + "Tim Newsome", + "1997", + "/Filters/Render/Grid", + "RGB*, GRAY*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void +run (char *name, int n_params, GParam * param, int *nreturn_vals, + GParam ** return_vals) +{ + static GParam values[1]; + GDrawable *drawable; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; + + *nreturn_vals = 1; + *return_vals = values; + + run_mode = param[0].data.d_int32; + + if (run_mode == RUN_NONINTERACTIVE) + { + if (n_params != 7) { - {PARAM_INT32, "run_mode", "Interactive, non-interactive"}, - {PARAM_IMAGE, "image", "Input image (unused)"}, - {PARAM_DRAWABLE, "drawable", "Input drawable"}, - {PARAM_INT32, "width", "Width"}, - {PARAM_INT32, "height", "Height"}, - {PARAM_INT32, "x_offset", "X Offset"}, - {PARAM_INT32, "y_offset", "Y Offset"}, - }; - static GParamDef *return_vals = NULL; - static int nargs = sizeof(args) / sizeof(args[0]); - static int nreturn_vals = 0; + status = STATUS_CALLING_ERROR; + } + if( status == STATUS_SUCCESS) + { + my_config.width = param[3].data.d_int32; + my_config.height = param[4].data.d_int32; + my_config.x_offset = param[5].data.d_int32; + my_config.y_offset = param[6].data.d_int32; + } + } + else + { + /* Possibly retrieve data */ + gimp_get_data ("plug_in_grid", &my_config); - gimp_install_procedure("plug_in_grid", - "Draws a grid.", - "", - "Tim Newsome", - "Tim Newsome", - "1997", - "/Filters/Render/Grid", - "RGB, GRAY", - PROC_PLUG_IN, - nargs, nreturn_vals, - args, return_vals); + if (run_mode == RUN_INTERACTIVE) + { + /* Oh boy. We get to do a dialog box, because we can't really expect the + * user to set us up with the right values using gdb. + */ + if (!dialog ()) + { + /* The dialog was closed, or something similarly evil happened. */ + status = STATUS_EXECUTION_ERROR; + } + } + } + + if (my_config.width <= 0 || my_config.height <= 0) + { + status = STATUS_EXECUTION_ERROR; + } + + if (status == STATUS_SUCCESS) + { + /* Get the specified drawable */ + drawable = gimp_drawable_get (param[2].data.d_drawable); + + /* Make sure that the drawable is gray or RGB color */ + if (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id)) + { + gimp_progress_init ("Drawing Grid..."); + gimp_tile_cache_ntiles (2 * (drawable->width / gimp_tile_width () + 1)); + + srand (time (NULL)); + doit (drawable); + + if (run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush (); + + if (run_mode == RUN_INTERACTIVE) + gimp_set_data ("plug_in_grid", &my_config, sizeof (my_config)); + } + else + { + status = STATUS_EXECUTION_ERROR; + } + gimp_drawable_detach (drawable); + } + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; } -static void run(char *name, int n_params, GParam * param, int *nreturn_vals, - GParam ** return_vals) +static void +doit (GDrawable * drawable) { - static GParam values[1]; - GDrawable *drawable; - GRunModeType run_mode; - GStatusType status = STATUS_SUCCESS; + GPixelRgn srcPR, destPR; + gint width, height; + int w, h, b; + guchar *copybuf; + guchar color[4] = + {0, 0, 0, 0}; - *nreturn_vals = 1; - *return_vals = values; + /* Get the input area. This is the bounding box of the selection in + * the image (or the entire image if there is no selection). Only + * operating on the input area is simply an optimization. It doesn't + * need to be done for correct operation. (It simply makes it go + * faster, since fewer pixels need to be operated on). + */ + gimp_drawable_mask_bounds (drawable->id, &sx1, &sy1, &sx2, &sy2); - run_mode = param[0].data.d_int32; + /* Get the size of the input image. (This will/must be the same + * as the size of the output image. + */ + width = drawable->width; + height = drawable->height; + bytes = drawable->bpp; - if (run_mode == RUN_NONINTERACTIVE) { - if (n_params != 7) { - status = STATUS_CALLING_ERROR; - } else { - my_config.width = param[4].data.d_int32; - my_config.height = param[5].data.d_int32; - my_config.x_offset = param[6].data.d_int32; - my_config.y_offset = param[7].data.d_int32; + if (gimp_drawable_has_alpha (drawable->id)) + { + color[bytes - 1] = 0xff; + } + + /* initialize the pixel regions */ + gimp_pixel_rgn_init (&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); + gimp_pixel_rgn_init (&destPR, drawable, 0, 0, width, height, TRUE, TRUE); + + /* First off, copy the old one to the new one. */ + copybuf = malloc (width * bytes); + for (h = sy1; h < sy2; h++) + { + gimp_pixel_rgn_get_row (&srcPR, copybuf, sx1, h, width); + if ((h - my_config.y_offset) % my_config.height == 0) + { + for (w = sx1; w < sx2; w++) + { + for (b = 0; b < bytes; b++) + { + copybuf[w * bytes + b] = color[b]; } - } else { - /* Possibly retrieve data */ - gimp_get_data("plug_in_grid", &my_config); - - if (run_mode == RUN_INTERACTIVE) { - /* Oh boy. We get to do a dialog box, because we can't really expect the - * user to set us up with the right values using gdb. - */ - if (!dialog()) { - /* The dialog was closed, or something similarly evil happened. */ - status = STATUS_EXECUTION_ERROR; - } + } + } + else + { + for (w = sx1; w < sx2; w++) + { + if ((w - my_config.x_offset) % my_config.width == 0) + { + for (b = 0; b < bytes; b++) + { + copybuf[w * bytes + b] = color[b]; + } } + } } + gimp_pixel_rgn_set_row (&destPR, copybuf, sx1, h, width); + gimp_progress_update ((double) h / (double) (sy2 - sy1)); + } + free (copybuf); - if (my_config.width <= 0 || my_config.height <= 0) { - status = STATUS_EXECUTION_ERROR; - } - - if (status == STATUS_SUCCESS) { - /* Get the specified drawable */ - drawable = gimp_drawable_get(param[2].data.d_drawable); - - /* Make sure that the drawable is gray or RGB color */ - if (gimp_drawable_color(drawable->id) || gimp_drawable_gray(drawable->id)) { - gimp_progress_init("Drawing Grid..."); - gimp_tile_cache_ntiles(2 * (drawable->width / gimp_tile_width() + 1)); - - srand(time(NULL)); - doit(drawable); - - if (run_mode != RUN_NONINTERACTIVE) - gimp_displays_flush(); - - if (run_mode == RUN_INTERACTIVE) - gimp_set_data("plug_in_grid", &my_config, sizeof(my_config)); - } else { - status = STATUS_EXECUTION_ERROR; - } - gimp_drawable_detach(drawable); - } - - values[0].type = PARAM_STATUS; - values[0].data.d_status = status; -} - -static void doit(GDrawable * drawable) -{ - GPixelRgn srcPR, destPR; - gint width, height; - int w, h, b; - guchar *copybuf; - guchar color[4] = {0, 0, 0, 0}; - - /* Get the input area. This is the bounding box of the selection in - * the image (or the entire image if there is no selection). Only - * operating on the input area is simply an optimization. It doesn't - * need to be done for correct operation. (It simply makes it go - * faster, since fewer pixels need to be operated on). - */ - gimp_drawable_mask_bounds(drawable->id, &sx1, &sy1, &sx2, &sy2); - - /* Get the size of the input image. (This will/must be the same - * as the size of the output image. - */ - width = drawable->width; - height = drawable->height; - bytes = drawable->bpp; - - if (gimp_drawable_has_alpha(drawable->id)) { - color[bytes - 1] = 0xff; - } - - /* initialize the pixel regions */ - gimp_pixel_rgn_init(&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); - gimp_pixel_rgn_init(&destPR, drawable, 0, 0, width, height, TRUE, TRUE); - - /* First off, copy the old one to the new one. */ - copybuf = malloc(width * bytes); - for (h = sy1; h < sy2; h++) { - gimp_pixel_rgn_get_row(&srcPR, copybuf, sx1, h, width); - if ((h - my_config.y_offset) % my_config.height == 0) { - for (w = sx1; w < sx2; w++) { - for (b = 0; b < bytes; b++) { - copybuf[w * bytes + b] = color[b]; - } - } - } else { - for (w = sx1; w < sx2; w++) { - if ((w - my_config.x_offset) % my_config.width == 0) { - for (b = 0; b < bytes; b++) { - copybuf[w * bytes + b] = color[b]; - } - } - } - } - gimp_pixel_rgn_set_row(&destPR, copybuf, sx1, h, width); - gimp_progress_update((double) h / (double) (sy2 - sy1)); - } - free(copybuf); - - /* update the timred region */ - gimp_drawable_flush(drawable); - gimp_drawable_merge_shadow(drawable->id, TRUE); - gimp_drawable_update(drawable->id, sx1, sy1, sx2 - sx1, sy2 - sy1); + /* update the timred region */ + gimp_drawable_flush (drawable); + gimp_drawable_merge_shadow (drawable->id, TRUE); + gimp_drawable_update (drawable->id, sx1, sy1, sx2 - sx1, sy2 - sy1); } /*************************************************** * GUI stuff */ -static void close_callback(GtkWidget * widget, gpointer data) +static void +close_callback (GtkWidget * widget, gpointer data) { - gtk_main_quit(); + gtk_main_quit (); } -static void ok_callback(GtkWidget * widget, gpointer data) +static void +ok_callback (GtkWidget * widget, gpointer data) { - run_flag = 1; - gtk_widget_destroy(GTK_WIDGET(data)); + run_flag = 1; + gtk_widget_destroy (GTK_WIDGET (data)); } -static void entry_callback(GtkWidget * widget, gpointer data) +static void +entry_callback (GtkWidget * widget, gpointer data) { - if (data == &my_config.width) - my_config.width = atof(gtk_entry_get_text(GTK_ENTRY(widget))); - else if (data == &my_config.height) - my_config.height = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); - else if (data == &my_config.x_offset) - my_config.x_offset = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); - else if (data == &my_config.y_offset) - my_config.y_offset = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); + if (data == &my_config.width) + my_config.width = atof (gtk_entry_get_text (GTK_ENTRY (widget))); + else if (data == &my_config.height) + my_config.height = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); + else if (data == &my_config.x_offset) + my_config.x_offset = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); + else if (data == &my_config.y_offset) + my_config.y_offset = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); } -static gint dialog() +static gint +dialog () { - GtkWidget *dlg; - GtkWidget *button; - GtkWidget *label; - GtkWidget *entry; - GtkWidget *table; - gchar buffer[12]; - gchar **argv; - gint argc; + GtkWidget *dlg; + GtkWidget *button; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *table; + gchar buffer[12]; + gchar **argv; + gint argc; - argc = 1; - argv = g_new(gchar *, 1); - argv[0] = g_strdup("plasma"); + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup ("plasma"); - gtk_init(&argc, &argv); + gtk_init (&argc, &argv); - dlg = gtk_dialog_new(); - gtk_window_set_title(GTK_WINDOW(dlg), "Grid"); - gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE); - gtk_signal_connect(GTK_OBJECT(dlg), "destroy", - (GtkSignalFunc) close_callback, NULL); + dlg = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dlg), "Grid"); + gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect (GTK_OBJECT (dlg), "destroy", + (GtkSignalFunc) close_callback, NULL); - /* Action area */ - button = gtk_button_new_with_label("OK"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) ok_callback, - dlg); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); - gtk_widget_grab_default(button); - gtk_widget_show(button); + /* Action area */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) ok_callback, + dlg); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); - button = gtk_button_new_with_label("Cancel"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect_object(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) gtk_widget_destroy, - GTK_OBJECT(dlg)); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); - gtk_widget_show(button); + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); - /* The main table */ - /* Set its size (y, x) */ - table = gtk_table_new(4, 3, FALSE); - gtk_container_border_width(GTK_CONTAINER(table), 10); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), table, TRUE, TRUE, 0); - gtk_widget_show(table); + /* The main table */ + /* Set its size (y, x) */ + table = gtk_table_new (4, 3, FALSE); + gtk_container_border_width (GTK_CONTAINER (table), 10); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), table, TRUE, TRUE, 0); + gtk_widget_show (table); - gtk_table_set_row_spacings(GTK_TABLE(table), 10); - gtk_table_set_col_spacings(GTK_TABLE(table), 10); + gtk_table_set_row_spacings (GTK_TABLE (table), 10); + gtk_table_set_col_spacings (GTK_TABLE (table), 10); /********************** * The X/Y labels * **********************/ - label = gtk_label_new("X"); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, - 0); - gtk_widget_show(label); + label = gtk_label_new ("X"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, + 0); + gtk_widget_show (label); - label = gtk_label_new("Y"); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, - 0); - gtk_widget_show(label); + label = gtk_label_new ("Y"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, + 0); + gtk_widget_show (label); /************************ * The width entry: * ************************/ - label = gtk_label_new("Size:"); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, - 0); - gtk_widget_show(label); + label = gtk_label_new ("Size:"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, + 0); + gtk_widget_show (label); - entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_usize(entry, 50, 0); - sprintf(buffer, "%i", my_config.width); - gtk_entry_set_text(GTK_ENTRY(entry), buffer); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) entry_callback, &my_config.width); - gtk_widget_show(entry); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_usize (entry, 50, 0); + sprintf (buffer, "%i", my_config.width); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.width); + gtk_widget_show (entry); /************************ * The height entry: * ************************/ - entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), entry, 2, 3, 2, 3, GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_usize(entry, 50, 0); - sprintf(buffer, "%i", my_config.height); - gtk_entry_set_text(GTK_ENTRY(entry), buffer); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) entry_callback, &my_config.height); - gtk_widget_show(entry); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 2, 3, 2, 3, GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_usize (entry, 50, 0); + sprintf (buffer, "%i", my_config.height); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.height); + gtk_widget_show (entry); - gtk_widget_show(dlg); + gtk_widget_show (dlg); /************************ * The x_offset entry: * ************************/ - label = gtk_label_new("Offset:"); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 0, - 0); - gtk_widget_show(label); + label = gtk_label_new ("Offset:"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 0, + 0); + gtk_widget_show (label); - entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_usize(entry, 50, 0); - sprintf(buffer, "%i", my_config.x_offset); - gtk_entry_set_text(GTK_ENTRY(entry), buffer); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) entry_callback, &my_config.x_offset); - gtk_widget_show(entry); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_usize (entry, 50, 0); + sprintf (buffer, "%i", my_config.x_offset); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.x_offset); + gtk_widget_show (entry); /************************ * The y_offset entry: * ************************/ - entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), entry, 2, 3, 3, 4, GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_usize(entry, 50, 0); - sprintf(buffer, "%i", my_config.y_offset); - gtk_entry_set_text(GTK_ENTRY(entry), buffer); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) entry_callback, &my_config.y_offset); - gtk_widget_show(entry); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 2, 3, 3, 4, GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_usize (entry, 50, 0); + sprintf (buffer, "%i", my_config.y_offset); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.y_offset); + gtk_widget_show (entry); - gtk_widget_show(dlg); + gtk_widget_show (dlg); - gtk_main(); - gdk_flush(); + gtk_main (); + gdk_flush (); - return run_flag; + return run_flag; } diff --git a/plug-ins/deinterlace/deinterlace.c b/plug-ins/deinterlace/deinterlace.c index 9a82052903..12b3e1a1be 100644 --- a/plug-ins/deinterlace/deinterlace.c +++ b/plug-ins/deinterlace/deinterlace.c @@ -51,7 +51,7 @@ GPlugInInfo PLUG_IN_INFO = run, /* run_proc */ }; -static gint DeinterlaceValue = 1; +static gint DeinterlaceValue = 1; MAIN () @@ -108,10 +108,11 @@ run (char *name, break; case RUN_NONINTERACTIVE: - if (nparams != 1) + if (nparams != 4) status = STATUS_CALLING_ERROR; if (status == STATUS_SUCCESS) DeinterlaceValue = param[3].data.d_int32; + break; case RUN_WITH_LAST_VALS: diff --git a/plug-ins/exchange/exchange.c b/plug-ins/exchange/exchange.c index c68ebd9934..876f48c467 100644 --- a/plug-ins/exchange/exchange.c +++ b/plug-ins/exchange/exchange.c @@ -150,8 +150,20 @@ void run(char *name, int nparams, GParam *param, int *nreturn_vals, GParam **ret gimp_palette_get_foreground(&xargs.fromred, &xargs.fromgreen, &xargs.fromblue); break; case RUN_NONINTERACTIVE: - status = STATUS_EXECUTION_ERROR; - return; + if(nparams != 10) + status = STATUS_EXECUTION_ERROR; + if (status == STATUS_SUCCESS) + { + xargs.fromred = param[3].data.d_int8; + xargs.fromgreen = param[4].data.d_int8; + xargs.fromblue = param[5].data.d_int8; + xargs.tored = param[6].data.d_int8; + xargs.togreen = param[7].data.d_int8; + xargs.toblue = param[8].data.d_int8; + xargs.threshold = param[9].data.d_int32; + } + break; + default: break; } diff --git a/plug-ins/grid/grid.c b/plug-ins/grid/grid.c index 785750d246..cf45ccd972 100644 --- a/plug-ins/grid/grid.c +++ b/plug-ins/grid/grid.c @@ -17,363 +17,395 @@ #include "gtk/gtk.h" /* Declare local functions. */ -static void query(void); -static void run(char *name, - int nparams, - GParam * param, - int *nreturn_vals, - GParam ** return_vals); -static gint dialog(); +static void query (void); +static void run (char *name, + int nparams, + GParam * param, + int *nreturn_vals, + GParam ** return_vals); +static gint dialog (); -static void doit(GDrawable * drawable); +static void doit (GDrawable * drawable); GPlugInInfo PLUG_IN_INFO = { - NULL, /* init_proc */ - NULL, /* quit_proc */ - query, /* query_proc */ - run, /* run_proc */ + NULL, /* init_proc */ + NULL, /* quit_proc */ + query, /* query_proc */ + run, /* run_proc */ }; gint bytes; gint sx1, sy1, sx2, sy2; int run_flag = 0; -typedef struct { - gint width, height; - gint x_offset, y_offset; -} config; +typedef struct + { + gint width, height; + gint x_offset, y_offset; + } +config; config my_config = { - 16, 16, /* width, height */ - 0, 0, /* x_offset, y_offset */ + 16, 16, /* width, height */ + 0, 0, /* x_offset, y_offset */ }; -MAIN() +MAIN () -static void query() + static void query () { - static GParamDef args[] = + static GParamDef args[] = + { + {PARAM_INT32, "run_mode", "Interactive, non-interactive"}, + {PARAM_IMAGE, "image", "Input image (unused)"}, + {PARAM_DRAWABLE, "drawable", "Input drawable"}, + {PARAM_INT32, "width", "Width"}, + {PARAM_INT32, "height", "Height"}, + {PARAM_INT32, "x_offset", "X Offset"}, + {PARAM_INT32, "y_offset", "Y Offset"}, + }; + static GParamDef *return_vals = NULL; + static int nargs = sizeof (args) / sizeof (args[0]); + static int nreturn_vals = 0; + + gimp_install_procedure ("plug_in_grid", + "Draws a grid.", + "", + "Tim Newsome", + "Tim Newsome", + "1997", + "/Filters/Render/Grid", + "RGB*, GRAY*", + PROC_PLUG_IN, + nargs, nreturn_vals, + args, return_vals); +} + +static void +run (char *name, int n_params, GParam * param, int *nreturn_vals, + GParam ** return_vals) +{ + static GParam values[1]; + GDrawable *drawable; + GRunModeType run_mode; + GStatusType status = STATUS_SUCCESS; + + *nreturn_vals = 1; + *return_vals = values; + + run_mode = param[0].data.d_int32; + + if (run_mode == RUN_NONINTERACTIVE) + { + if (n_params != 7) { - {PARAM_INT32, "run_mode", "Interactive, non-interactive"}, - {PARAM_IMAGE, "image", "Input image (unused)"}, - {PARAM_DRAWABLE, "drawable", "Input drawable"}, - {PARAM_INT32, "width", "Width"}, - {PARAM_INT32, "height", "Height"}, - {PARAM_INT32, "x_offset", "X Offset"}, - {PARAM_INT32, "y_offset", "Y Offset"}, - }; - static GParamDef *return_vals = NULL; - static int nargs = sizeof(args) / sizeof(args[0]); - static int nreturn_vals = 0; + status = STATUS_CALLING_ERROR; + } + if( status == STATUS_SUCCESS) + { + my_config.width = param[3].data.d_int32; + my_config.height = param[4].data.d_int32; + my_config.x_offset = param[5].data.d_int32; + my_config.y_offset = param[6].data.d_int32; + } + } + else + { + /* Possibly retrieve data */ + gimp_get_data ("plug_in_grid", &my_config); - gimp_install_procedure("plug_in_grid", - "Draws a grid.", - "", - "Tim Newsome", - "Tim Newsome", - "1997", - "/Filters/Render/Grid", - "RGB, GRAY", - PROC_PLUG_IN, - nargs, nreturn_vals, - args, return_vals); + if (run_mode == RUN_INTERACTIVE) + { + /* Oh boy. We get to do a dialog box, because we can't really expect the + * user to set us up with the right values using gdb. + */ + if (!dialog ()) + { + /* The dialog was closed, or something similarly evil happened. */ + status = STATUS_EXECUTION_ERROR; + } + } + } + + if (my_config.width <= 0 || my_config.height <= 0) + { + status = STATUS_EXECUTION_ERROR; + } + + if (status == STATUS_SUCCESS) + { + /* Get the specified drawable */ + drawable = gimp_drawable_get (param[2].data.d_drawable); + + /* Make sure that the drawable is gray or RGB color */ + if (gimp_drawable_color (drawable->id) || gimp_drawable_gray (drawable->id)) + { + gimp_progress_init ("Drawing Grid..."); + gimp_tile_cache_ntiles (2 * (drawable->width / gimp_tile_width () + 1)); + + srand (time (NULL)); + doit (drawable); + + if (run_mode != RUN_NONINTERACTIVE) + gimp_displays_flush (); + + if (run_mode == RUN_INTERACTIVE) + gimp_set_data ("plug_in_grid", &my_config, sizeof (my_config)); + } + else + { + status = STATUS_EXECUTION_ERROR; + } + gimp_drawable_detach (drawable); + } + + values[0].type = PARAM_STATUS; + values[0].data.d_status = status; } -static void run(char *name, int n_params, GParam * param, int *nreturn_vals, - GParam ** return_vals) +static void +doit (GDrawable * drawable) { - static GParam values[1]; - GDrawable *drawable; - GRunModeType run_mode; - GStatusType status = STATUS_SUCCESS; + GPixelRgn srcPR, destPR; + gint width, height; + int w, h, b; + guchar *copybuf; + guchar color[4] = + {0, 0, 0, 0}; - *nreturn_vals = 1; - *return_vals = values; + /* Get the input area. This is the bounding box of the selection in + * the image (or the entire image if there is no selection). Only + * operating on the input area is simply an optimization. It doesn't + * need to be done for correct operation. (It simply makes it go + * faster, since fewer pixels need to be operated on). + */ + gimp_drawable_mask_bounds (drawable->id, &sx1, &sy1, &sx2, &sy2); - run_mode = param[0].data.d_int32; + /* Get the size of the input image. (This will/must be the same + * as the size of the output image. + */ + width = drawable->width; + height = drawable->height; + bytes = drawable->bpp; - if (run_mode == RUN_NONINTERACTIVE) { - if (n_params != 7) { - status = STATUS_CALLING_ERROR; - } else { - my_config.width = param[4].data.d_int32; - my_config.height = param[5].data.d_int32; - my_config.x_offset = param[6].data.d_int32; - my_config.y_offset = param[7].data.d_int32; + if (gimp_drawable_has_alpha (drawable->id)) + { + color[bytes - 1] = 0xff; + } + + /* initialize the pixel regions */ + gimp_pixel_rgn_init (&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); + gimp_pixel_rgn_init (&destPR, drawable, 0, 0, width, height, TRUE, TRUE); + + /* First off, copy the old one to the new one. */ + copybuf = malloc (width * bytes); + for (h = sy1; h < sy2; h++) + { + gimp_pixel_rgn_get_row (&srcPR, copybuf, sx1, h, width); + if ((h - my_config.y_offset) % my_config.height == 0) + { + for (w = sx1; w < sx2; w++) + { + for (b = 0; b < bytes; b++) + { + copybuf[w * bytes + b] = color[b]; } - } else { - /* Possibly retrieve data */ - gimp_get_data("plug_in_grid", &my_config); - - if (run_mode == RUN_INTERACTIVE) { - /* Oh boy. We get to do a dialog box, because we can't really expect the - * user to set us up with the right values using gdb. - */ - if (!dialog()) { - /* The dialog was closed, or something similarly evil happened. */ - status = STATUS_EXECUTION_ERROR; - } + } + } + else + { + for (w = sx1; w < sx2; w++) + { + if ((w - my_config.x_offset) % my_config.width == 0) + { + for (b = 0; b < bytes; b++) + { + copybuf[w * bytes + b] = color[b]; + } } + } } + gimp_pixel_rgn_set_row (&destPR, copybuf, sx1, h, width); + gimp_progress_update ((double) h / (double) (sy2 - sy1)); + } + free (copybuf); - if (my_config.width <= 0 || my_config.height <= 0) { - status = STATUS_EXECUTION_ERROR; - } - - if (status == STATUS_SUCCESS) { - /* Get the specified drawable */ - drawable = gimp_drawable_get(param[2].data.d_drawable); - - /* Make sure that the drawable is gray or RGB color */ - if (gimp_drawable_color(drawable->id) || gimp_drawable_gray(drawable->id)) { - gimp_progress_init("Drawing Grid..."); - gimp_tile_cache_ntiles(2 * (drawable->width / gimp_tile_width() + 1)); - - srand(time(NULL)); - doit(drawable); - - if (run_mode != RUN_NONINTERACTIVE) - gimp_displays_flush(); - - if (run_mode == RUN_INTERACTIVE) - gimp_set_data("plug_in_grid", &my_config, sizeof(my_config)); - } else { - status = STATUS_EXECUTION_ERROR; - } - gimp_drawable_detach(drawable); - } - - values[0].type = PARAM_STATUS; - values[0].data.d_status = status; -} - -static void doit(GDrawable * drawable) -{ - GPixelRgn srcPR, destPR; - gint width, height; - int w, h, b; - guchar *copybuf; - guchar color[4] = {0, 0, 0, 0}; - - /* Get the input area. This is the bounding box of the selection in - * the image (or the entire image if there is no selection). Only - * operating on the input area is simply an optimization. It doesn't - * need to be done for correct operation. (It simply makes it go - * faster, since fewer pixels need to be operated on). - */ - gimp_drawable_mask_bounds(drawable->id, &sx1, &sy1, &sx2, &sy2); - - /* Get the size of the input image. (This will/must be the same - * as the size of the output image. - */ - width = drawable->width; - height = drawable->height; - bytes = drawable->bpp; - - if (gimp_drawable_has_alpha(drawable->id)) { - color[bytes - 1] = 0xff; - } - - /* initialize the pixel regions */ - gimp_pixel_rgn_init(&srcPR, drawable, 0, 0, width, height, FALSE, FALSE); - gimp_pixel_rgn_init(&destPR, drawable, 0, 0, width, height, TRUE, TRUE); - - /* First off, copy the old one to the new one. */ - copybuf = malloc(width * bytes); - for (h = sy1; h < sy2; h++) { - gimp_pixel_rgn_get_row(&srcPR, copybuf, sx1, h, width); - if ((h - my_config.y_offset) % my_config.height == 0) { - for (w = sx1; w < sx2; w++) { - for (b = 0; b < bytes; b++) { - copybuf[w * bytes + b] = color[b]; - } - } - } else { - for (w = sx1; w < sx2; w++) { - if ((w - my_config.x_offset) % my_config.width == 0) { - for (b = 0; b < bytes; b++) { - copybuf[w * bytes + b] = color[b]; - } - } - } - } - gimp_pixel_rgn_set_row(&destPR, copybuf, sx1, h, width); - gimp_progress_update((double) h / (double) (sy2 - sy1)); - } - free(copybuf); - - /* update the timred region */ - gimp_drawable_flush(drawable); - gimp_drawable_merge_shadow(drawable->id, TRUE); - gimp_drawable_update(drawable->id, sx1, sy1, sx2 - sx1, sy2 - sy1); + /* update the timred region */ + gimp_drawable_flush (drawable); + gimp_drawable_merge_shadow (drawable->id, TRUE); + gimp_drawable_update (drawable->id, sx1, sy1, sx2 - sx1, sy2 - sy1); } /*************************************************** * GUI stuff */ -static void close_callback(GtkWidget * widget, gpointer data) +static void +close_callback (GtkWidget * widget, gpointer data) { - gtk_main_quit(); + gtk_main_quit (); } -static void ok_callback(GtkWidget * widget, gpointer data) +static void +ok_callback (GtkWidget * widget, gpointer data) { - run_flag = 1; - gtk_widget_destroy(GTK_WIDGET(data)); + run_flag = 1; + gtk_widget_destroy (GTK_WIDGET (data)); } -static void entry_callback(GtkWidget * widget, gpointer data) +static void +entry_callback (GtkWidget * widget, gpointer data) { - if (data == &my_config.width) - my_config.width = atof(gtk_entry_get_text(GTK_ENTRY(widget))); - else if (data == &my_config.height) - my_config.height = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); - else if (data == &my_config.x_offset) - my_config.x_offset = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); - else if (data == &my_config.y_offset) - my_config.y_offset = atoi(gtk_entry_get_text(GTK_ENTRY(widget))); + if (data == &my_config.width) + my_config.width = atof (gtk_entry_get_text (GTK_ENTRY (widget))); + else if (data == &my_config.height) + my_config.height = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); + else if (data == &my_config.x_offset) + my_config.x_offset = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); + else if (data == &my_config.y_offset) + my_config.y_offset = atoi (gtk_entry_get_text (GTK_ENTRY (widget))); } -static gint dialog() +static gint +dialog () { - GtkWidget *dlg; - GtkWidget *button; - GtkWidget *label; - GtkWidget *entry; - GtkWidget *table; - gchar buffer[12]; - gchar **argv; - gint argc; + GtkWidget *dlg; + GtkWidget *button; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *table; + gchar buffer[12]; + gchar **argv; + gint argc; - argc = 1; - argv = g_new(gchar *, 1); - argv[0] = g_strdup("plasma"); + argc = 1; + argv = g_new (gchar *, 1); + argv[0] = g_strdup ("plasma"); - gtk_init(&argc, &argv); + gtk_init (&argc, &argv); - dlg = gtk_dialog_new(); - gtk_window_set_title(GTK_WINDOW(dlg), "Grid"); - gtk_window_position(GTK_WINDOW(dlg), GTK_WIN_POS_MOUSE); - gtk_signal_connect(GTK_OBJECT(dlg), "destroy", - (GtkSignalFunc) close_callback, NULL); + dlg = gtk_dialog_new (); + gtk_window_set_title (GTK_WINDOW (dlg), "Grid"); + gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE); + gtk_signal_connect (GTK_OBJECT (dlg), "destroy", + (GtkSignalFunc) close_callback, NULL); - /* Action area */ - button = gtk_button_new_with_label("OK"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) ok_callback, - dlg); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); - gtk_widget_grab_default(button); - gtk_widget_show(button); + /* Action area */ + button = gtk_button_new_with_label ("OK"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) ok_callback, + dlg); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_grab_default (button); + gtk_widget_show (button); - button = gtk_button_new_with_label("Cancel"); - GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); - gtk_signal_connect_object(GTK_OBJECT(button), "clicked", - (GtkSignalFunc) gtk_widget_destroy, - GTK_OBJECT(dlg)); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->action_area), button, TRUE, TRUE, 0); - gtk_widget_show(button); + button = gtk_button_new_with_label ("Cancel"); + GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); + gtk_signal_connect_object (GTK_OBJECT (button), "clicked", + (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (dlg)); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button, TRUE, TRUE, 0); + gtk_widget_show (button); - /* The main table */ - /* Set its size (y, x) */ - table = gtk_table_new(4, 3, FALSE); - gtk_container_border_width(GTK_CONTAINER(table), 10); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dlg)->vbox), table, TRUE, TRUE, 0); - gtk_widget_show(table); + /* The main table */ + /* Set its size (y, x) */ + table = gtk_table_new (4, 3, FALSE); + gtk_container_border_width (GTK_CONTAINER (table), 10); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), table, TRUE, TRUE, 0); + gtk_widget_show (table); - gtk_table_set_row_spacings(GTK_TABLE(table), 10); - gtk_table_set_col_spacings(GTK_TABLE(table), 10); + gtk_table_set_row_spacings (GTK_TABLE (table), 10); + gtk_table_set_col_spacings (GTK_TABLE (table), 10); /********************** * The X/Y labels * **********************/ - label = gtk_label_new("X"); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, - 0); - gtk_widget_show(label); + label = gtk_label_new ("X"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, + 0); + gtk_widget_show (label); - label = gtk_label_new("Y"); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, - 0); - gtk_widget_show(label); + label = gtk_label_new ("Y"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, + 0); + gtk_widget_show (label); /************************ * The width entry: * ************************/ - label = gtk_label_new("Size:"); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, - 0); - gtk_widget_show(label); + label = gtk_label_new ("Size:"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, + 0); + gtk_widget_show (label); - entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_usize(entry, 50, 0); - sprintf(buffer, "%i", my_config.width); - gtk_entry_set_text(GTK_ENTRY(entry), buffer); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) entry_callback, &my_config.width); - gtk_widget_show(entry); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_usize (entry, 50, 0); + sprintf (buffer, "%i", my_config.width); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.width); + gtk_widget_show (entry); /************************ * The height entry: * ************************/ - entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), entry, 2, 3, 2, 3, GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_usize(entry, 50, 0); - sprintf(buffer, "%i", my_config.height); - gtk_entry_set_text(GTK_ENTRY(entry), buffer); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) entry_callback, &my_config.height); - gtk_widget_show(entry); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 2, 3, 2, 3, GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_usize (entry, 50, 0); + sprintf (buffer, "%i", my_config.height); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.height); + gtk_widget_show (entry); - gtk_widget_show(dlg); + gtk_widget_show (dlg); /************************ * The x_offset entry: * ************************/ - label = gtk_label_new("Offset:"); - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 0, - 0); - gtk_widget_show(label); + label = gtk_label_new ("Offset:"); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 0, + 0); + gtk_widget_show (label); - entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), entry, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_usize(entry, 50, 0); - sprintf(buffer, "%i", my_config.x_offset); - gtk_entry_set_text(GTK_ENTRY(entry), buffer); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) entry_callback, &my_config.x_offset); - gtk_widget_show(entry); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_usize (entry, 50, 0); + sprintf (buffer, "%i", my_config.x_offset); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.x_offset); + gtk_widget_show (entry); /************************ * The y_offset entry: * ************************/ - entry = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), entry, 2, 3, 3, 4, GTK_EXPAND | GTK_FILL, - GTK_EXPAND | GTK_FILL, 0, 0); - gtk_widget_set_usize(entry, 50, 0); - sprintf(buffer, "%i", my_config.y_offset); - gtk_entry_set_text(GTK_ENTRY(entry), buffer); - gtk_signal_connect(GTK_OBJECT(entry), "changed", - (GtkSignalFunc) entry_callback, &my_config.y_offset); - gtk_widget_show(entry); + entry = gtk_entry_new (); + gtk_table_attach (GTK_TABLE (table), entry, 2, 3, 3, 4, GTK_EXPAND | GTK_FILL, + GTK_EXPAND | GTK_FILL, 0, 0); + gtk_widget_set_usize (entry, 50, 0); + sprintf (buffer, "%i", my_config.y_offset); + gtk_entry_set_text (GTK_ENTRY (entry), buffer); + gtk_signal_connect (GTK_OBJECT (entry), "changed", + (GtkSignalFunc) entry_callback, &my_config.y_offset); + gtk_widget_show (entry); - gtk_widget_show(dlg); + gtk_widget_show (dlg); - gtk_main(); - gdk_flush(); + gtk_main (); + gdk_flush (); - return run_flag; + return run_flag; } diff --git a/plug-ins/holes/holes.c b/plug-ins/holes/holes.c index c1134c7f1c..c6b4591b97 100644 --- a/plug-ins/holes/holes.c +++ b/plug-ins/holes/holes.c @@ -148,7 +148,7 @@ static void run(char *name, int n_params, GParam * param, int *nreturn_vals, run_mode = param[0].data.d_int32; if (run_mode == RUN_NONINTERACTIVE) { - if (n_params != 8) { + if (n_params != 7) { status = STATUS_CALLING_ERROR; } else { params.density = param[3].data.d_float;