mirror of https://github.com/GNOME/gimp.git
added a float adjustment callback.
2000-01-15 Michael Natterer <mitch@gimp.org> * libgimp/gimpwidgets.[ch]: added a float adjustment callback. * plug-ins/common/bumpmap.c * plug-ins/common/depthmerge.c * plug-ins/common/despeckle.c * plug-ins/common/destripe.c * plug-ins/common/gpb.c * plug-ins/common/iwarp.c * plug-ins/common/polar.c * plug-ins/common/sharpen.c * plug-ins/common/tileit.c * plug-ins/common/whirlpinch.c * plug-ins/common/wind.c: - Some more hscale+spinbutton instead of hscale+entry widgets. - Get the CHECK_SIZE constants from libgimp in some plugins.
This commit is contained in:
parent
868ffd98fc
commit
6e83e1ba0a
19
ChangeLog
19
ChangeLog
|
@ -1,3 +1,22 @@
|
|||
2000-01-15 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* libgimp/gimpwidgets.[ch]: added a float adjustment callback.
|
||||
|
||||
* plug-ins/common/bumpmap.c
|
||||
* plug-ins/common/depthmerge.c
|
||||
* plug-ins/common/despeckle.c
|
||||
* plug-ins/common/destripe.c
|
||||
* plug-ins/common/gpb.c
|
||||
* plug-ins/common/iwarp.c
|
||||
* plug-ins/common/polar.c
|
||||
* plug-ins/common/sharpen.c
|
||||
* plug-ins/common/tileit.c
|
||||
* plug-ins/common/whirlpinch.c
|
||||
* plug-ins/common/wind.c:
|
||||
|
||||
- Some more hscale+spinbutton instead of hscale+entry widgets.
|
||||
- Get the CHECK_SIZE constants from libgimp in some plugins.
|
||||
|
||||
Sat Jan 15 15:40:26 CET 2000 Stanislav Brabec <utx@penguin.cz>
|
||||
|
||||
* plug-ins/webbrowser/webbrowser.c: Small i18n fix.
|
||||
|
|
|
@ -152,9 +152,6 @@ gimp_radio_group_new (gboolean in_frame,
|
|||
button = gtk_radio_button_new_with_label (group, label);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "toggled",
|
||||
GTK_SIGNAL_FUNC (callback),
|
||||
data);
|
||||
|
||||
if (user_data)
|
||||
gtk_object_set_user_data (GTK_OBJECT (button), user_data);
|
||||
|
@ -162,10 +159,13 @@ gimp_radio_group_new (gboolean in_frame,
|
|||
if (widget_ptr)
|
||||
*widget_ptr = button;
|
||||
|
||||
/* press the initially active radio button */
|
||||
if (active)
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (button), "toggled",
|
||||
GTK_SIGNAL_FUNC (callback),
|
||||
data);
|
||||
|
||||
gtk_widget_show (button);
|
||||
|
||||
label = va_arg (args, gchar*);
|
||||
|
@ -228,9 +228,6 @@ gimp_radio_group_new2 (gboolean in_frame,
|
|||
button = gtk_radio_button_new_with_label (group, label);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "toggled",
|
||||
GTK_SIGNAL_FUNC (callback),
|
||||
data);
|
||||
|
||||
if (user_data)
|
||||
gtk_object_set_user_data (GTK_OBJECT (button), user_data);
|
||||
|
@ -238,10 +235,13 @@ gimp_radio_group_new2 (gboolean in_frame,
|
|||
if (widget_ptr)
|
||||
*widget_ptr = button;
|
||||
|
||||
/* press the initially active radio button */
|
||||
if (initial == user_data)
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (button), "toggled",
|
||||
GTK_SIGNAL_FUNC (callback),
|
||||
data);
|
||||
|
||||
gtk_widget_show (button);
|
||||
|
||||
label = va_arg (args, gchar*);
|
||||
|
@ -410,6 +410,16 @@ gimp_int_adjustment_update (GtkAdjustment *adjustment,
|
|||
*val = (gint) (adjustment->value + 0.5);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_float_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data)
|
||||
{
|
||||
gfloat *val;
|
||||
|
||||
val = (gfloat *) data;
|
||||
*val = adjustment->value;
|
||||
}
|
||||
|
||||
void
|
||||
gimp_double_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data)
|
||||
|
|
|
@ -115,6 +115,9 @@ void gimp_radio_button_update (GtkWidget *widget,
|
|||
void gimp_int_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data);
|
||||
|
||||
void gimp_float_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data);
|
||||
|
||||
void gimp_double_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data);
|
||||
|
||||
|
|
|
@ -152,9 +152,6 @@ gimp_radio_group_new (gboolean in_frame,
|
|||
button = gtk_radio_button_new_with_label (group, label);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "toggled",
|
||||
GTK_SIGNAL_FUNC (callback),
|
||||
data);
|
||||
|
||||
if (user_data)
|
||||
gtk_object_set_user_data (GTK_OBJECT (button), user_data);
|
||||
|
@ -162,10 +159,13 @@ gimp_radio_group_new (gboolean in_frame,
|
|||
if (widget_ptr)
|
||||
*widget_ptr = button;
|
||||
|
||||
/* press the initially active radio button */
|
||||
if (active)
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (button), "toggled",
|
||||
GTK_SIGNAL_FUNC (callback),
|
||||
data);
|
||||
|
||||
gtk_widget_show (button);
|
||||
|
||||
label = va_arg (args, gchar*);
|
||||
|
@ -228,9 +228,6 @@ gimp_radio_group_new2 (gboolean in_frame,
|
|||
button = gtk_radio_button_new_with_label (group, label);
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "toggled",
|
||||
GTK_SIGNAL_FUNC (callback),
|
||||
data);
|
||||
|
||||
if (user_data)
|
||||
gtk_object_set_user_data (GTK_OBJECT (button), user_data);
|
||||
|
@ -238,10 +235,13 @@ gimp_radio_group_new2 (gboolean in_frame,
|
|||
if (widget_ptr)
|
||||
*widget_ptr = button;
|
||||
|
||||
/* press the initially active radio button */
|
||||
if (initial == user_data)
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (button), "toggled",
|
||||
GTK_SIGNAL_FUNC (callback),
|
||||
data);
|
||||
|
||||
gtk_widget_show (button);
|
||||
|
||||
label = va_arg (args, gchar*);
|
||||
|
@ -410,6 +410,16 @@ gimp_int_adjustment_update (GtkAdjustment *adjustment,
|
|||
*val = (gint) (adjustment->value + 0.5);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_float_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data)
|
||||
{
|
||||
gfloat *val;
|
||||
|
||||
val = (gfloat *) data;
|
||||
*val = adjustment->value;
|
||||
}
|
||||
|
||||
void
|
||||
gimp_double_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data)
|
||||
|
|
|
@ -115,6 +115,9 @@ void gimp_radio_button_update (GtkWidget *widget,
|
|||
void gimp_int_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data);
|
||||
|
||||
void gimp_float_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data);
|
||||
|
||||
void gimp_double_adjustment_update (GtkAdjustment *adjustment,
|
||||
gpointer data);
|
||||
|
||||
|
|
|
@ -107,9 +107,8 @@
|
|||
#define PLUG_IN_NAME "plug_in_bump_map"
|
||||
#define PLUG_IN_VERSION "August 1997, 2.04"
|
||||
|
||||
#define PREVIEW_SIZE 128
|
||||
#define SCALE_WIDTH 200
|
||||
#define ENTRY_WIDTH 60
|
||||
#define PREVIEW_SIZE 128
|
||||
#define SCALE_WIDTH 200
|
||||
|
||||
/***** Types *****/
|
||||
|
||||
|
@ -211,33 +210,29 @@ static void bumpmap_row (guchar *src_row,
|
|||
static void bumpmap_convert_row (guchar *row, int width, int bpp,
|
||||
int has_alpha, guchar *lut);
|
||||
|
||||
static gint bumpmap_dialog(void);
|
||||
static void dialog_init_preview(void);
|
||||
static void dialog_new_bumpmap(void);
|
||||
static void dialog_update_preview(void);
|
||||
static gint dialog_preview_events(GtkWidget *widget, GdkEvent *event);
|
||||
static void dialog_scroll_src(void);
|
||||
static void dialog_scroll_bumpmap(void);
|
||||
static void dialog_get_rows(GPixelRgn *pr, guchar **rows, int x, int y, int width, int height);
|
||||
static void dialog_fill_src_rows(int start, int how_many, int yofs);
|
||||
static void dialog_fill_bumpmap_rows(int start, int how_many, int yofs);
|
||||
static gint bumpmap_dialog (void);
|
||||
static void dialog_init_preview (void);
|
||||
static void dialog_new_bumpmap (void);
|
||||
static void dialog_update_preview (void);
|
||||
static gint dialog_preview_events (GtkWidget *widget, GdkEvent *event);
|
||||
static void dialog_scroll_src (void);
|
||||
static void dialog_scroll_bumpmap (void);
|
||||
static void dialog_get_rows (GPixelRgn *pr, guchar **rows,
|
||||
int x, int y, int width, int height);
|
||||
static void dialog_fill_src_rows (int start, int how_many, int yofs);
|
||||
static void dialog_fill_bumpmap_rows (int start, int how_many, int yofs);
|
||||
|
||||
static void dialog_compensate_callback(GtkWidget *widget, gpointer data);
|
||||
static void dialog_invert_callback(GtkWidget *widget, gpointer data);
|
||||
static void dialog_map_type_callback(GtkWidget *widget, gpointer data);
|
||||
static gint dialog_constrain(gint32 image_id, gint32 drawable_id, gpointer data);
|
||||
static void dialog_bumpmap_callback(gint32 id, gpointer data);
|
||||
static void dialog_create_dvalue(char *title, GtkTable *table, int row, gdouble *value,
|
||||
double left, double right);
|
||||
static void dialog_dscale_update(GtkAdjustment *adjustment, gdouble *value);
|
||||
static void dialog_dentry_update(GtkWidget *widget, gdouble *value);
|
||||
static void dialog_create_ivalue(char *title, GtkTable *table, int row, gint *value,
|
||||
int left, int right, int full_update);
|
||||
static void dialog_iscale_update_normal(GtkAdjustment *adjustment, gint *value);
|
||||
static void dialog_iscale_update_full(GtkAdjustment *adjustment, gint *value);
|
||||
static void dialog_ientry_update_normal(GtkWidget *widget, gint *value);
|
||||
static void dialog_ientry_update_full(GtkWidget *widget, gint *value);
|
||||
static void dialog_ok_callback(GtkWidget *widget, gpointer data);
|
||||
static void dialog_compensate_callback (GtkWidget *widget, gpointer data);
|
||||
static void dialog_invert_callback (GtkWidget *widget, gpointer data);
|
||||
static void dialog_map_type_callback (GtkWidget *widget, gpointer data);
|
||||
static gint dialog_constrain (gint32 image_id, gint32 drawable_id,
|
||||
gpointer data);
|
||||
static void dialog_bumpmap_callback (gint32 id, gpointer data);
|
||||
static void dialog_dscale_update (GtkAdjustment *adjustment,
|
||||
gdouble *value);
|
||||
static void dialog_iscale_update_normal (GtkAdjustment *adjustment, gint *value);
|
||||
static void dialog_iscale_update_full (GtkAdjustment *adjustment, gint *value);
|
||||
static void dialog_ok_callback (GtkWidget *widget, gpointer data);
|
||||
|
||||
/***** Variables *****/
|
||||
|
||||
|
@ -291,18 +286,11 @@ static bumpmap_interface_t bmint =
|
|||
FALSE /* run */
|
||||
};
|
||||
|
||||
static char *map_types[] =
|
||||
{
|
||||
N_("Linear map"),
|
||||
N_("Spherical map"),
|
||||
N_("Sinusoidal map")
|
||||
};
|
||||
|
||||
GDrawable *drawable = NULL;
|
||||
|
||||
int sel_x1, sel_y1, sel_x2, sel_y2;
|
||||
int sel_width, sel_height;
|
||||
int img_bpp, img_has_alpha;
|
||||
gint sel_x1, sel_y1, sel_x2, sel_y2;
|
||||
gint sel_width, sel_height;
|
||||
gint img_bpp, img_has_alpha;
|
||||
|
||||
|
||||
/***** Functions *****/
|
||||
|
@ -768,21 +756,20 @@ bumpmap_convert_row (guchar *row,
|
|||
static gint
|
||||
bumpmap_dialog (void)
|
||||
{
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *top_table;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *table;
|
||||
GtkWidget *right_vbox;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *option_menu;
|
||||
GtkWidget *menu;
|
||||
GtkWidget *button;
|
||||
GSList *group;
|
||||
gint argc;
|
||||
gchar **argv;
|
||||
guchar *color_cube;
|
||||
gint i;
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *top_table;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *table;
|
||||
GtkWidget *right_vbox;
|
||||
GtkWidget *label;
|
||||
GtkWidget *option_menu;
|
||||
GtkWidget *menu;
|
||||
GtkWidget *button;
|
||||
GtkObject *adj;
|
||||
gint argc;
|
||||
gchar **argv;
|
||||
guchar *color_cube;
|
||||
gint i;
|
||||
|
||||
#if 0
|
||||
g_print ("bumpmap: waiting... (pid %d)\n", getpid ());
|
||||
|
@ -887,31 +874,20 @@ bumpmap_dialog (void)
|
|||
|
||||
/* Type of map */
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME(frame), GTK_SHADOW_ETCHED_IN);
|
||||
frame =
|
||||
gimp_radio_group_new2 (TRUE, NULL,
|
||||
dialog_map_type_callback,
|
||||
&bmvals.type, (gpointer) bmvals.type,
|
||||
|
||||
_("Linear Map"), (gpointer) LINEAR, NULL,
|
||||
_("Spherical Map"), (gpointer) SPHERICAL, NULL,
|
||||
_("Sinuosidal Map"), (gpointer) SINUOSIDAL, NULL,
|
||||
|
||||
NULL);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (right_vbox), frame, FALSE, FALSE, 0);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 2);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 4);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
group = NULL;
|
||||
|
||||
for (i = 0; i < (sizeof(map_types) / sizeof(map_types[0])); i++)
|
||||
{
|
||||
button = gtk_radio_button_new_with_label (group, gettext (map_types[i]));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));
|
||||
if (i == bmvals.type)
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "toggled",
|
||||
(GtkSignalFunc) dialog_map_type_callback,
|
||||
(gpointer) ((long) i));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
gtk_widget_show (button);
|
||||
}
|
||||
|
||||
/* Table for bottom controls */
|
||||
|
||||
table = gtk_table_new (8, 3, FALSE);
|
||||
|
@ -943,20 +919,61 @@ bumpmap_dialog (void)
|
|||
|
||||
/* Controls */
|
||||
|
||||
dialog_create_dvalue(_("Azimuth:"), GTK_TABLE (table), 1,
|
||||
&bmvals.azimuth, 0.0, 360.0);
|
||||
dialog_create_dvalue (_("Elevation:"), GTK_TABLE (table), 2,
|
||||
&bmvals.elevation, 0.5, 90.0);
|
||||
dialog_create_ivalue (_("Depth:"), GTK_TABLE (table), 3,
|
||||
&bmvals.depth, 1, 65, FALSE);
|
||||
dialog_create_ivalue (_("X Offset:"), GTK_TABLE (table), 4,
|
||||
&bmvals.xofs, -1000, 1001, FALSE);
|
||||
dialog_create_ivalue (_("Y Offset:"), GTK_TABLE (table), 5,
|
||||
&bmvals.yofs, -1000, 1001, FALSE);
|
||||
dialog_create_ivalue (_("Waterlevel:"), GTK_TABLE (table), 6,
|
||||
&bmvals.waterlevel, 0, 256, TRUE);
|
||||
dialog_create_ivalue (_("Ambient:"), GTK_TABLE (table), 7,
|
||||
&bmvals.ambient, 0, 256, FALSE);
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||
_("Azimuth:"), SCALE_WIDTH, 0,
|
||||
bmvals.azimuth, 0.0, 360.0, 1.0, 15.0, 2,
|
||||
NULL, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (dialog_dscale_update),
|
||||
&bmvals.azimuth);
|
||||
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
||||
_("Elevation:"), SCALE_WIDTH, 0,
|
||||
bmvals.elevation, 0.5, 90.0, 1.0, 5.0, 2,
|
||||
NULL, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (dialog_dscale_update),
|
||||
&bmvals.elevation);
|
||||
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 3,
|
||||
_("Depth:"), SCALE_WIDTH, 0,
|
||||
bmvals.depth, 1.0, 65.0, 1.0, 5.0, 0,
|
||||
NULL, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (dialog_iscale_update_normal),
|
||||
&bmvals.depth);
|
||||
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 4,
|
||||
_("X Offset:"), SCALE_WIDTH, 0,
|
||||
bmvals.xofs, -1000.0, 1001.0, 1.0, 10.0, 0,
|
||||
NULL, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (dialog_iscale_update_normal),
|
||||
&bmvals.xofs);
|
||||
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 5,
|
||||
_("Y Offset:"), SCALE_WIDTH, 0,
|
||||
bmvals.yofs, -1000.0, 1001.0, 1.0, 10.0, 0,
|
||||
NULL, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (dialog_iscale_update_normal),
|
||||
&bmvals.yofs);
|
||||
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 6,
|
||||
_("Waterlevel:"), SCALE_WIDTH, 0,
|
||||
bmvals.waterlevel, 0.0, 256.0, 1.0, 8.0, 0,
|
||||
NULL, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (dialog_iscale_update_full),
|
||||
&bmvals.waterlevel);
|
||||
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 7,
|
||||
_("Ambient:"), SCALE_WIDTH, 0,
|
||||
bmvals.ambient, 0.0, 256.0, 1.0, 8.0, 0,
|
||||
NULL, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (dialog_iscale_update_normal),
|
||||
&bmvals.ambient);
|
||||
|
||||
/* Done */
|
||||
|
||||
|
@ -1520,10 +1537,10 @@ static void
|
|||
dialog_map_type_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
gimp_radio_button_update (widget, data);
|
||||
|
||||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
{
|
||||
bmvals.type = (long) data;
|
||||
|
||||
bumpmap_init_params (&bmint.params);
|
||||
dialog_fill_bumpmap_rows (0, bmint.preview_height + 2, bmint.bm_yofs);
|
||||
dialog_update_preview ();
|
||||
|
@ -1551,258 +1568,33 @@ dialog_bumpmap_callback (gint32 id,
|
|||
dialog_update_preview ();
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_create_dvalue (char *title,
|
||||
GtkTable *table,
|
||||
int row,
|
||||
gdouble *value,
|
||||
double left,
|
||||
double right)
|
||||
{
|
||||
GtkWidget *label;
|
||||
GtkWidget *scale;
|
||||
GtkWidget *entry;
|
||||
GtkObject *scale_data;
|
||||
gchar buf[256];
|
||||
|
||||
label = gtk_label_new (title);
|
||||
gtk_misc_set_alignment (GTK_MISC(label), 1.0, 0.5);
|
||||
gtk_table_attach (table, label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
scale_data = gtk_adjustment_new (*value, left, right, 1.0, 1.0, 0.0);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||
(GtkSignalFunc) dialog_dscale_update,
|
||||
value);
|
||||
|
||||
scale = gtk_hscale_new (GTK_ADJUSTMENT (scale_data));
|
||||
gtk_widget_set_usize (scale, SCALE_WIDTH, 0);
|
||||
gtk_table_attach (table, scale, 1, 2, row, row + 1,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
|
||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_CONTINUOUS);
|
||||
gtk_widget_show (scale);
|
||||
|
||||
entry = gtk_entry_new ();
|
||||
gtk_object_set_user_data (GTK_OBJECT (entry), scale_data);
|
||||
gtk_object_set_user_data (scale_data, entry);
|
||||
gtk_widget_set_usize (entry, ENTRY_WIDTH, 0);
|
||||
g_snprintf (buf, sizeof (buf), "%0.2f", *value);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), buf);
|
||||
gtk_signal_connect (GTK_OBJECT (entry), "changed",
|
||||
(GtkSignalFunc) dialog_dentry_update,
|
||||
value);
|
||||
gtk_table_attach (GTK_TABLE (table), entry, 2, 3, row, row + 1,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (entry);
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_dscale_update (GtkAdjustment *adjustment,
|
||||
gdouble *value)
|
||||
{
|
||||
GtkWidget *entry;
|
||||
gchar buf[256];
|
||||
gimp_double_adjustment_update (adjustment, value);
|
||||
|
||||
if (*value != adjustment->value)
|
||||
{
|
||||
*value = adjustment->value;
|
||||
|
||||
entry = gtk_object_get_user_data (GTK_OBJECT (adjustment));
|
||||
g_snprintf (buf, sizeof (buf), "%0.2f", *value);
|
||||
|
||||
gtk_signal_handler_block_by_data (GTK_OBJECT (entry), value);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), buf);
|
||||
gtk_signal_handler_unblock_by_data (GTK_OBJECT (entry), value);
|
||||
|
||||
dialog_update_preview ();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_dentry_update (GtkWidget *widget,
|
||||
gdouble *value)
|
||||
{
|
||||
GtkAdjustment *adjustment;
|
||||
gdouble new_value;
|
||||
|
||||
new_value = atof (gtk_entry_get_text (GTK_ENTRY (widget)));
|
||||
|
||||
if (*value != new_value)
|
||||
{
|
||||
adjustment = gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
||||
if ((new_value >= adjustment->lower) &&
|
||||
(new_value <= adjustment->upper))
|
||||
{
|
||||
*value = new_value;
|
||||
adjustment->value = new_value;
|
||||
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (adjustment), "value_changed");
|
||||
dialog_update_preview();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_create_ivalue (char *title,
|
||||
GtkTable *table,
|
||||
int row,
|
||||
gint *value,
|
||||
int left,
|
||||
int right,
|
||||
int full_update)
|
||||
{
|
||||
GtkWidget *label;
|
||||
GtkWidget *scale;
|
||||
GtkWidget *entry;
|
||||
GtkObject *scale_data;
|
||||
gchar buf[256];
|
||||
|
||||
label = gtk_label_new (title);
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
|
||||
gtk_table_attach (table, label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
scale_data = gtk_adjustment_new (*value, left, right, 1.0, 1.0, 1.0);
|
||||
|
||||
if (full_update)
|
||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||
(GtkSignalFunc) dialog_iscale_update_full,
|
||||
value);
|
||||
else
|
||||
gtk_signal_connect (GTK_OBJECT (scale_data), "value_changed",
|
||||
(GtkSignalFunc) dialog_iscale_update_normal,
|
||||
value);
|
||||
|
||||
scale = gtk_hscale_new (GTK_ADJUSTMENT (scale_data));
|
||||
gtk_widget_set_usize (scale, SCALE_WIDTH, 0);
|
||||
gtk_table_attach (table, scale, 1, 2, row, row + 1,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
|
||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_CONTINUOUS);
|
||||
gtk_widget_show (scale);
|
||||
|
||||
entry = gtk_entry_new ();
|
||||
gtk_object_set_user_data (GTK_OBJECT (entry), scale_data);
|
||||
gtk_object_set_user_data (scale_data, entry);
|
||||
gtk_widget_set_usize (entry, ENTRY_WIDTH, 0);
|
||||
g_snprintf(buf, sizeof (buf), "%d", *value);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), buf);
|
||||
|
||||
if (full_update)
|
||||
gtk_signal_connect(GTK_OBJECT (entry), "changed",
|
||||
(GtkSignalFunc) dialog_ientry_update_full,
|
||||
value);
|
||||
else
|
||||
gtk_signal_connect (GTK_OBJECT (entry), "changed",
|
||||
(GtkSignalFunc) dialog_ientry_update_normal,
|
||||
value);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (table), entry, 2, 3, row, row + 1,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (entry);
|
||||
dialog_update_preview ();
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_iscale_update_normal (GtkAdjustment *adjustment,
|
||||
gint *value)
|
||||
{
|
||||
GtkWidget *entry;
|
||||
gchar buf[256];
|
||||
gimp_int_adjustment_update (adjustment, value);
|
||||
|
||||
if (*value != adjustment->value)
|
||||
{
|
||||
*value = adjustment->value;
|
||||
|
||||
entry = gtk_object_get_user_data (GTK_OBJECT (adjustment));
|
||||
g_snprintf (buf, sizeof (buf), "%d", *value);
|
||||
|
||||
gtk_signal_handler_block_by_data (GTK_OBJECT (entry), value);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), buf);
|
||||
gtk_signal_handler_unblock_by_data (GTK_OBJECT (entry), value);
|
||||
|
||||
dialog_update_preview ();
|
||||
}
|
||||
dialog_update_preview ();
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_iscale_update_full (GtkAdjustment *adjustment,
|
||||
gint *value)
|
||||
{
|
||||
GtkWidget *entry;
|
||||
gchar buf[256];
|
||||
gimp_int_adjustment_update (adjustment, value);
|
||||
|
||||
if (*value != adjustment->value)
|
||||
{
|
||||
*value = adjustment->value;
|
||||
|
||||
entry = gtk_object_get_user_data (GTK_OBJECT (adjustment));
|
||||
g_snprintf (buf, sizeof (buf), "%d", *value);
|
||||
|
||||
gtk_signal_handler_block_by_data (GTK_OBJECT (entry), value);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), buf);
|
||||
gtk_signal_handler_unblock_by_data (GTK_OBJECT (entry), value);
|
||||
|
||||
bumpmap_init_params (&bmint.params);
|
||||
dialog_fill_bumpmap_rows (0, bmint.preview_height + 2, bmint.bm_yofs);
|
||||
dialog_update_preview ();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_ientry_update_normal (GtkWidget *widget,
|
||||
gint *value)
|
||||
{
|
||||
GtkAdjustment *adjustment;
|
||||
gdouble new_value;
|
||||
|
||||
new_value = atoi (gtk_entry_get_text (GTK_ENTRY (widget)));
|
||||
|
||||
if (*value != new_value)
|
||||
{
|
||||
adjustment = gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
||||
if ((new_value >= adjustment->lower) &&
|
||||
(new_value <= adjustment->upper))
|
||||
{
|
||||
*value = new_value;
|
||||
adjustment->value = new_value;
|
||||
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (adjustment), "value_changed");
|
||||
|
||||
dialog_update_preview();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_ientry_update_full (GtkWidget *widget,
|
||||
gint *value)
|
||||
{
|
||||
GtkAdjustment *adjustment;
|
||||
gdouble new_value;
|
||||
|
||||
new_value = atoi (gtk_entry_get_text (GTK_ENTRY (widget)));
|
||||
|
||||
if (*value != new_value)
|
||||
{
|
||||
adjustment = gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
||||
if ((new_value >= adjustment->lower) &&
|
||||
(new_value <= adjustment->upper))
|
||||
{
|
||||
*value = new_value;
|
||||
adjustment->value = new_value;
|
||||
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (adjustment), "value_changed");
|
||||
|
||||
bumpmap_init_params (&bmint.params);
|
||||
dialog_fill_bumpmap_rows (0, bmint.preview_height + 2, bmint.bm_yofs);
|
||||
dialog_update_preview();
|
||||
}
|
||||
}
|
||||
bumpmap_init_params (&bmint.params);
|
||||
dialog_fill_bumpmap_rows (0, bmint.preview_height + 2, bmint.bm_yofs);
|
||||
dialog_update_preview ();
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -31,9 +31,7 @@
|
|||
* preview_scroll_callback() - Update the preview when a scrollbar is moved.
|
||||
* preview_update() - Update the preview window.
|
||||
* preview_exit() - Free all memory used by the preview window...
|
||||
* dialog_create_ivalue() - Create an integer value control...
|
||||
* dialog_iscale_update() - Update the value field using the scale.
|
||||
* dialog_ientry_update() - Update the value field using the text entry.
|
||||
* dialog_adaptive_callback() - Update the filter type...
|
||||
* dialog_recursive_callback() - Update the filter type...
|
||||
* dialog_ok_callback() - Start the filter...
|
||||
|
@ -41,6 +39,26 @@
|
|||
* Revision History:
|
||||
*
|
||||
* $Log$
|
||||
* Revision 1.25 2000/01/15 15:32:28 mitch
|
||||
* 2000-01-15 Michael Natterer <mitch@gimp.org>
|
||||
*
|
||||
* * libgimp/gimpwidgets.[ch]: added a float adjustment callback.
|
||||
*
|
||||
* * plug-ins/common/bumpmap.c
|
||||
* * plug-ins/common/depthmerge.c
|
||||
* * plug-ins/common/despeckle.c
|
||||
* * plug-ins/common/destripe.c
|
||||
* * plug-ins/common/gpb.c
|
||||
* * plug-ins/common/iwarp.c
|
||||
* * plug-ins/common/polar.c
|
||||
* * plug-ins/common/sharpen.c
|
||||
* * plug-ins/common/tileit.c
|
||||
* * plug-ins/common/whirlpinch.c
|
||||
* * plug-ins/common/wind.c:
|
||||
*
|
||||
* - Some more hscale+spinbutton instead of hscale+entry widgets.
|
||||
* - Get the CHECK_SIZE constants from libgimp in some plugins.
|
||||
*
|
||||
* Revision 1.24 2000/01/14 12:40:59 mitch
|
||||
* 2000-01-14 Michael Natterer <mitch@gimp.org>
|
||||
*
|
||||
|
|
|
@ -30,9 +30,7 @@
|
|||
* preview_scroll_callback() - Update the preview when a scrollbar is moved.
|
||||
* preview_update() - Update the preview window.
|
||||
* preview_exit() - Free all memory used by the preview window...
|
||||
* dialog_create_ivalue() - Create an integer value control...
|
||||
* dialog_iscale_update() - Update the value field using the scale.
|
||||
* dialog_ientry_update() - Update the value field using the text entry.
|
||||
* dialog_histogram_callback()
|
||||
* dialog_ok_callback() - Start the filter...
|
||||
*
|
||||
|
@ -60,31 +58,29 @@
|
|||
* Constants...
|
||||
*/
|
||||
|
||||
#define PLUG_IN_NAME "plug_in_destripe"
|
||||
#define PLUG_IN_VERSION "0.2"
|
||||
#define PREVIEW_SIZE 200
|
||||
#define SCALE_WIDTH 140
|
||||
#define ENTRY_WIDTH 40
|
||||
#define MAX_AVG 100
|
||||
#define PLUG_IN_NAME "plug_in_destripe"
|
||||
#define PLUG_IN_VERSION "0.2"
|
||||
#define PREVIEW_SIZE 200
|
||||
#define SCALE_WIDTH 140
|
||||
#define MAX_AVG 100
|
||||
|
||||
/*
|
||||
* Local functions...
|
||||
*/
|
||||
|
||||
static void query (void);
|
||||
static void run (char *,
|
||||
int,
|
||||
GParam *,
|
||||
int *,
|
||||
GParam **);
|
||||
static void run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
gint *nreturn_vals,
|
||||
GParam **return_vals);
|
||||
|
||||
static void destripe (void);
|
||||
|
||||
static gint destripe_dialog (void);
|
||||
static void dialog_create_ivalue (char *, GtkTable *, int, gint *, int, int);
|
||||
static void dialog_iscale_update (GtkAdjustment *, gint *);
|
||||
static void dialog_ientry_update (GtkWidget *, gint *);
|
||||
static void dialog_ok_callback (GtkWidget *, gpointer);
|
||||
static gint destripe_dialog (void);
|
||||
static void dialog_histogram_callback (GtkWidget *, gpointer);
|
||||
static void dialog_iscale_update (GtkAdjustment *, gint *);
|
||||
static void dialog_ok_callback (GtkWidget *, gpointer);
|
||||
|
||||
static void preview_init (void);
|
||||
static void preview_exit (void);
|
||||
|
@ -96,48 +92,40 @@ static void preview_scroll_callback (void);
|
|||
* Globals...
|
||||
*/
|
||||
|
||||
GPlugInInfo PLUG_IN_INFO =
|
||||
{
|
||||
NULL, /* init_proc */
|
||||
NULL, /* quit_proc */
|
||||
query, /* query_proc */
|
||||
run /* run_proc */
|
||||
};
|
||||
GPlugInInfo PLUG_IN_INFO =
|
||||
{
|
||||
NULL, /* init_proc */
|
||||
NULL, /* quit_proc */
|
||||
query, /* query_proc */
|
||||
run /* run_proc */
|
||||
};
|
||||
|
||||
GtkWidget *preview; /* Preview widget */
|
||||
int preview_width, /* Width of preview widget */
|
||||
GtkWidget *preview; /* Preview widget */
|
||||
gint preview_width, /* Width of preview widget */
|
||||
preview_height, /* Height of preview widget */
|
||||
preview_x1, /* Upper-left X of preview */
|
||||
preview_y1, /* Upper-left Y of preview */
|
||||
preview_x2, /* Lower-right X of preview */
|
||||
preview_y2; /* Lower-right Y of preview */
|
||||
GtkObject *hscroll_data, /* Horizontal scrollbar data */
|
||||
*vscroll_data; /* Vertical scrollbar data */
|
||||
GtkObject *hscroll_data, /* Horizontal scrollbar data */
|
||||
*vscroll_data; /* Vertical scrollbar data */
|
||||
|
||||
GDrawable *drawable = NULL; /* Current image */
|
||||
int sel_x1, /* Selection bounds */
|
||||
GDrawable *drawable = NULL; /* Current image */
|
||||
gint sel_x1, /* Selection bounds */
|
||||
sel_y1,
|
||||
sel_x2,
|
||||
sel_y2;
|
||||
int histogram = FALSE;
|
||||
int img_bpp; /* Bytes-per-pixel in image */
|
||||
gint histogram = FALSE;
|
||||
gint img_bpp; /* Bytes-per-pixel in image */
|
||||
gint run_filter = FALSE; /* True if we should run the filter */
|
||||
|
||||
int avg_width = 36;
|
||||
gint avg_width = 36;
|
||||
|
||||
|
||||
/*
|
||||
* 'main()' - Main entry - just call gimp_main()...
|
||||
*/
|
||||
|
||||
MAIN()
|
||||
|
||||
/*
|
||||
* 'query()' - Respond to a plug-in query...
|
||||
*/
|
||||
MAIN ()
|
||||
|
||||
static void
|
||||
query(void)
|
||||
query (void)
|
||||
{
|
||||
static GParamDef args[] =
|
||||
{
|
||||
|
@ -152,38 +140,34 @@ query(void)
|
|||
|
||||
INIT_I18N();
|
||||
|
||||
gimp_install_procedure(PLUG_IN_NAME,
|
||||
_("Destripe filter, used to remove vertical stripes caused by cheap scanners."),
|
||||
_("This plug-in tries to remove vertical stripes from an image."),
|
||||
"Marc Lehmann <pcg@goof.com>", "Marc Lehmann <pcg@goof.com>",
|
||||
PLUG_IN_VERSION,
|
||||
N_("<Image>/Filters/Enhance/Destripe..."),
|
||||
"RGB*, GRAY*",
|
||||
PROC_PLUG_IN, nargs, nreturn_vals, args, return_vals);
|
||||
gimp_install_procedure (PLUG_IN_NAME,
|
||||
_("Destripe filter, used to remove vertical stripes caused by cheap scanners."),
|
||||
_("This plug-in tries to remove vertical stripes from an image."),
|
||||
"Marc Lehmann <pcg@goof.com>", "Marc Lehmann <pcg@goof.com>",
|
||||
PLUG_IN_VERSION,
|
||||
N_("<Image>/Filters/Enhance/Destripe..."),
|
||||
"RGB*, GRAY*",
|
||||
PROC_PLUG_IN,
|
||||
nargs, nreturn_vals,
|
||||
args, return_vals);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'run()' - Run the filter...
|
||||
*/
|
||||
|
||||
static void
|
||||
run(char *name, /* I - Name of filter program. */
|
||||
int nparams, /* I - Number of parameters passed in */
|
||||
GParam *param, /* I - Parameter values */
|
||||
int *nreturn_vals, /* O - Number of return values */
|
||||
GParam **return_vals) /* O - Return values */
|
||||
run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
gint *nreturn_vals,
|
||||
GParam **return_vals)
|
||||
{
|
||||
GRunModeType run_mode; /* Current run mode */
|
||||
GStatusType status; /* Return status */
|
||||
static GParam values[1]; /* Return values */
|
||||
|
||||
|
||||
INIT_I18N_UI();
|
||||
|
||||
/*
|
||||
* Initialize parameter data...
|
||||
*/
|
||||
/*
|
||||
* Initialize parameter data...
|
||||
*/
|
||||
|
||||
status = STATUS_SUCCESS;
|
||||
run_mode = param[0].data.d_int32;
|
||||
|
@ -194,145 +178,140 @@ run(char *name, /* I - Name of filter program. */
|
|||
*nreturn_vals = 1;
|
||||
*return_vals = values;
|
||||
|
||||
/*
|
||||
* Get drawable information...
|
||||
*/
|
||||
/*
|
||||
* Get drawable information...
|
||||
*/
|
||||
|
||||
drawable = gimp_drawable_get(param[2].data.d_drawable);
|
||||
drawable = gimp_drawable_get (param[2].data.d_drawable);
|
||||
|
||||
gimp_drawable_mask_bounds(drawable->id, &sel_x1, &sel_y1, &sel_x2, &sel_y2);
|
||||
gimp_drawable_mask_bounds (drawable->id, &sel_x1, &sel_y1, &sel_x2, &sel_y2);
|
||||
|
||||
img_bpp = gimp_drawable_bpp(drawable->id);
|
||||
img_bpp = gimp_drawable_bpp (drawable->id);
|
||||
|
||||
/*
|
||||
* See how we will run
|
||||
*/
|
||||
/*
|
||||
* See how we will run
|
||||
*/
|
||||
|
||||
switch (run_mode)
|
||||
{
|
||||
case RUN_INTERACTIVE :
|
||||
/*
|
||||
* Possibly retrieve data...
|
||||
*/
|
||||
{
|
||||
case RUN_INTERACTIVE:
|
||||
/*
|
||||
* Possibly retrieve data...
|
||||
*/
|
||||
gimp_get_data (PLUG_IN_NAME, &avg_width);
|
||||
|
||||
gimp_get_data(PLUG_IN_NAME, &avg_width);
|
||||
/*
|
||||
* Get information from the dialog...
|
||||
*/
|
||||
if (!destripe_dialog ())
|
||||
return;
|
||||
break;
|
||||
|
||||
/*
|
||||
* Get information from the dialog...
|
||||
*/
|
||||
|
||||
if (!destripe_dialog())
|
||||
return;
|
||||
break;
|
||||
|
||||
case RUN_NONINTERACTIVE :
|
||||
/*
|
||||
* Make sure all the arguments are present...
|
||||
*/
|
||||
|
||||
if (nparams != 4)
|
||||
status = STATUS_CALLING_ERROR;
|
||||
else
|
||||
avg_width = param[3].data.d_int32;
|
||||
break;
|
||||
case RUN_NONINTERACTIVE:
|
||||
/*
|
||||
* Make sure all the arguments are present...
|
||||
*/
|
||||
if (nparams != 4)
|
||||
status = STATUS_CALLING_ERROR;
|
||||
else
|
||||
avg_width = param[3].data.d_int32;
|
||||
break;
|
||||
|
||||
case RUN_WITH_LAST_VALS :
|
||||
/*
|
||||
* Possibly retrieve data...
|
||||
*/
|
||||
|
||||
gimp_get_data(PLUG_IN_NAME, &avg_width);
|
||||
break;
|
||||
/*
|
||||
* Possibly retrieve data...
|
||||
*/
|
||||
gimp_get_data (PLUG_IN_NAME, &avg_width);
|
||||
break;
|
||||
|
||||
default :
|
||||
status = STATUS_CALLING_ERROR;
|
||||
break;
|
||||
};
|
||||
status = STATUS_CALLING_ERROR;
|
||||
break;
|
||||
};
|
||||
|
||||
/*
|
||||
* Destripe the image...
|
||||
*/
|
||||
/*
|
||||
* Destripe the image...
|
||||
*/
|
||||
|
||||
if (status == STATUS_SUCCESS)
|
||||
{
|
||||
if ((gimp_drawable_is_rgb(drawable->id) ||
|
||||
gimp_drawable_is_gray(drawable->id)))
|
||||
{
|
||||
/*
|
||||
* Set the tile cache size...
|
||||
*/
|
||||
if ((gimp_drawable_is_rgb (drawable->id) ||
|
||||
gimp_drawable_is_gray (drawable->id)))
|
||||
{
|
||||
/*
|
||||
* Set the tile cache size...
|
||||
*/
|
||||
gimp_tile_cache_ntiles ((drawable->width + gimp_tile_width() - 1) /
|
||||
gimp_tile_width());
|
||||
|
||||
gimp_tile_cache_ntiles((drawable->width + gimp_tile_width() - 1) /
|
||||
gimp_tile_width());
|
||||
/*
|
||||
* Run!
|
||||
*/
|
||||
destripe ();
|
||||
|
||||
/*
|
||||
* Run!
|
||||
*/
|
||||
/*
|
||||
* If run mode is interactive, flush displays...
|
||||
*/
|
||||
if (run_mode != RUN_NONINTERACTIVE)
|
||||
gimp_displays_flush();
|
||||
|
||||
destripe();
|
||||
|
||||
/*
|
||||
* If run mode is interactive, flush displays...
|
||||
*/
|
||||
|
||||
if (run_mode != RUN_NONINTERACTIVE)
|
||||
gimp_displays_flush();
|
||||
|
||||
/*
|
||||
* Store data...
|
||||
*/
|
||||
|
||||
if (run_mode == RUN_INTERACTIVE)
|
||||
gimp_set_data(PLUG_IN_NAME, &avg_width, sizeof(avg_width));
|
||||
}
|
||||
else
|
||||
status = STATUS_EXECUTION_ERROR;
|
||||
};
|
||||
|
||||
/*
|
||||
* Reset the current run status...
|
||||
*/
|
||||
/*
|
||||
* Store data...
|
||||
*/
|
||||
if (run_mode == RUN_INTERACTIVE)
|
||||
gimp_set_data (PLUG_IN_NAME, &avg_width, sizeof(avg_width));
|
||||
}
|
||||
else
|
||||
status = STATUS_EXECUTION_ERROR;
|
||||
};
|
||||
|
||||
/*
|
||||
* Reset the current run status...
|
||||
*/
|
||||
values[0].data.d_status = status;
|
||||
|
||||
/*
|
||||
* Detach from the drawable...
|
||||
*/
|
||||
|
||||
gimp_drawable_detach(drawable);
|
||||
/*
|
||||
* Detach from the drawable...
|
||||
*/
|
||||
gimp_drawable_detach (drawable);
|
||||
}
|
||||
|
||||
static inline void
|
||||
preview_draw_row (int x, int y, int w, guchar *row)
|
||||
preview_draw_row (gint x,
|
||||
gint y,
|
||||
gint w,
|
||||
guchar *row)
|
||||
{
|
||||
guchar *rgb = g_new(guchar, w * 3);
|
||||
guchar *rgb = g_new (guchar, w * 3);
|
||||
guchar *rgb_ptr;
|
||||
int i;
|
||||
|
||||
gint i;
|
||||
|
||||
switch (img_bpp)
|
||||
{
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
for (i = 0, rgb_ptr = rgb; i < w; i++, row += img_bpp, rgb_ptr += 3)
|
||||
rgb_ptr[0] = rgb_ptr[1] = rgb_ptr[2] = *row;
|
||||
for (i = 0, rgb_ptr = rgb; i < w; i++, row += img_bpp, rgb_ptr += 3)
|
||||
rgb_ptr[0] = rgb_ptr[1] = rgb_ptr[2] = *row;
|
||||
|
||||
gtk_preview_draw_row(GTK_PREVIEW(preview), rgb, x, y, w);
|
||||
break;
|
||||
gtk_preview_draw_row (GTK_PREVIEW (preview), rgb, x, y, w);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
gtk_preview_draw_row(GTK_PREVIEW(preview), row, x, y, w);
|
||||
break;
|
||||
gtk_preview_draw_row (GTK_PREVIEW (preview), row, x, y, w);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
for (i = 0, rgb_ptr = rgb; i < w; i++, row += 4, rgb_ptr += 3)
|
||||
rgb_ptr[0] = row[0],
|
||||
rgb_ptr[1] = row[1],
|
||||
for (i = 0, rgb_ptr = rgb; i < w; i++, row += 4, rgb_ptr += 3)
|
||||
{
|
||||
rgb_ptr[0] = row[0];
|
||||
rgb_ptr[1] = row[1];
|
||||
rgb_ptr[2] = row[2];
|
||||
}
|
||||
|
||||
gtk_preview_draw_row(GTK_PREVIEW(preview), rgb, x, y, w);
|
||||
break;
|
||||
}
|
||||
g_free(rgb);
|
||||
gtk_preview_draw_row (GTK_PREVIEW (preview), rgb, x, y, w);
|
||||
break;
|
||||
}
|
||||
g_free (rgb);
|
||||
}
|
||||
|
||||
|
||||
|
@ -549,35 +528,20 @@ destripe (void)
|
|||
destripe_rect (sel_x1, sel_y1, sel_x2, sel_y2, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_histogram_callback (GtkWidget *widget, /* I - Toggle button */
|
||||
gpointer data) /* I - Data */
|
||||
{
|
||||
histogram = !histogram;
|
||||
preview_update ();
|
||||
}
|
||||
|
||||
/*
|
||||
* 'destripe_dialog()' - Popup a dialog window for the filter box size...
|
||||
*/
|
||||
|
||||
static gint
|
||||
destripe_dialog (void)
|
||||
{
|
||||
GtkWidget *dialog; /* Dialog window */
|
||||
GtkWidget *table; /* Table "container" for controls */
|
||||
GtkWidget *ptable; /* Preview table */
|
||||
GtkWidget *ftable; /* Filter table */
|
||||
GtkWidget *frame; /* Frame for preview */
|
||||
GtkWidget *scrollbar; /* Horizontal + vertical scroller */
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *table;
|
||||
GtkWidget *ptable;
|
||||
GtkWidget *ftable;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *scrollbar;
|
||||
GtkWidget *button;
|
||||
gint argc; /* Fake argc for GUI */
|
||||
gchar **argv; /* Fake argv for GUI */
|
||||
guchar *color_cube; /* Preview color cube... */
|
||||
|
||||
/*
|
||||
* Initialize the program's display...
|
||||
*/
|
||||
GtkObject *adj;
|
||||
gint argc;
|
||||
gchar **argv;
|
||||
guchar *color_cube;
|
||||
|
||||
argc = 1;
|
||||
argv = g_new (gchar *, 1);
|
||||
|
@ -601,10 +565,6 @@ destripe_dialog (void)
|
|||
gtk_widget_set_default_visual (gtk_preview_get_visual ());
|
||||
gtk_widget_set_default_colormap (gtk_preview_get_cmap ());
|
||||
|
||||
/*
|
||||
* Dialog window...
|
||||
*/
|
||||
|
||||
dialog = gimp_dialog_new (_("Destripe"), "destripe",
|
||||
gimp_plugin_help_func, "filters/destripe.html",
|
||||
GTK_WIN_POS_MOUSE,
|
||||
|
@ -626,9 +586,9 @@ destripe_dialog (void)
|
|||
*/
|
||||
|
||||
table = gtk_table_new (3, 3, FALSE);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (table), 6);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 4);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (table), 6);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), table,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (table);
|
||||
|
@ -719,12 +679,13 @@ destripe_dialog (void)
|
|||
* Box size (radius) control...
|
||||
*/
|
||||
|
||||
dialog_create_ivalue (_("Width:"), GTK_TABLE (table), 2,
|
||||
&avg_width, 2, MAX_AVG);
|
||||
|
||||
/*
|
||||
* Show it and wait for the user to do something...
|
||||
*/
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
|
||||
_("Width:"), SCALE_WIDTH, 0,
|
||||
avg_width, 2, MAX_AVG, 1, 10, 0,
|
||||
NULL, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (dialog_iscale_update),
|
||||
&avg_width);
|
||||
|
||||
gtk_widget_show (dialog);
|
||||
|
||||
|
@ -733,23 +694,12 @@ destripe_dialog (void)
|
|||
gtk_main ();
|
||||
gdk_flush ();
|
||||
|
||||
/*
|
||||
* Free the preview data...
|
||||
*/
|
||||
|
||||
preview_exit ();
|
||||
|
||||
/*
|
||||
* Return ok/cancel...
|
||||
*/
|
||||
|
||||
return run_filter;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'preview_init()' - Initialize the preview window...
|
||||
*/
|
||||
/* preview functions */
|
||||
|
||||
static void
|
||||
preview_init (void)
|
||||
|
@ -759,7 +709,6 @@ preview_init (void)
|
|||
/*
|
||||
* Setup for preview filter...
|
||||
*/
|
||||
|
||||
width = preview_width * img_bpp;
|
||||
|
||||
preview_x1 = sel_x1;
|
||||
|
@ -768,11 +717,6 @@ preview_init (void)
|
|||
preview_y2 = preview_y1 + MIN (preview_height, sel_y2 -sel_y1);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'preview_scroll_callback()' - Update the preview when a scrollbar is moved.
|
||||
*/
|
||||
|
||||
static void
|
||||
preview_scroll_callback (void)
|
||||
{
|
||||
|
@ -784,158 +728,39 @@ preview_scroll_callback (void)
|
|||
preview_update ();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'preview_update()' - Update the preview window.
|
||||
*/
|
||||
|
||||
static void
|
||||
preview_update (void)
|
||||
{
|
||||
destripe_rect (preview_x1, preview_y1, preview_x2, preview_y2, TRUE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'preview_exit()' - Free all memory used by the preview window...
|
||||
*/
|
||||
|
||||
static void
|
||||
preview_exit (void)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'dialog_create_ivalue()' - Create an integer value control...
|
||||
*/
|
||||
/* dialog callbacks */
|
||||
|
||||
static void
|
||||
dialog_create_ivalue (char *title, /* I - Label for control */
|
||||
GtkTable *table, /* I - Table container to use */
|
||||
int row, /* I - Row # for container */
|
||||
gint *value, /* I - Value holder */
|
||||
int left, /* I - Minimum value for slider */
|
||||
int right) /* I - Maximum value for slider */
|
||||
dialog_histogram_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
GtkWidget *label, /* Control label */
|
||||
*scale, /* Scale widget */
|
||||
*entry; /* Text widget */
|
||||
GtkObject *scale_data; /* Scale data */
|
||||
gchar buf[256]; /* String buffer */
|
||||
|
||||
|
||||
/*
|
||||
* Label...
|
||||
*/
|
||||
|
||||
label = gtk_label_new(title);
|
||||
gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5);
|
||||
gtk_table_attach(table, label, 0, 1, row, row + 1,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show(label);
|
||||
|
||||
/*
|
||||
* Scale...
|
||||
*/
|
||||
|
||||
scale_data = gtk_adjustment_new(*value, left, right, 1.0, 1.0, 1.0);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(scale_data), "value_changed",
|
||||
(GtkSignalFunc) dialog_iscale_update,
|
||||
value);
|
||||
|
||||
scale = gtk_hscale_new(GTK_ADJUSTMENT(scale_data));
|
||||
gtk_widget_set_usize(scale, SCALE_WIDTH, 0);
|
||||
gtk_table_attach(table, scale, 1, 2, row, row + 1,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_scale_set_draw_value(GTK_SCALE(scale), FALSE);
|
||||
gtk_range_set_update_policy(GTK_RANGE(scale), GTK_UPDATE_CONTINUOUS);
|
||||
gtk_widget_show(scale);
|
||||
|
||||
/*
|
||||
* Text entry...
|
||||
*/
|
||||
|
||||
entry = gtk_entry_new();
|
||||
gtk_object_set_user_data(GTK_OBJECT(entry), scale_data);
|
||||
gtk_object_set_user_data(scale_data, entry);
|
||||
gtk_widget_set_usize(entry, ENTRY_WIDTH, 0);
|
||||
g_snprintf(buf, sizeof (buf), "%d", *value);
|
||||
gtk_entry_set_text(GTK_ENTRY(entry), buf);
|
||||
gtk_signal_connect(GTK_OBJECT(entry), "changed",
|
||||
(GtkSignalFunc) dialog_ientry_update,
|
||||
value);
|
||||
gtk_table_attach(GTK_TABLE(table), entry, 2, 3, row, row + 1,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show(entry);
|
||||
histogram = !histogram;
|
||||
preview_update ();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'dialog_iscale_update()' - Update the value field using the scale.
|
||||
*/
|
||||
|
||||
static void
|
||||
dialog_iscale_update (GtkAdjustment *adjustment, /* I - New value */
|
||||
gint *value) /* I - Current value */
|
||||
dialog_iscale_update (GtkAdjustment *adjustment,
|
||||
gint *value)
|
||||
{
|
||||
GtkWidget *entry; /* Text entry widget */
|
||||
gchar buf[256]; /* Text buffer */
|
||||
gimp_int_adjustment_update (adjustment, value);
|
||||
|
||||
if (*value != adjustment->value)
|
||||
{
|
||||
*value = adjustment->value;
|
||||
|
||||
entry = gtk_object_get_user_data(GTK_OBJECT(adjustment));
|
||||
g_snprintf(buf, sizeof (buf), "%d", *value);
|
||||
|
||||
gtk_signal_handler_block_by_data(GTK_OBJECT(entry), value);
|
||||
gtk_entry_set_text(GTK_ENTRY(entry), buf);
|
||||
gtk_signal_handler_unblock_by_data(GTK_OBJECT(entry), value);
|
||||
|
||||
preview_update();
|
||||
};
|
||||
preview_update ();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 'dialog_ientry_update()' - Update the value field using the text entry.
|
||||
*/
|
||||
|
||||
static void
|
||||
dialog_ientry_update(GtkWidget *widget, /* I - Entry widget */
|
||||
gint *value) /* I - Current value */
|
||||
{
|
||||
GtkAdjustment *adjustment;
|
||||
gint new_value;
|
||||
|
||||
new_value = atoi(gtk_entry_get_text(GTK_ENTRY(widget)));
|
||||
|
||||
if (*value != new_value)
|
||||
{
|
||||
adjustment = gtk_object_get_user_data(GTK_OBJECT(widget));
|
||||
|
||||
if ((new_value >= adjustment->lower) &&
|
||||
(new_value <= adjustment->upper))
|
||||
{
|
||||
*value = new_value;
|
||||
adjustment->value = new_value;
|
||||
|
||||
gtk_signal_emit_by_name(GTK_OBJECT(adjustment), "value_changed");
|
||||
|
||||
preview_update();
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
/*
|
||||
* 'dialog_ok_callback()' - Start the filter...
|
||||
*/
|
||||
|
||||
static void
|
||||
dialog_ok_callback (GtkWidget *widget, /* I - OK button widget */
|
||||
gpointer data) /* I - Dialog window */
|
||||
dialog_ok_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
run_filter = TRUE;
|
||||
|
||||
|
|
|
@ -48,7 +48,8 @@
|
|||
/* Parameters applicable each time we save a gpb or gih, saved
|
||||
* in the main gimp application between invocations of this plug-in.
|
||||
*/
|
||||
static struct {
|
||||
static struct
|
||||
{
|
||||
/* Use by both gpb and gih: */
|
||||
guint spacing;
|
||||
guchar description[MAXDESCLEN+1];
|
||||
|
@ -86,10 +87,10 @@ typedef struct
|
|||
/* Declare some local functions.
|
||||
*/
|
||||
static void query (void);
|
||||
static void run (char *name,
|
||||
int nparams,
|
||||
static void run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
int *nreturn_vals,
|
||||
gint *nreturn_vals,
|
||||
GParam **return_vals);
|
||||
|
||||
static void init_gtk (void);
|
||||
|
@ -97,16 +98,16 @@ static void init_gtk (void);
|
|||
|
||||
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 */
|
||||
};
|
||||
|
||||
MAIN ()
|
||||
|
||||
static void
|
||||
query ()
|
||||
query (void)
|
||||
{
|
||||
static GParamDef gpb_save_args[] =
|
||||
{
|
||||
|
@ -164,7 +165,7 @@ query ()
|
|||
}
|
||||
|
||||
static void
|
||||
init_gtk ()
|
||||
init_gtk (void)
|
||||
{
|
||||
gchar **argv;
|
||||
gint argc;
|
||||
|
@ -177,7 +178,6 @@ init_gtk ()
|
|||
gtk_rc_parse (gimp_gtkrc ());
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
adjustment_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
|
@ -293,35 +293,32 @@ common_save_dialog (GtkWidget *dlg,
|
|||
|
||||
NULL);
|
||||
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 10);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 10);
|
||||
|
||||
/*
|
||||
* Spacing: __
|
||||
*/
|
||||
gtk_table_resize (GTK_TABLE (table),
|
||||
GTK_TABLE (table)->nrows + 1, GTK_TABLE (table)->ncols);
|
||||
GTK_TABLE (table)->nrows + 1,
|
||||
GTK_TABLE (table)->ncols);
|
||||
|
||||
label = gtk_label_new (_("Spacing (percent):"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
label = gtk_label_new (_("Spacing (Percent):"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
adjustment = gtk_adjustment_new (info.spacing, 1, 1000, 1, 10, 10);
|
||||
spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0);
|
||||
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON (spinbutton),
|
||||
GTK_SHADOW_NONE);
|
||||
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE);
|
||||
gtk_widget_set_usize (spinbutton, 75, 0);
|
||||
spinbutton = gimp_spin_button_new (&adjustment,
|
||||
info.spacing, 1, 1000, 1, 10, 10,
|
||||
1, 0);
|
||||
|
||||
box = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (box), spinbutton, FALSE, TRUE, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), box, 1, 2,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
(GtkSignalFunc) adjustment_callback, &info.spacing);
|
||||
GTK_SIGNAL_FUNC (adjustment_callback),
|
||||
&info.spacing);
|
||||
gtk_widget_show (spinbutton);
|
||||
gtk_widget_show (box);
|
||||
|
||||
|
@ -332,7 +329,7 @@ common_save_dialog (GtkWidget *dlg,
|
|||
GTK_TABLE (table)->nrows + 1, GTK_TABLE (table)->ncols);
|
||||
|
||||
label = gtk_label_new (_("Description:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
|
@ -345,7 +342,8 @@ common_save_dialog (GtkWidget *dlg,
|
|||
gtk_widget_set_usize (entry, 200, 0);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), info.description);
|
||||
gtk_signal_connect (GTK_OBJECT (entry), "changed",
|
||||
(GtkSignalFunc) entry_callback, info.description);
|
||||
GTK_SIGNAL_FUNC (entry_callback),
|
||||
info.description);
|
||||
gtk_widget_show (entry);
|
||||
}
|
||||
|
||||
|
@ -366,13 +364,16 @@ gpb_save_dialog (void)
|
|||
NULL);
|
||||
|
||||
/* The main table */
|
||||
table = gtk_table_new (2, 0, FALSE);
|
||||
gtk_container_border_width (GTK_CONTAINER (table), 10);
|
||||
table = gtk_table_new (2, 2, FALSE);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (table), 6);
|
||||
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), table, TRUE, TRUE, 0);
|
||||
gtk_widget_show (table);
|
||||
|
||||
common_save_dialog (dlg, table);
|
||||
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 4);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
|
||||
|
||||
gtk_widget_show (dlg);
|
||||
|
||||
gtk_main ();
|
||||
|
@ -421,7 +422,7 @@ gih_save_dialog (gint32 image_ID)
|
|||
NULL);
|
||||
|
||||
/* The main table */
|
||||
table = gtk_table_new (2, 0, FALSE);
|
||||
table = gtk_table_new (2, 2, 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);
|
||||
|
@ -431,26 +432,23 @@ gih_save_dialog (gint32 image_ID)
|
|||
/*
|
||||
* Cell size: __ x __ pixels
|
||||
*/
|
||||
|
||||
|
||||
gtk_table_resize (GTK_TABLE (table),
|
||||
GTK_TABLE (table)->nrows + 1, GTK_TABLE (table)->ncols);
|
||||
|
||||
label = gtk_label_new ( _("Cell size:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
label = gtk_label_new ( _("Cell Size:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
box = gtk_hbox_new (FALSE, 0);
|
||||
|
||||
adjustment = gtk_adjustment_new (gihparms.cellwidth,
|
||||
2, gimp_image_width (image_ID), 1, 1, 1);
|
||||
spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0);
|
||||
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON (spinbutton),
|
||||
GTK_SHADOW_NONE);
|
||||
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE);
|
||||
gtk_widget_set_usize (spinbutton, 75, 0);
|
||||
box = gtk_hbox_new (FALSE, 4);
|
||||
|
||||
spinbutton = gimp_spin_button_new (&adjustment,
|
||||
gihparms.cellwidth,
|
||||
2, gimp_image_width (image_ID), 1, 1, 1,
|
||||
1, 0);
|
||||
gtk_box_pack_start (GTK_BOX (box), spinbutton, FALSE, FALSE, 0);
|
||||
|
||||
layer_ID = gimp_image_get_layers (image_ID, &nlayers);
|
||||
|
@ -461,21 +459,18 @@ gih_save_dialog (gint32 image_ID)
|
|||
cellw_adjust.guides = NULL;
|
||||
cellw_adjust.value = &gihparms.cellwidth;
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
(GtkSignalFunc) size_adjustment_callback,
|
||||
GTK_SIGNAL_FUNC (size_adjustment_callback),
|
||||
&cellw_adjust);
|
||||
gtk_widget_show (spinbutton);
|
||||
|
||||
label = gtk_label_new (" x ");
|
||||
label = gtk_label_new ("x");
|
||||
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
adjustment = gtk_adjustment_new (gihparms.cellheight,
|
||||
2, gimp_image_height (image_ID), 1, 1, 1);
|
||||
spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0);
|
||||
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON (spinbutton),
|
||||
GTK_SHADOW_NONE);
|
||||
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE);
|
||||
gtk_widget_set_usize (spinbutton, 75, 0);
|
||||
|
||||
spinbutton = gimp_spin_button_new (&adjustment,
|
||||
gihparms.cellheight,
|
||||
gimp_image_height (image_ID), 1, 1, 1, 1,
|
||||
1, 0);
|
||||
gtk_box_pack_start (GTK_BOX (box), spinbutton, FALSE, FALSE, 0);
|
||||
cellh_adjust.orientation = ORIENTATION_HORIZONTAL;
|
||||
cellh_adjust.image = image_ID;
|
||||
|
@ -484,11 +479,11 @@ gih_save_dialog (gint32 image_ID)
|
|||
cellh_adjust.guides = NULL;
|
||||
cellh_adjust.value = &gihparms.cellheight;
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
(GtkSignalFunc) size_adjustment_callback,
|
||||
GTK_SIGNAL_FUNC (size_adjustment_callback),
|
||||
&cellh_adjust);
|
||||
gtk_widget_show (spinbutton);
|
||||
|
||||
label = gtk_label_new ( _(" pixels"));
|
||||
label = gtk_label_new ( _("Pixels"));
|
||||
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
|
@ -506,29 +501,28 @@ gih_save_dialog (gint32 image_ID)
|
|||
gtk_table_resize (GTK_TABLE (table),
|
||||
GTK_TABLE (table)->nrows + 1, GTK_TABLE (table)->ncols);
|
||||
|
||||
label = gtk_label_new ( _("Number of cells:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
label = gtk_label_new (_("Number of Cells:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
adjustment = gtk_adjustment_new (gihparms.ncells, 1, 1000, 1, 10, 10);
|
||||
spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0);
|
||||
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON (spinbutton),
|
||||
GTK_SHADOW_NONE);
|
||||
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE);
|
||||
gtk_widget_set_usize (spinbutton, 75, 0);
|
||||
box = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (box), spinbutton, FALSE, TRUE, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), box, 1, 2,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
(GtkSignalFunc) adjustment_callback, &gihparms.ncells);
|
||||
gtk_widget_show (spinbutton);
|
||||
gtk_widget_show (box);
|
||||
|
||||
spinbutton = gimp_spin_button_new (&adjustment,
|
||||
gihparms.ncells, 1, 1000, 1, 10, 10,
|
||||
1, 0);
|
||||
gtk_box_pack_start (GTK_BOX (box), spinbutton, FALSE, TRUE, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
GTK_SIGNAL_FUNC (adjustment_callback),
|
||||
&gihparms.ncells);
|
||||
gtk_widget_show (spinbutton);
|
||||
|
||||
if (gihparms.dim == 1)
|
||||
cellw_adjust.ncells = cellh_adjust.ncells = adjustment;
|
||||
else
|
||||
|
@ -540,16 +534,16 @@ gih_save_dialog (gint32 image_ID)
|
|||
gtk_table_resize (GTK_TABLE (table),
|
||||
GTK_TABLE (table)->nrows + 1, GTK_TABLE (table)->ncols);
|
||||
|
||||
label = gtk_label_new ( _("Display as:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
label = gtk_label_new (_("Display as:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
box = gtk_hbox_new (FALSE, 0);
|
||||
|
||||
sprintf (buffer, "%2d", gihparms.rows);
|
||||
|
||||
g_snprintf (buffer, sizeof (buffer), "%2d", gihparms.rows);
|
||||
label = gtk_label_new (buffer);
|
||||
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
|
||||
cellh_adjust.count_label = label;
|
||||
|
@ -557,11 +551,11 @@ gih_save_dialog (gint32 image_ID)
|
|||
cellh_adjust.other_count = &gihparms.cols;
|
||||
gtk_widget_show (label);
|
||||
|
||||
label = gtk_label_new ( _(" rows of "));
|
||||
label = gtk_label_new (_(" Rows of "));
|
||||
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
sprintf (buffer, "%2d", gihparms.cols);
|
||||
|
||||
g_snprintf (buffer, sizeof (buffer), "%2d", gihparms.cols);
|
||||
label = gtk_label_new (buffer);
|
||||
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
|
||||
cellw_adjust.count_label = label;
|
||||
|
@ -569,15 +563,15 @@ gih_save_dialog (gint32 image_ID)
|
|||
cellw_adjust.other_count = &gihparms.rows;
|
||||
gtk_widget_show (label);
|
||||
|
||||
label = gtk_label_new ( _(" columns on each layer"));
|
||||
label = gtk_label_new (_(" Columns on each Layer"));
|
||||
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
label = gtk_label_new ( _(" (width mismatch!) "));
|
||||
|
||||
label = gtk_label_new (_(" (Width Mismatch!) "));
|
||||
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
|
||||
cellw_adjust.warning_label = label;
|
||||
|
||||
label = gtk_label_new ( _(" (height mismatch!) "));
|
||||
label = gtk_label_new (_(" (Height Mismatch!) "));
|
||||
gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);
|
||||
cellh_adjust.warning_label = label;
|
||||
|
||||
|
@ -593,8 +587,8 @@ gih_save_dialog (gint32 image_ID)
|
|||
gtk_table_resize (GTK_TABLE (table),
|
||||
GTK_TABLE (table)->nrows + 1, GTK_TABLE (table)->ncols);
|
||||
|
||||
label = gtk_label_new ( _("Dimension:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
label = gtk_label_new (_("Dimension:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
|
@ -623,30 +617,30 @@ gih_save_dialog (gint32 image_ID)
|
|||
gtk_table_resize (GTK_TABLE (table),
|
||||
GTK_TABLE (table)->nrows + 1, GTK_TABLE (table)->ncols);
|
||||
|
||||
label = gtk_label_new ( _("Ranks:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
label = gtk_label_new (_("Ranks:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
dimtable = gtk_table_new (PIXPIPE_MAXDIM, 1, FALSE);
|
||||
dimtable = gtk_table_new (1, PIXPIPE_MAXDIM, FALSE);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (dimtable), 4);
|
||||
for (i = 0; i < PIXPIPE_MAXDIM; i++)
|
||||
{
|
||||
adjustment = gtk_adjustment_new (gihparms.rank[i], 0, 100, 1, 1, 1);
|
||||
spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 0);
|
||||
gtk_spin_button_set_shadow_type (GTK_SPIN_BUTTON (spinbutton),
|
||||
GTK_SHADOW_NONE);
|
||||
gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE);
|
||||
gtk_widget_set_usize (spinbutton, 75, 0);
|
||||
box = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (box), spinbutton, FALSE, TRUE, 0);
|
||||
gtk_table_attach (GTK_TABLE (dimtable), box, i, i + 1, 0, 1,
|
||||
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 3, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
(GtkSignalFunc) adjustment_callback, &gihparms.rank[i]);
|
||||
gtk_widget_show (spinbutton);
|
||||
GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
|
||||
gtk_widget_show (box);
|
||||
|
||||
spinbutton = gimp_spin_button_new (&adjustment,
|
||||
gihparms.rank[i], 0, 100, 1, 1, 1,
|
||||
1, 0);
|
||||
gtk_box_pack_start (GTK_BOX (box), spinbutton, FALSE, TRUE, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
GTK_SIGNAL_FUNC (adjustment_callback),
|
||||
&gihparms.rank[i]);
|
||||
gtk_widget_show (spinbutton);
|
||||
if (i == 0)
|
||||
{
|
||||
if (gihparms.dim == 1)
|
||||
|
@ -663,12 +657,12 @@ gih_save_dialog (gint32 image_ID)
|
|||
/*
|
||||
* Selection: ______ ______ ______ ______ ______
|
||||
*/
|
||||
|
||||
|
||||
gtk_table_resize (GTK_TABLE (table),
|
||||
GTK_TABLE (table)->nrows + 1, GTK_TABLE (table)->ncols);
|
||||
|
||||
label = gtk_label_new ( _("Selection:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
|
||||
label = gtk_label_new (_("Selection:"));
|
||||
gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1,
|
||||
GTK_TABLE (table)->nrows - 1, GTK_TABLE (table)->nrows,
|
||||
GTK_FILL, GTK_FILL, 0, 0);
|
||||
|
@ -682,20 +676,22 @@ gih_save_dialog (gint32 image_ID)
|
|||
cbitems = g_list_append (cbitems, "xtilt");
|
||||
cbitems = g_list_append (cbitems, "ytilt");
|
||||
|
||||
box = gtk_hbox_new (FALSE, 0);
|
||||
box = gtk_hbox_new (FALSE, 4);
|
||||
for (i = 0; i < PIXPIPE_MAXDIM; i++)
|
||||
{
|
||||
cb = gtk_combo_new ();
|
||||
gtk_combo_set_popdown_strings (GTK_COMBO (cb), cbitems);
|
||||
if (gihparms.selection[i])
|
||||
gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (cb)->entry), gihparms.selection[i]);
|
||||
gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (cb)->entry)
|
||||
, gihparms.selection[i]);
|
||||
else
|
||||
gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (cb)->entry), "random");
|
||||
gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (cb)->entry), FALSE);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (box), cb, FALSE, TRUE, 2);
|
||||
gtk_box_pack_start (GTK_BOX (box), cb, FALSE, TRUE, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (GTK_COMBO (cb)->entry), "changed",
|
||||
(GtkSignalFunc) cb_callback, &gihparms.selection[i]);
|
||||
GTK_SIGNAL_FUNC (cb_callback),
|
||||
&gihparms.selection[i]);
|
||||
gtk_widget_show (cb);
|
||||
}
|
||||
|
||||
|
@ -704,6 +700,9 @@ gih_save_dialog (gint32 image_ID)
|
|||
GTK_SHRINK, GTK_EXPAND | GTK_FILL, 0, 0);
|
||||
gtk_widget_show (box);
|
||||
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 4);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
|
||||
|
||||
gtk_widget_show (dlg);
|
||||
|
||||
gtk_main ();
|
||||
|
@ -1046,11 +1045,14 @@ run (char *name,
|
|||
values[0].type = PARAM_STATUS;
|
||||
values[0].data.d_status = STATUS_CALLING_ERROR;
|
||||
|
||||
if (run_mode == RUN_INTERACTIVE) {
|
||||
INIT_I18N_UI();
|
||||
} else {
|
||||
INIT_I18N();
|
||||
}
|
||||
if (run_mode == RUN_INTERACTIVE)
|
||||
{
|
||||
INIT_I18N_UI();
|
||||
}
|
||||
else
|
||||
{
|
||||
INIT_I18N();
|
||||
}
|
||||
|
||||
if (strcmp (name, "file_gpb_save") == 0)
|
||||
{
|
||||
|
@ -1083,7 +1085,7 @@ run (char *name,
|
|||
/* Possibly retrieve data */
|
||||
gimp_get_data ("file_gpb_save", &info);
|
||||
if (!gpb_save_dialog ())
|
||||
return;
|
||||
goto finish_gpb;
|
||||
break;
|
||||
|
||||
case RUN_NONINTERACTIVE: /* FIXME - need a real RUN_NONINTERACTIVE */
|
||||
|
@ -1110,6 +1112,8 @@ run (char *name,
|
|||
else
|
||||
status = STATUS_EXECUTION_ERROR;
|
||||
|
||||
finish_gpb:
|
||||
|
||||
if (export == EXPORT_EXPORT)
|
||||
gimp_image_delete (image_ID);
|
||||
}
|
||||
|
@ -1165,7 +1169,7 @@ run (char *name,
|
|||
pixpipeparams_parse (pipe_parasite->data, &gihparms);
|
||||
|
||||
if (!gih_save_dialog (image_ID))
|
||||
return;
|
||||
goto finish_gih;
|
||||
break;
|
||||
|
||||
case RUN_NONINTERACTIVE: /* FIXME - need a real RUN_NONINTERACTIVE */
|
||||
|
@ -1197,8 +1201,11 @@ run (char *name,
|
|||
else
|
||||
status = STATUS_EXECUTION_ERROR;
|
||||
|
||||
finish_gih:
|
||||
|
||||
if (export == EXPORT_EXPORT)
|
||||
gimp_image_delete (image_ID);
|
||||
}
|
||||
|
||||
values[0].data.d_status = status;
|
||||
}
|
||||
|
|
|
@ -45,8 +45,9 @@
|
|||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include "libgimp/gimp.h"
|
||||
#include "libgimp/gimpui.h"
|
||||
#include <libgimp/gimp.h>
|
||||
#include <libgimp/gimpui.h>
|
||||
#include <libgimp/gimplimits.h>
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
|
@ -56,9 +57,6 @@
|
|||
|
||||
#define SCALE_WIDTH 150
|
||||
#define MAX_NUM_FRAMES 100
|
||||
#define CHECK_SIZE 32
|
||||
#define CHECK_LIGHT 170
|
||||
#define CHECK_DARK 85
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -660,48 +658,53 @@ static void iwarp()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
static guchar
|
||||
iwarp_transparent_color(int x, int y)
|
||||
iwarp_transparent_color (gint x,
|
||||
gint y)
|
||||
{
|
||||
|
||||
if ((y % CHECK_SIZE) > (CHECK_SIZE / 2)) {
|
||||
if ((x % CHECK_SIZE) > (CHECK_SIZE / 2)) return CHECK_DARK;
|
||||
else return CHECK_LIGHT;
|
||||
}
|
||||
else
|
||||
if ((x % CHECK_SIZE) < (CHECK_SIZE / 2)) return CHECK_DARK;
|
||||
else return CHECK_LIGHT;
|
||||
if ((y % (GIMP_CHECK_SIZE * 4)) > (GIMP_CHECK_SIZE * 2))
|
||||
{
|
||||
if ((x % (GIMP_CHECK_SIZE * 4)) > (GIMP_CHECK_SIZE * 2))
|
||||
return GIMP_CHECK_DARK * 255;
|
||||
else
|
||||
return GIMP_CHECK_LIGHT * 255;
|
||||
}
|
||||
else
|
||||
if ((x % (GIMP_CHECK_SIZE * 4)) < (GIMP_CHECK_SIZE * 2))
|
||||
return GIMP_CHECK_DARK * 255;
|
||||
else
|
||||
return GIMP_CHECK_LIGHT * 255;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
iwarp_cpy_images()
|
||||
iwarp_cpy_images (void)
|
||||
{
|
||||
int i,j,k,p;
|
||||
gfloat alpha;
|
||||
guchar *srccolor, *dstcolor;
|
||||
int i,j,k,p;
|
||||
gfloat alpha;
|
||||
guchar *srccolor, *dstcolor;
|
||||
|
||||
if (image_bpp == 1 || image_bpp ==3)
|
||||
memcpy(dstimage,srcimage,preview_width *preview_height*preview_bpp);
|
||||
else {
|
||||
for (i=0; i< preview_width; i++)
|
||||
for (j=0; j< preview_height; j++) {
|
||||
p = (j*preview_width+i) ;
|
||||
srccolor = srcimage + p*image_bpp;
|
||||
alpha = (gfloat)srccolor[image_bpp-1]/255;
|
||||
dstcolor = dstimage + p*preview_bpp;
|
||||
for (k=0; k <preview_bpp; k++) {
|
||||
*dstcolor++ = (guchar)(alpha *srccolor[k]+(1.0-alpha)*iwarp_transparent_color(i,j));
|
||||
if (image_bpp == 1 || image_bpp ==3)
|
||||
memcpy(dstimage,srcimage,preview_width *preview_height*preview_bpp);
|
||||
else
|
||||
{
|
||||
for (i=0; i< preview_width; i++)
|
||||
for (j=0; j< preview_height; j++)
|
||||
{
|
||||
p = (j*preview_width+i) ;
|
||||
srccolor = srcimage + p*image_bpp;
|
||||
alpha = (gfloat)srccolor[image_bpp-1]/255;
|
||||
dstcolor = dstimage + p*preview_bpp;
|
||||
for (k=0; k <preview_bpp; k++)
|
||||
{
|
||||
*dstcolor++ = (guchar)
|
||||
(alpha *srccolor[k]+(1.0-alpha)*iwarp_transparent_color(i,j));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
iwarp_init()
|
||||
static void
|
||||
iwarp_init (void)
|
||||
{
|
||||
int y,x,xi,i;
|
||||
GPixelRgn srcrgn;
|
||||
|
|
|
@ -68,6 +68,7 @@
|
|||
|
||||
#include <libgimp/gimp.h>
|
||||
#include <libgimp/gimpui.h>
|
||||
#include <libgimp/gimplimits.h>
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
|
@ -81,12 +82,7 @@
|
|||
|
||||
#define PREVIEW_SIZE 128
|
||||
#define SCALE_WIDTH 200
|
||||
#define ENTRY_WIDTH 60
|
||||
|
||||
#define CHECK_SIZE 8
|
||||
#define CHECK_DARK ((int) (1.0 / 3.0 * 255))
|
||||
#define CHECK_LIGHT ((int) (2.0 / 3.0 * 255))
|
||||
|
||||
#define ENTRY_WIDTH 60
|
||||
|
||||
/***** Types *****/
|
||||
|
||||
|
@ -860,15 +856,15 @@ build_preview_source_image (void)
|
|||
{
|
||||
/* Checks */
|
||||
|
||||
if ((x / CHECK_SIZE) & 1)
|
||||
if ((x / GIMP_CHECK_SIZE) & 1)
|
||||
{
|
||||
pcint.check_row_0[x] = CHECK_DARK;
|
||||
pcint.check_row_1[x] = CHECK_LIGHT;
|
||||
pcint.check_row_0[x] = GIMP_CHECK_DARK * 255;
|
||||
pcint.check_row_1[x] = GIMP_CHECK_LIGHT * 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
pcint.check_row_0[x] = CHECK_LIGHT;
|
||||
pcint.check_row_1[x] = CHECK_DARK;
|
||||
pcint.check_row_0[x] = GIMP_CHECK_LIGHT * 255;
|
||||
pcint.check_row_1[x] = GIMP_CHECK_DARK * 255;
|
||||
}
|
||||
|
||||
/* Thumbnail image */
|
||||
|
@ -1108,7 +1104,7 @@ dialog_update_preview (void)
|
|||
{
|
||||
px = left;
|
||||
|
||||
if ((y / CHECK_SIZE) & 1)
|
||||
if ((y / GIMP_CHECK_SIZE) & 1)
|
||||
check_ul = pcint.check_row_0;
|
||||
else
|
||||
check_ul = pcint.check_row_1;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -36,16 +36,19 @@
|
|||
* 0.1 First version released.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "config.h"
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#include <libgimp/gimp.h>
|
||||
#include <libgimp/gimpui.h>
|
||||
#include <libgimp/gimplimits.h>
|
||||
|
||||
#include "libgimp/stdplugins-intl.h"
|
||||
|
||||
/***** Magic numbers *****/
|
||||
|
@ -54,11 +57,6 @@
|
|||
#define SCALE_WIDTH 80
|
||||
#define ENTRY_WIDTH 25
|
||||
|
||||
/* Even more stuff from Quartics plugins */
|
||||
#define CHECK_SIZE 8
|
||||
#define CHECK_DARK ((int) (1.0 / 3.0 * 255))
|
||||
#define CHECK_LIGHT ((int) (2.0 / 3.0 * 255))
|
||||
|
||||
#define MAX_SEGS 6
|
||||
|
||||
#define PREVIEW_MASK GDK_EXPOSURE_MASK | \
|
||||
|
@ -1275,12 +1273,12 @@ dialog_update_preview(void)
|
|||
|
||||
for (y = 0; y < preview_height; y++) {
|
||||
|
||||
if ((y / CHECK_SIZE) & 1) {
|
||||
check_0 = CHECK_DARK;
|
||||
check_1 = CHECK_LIGHT;
|
||||
if ((y / GIMP_CHECK_SIZE) & 1) {
|
||||
check_0 = GIMP_CHECK_DARK * 255;
|
||||
check_1 = GIMP_CHECK_LIGHT * 255;
|
||||
} else {
|
||||
check_0 = CHECK_LIGHT;
|
||||
check_1 = CHECK_DARK;
|
||||
check_0 = GIMP_CHECK_LIGHT * 255;
|
||||
check_1 = GIMP_CHECK_DARK * 255;
|
||||
}
|
||||
|
||||
do_tiles_preview(tint.preview_row,
|
||||
|
@ -1296,7 +1294,7 @@ dialog_update_preview(void)
|
|||
for (i = 0, j = 0 ; i < sizeof(tint.preview_row); i += 4, j += 3 )
|
||||
{
|
||||
gint alphaval;
|
||||
if (((i/4) / CHECK_SIZE) & 1)
|
||||
if (((i/4) / GIMP_CHECK_SIZE) & 1)
|
||||
check = check_0;
|
||||
else
|
||||
check = check_1;
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
|
||||
#include <libgimp/gimp.h>
|
||||
#include <libgimp/gimpui.h>
|
||||
#include <libgimp/gimplimits.h>
|
||||
|
||||
#define PLUG_IN_NAME "plug_in_whirl_pinch"
|
||||
#define PLUG_IN_VERSION "May 1997, 2.09"
|
||||
|
@ -68,11 +69,6 @@
|
|||
#define SCALE_WIDTH 200
|
||||
#define ENTRY_WIDTH 60
|
||||
|
||||
#define CHECK_SIZE 8
|
||||
#define CHECK_DARK ((int) (1.0 / 3.0 * 255))
|
||||
#define CHECK_LIGHT ((int) (2.0 / 3.0 * 255))
|
||||
|
||||
|
||||
/***** Types *****/
|
||||
|
||||
typedef struct
|
||||
|
@ -747,15 +743,15 @@ build_preview_source_image (void)
|
|||
{
|
||||
/* Checks */
|
||||
|
||||
if ((x / CHECK_SIZE) & 1)
|
||||
if ((x / GIMP_CHECK_SIZE) & 1)
|
||||
{
|
||||
wpint.check_row_0[x] = CHECK_DARK;
|
||||
wpint.check_row_1[x] = CHECK_LIGHT;
|
||||
wpint.check_row_0[x] = GIMP_CHECK_DARK * 255;
|
||||
wpint.check_row_1[x] = GIMP_CHECK_LIGHT * 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
wpint.check_row_0[x] = CHECK_LIGHT;
|
||||
wpint.check_row_1[x] = CHECK_DARK;
|
||||
wpint.check_row_0[x] = GIMP_CHECK_LIGHT * 255;
|
||||
wpint.check_row_1[x] = GIMP_CHECK_DARK * 255;
|
||||
}
|
||||
|
||||
/* Thumbnail image */
|
||||
|
@ -959,12 +955,12 @@ dialog_update_preview (void)
|
|||
{
|
||||
px = left;
|
||||
|
||||
if ((y / CHECK_SIZE) & 1)
|
||||
if ((y / GIMP_CHECK_SIZE) & 1)
|
||||
check_ul = wpint.check_row_0;
|
||||
else
|
||||
check_ul = wpint.check_row_1;
|
||||
|
||||
if (((preview_height - y - 1) / CHECK_SIZE) & 1)
|
||||
if (((preview_height - y - 1) / GIMP_CHECK_SIZE) & 1)
|
||||
check_lr = wpint.check_row_0;
|
||||
else
|
||||
check_lr = wpint.check_row_1;
|
||||
|
|
|
@ -33,9 +33,8 @@
|
|||
|
||||
#define PLUG_IN_NAME "wind"
|
||||
|
||||
#define COMPARE_WIDTH 3
|
||||
#define COMPARE_WIDTH 3
|
||||
|
||||
#define ENTRY_WIDTH 40
|
||||
#define SCALE_WIDTH 200
|
||||
#define MIN_THRESHOLD 0
|
||||
#define MAX_THRESHOLD 50
|
||||
|
@ -74,31 +73,34 @@ typedef enum
|
|||
|
||||
|
||||
static void query (void);
|
||||
static void run (char *name, int nparams, GParam *param,
|
||||
int *nreturn_vals, GParam **return_vals);
|
||||
static void run (gchar *name,
|
||||
gint nparams,
|
||||
GParam *param,
|
||||
gint *nreturn_vals,
|
||||
GParam **return_vals);
|
||||
|
||||
static void dialog_box (void);
|
||||
static gint render_effect (GDrawable *drawable);
|
||||
static void render_wind (GDrawable *drawable, gint threshold, gint strength,
|
||||
direction_t direction, edge_t edge);
|
||||
static void render_blast (GDrawable *drawable, gint threshold, gint strength,
|
||||
direction_t direction, edge_t edge);
|
||||
static void render_wind (GDrawable *drawable, gint threshold, gint strength,
|
||||
direction_t direction, edge_t edge);
|
||||
static void render_blast (GDrawable *drawable, gint threshold, gint strength,
|
||||
direction_t direction, edge_t edge);
|
||||
static gint render_blast_row (guchar *buffer, gint bytes, gint lpi,
|
||||
gint threshold,
|
||||
gint strength, edge_t edge);
|
||||
static void render_wind_row (guchar *sb, gint bytes, gint lpi, gint threshold,
|
||||
gint strength, edge_t edge);
|
||||
static void render_wind_row (guchar *sb, gint bytes, gint lpi, gint threshold,
|
||||
gint strength, edge_t edge);
|
||||
|
||||
static void msg_ok_callback (GtkWidget *widget, gpointer data);
|
||||
static void ok_callback (GtkWidget *widget, gpointer data);
|
||||
static void entry_callback (GtkWidget *widget, gpointer data);
|
||||
static void radio_button_alg_callback (GtkWidget *widget, gpointer data);
|
||||
static void radio_button_direction_callback (GtkWidget *widget, gpointer data);
|
||||
static void get_derivative (guchar *pixel_R1, guchar *pixel_R2,
|
||||
edge_t edge, gint *derivative_R,
|
||||
gint *derivative_G, gint *derivative_B);
|
||||
|
||||
static void get_derivative (guchar *pixel_R1, guchar *pixel_R2,
|
||||
edge_t edge, gint *derivative_R,
|
||||
gint *derivative_G, gint *derivative_B);
|
||||
static gint threshold_exceeded (guchar *pixel_R1, guchar *pixel_R2,
|
||||
edge_t edge, gint threshold);
|
||||
static void reverse_buffer (guchar *buffer, gint length, gint bytes);
|
||||
static void reverse_buffer (guchar *buffer, gint length, gint bytes);
|
||||
|
||||
static void modal_message_box (gchar *text);
|
||||
|
||||
GPlugInInfo PLUG_IN_INFO =
|
||||
|
@ -120,11 +122,11 @@ gint dialog_result = -1;
|
|||
|
||||
struct config_tag
|
||||
{
|
||||
gint threshold; /* derivative comparison for edge detection */
|
||||
gint threshold; /* derivative comparison for edge detection */
|
||||
direction_t direction; /* of wind, LEFT or RIGHT */
|
||||
gint strength; /* how many pixels to bleed */
|
||||
gint strength; /* how many pixels to bleed */
|
||||
algorithm_t alg; /* which algorithm */
|
||||
edge_t edge; /* controls abs, negation of derivative */
|
||||
edge_t edge; /* controls abs, negation of derivative */
|
||||
};
|
||||
|
||||
typedef struct config_tag config_t;
|
||||
|
@ -159,18 +161,17 @@ query (void)
|
|||
static int nargs = sizeof(args) / sizeof(args[0]);
|
||||
static int nreturn_vals = 0;
|
||||
|
||||
gimp_install_procedure("plug_in_wind",
|
||||
"Renders a wind effect.",
|
||||
"Renders a wind effect.",
|
||||
"Nigel Wetten",
|
||||
"Nigel Wetten",
|
||||
"1998",
|
||||
"<Image>/Filters/Distorts/Wind...",
|
||||
"RGB*",
|
||||
PROC_PLUG_IN,
|
||||
nargs, nreturn_vals,
|
||||
args, return_vals);
|
||||
return;
|
||||
gimp_install_procedure ("plug_in_wind",
|
||||
"Renders a wind effect.",
|
||||
"Renders a wind effect.",
|
||||
"Nigel Wetten",
|
||||
"Nigel Wetten",
|
||||
"1998",
|
||||
"<Image>/Filters/Distorts/Wind...",
|
||||
"RGB*",
|
||||
PROC_PLUG_IN,
|
||||
nargs, nreturn_vals,
|
||||
args, return_vals);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -710,94 +711,14 @@ ok_callback (GtkWidget *widget,
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
entry_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
GtkAdjustment *adjustment;
|
||||
gint new_value;
|
||||
|
||||
new_value = atoi (gtk_entry_get_text (GTK_ENTRY (widget)));
|
||||
|
||||
if (*(gint *) data != new_value)
|
||||
{
|
||||
*(gint *) data = new_value;
|
||||
adjustment = gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
if ((new_value >= adjustment-> lower)
|
||||
&& (new_value <= adjustment->upper))
|
||||
{
|
||||
adjustment->value = new_value;
|
||||
gtk_signal_handler_block_by_data (GTK_OBJECT (adjustment), data);
|
||||
gtk_signal_emit_by_name (GTK_OBJECT (adjustment), "value_changed");
|
||||
gtk_signal_handler_unblock_by_data (GTK_OBJECT (adjustment), data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
radio_button_alg_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
{
|
||||
config.alg = (algorithm_t) data;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
radio_button_direction_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
{
|
||||
config.direction = (direction_t) data;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
radio_button_edge_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
{
|
||||
config.edge = (edge_t) data;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
adjustment_callback (GtkAdjustment *adjustment,
|
||||
gpointer data)
|
||||
{
|
||||
GtkWidget *entry;
|
||||
gchar buffer[50];
|
||||
|
||||
if (*(gint *)data != adjustment->value)
|
||||
{
|
||||
*(gint *) data = adjustment->value;
|
||||
entry = gtk_object_get_user_data (GTK_OBJECT (adjustment));
|
||||
g_snprintf (buffer, sizeof (buffer), "%d", *(gint *) data);
|
||||
gtk_signal_handler_block_by_data (GTK_OBJECT (entry), data);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), buffer);
|
||||
gtk_signal_handler_unblock_by_data (GTK_OBJECT (entry), data);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_box (void)
|
||||
{
|
||||
GtkWidget *main_vbox;
|
||||
GtkWidget *vbox;
|
||||
GtkWidget *table;
|
||||
GtkObject *adjustment;
|
||||
GtkWidget *scale;
|
||||
GtkWidget *rbutton;
|
||||
GtkObject *adj;
|
||||
GtkWidget *frame;
|
||||
GtkWidget *dlg;
|
||||
GtkWidget *label;
|
||||
GtkWidget *entry;
|
||||
GSList *list;
|
||||
gchar *text_label;
|
||||
gchar buffer[12];
|
||||
gchar **argv;
|
||||
gint argc;
|
||||
|
||||
|
@ -839,7 +760,7 @@ dialog_box (void)
|
|||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
|
||||
gtk_box_pack_start (GTK_BOX(main_vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
table = gtk_table_new (3, 2, FALSE);
|
||||
table = gtk_table_new (2, 3, FALSE);
|
||||
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
|
||||
gtk_table_set_row_spacings (GTK_TABLE (table), 2);
|
||||
gtk_container_set_border_width (GTK_CONTAINER(table), 4);
|
||||
|
@ -849,71 +770,27 @@ dialog_box (void)
|
|||
slider and entry for threshold
|
||||
***************************************************/
|
||||
|
||||
label = gtk_label_new ("Threshold:");
|
||||
gtk_misc_set_alignment (GTK_MISC(label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
adjustment = gtk_adjustment_new (config.threshold, MIN_THRESHOLD,
|
||||
MAX_THRESHOLD, 1.0, 1.0, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
(GtkSignalFunc) adjustment_callback,
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
|
||||
"Threshold:", SCALE_WIDTH, 0,
|
||||
config.threshold,
|
||||
MIN_THRESHOLD, MAX_THRESHOLD, 1.0, 10, 0,
|
||||
THRESHOLD_TEXT, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (gimp_int_adjustment_update),
|
||||
&config.threshold);
|
||||
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
|
||||
gtk_widget_set_usize (scale, SCALE_WIDTH, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), scale, 1, 2, 0, 1, GTK_FILL, 0, 0, 0);
|
||||
gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
|
||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_CONTINUOUS);
|
||||
gtk_widget_show (scale);
|
||||
gimp_help_set_help_data (scale, THRESHOLD_TEXT, NULL);
|
||||
|
||||
entry = gtk_entry_new ();
|
||||
gtk_object_set_user_data (GTK_OBJECT (entry), adjustment);
|
||||
gtk_object_set_user_data (GTK_OBJECT (adjustment), entry);
|
||||
gtk_widget_set_usize (entry, ENTRY_WIDTH, 0);
|
||||
g_snprintf (buffer, sizeof (buffer), "%i", config.threshold);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), buffer);
|
||||
gtk_signal_connect(GTK_OBJECT (entry), "changed",
|
||||
GTK_SIGNAL_FUNC (entry_callback),
|
||||
(gpointer) &config.threshold);
|
||||
gtk_table_attach (GTK_TABLE (table), entry, 2, 3, 0, 1, GTK_FILL, 0, 0, 0);
|
||||
gtk_widget_show (entry);
|
||||
gimp_help_set_help_data (entry, THRESHOLD_TEXT, NULL);
|
||||
|
||||
/*****************************************************
|
||||
slider and entry for strength of wind
|
||||
****************************************************/
|
||||
|
||||
label = gtk_label_new ("Strength:");
|
||||
gtk_misc_set_alignment (GTK_MISC(label), 1.0, 0.5);
|
||||
gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0);
|
||||
gtk_widget_show (label);
|
||||
|
||||
adjustment = gtk_adjustment_new (config.strength, MIN_STRENGTH,
|
||||
MAX_STRENGTH, 1.0, 1.0, 0);
|
||||
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
|
||||
(GtkSignalFunc) adjustment_callback,
|
||||
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
|
||||
"Strength:", SCALE_WIDTH, 0,
|
||||
config.strength,
|
||||
MIN_STRENGTH, MAX_STRENGTH, 1.0, 10.0, 0,
|
||||
STRENGTH_TEXT, NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (adj), "value_changed",
|
||||
GTK_SIGNAL_FUNC (gimp_int_adjustment_update),
|
||||
&config.strength);
|
||||
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
|
||||
gtk_widget_set_usize (scale, SCALE_WIDTH, 0);
|
||||
gtk_table_attach (GTK_TABLE (table), scale, 1, 2, 1, 2, GTK_FILL, 0, 0, 0);
|
||||
gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
|
||||
gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_CONTINUOUS);
|
||||
gtk_widget_show (scale);
|
||||
gimp_help_set_help_data (scale, STRENGTH_TEXT, NULL);
|
||||
|
||||
entry = gtk_entry_new ();
|
||||
gtk_object_set_user_data (GTK_OBJECT (entry), adjustment);
|
||||
gtk_object_set_user_data (GTK_OBJECT (adjustment), entry);
|
||||
gtk_widget_set_usize (entry, ENTRY_WIDTH, 0);
|
||||
g_snprintf (buffer, sizeof (buffer), "%i", config.strength);
|
||||
gtk_entry_set_text (GTK_ENTRY (entry), buffer);
|
||||
gtk_signal_connect (GTK_OBJECT (entry), "changed",
|
||||
GTK_SIGNAL_FUNC (entry_callback),
|
||||
(gpointer) &config.strength);
|
||||
gtk_table_attach (GTK_TABLE (table), entry, 2, 3, 1, 2, GTK_FILL, 0, 0, 0);
|
||||
gtk_widget_show (entry);
|
||||
gimp_help_set_help_data (entry, STRENGTH_TEXT, NULL);
|
||||
|
||||
gtk_widget_show (table);
|
||||
gtk_widget_show (frame);
|
||||
|
@ -930,124 +807,52 @@ dialog_box (void)
|
|||
radio buttons for choosing wind rendering algorithm
|
||||
******************************************************/
|
||||
|
||||
frame = gtk_frame_new ("Style");
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
|
||||
gtk_table_attach (GTK_TABLE(table), frame, 0, 1, 0, 1,
|
||||
frame = gimp_radio_group_new2 (TRUE, "Style",
|
||||
gimp_radio_button_update,
|
||||
&config.alg, (gpointer) config.alg,
|
||||
|
||||
"Wind", (gpointer) RENDER_WIND, NULL,
|
||||
"Blast", (gpointer) RENDER_BLAST, NULL,
|
||||
|
||||
NULL);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (table), frame, 0, 1, 0, 1,
|
||||
GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 0, 0);
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 2);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 4);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
|
||||
text_label = "Wind";
|
||||
rbutton = gtk_radio_button_new_with_label (NULL, text_label);
|
||||
list = gtk_radio_button_group (GTK_RADIO_BUTTON (rbutton));
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rbutton),
|
||||
config.alg == RENDER_WIND ? TRUE : FALSE);
|
||||
gtk_signal_connect (GTK_OBJECT (rbutton), "toggled",
|
||||
GTK_SIGNAL_FUNC (radio_button_alg_callback),
|
||||
(gpointer) RENDER_WIND);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), rbutton, FALSE, FALSE, 0);
|
||||
gtk_widget_show (rbutton);
|
||||
gimp_help_set_help_data (rbutton, WIND_TEXT, NULL);
|
||||
|
||||
text_label = "Blast";
|
||||
rbutton = gtk_radio_button_new_with_label (list, text_label);
|
||||
list = gtk_radio_button_group (GTK_RADIO_BUTTON (rbutton));
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON (rbutton),
|
||||
config.alg == RENDER_BLAST ? TRUE : FALSE);
|
||||
gtk_signal_connect (GTK_OBJECT (rbutton), "toggled",
|
||||
GTK_SIGNAL_FUNC (radio_button_alg_callback),
|
||||
(gpointer) RENDER_BLAST);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), rbutton, FALSE, FALSE, 0);
|
||||
gtk_widget_show (rbutton);
|
||||
gimp_help_set_help_data (rbutton, BLAST_TEXT, NULL);
|
||||
|
||||
gtk_widget_show (vbox);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
/******************************************************
|
||||
radio buttons for choosing LEFT or RIGHT
|
||||
**************************************************/
|
||||
frame = gtk_frame_new ("Direction");
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
|
||||
|
||||
frame = gimp_radio_group_new2 (TRUE, "Direction",
|
||||
gimp_radio_button_update,
|
||||
&config.direction, (gpointer) config.direction,
|
||||
|
||||
"Left", (gpointer) LEFT, NULL,
|
||||
"Right", (gpointer) RIGHT, NULL,
|
||||
|
||||
NULL);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (table), frame, 1, 2, 0, 1,
|
||||
GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 0, 0);
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 2);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 4);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
|
||||
rbutton = gtk_radio_button_new_with_label (NULL, "Left");
|
||||
list = gtk_radio_button_group (GTK_RADIO_BUTTON (rbutton));
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rbutton),
|
||||
config.direction == LEFT ? TRUE : FALSE);
|
||||
gtk_signal_connect (GTK_OBJECT (rbutton), "toggled",
|
||||
GTK_SIGNAL_FUNC (radio_button_direction_callback),
|
||||
(gpointer) LEFT);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), rbutton, FALSE, FALSE, 0);
|
||||
gtk_widget_show (rbutton);
|
||||
gimp_help_set_help_data (rbutton, LEFT_TEXT, NULL);
|
||||
|
||||
rbutton = gtk_radio_button_new_with_label (list, "Right");
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rbutton),
|
||||
config.direction == RIGHT ? TRUE : FALSE);
|
||||
gtk_signal_connect (GTK_OBJECT (rbutton), "toggled",
|
||||
GTK_SIGNAL_FUNC (radio_button_direction_callback),
|
||||
(gpointer) RIGHT);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), rbutton, FALSE, FALSE, 0);
|
||||
gtk_widget_show(rbutton);
|
||||
gimp_help_set_help_data (rbutton, RIGHT_TEXT, NULL);
|
||||
|
||||
gtk_widget_show (vbox);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
/*****************************************************
|
||||
radio buttons for choosing BOTH, LEADING, TRAILING
|
||||
***************************************************/
|
||||
|
||||
frame = gtk_frame_new ("Edge Affected");
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
|
||||
frame = gimp_radio_group_new2 (TRUE, "Edge Affected",
|
||||
gimp_radio_button_update,
|
||||
&config.edge, (gpointer) config.edge,
|
||||
|
||||
"Leading", (gpointer) LEADING, NULL,
|
||||
"Trailing", (gpointer) TRAILING, NULL,
|
||||
"Both", (gpointer) BOTH, NULL,
|
||||
|
||||
NULL);
|
||||
|
||||
gtk_table_attach (GTK_TABLE (table), frame, 2, 3, 0, 1,
|
||||
GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 0, 0);
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 2);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 4);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
|
||||
rbutton = gtk_radio_button_new_with_label (NULL, "Leading");
|
||||
list = gtk_radio_button_group (GTK_RADIO_BUTTON (rbutton));
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rbutton),
|
||||
config.edge == LEADING ? TRUE : FALSE);
|
||||
gtk_signal_connect (GTK_OBJECT (rbutton), "toggled",
|
||||
GTK_SIGNAL_FUNC (radio_button_edge_callback),
|
||||
(gpointer) LEADING);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), rbutton, FALSE, FALSE, 0);
|
||||
gtk_widget_show (rbutton);
|
||||
gimp_help_set_help_data (rbutton, LEADING_TEXT, NULL);
|
||||
|
||||
rbutton = gtk_radio_button_new_with_label (list, "Trailing");
|
||||
list = gtk_radio_button_group (GTK_RADIO_BUTTON (rbutton));
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rbutton),
|
||||
config.edge == TRAILING ? TRUE : FALSE);
|
||||
gtk_signal_connect (GTK_OBJECT (rbutton), "toggled",
|
||||
GTK_SIGNAL_FUNC (radio_button_edge_callback),
|
||||
(gpointer) TRAILING);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), rbutton, FALSE, FALSE, 0);
|
||||
gtk_widget_show (rbutton);
|
||||
gimp_help_set_help_data (rbutton, TRAILING_TEXT, NULL);
|
||||
|
||||
rbutton = gtk_radio_button_new_with_label (list, "Both");
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (rbutton),
|
||||
config.edge == BOTH ? TRUE : FALSE);
|
||||
gtk_signal_connect (GTK_OBJECT (rbutton), "toggled",
|
||||
GTK_SIGNAL_FUNC (radio_button_edge_callback),
|
||||
(gpointer) BOTH);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), rbutton, FALSE, FALSE, 0);
|
||||
gtk_widget_show (rbutton);
|
||||
gimp_help_set_help_data (rbutton, BOTH_TEXT, NULL);
|
||||
|
||||
gtk_widget_show (vbox);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
gtk_widget_show (table);
|
||||
|
@ -1055,6 +860,4 @@ dialog_box (void)
|
|||
|
||||
gtk_main ();
|
||||
gdk_flush ();
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue