two more plug-ins that use the gimp_color_button.

--Sven
This commit is contained in:
Sven Neumann 1999-11-15 19:46:06 +00:00
parent 148ef7b28e
commit 257ec7bb96
5 changed files with 121 additions and 402 deletions

View File

@ -1,3 +1,11 @@
Mon Nov 15 20:43:09 MET 1999 Sven Neumann <sven.gimp.org>
* plug-ins/common/plugin-defs.pl
* plug-ins/common/Makefile.am
* plug-ins/common/film.c
* plug-ins/common/mapcolor.c: more plug-ins that use the color_button.
Whoever feels bored, feel free to continue this mission ...
Mon Nov 15 19:31:13 MET 1999 Sven Neumann <sven.gimp.org>
* libgimp/gimpcolorbutton.c

View File

@ -444,6 +444,7 @@ film_SOURCES = \
film.c
film_LDADD = \
$(top_builddir)/libgimp/libgimpui.la \
$(top_builddir)/libgimp/libgimp.la \
$(GTK_LIBS) \
$(INTLLIBS)
@ -679,6 +680,7 @@ mapcolor_SOURCES = \
mapcolor.c
mapcolor_LDADD = \
$(top_builddir)/libgimp/libgimpui.la \
$(top_builddir)/libgimp/libgimp.la \
$(GTK_LIBS) \
$(INTLLIBS)

View File

@ -42,6 +42,7 @@ static char ident[] = "@(#) GIMP Film plug-in v1.04 1999-10-08";
#include "gtk/gtk.h"
#include "libgimp/gimp.h"
#include "libgimp/gimpui.h"
#include "libgimp/stdplugins-intl.h"
/* Maximum number of pictures per film */
@ -61,7 +62,7 @@ static void run (char *name,
/* to film_height (i.e. it should be a value from 0.0 to 1.0) */
typedef struct {
int film_height; /* height of the film */
unsigned char film_color[3]; /* color of film */
guchar film_color[3]; /* color of film */
double picture_height; /* height of picture (r) */
double picture_space; /* space between pictures (r) */
double hole_offset; /* distance from hole to edge of film (r) */
@ -70,7 +71,7 @@ typedef struct {
double hole_space; /* distance of holes (r) */
double number_height; /* height of picture numbering (r) */
int number_start; /* number for first picture */
unsigned char number_color[3]; /* color of number */
guchar number_color[3]; /* color of number */
char number_fontf[256]; /* font family to use for numbering */
int number_pos[2]; /* flags where to draw numbers (top/bottom) */
int keep_height; /* flag if to keep max. image height */
@ -79,14 +80,6 @@ typedef struct {
} FilmVals;
/* Handling for color selection dialogs */
typedef struct
{
GtkWidget *activate; /* The button that activates the color sel. dialog */
GtkWidget *colselect; /* The colour selection dialog itself */
GtkWidget *preview; /* The colour preview */
unsigned char color[3];/* The selected colour */
} CSEL;
/* Data to use for the dialog */
typedef struct
@ -96,7 +89,6 @@ typedef struct
GtkWidget *image_list_all;
GtkWidget *image_list_film;
int prv_width, prv_height;
CSEL csel[2];
int number_pos[2];
int keep_height;
gint run;
@ -147,20 +139,12 @@ static GtkWidget *add_image_list (int add_box_flag, int n, gint32 *image_id,
static gint film_dialog (gint32 image_ID);
static void film_close_callback (GtkWidget *widget,
gpointer data);
static void film_color_button_callback (GtkWidget *widget,
gpointer data);
static void film_ok_callback (GtkWidget *widget,
gpointer data);
static void numbering_toggle_update (GtkWidget *widget,
gpointer data);
static void keepheight_toggle_update (GtkWidget *widget,
gpointer data);
static void color_select_ok_callback (GtkWidget *widget,
gpointer data);
static void color_select_cancel_callback (GtkWidget *widget,
gpointer data);
static void color_preview_show (GtkWidget *widget,
unsigned char *color);
GPlugInInfo PLUG_IN_INFO =
@ -198,10 +182,6 @@ static FilmInterface filmint =
{ NULL }, /* left entries */
NULL, NULL, /* image list widgets */
50, 20, /* size of preview */
{
{ NULL, NULL, NULL, { 0 } }, /* Color selection dialogs */
{ NULL, NULL, NULL, { 0 } }
},
{ 0 },
FALSE /* run */
};
@ -1055,7 +1035,6 @@ add_color_button (int csel_index,
{
GtkWidget *label;
GtkWidget *button;
GtkWidget *preview;
label = gtk_label_new (_("Color:"));
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
@ -1063,22 +1042,22 @@ add_color_button (int csel_index,
GTK_FILL, GTK_FILL, 0, 0);
gtk_widget_show (label);
button = filmint.csel[csel_index].activate = gtk_button_new ();
memcpy (&(filmint.csel[csel_index].color[0]),
(csel_index == 0) ? filmvals.film_color : filmvals.number_color, 3);
preview = filmint.csel[csel_index].preview = gtk_preview_new(GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (preview), filmint.prv_width,
filmint.prv_height);
gtk_container_add (GTK_CONTAINER (button), preview);
gtk_widget_show (preview);
color_preview_show (preview, &(filmint.csel[csel_index].color[0]));
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) film_color_button_callback,
(gpointer)csel_index);
switch (csel_index)
{
case 0:
button = gimp_color_button_new (_("Film color Color Picker"),
filmint.prv_width, filmint.prv_height,
filmvals.film_color, 3);
break;
case 1:
button = gimp_color_button_new (_("Number color Color Picker"),
filmint.prv_width, filmint.prv_height,
filmvals.number_color, 3);
break;
default:
button = NULL;
break;
}
gtk_table_attach (GTK_TABLE (table), button, 1, 2, tab_index, tab_index+1,
0, 0, 0, 0);
gtk_widget_show (button);
@ -1210,6 +1189,7 @@ film_dialog (gint32 image_ID)
{
GtkWidget *dlg;
GtkWidget *button;
GtkWidget *hbbox;
GtkWidget *hbox, *h0box;
GtkWidget *table;
GtkWidget *frame;
@ -1248,22 +1228,28 @@ film_dialog (gint32 image_ID)
NULL);
/* Action area */
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->action_area), 2);
gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dlg)->action_area), FALSE);
hbbox = gtk_hbutton_box_new ();
gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbbox), 4);
gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dlg)->action_area), hbbox, FALSE, FALSE, 0);
gtk_widget_show (hbbox);
button = gtk_button_new_with_label (_("OK"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) film_ok_callback, dlg);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button,
TRUE, TRUE, 0);
(GtkSignalFunc) film_ok_callback,
dlg);
gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0);
gtk_widget_grab_default (button);
gtk_widget_show (button);
button = gtk_button_new_with_label (_("Cancel"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) gtk_widget_destroy,
GTK_OBJECT (dlg));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button,
TRUE, TRUE, 0);
(GtkSignalFunc) gtk_widget_destroy,
GTK_OBJECT (dlg));
gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
/* parameter settings */
@ -1405,51 +1391,12 @@ film_close_callback (GtkWidget *widget,
}
static void
film_color_button_callback (GtkWidget *widget,
gpointer data)
{int idx, j;
GtkColorSelectionDialog *csd;
GtkWidget *dialog;
gdouble colour[3];
idx = (int)data;
/* Is the colour selection dialog already running ? */
if (filmint.csel[idx].colselect != NULL) return;
for (j = 0; j < 3; j++)
colour[j] = filmint.csel[idx].color[j] / 255.0;
dialog = filmint.csel[idx].colselect = gtk_color_selection_dialog_new (
(idx == 0) ? _("Films color Color Picker")
: _("Numbers color Color Picker"));
csd = GTK_COLOR_SELECTION_DIALOG (dialog);
gtk_widget_destroy (csd->help_button);
gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
(GtkSignalFunc) color_select_cancel_callback, data);
gtk_signal_connect (GTK_OBJECT (csd->ok_button), "clicked",
(GtkSignalFunc) color_select_ok_callback, data);
gtk_signal_connect (GTK_OBJECT (csd->cancel_button), "clicked",
(GtkSignalFunc) color_select_cancel_callback, data);
gtk_color_selection_set_color (GTK_COLOR_SELECTION (csd->colorsel), colour);
gtk_window_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
gtk_widget_show (dialog);
}
static void
film_ok_callback (GtkWidget *widget,
gpointer data)
{int v, num_images;
char *s;
GtkWidget *dialog;
GtkWidget *label;
GList *tmp_list;
gint32 image_ID;
@ -1472,12 +1419,6 @@ film_ok_callback (GtkWidget *widget,
filmvals.number_fontf[sizeof (filmvals.number_fontf)-1] = '\0';
}
/* Read film color */
memcpy (filmvals.film_color, &(filmint.csel[0].color[0]), 3);
/* Read numbers color */
memcpy (filmvals.number_color, &(filmint.csel[1].color[0]), 3);
/* Read positioning of numbers */
filmvals.number_pos[0] = filmint.number_pos[0];
filmvals.number_pos[1] = filmint.number_pos[1];
@ -1503,15 +1444,6 @@ film_ok_callback (GtkWidget *widget,
filmvals.num_images = num_images;
}
for (v = 0; v < sizeof(filmint.csel)/sizeof (filmint.csel[0]); v++)
{
if ((dialog = filmint.csel[v].colselect) != NULL)
{
filmint.csel[v].colselect = NULL;
gtk_widget_destroy (GTK_WIDGET (dialog));
}
}
filmint.run = TRUE;
gtk_widget_destroy (GTK_WIDGET (data));
}
@ -1544,71 +1476,3 @@ keepheight_toggle_update (GtkWidget *widget,
if (filmint.left_entry[0] != NULL)
gtk_widget_set_sensitive (filmint.left_entry[0], *toggle_val == 0);
}
static void
color_select_ok_callback (GtkWidget *widget,
gpointer data)
{gdouble color[3];
int idx, j;
GtkWidget *dialog;
idx = (int)data;
if ((dialog = filmint.csel[idx].colselect) == NULL) return;
gtk_color_selection_get_color (
GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dialog)->colorsel),
color);
for (j = 0; j < 3; j++)
filmint.csel[idx].color[j] = (unsigned char)(color[j]*255.0);
color_preview_show (filmint.csel[idx].preview, &(filmint.csel[idx].color[0]));
filmint.csel[idx].colselect = NULL;
gtk_widget_destroy (dialog);
}
static void
color_select_cancel_callback (GtkWidget *widget,
gpointer data)
{int idx;
GtkWidget *dialog;
idx = (int)data;
if ((dialog = filmint.csel[idx].colselect) == NULL) return;
filmint.csel[idx].colselect = NULL;
gtk_widget_destroy (dialog);
}
static void
color_preview_show (GtkWidget *widget,
unsigned char *rgb)
{guchar *buf, *bp;
int j, width, height;
width = filmint.prv_width;
height = filmint.prv_height;
bp = buf = g_malloc (width*3);
if (buf == NULL) return;
for (j = 0; j < width; j++)
{
*(bp++) = rgb[0];
*(bp++) = rgb[1];
*(bp++) = rgb[2];
}
for (j = 0; j < height; j++)
gtk_preview_draw_row (GTK_PREVIEW (widget), buf, 0, j, width);
gtk_widget_draw (widget, NULL);
g_free (buf);
}

View File

@ -34,6 +34,8 @@ static char ident[] = "@(#) GIMP mapcolor plug-in v1.00 26-Oct-98";
#include <time.h>
#include "gtk/gtk.h"
#include "libgimp/gimp.h"
#include "libgimp/gimpui.h"
#include "libgimp/stdplugins-intl.h"
#ifdef HAVE_CONFIG_H
#include "config.h"
@ -46,39 +48,18 @@ typedef struct
{
guchar colors[4][3];
gint32 map_mode;
} PLVALS;
} PluginValues;
typedef struct
PluginValues plvals =
{
GtkWidget *activate; /* The button that activates the color sel. dialog */
GtkWidget *colselect; /* The colour selection dialog itself */
GtkWidget *preview; /* The colour preview */
unsigned char color[3];/* The selected colour */
} CSEL;
typedef struct
{
GtkWidget *dialog;
CSEL csel[4];
PLVALS *plvals;
gint run; /* run */
} RunInterface;
static RunInterface runint =
{
NULL, /* dialog */
{
{ NULL, NULL, NULL, { 0 } }, /* Color selection dialogs */
{ NULL, NULL, NULL, { 0 } },
{ NULL, NULL, NULL, { 0 } },
{ NULL, NULL, NULL, { 0 } }
},
NULL, /* plug-in values */
FALSE /* run */
{ { 0, 0, 0}, { 255, 255, 255 }, { 0, 0, 0 }, { 255, 255, 255 } },
0
};
gint run_flag = FALSE;
/* Declare some local functions.
*/
static void query (void);
@ -96,26 +77,30 @@ GPlugInInfo PLUG_IN_INFO =
run, /* run_proc */
};
static gint dialog (PLVALS *plvals);
static gint dialog (void);
static void mapcolor_close_callback (GtkWidget *widget,
gpointer data);
static void mapcolor_ok_callback (GtkWidget *widget,
gpointer data);
static void add_color_button (int csel_index, int left, int top,
GtkWidget *table, PLVALS *plvals);
static void color_select_ok_callback (GtkWidget *widget,
gpointer data);
static void color_select_cancel_callback (GtkWidget *widget,
gpointer data);
static void color_preview_show (GtkWidget *widget,
unsigned char *color);
static void color_mapping (GDrawable *drawable, PLVALS *plvals);
gpointer data);
static void mapcolor_ok_callback (GtkWidget *widget,
gpointer data);
static void add_color_button (int csel_index,
int left,
int top,
GtkWidget *table);
static void color_mapping (GDrawable *drawable);
/* The run mode */
static GRunModeType l_run_mode;
static char *csel_title[4] =
{
N_("First source color"),
N_("Second source color"),
N_("First destination color"),
N_("Second destination color")
};
MAIN ()
@ -189,11 +174,6 @@ run (char *name,
GStatusType status = STATUS_SUCCESS;
guchar *c = (guchar *)ident;
int j;
static PLVALS plvals =
{
{ { 0, 0, 0}, { 255, 255, 255 }, { 0, 0, 0 }, { 255, 255, 255 } },
0
};
l_run_mode = run_mode = param[0].data.d_int32;
@ -215,8 +195,7 @@ run (char *name,
drawable = gimp_drawable_get (param[2].data.d_drawable);
if (!gimp_drawable_is_rgb (drawable->id))
{
gimp_message ("color_adjust/color_map: cannot operate on grey/indexed\
images");
gimp_message (_("Color Mapping / Adjust FG/BG:\nCannot operate on grey/indexed images"));
status = STATUS_EXECUTION_ERROR;
break;
}
@ -240,9 +219,9 @@ run (char *name,
plvals.map_mode = 0;
if (run_mode != RUN_NONINTERACTIVE)
gimp_progress_init ("Adjust Foreground/Background");
gimp_progress_init ("Adjusting Foreground/Background");
color_mapping (drawable, &plvals);
color_mapping (drawable);
break;
}
@ -273,7 +252,7 @@ run (char *name,
c = &(plvals.colors[1][0]); /* Second source color */
gimp_palette_get_background (c, c+1, c+2);
if (!dialog (&plvals)) break;
if (!dialog ()) break;
}
else if (run_mode == RUN_WITH_LAST_VALS)
{
@ -288,7 +267,7 @@ run (char *name,
if (run_mode != RUN_NONINTERACTIVE)
gimp_progress_init ("Mapping colors");
color_mapping (drawable, &plvals);
color_mapping (drawable);
if (run_mode == RUN_INTERACTIVE)
gimp_set_data (name, &plvals, sizeof (plvals));
@ -308,12 +287,12 @@ run (char *name,
static gint
dialog (PLVALS *plvals)
dialog ()
{
GtkWidget *button;
GtkWidget *dlg;
GtkWidget *hbbox;
GtkWidget *hbox;
GtkWidget *button;
GtkWidget *table;
guchar *color_cube;
gchar **argv;
@ -336,7 +315,7 @@ dialog (PLVALS *plvals)
gtk_widget_set_default_visual(gtk_preview_get_visual());
gtk_widget_set_default_colormap(gtk_preview_get_cmap());
runint.dialog = dlg = gtk_dialog_new ();
dlg = gtk_dialog_new ();
gtk_window_set_title (GTK_WINDOW (dlg), "Map colors");
gtk_window_position (GTK_WINDOW (dlg), GTK_WIN_POS_MOUSE);
gtk_signal_connect (GTK_OBJECT (dlg), "destroy",
@ -344,27 +323,30 @@ dialog (PLVALS *plvals)
NULL);
/* Action area */
button = gtk_button_new_with_label ("OK");
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dlg)->action_area), 2);
gtk_box_set_homogeneous (GTK_BOX (GTK_DIALOG (dlg)->action_area), FALSE);
hbbox = gtk_hbutton_box_new ();
gtk_button_box_set_spacing (GTK_BUTTON_BOX (hbbox), 4);
gtk_box_pack_end (GTK_BOX (GTK_DIALOG (dlg)->action_area), hbbox, FALSE, FALSE, 0);
gtk_widget_show (hbbox);
button = gtk_button_new_with_label (_("OK"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) mapcolor_ok_callback, dlg);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button,
TRUE, TRUE, 0);
(GtkSignalFunc) mapcolor_ok_callback,
dlg);
gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0);
gtk_widget_grab_default (button);
gtk_widget_show (button);
button = gtk_button_new_with_label ("Cancel");
button = gtk_button_new_with_label (_("Cancel"));
GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) gtk_widget_destroy,
GTK_OBJECT (dlg));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->action_area), button,
TRUE, TRUE, 0);
(GtkSignalFunc) gtk_widget_destroy,
GTK_OBJECT (dlg));
gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0);
gtk_widget_show (button);
/* parameter settings */
runint.plvals = plvals;
hbox = gtk_hbox_new (FALSE, 0);
gtk_container_border_width (GTK_CONTAINER (hbox), 0);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), hbox, TRUE, TRUE, 0);
@ -377,125 +359,17 @@ dialog (PLVALS *plvals)
gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, TRUE, 0);
gtk_widget_show (table);
add_color_button (0, 0, 1, table, plvals);
add_color_button (1, 0, 2, table, plvals);
add_color_button (2, 2, 1, table, plvals);
add_color_button (3, 2, 2, table, plvals);
add_color_button (0, 0, 1, table);
add_color_button (1, 0, 2, table);
add_color_button (2, 2, 1, table);
add_color_button (3, 2, 2, table);
gtk_widget_show (dlg);
gtk_main ();
gdk_flush ();
return runint.run;
}
static void
color_preview_show (GtkWidget *widget,
unsigned char *rgb)
{guchar *buf, *bp;
int j, width, height;
width = PRV_WIDTH;
height = PRV_HEIGHT;
bp = buf = g_malloc (width*3);
if (buf == NULL) return;
for (j = 0; j < width; j++)
{
*(bp++) = rgb[0];
*(bp++) = rgb[1];
*(bp++) = rgb[2];
}
for (j = 0; j < height; j++)
gtk_preview_draw_row (GTK_PREVIEW (widget), buf, 0, j, width);
gtk_widget_draw (widget, NULL);
g_free (buf);
}
static void
color_select_ok_callback (GtkWidget *widget,
gpointer data)
{gdouble color[3];
int idx, j;
GtkWidget *dialog;
idx = (int)data;
if ((dialog = runint.csel[idx].colselect) == NULL) return;
gtk_color_selection_get_color (
GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dialog)->colorsel),
color);
for (j = 0; j < 3; j++)
runint.csel[idx].color[j] = (unsigned char)(color[j]*255.0);
color_preview_show (runint.csel[idx].preview, &(runint.csel[idx].color[0]));
runint.csel[idx].colselect = NULL;
gtk_widget_destroy (dialog);
}
static void
color_select_cancel_callback (GtkWidget *widget,
gpointer data)
{int idx;
GtkWidget *dialog;
idx = (int)data;
if ((dialog = runint.csel[idx].colselect) == NULL) return;
runint.csel[idx].colselect = NULL;
gtk_widget_destroy (dialog);
}
static void
mapcolor_color_button_callback (GtkWidget *widget,
gpointer data)
{int idx, j;
GtkColorSelectionDialog *csd;
GtkWidget *dialog;
gdouble colour[3];
static char *label[4] = { "First source color", "Second source color",
"First destination color", "Second destination color" };
idx = (int)data;
/* Is the colour selection dialog already running ? */
if (runint.csel[idx].colselect != NULL) return;
for (j = 0; j < 3; j++)
colour[j] = runint.csel[idx].color[j] / 255.0;
dialog = runint.csel[idx].colselect = gtk_color_selection_dialog_new (
label[idx]);
csd = GTK_COLOR_SELECTION_DIALOG (dialog);
gtk_widget_destroy (csd->help_button);
gtk_signal_connect (GTK_OBJECT (dialog), "destroy",
(GtkSignalFunc) color_select_cancel_callback, data);
gtk_signal_connect (GTK_OBJECT (csd->ok_button), "clicked",
(GtkSignalFunc) color_select_ok_callback, data);
gtk_signal_connect (GTK_OBJECT (csd->cancel_button), "clicked",
(GtkSignalFunc) color_select_cancel_callback, data);
gtk_color_selection_set_color (GTK_COLOR_SELECTION (csd->colorsel), colour);
gtk_window_position (GTK_WINDOW (dialog), GTK_WIN_POS_MOUSE);
gtk_widget_show (dialog);
return run_flag;
}
@ -503,13 +377,11 @@ static void
add_color_button (int csel_index,
int left,
int top,
GtkWidget *table,
PLVALS *plvals)
GtkWidget *table)
{
GtkWidget *label;
GtkWidget *button;
GtkWidget *preview;
GtkWidget *hbox;
hbox = gtk_hbox_new (FALSE, 0);
@ -528,20 +400,9 @@ add_color_button (int csel_index,
gtk_table_attach (GTK_TABLE (table), hbox, left+1, left+2, top, top+1,
GTK_FILL, GTK_FILL, 0, 0);
button = runint.csel[csel_index].activate = gtk_button_new ();
memcpy (&(runint.csel[csel_index].color[0]),
&(plvals->colors[csel_index][0]), 3);
preview = runint.csel[csel_index].preview = gtk_preview_new(GTK_PREVIEW_COLOR);
gtk_preview_size (GTK_PREVIEW (preview), PRV_WIDTH, PRV_HEIGHT);
gtk_container_add (GTK_CONTAINER (button), preview);
gtk_widget_show (preview);
color_preview_show (preview, &(runint.csel[csel_index].color[0]));
gtk_signal_connect (GTK_OBJECT (button), "clicked",
(GtkSignalFunc) mapcolor_color_button_callback,
(gpointer)csel_index);
button = gimp_color_button_new (gettext (csel_title[csel_index]),
PRV_WIDTH, PRV_HEIGHT,
plvals.colors[csel_index], 3);
gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0);
gtk_widget_show (button);
gtk_widget_show (hbox);
@ -550,7 +411,7 @@ add_color_button (int csel_index,
static void
mapcolor_close_callback (GtkWidget *widget,
gpointer data)
gpointer data)
{
gtk_main_quit ();
@ -559,29 +420,13 @@ mapcolor_close_callback (GtkWidget *widget,
static void
mapcolor_ok_callback (GtkWidget *widget,
gpointer data)
gpointer data)
{int j;
GtkWidget *dialog;
PLVALS *plvals = runint.plvals;
{
plvals.map_mode = 0; /* Currently always linear mapping */
for (j = 0; j < 4; j++)
memcpy (&(plvals->colors[j][0]), &(runint.csel[j].color[0]), 3);
/* Destroy color selection dialogs if still running */
for (j = 0; j < 4; j++)
{
dialog = runint.csel[j].colselect;
if (dialog != NULL)
{
runint.csel[j].colselect = NULL;
gtk_widget_destroy (GTK_WIDGET (dialog));
}
}
plvals->map_mode = 0; /* Currently always linear mapping */
runint.run = TRUE;
gtk_widget_destroy (GTK_WIDGET (data));
run_flag = TRUE;
gtk_widget_destroy (GTK_WIDGET (data));
}
@ -590,13 +435,14 @@ get_mapping (guchar *src_col1,
guchar *src_col2,
guchar *dst_col1,
guchar *dst_col2,
gint32 map_mode,
gint32 map_mode,
guchar *redmap,
guchar *greenmap,
guchar *bluemap)
{int rgb, i, j, a, as, b, bs;
guchar *colormap[3];
{
int rgb, i, j, a, as, b, bs;
guchar *colormap[3];
/* Currently we always do a linear mapping */
@ -625,8 +471,7 @@ get_mapping (guchar *src_col1,
static void
color_mapping (GDrawable *drawable,
PLVALS *plvals)
color_mapping (GDrawable *drawable)
{
int processed, total;
@ -636,10 +481,10 @@ color_mapping (GDrawable *drawable,
gpointer pr;
double progress;
unsigned char redmap[256], greenmap[256], bluemap[256];
unsigned char *src_col1 = plvals->colors[0];
unsigned char *src_col2 = plvals->colors[1];
unsigned char *dst_col1 = plvals->colors[2];
unsigned char *dst_col2 = plvals->colors[3];
unsigned char *src_col1 = plvals.colors[0];
unsigned char *src_col2 = plvals.colors[1];
unsigned char *dst_col1 = plvals.colors[2];
unsigned char *dst_col2 = plvals.colors[3];
if ( (src_col1[0] == src_col2[0])
|| (src_col1[1] == src_col2[1])
@ -657,7 +502,7 @@ color_mapping (GDrawable *drawable,
pr = gimp_pixel_rgns_register (2, &src_rgn, &dest_rgn);
get_mapping (src_col1, src_col2, dst_col1, dst_col2, plvals->map_mode,
get_mapping (src_col1, src_col2, dst_col1, dst_col2, plvals.map_mode,
redmap, greenmap, bluemap);
processed = 0;

View File

@ -33,7 +33,7 @@
'emboss' => { libdep => 'gtk', libsupp => 'megawidget' },
'engrave' => { libdep => 'gtk' },
'exchange' => { libdep => 'gtk' },
'film' => { libdep => 'gtk' },
'film' => { libdep => 'gtk', ui => 1 },
'flarefx' => { libdep => 'gtk' },
'fractaltrace' => { libdep => 'gtk' },
'gauss_iir' => { libdep => 'gtk' },
@ -61,7 +61,7 @@
'laplace' => { libdep => 'glib' },
'lic' => { libdep => 'gtk', ui => 1 },
'mail' => { libdep => 'gtk' },
'mapcolor' => { libdep => 'gtk' },
'mapcolor' => { libdep => 'gtk', ui => 1 },
'max_rgb' => { libdep => 'gtk' },
'mblur' => { libdep => 'gtk' },
'mpeg' => { libdep => 'gtk', optional => 1 },