mirror of https://github.com/GNOME/gimp.git
app/by_color_select.c app/channels_dialog.c app/color_area.c
2001-01-07 Michael Natterer <mitch@gimp.org> * app/by_color_select.c * app/channels_dialog.c * app/color_area.c * app/color_notebook.[ch] * app/color_panel.[ch] * app/color_picker.c * app/color_select.c * app/colormap_dialog.i.c * app/devices.c * app/disp_callbacks.[ch] * app/gimpdnd.[ch] * app/palette.c * app/qmask.c * libgimp/gimpcolorselector.h * modules/colorsel_gtk.c * modules/colorsel_triangle.c * modules/colorsel_water.c: made the color_notebook, the color_area and DND speak in terms of RGBA instead of GRB. The alpha value is not used yet, only the API changed. Everything should work exactly as before.
This commit is contained in:
parent
da07ba7cbc
commit
ab014f8b3a
25
ChangeLog
25
ChangeLog
|
@ -1,3 +1,28 @@
|
|||
2001-01-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/by_color_select.c
|
||||
* app/channels_dialog.c
|
||||
* app/color_area.c
|
||||
* app/color_notebook.[ch]
|
||||
* app/color_panel.[ch]
|
||||
* app/color_picker.c
|
||||
* app/color_select.c
|
||||
* app/colormap_dialog.i.c
|
||||
* app/devices.c
|
||||
* app/disp_callbacks.[ch]
|
||||
* app/gimpdnd.[ch]
|
||||
* app/palette.c
|
||||
* app/qmask.c
|
||||
|
||||
* libgimp/gimpcolorselector.h
|
||||
|
||||
* modules/colorsel_gtk.c
|
||||
* modules/colorsel_triangle.c
|
||||
* modules/colorsel_water.c: made the color_notebook, the color_area
|
||||
and DND speak in terms of RGBA instead of GRB. The alpha value is
|
||||
not used yet, only the API changed. Everything should work exactly
|
||||
as before.
|
||||
|
||||
2001-01-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* TODO.xml: add "Cleanup GIMP's color selectors".
|
||||
|
|
|
@ -255,9 +255,7 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
GtkWidget *label;
|
||||
GtkWidget *opacity_scale;
|
||||
GtkObject *opacity_scale_data;
|
||||
|
||||
gint i;
|
||||
guchar channel_color[3] = { 0, 0, 0 };
|
||||
guchar r, g, b, a;
|
||||
|
||||
/* channel = gimp_image_get_channel_by_name (gdisp->gimage, "Qmask"); */
|
||||
/* the new options structure */
|
||||
|
@ -265,10 +263,12 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
options->gimage = gdisp->gimage;
|
||||
options->opacity = (gdouble) options->gimage->qmask_opacity;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
channel_color[i] = options->gimage->qmask_color[i];
|
||||
r = options->gimage->qmask_color[0];
|
||||
g = options->gimage->qmask_color[1];
|
||||
b = options->gimage->qmask_color[2];
|
||||
a = 255;
|
||||
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (r, g, b, a, FALSE, 48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
|
|
@ -255,9 +255,7 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
GtkWidget *label;
|
||||
GtkWidget *opacity_scale;
|
||||
GtkObject *opacity_scale_data;
|
||||
|
||||
gint i;
|
||||
guchar channel_color[3] = { 0, 0, 0 };
|
||||
guchar r, g, b, a;
|
||||
|
||||
/* channel = gimp_image_get_channel_by_name (gdisp->gimage, "Qmask"); */
|
||||
/* the new options structure */
|
||||
|
@ -265,10 +263,12 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
options->gimage = gdisp->gimage;
|
||||
options->opacity = (gdouble) options->gimage->qmask_opacity;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
channel_color[i] = options->gimage->qmask_color[i];
|
||||
r = options->gimage->qmask_color[0];
|
||||
g = options->gimage->qmask_color[1];
|
||||
b = options->gimage->qmask_color[2];
|
||||
a = 255;
|
||||
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (r, g, b, a, FALSE, 48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
|
|
@ -102,6 +102,7 @@ static void by_color_select_color_drop (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
|
||||
/* by_color select action functions */
|
||||
|
@ -1232,6 +1233,7 @@ by_color_select_color_drop (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
|
||||
{
|
||||
|
|
|
@ -185,6 +185,7 @@ static void channel_widget_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void channel_widget_draw_drop_indicator (ChannelWidget *cw,
|
||||
GimpDropType drop_type);
|
||||
|
@ -1757,10 +1758,11 @@ channel_widget_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
ChannelWidget *channel_widget = (ChannelWidget *) data;
|
||||
Channel *channel = channel_widget->channel;
|
||||
Channel *channel = channel_widget->channel;
|
||||
|
||||
if (r != channel->col[0] ||
|
||||
g != channel->col[1] ||
|
||||
|
@ -1782,7 +1784,7 @@ channel_widget_draw_drop_indicator (ChannelWidget *channel_widget,
|
|||
GimpDropType drop_type)
|
||||
{
|
||||
static GdkGC *gc = NULL;
|
||||
gint y = 0;
|
||||
gint y = 0;
|
||||
|
||||
if (!gc)
|
||||
{
|
||||
|
@ -1868,14 +1870,14 @@ channel_widget_button_events (GtkWidget *widget,
|
|||
ChannelWidget *channel_widget;
|
||||
GtkWidget *event_widget;
|
||||
GdkEventButton *bevent;
|
||||
gint return_val;
|
||||
gint visible;
|
||||
gint width, height;
|
||||
gint return_val;
|
||||
gint visible;
|
||||
gint width, height;
|
||||
|
||||
static gboolean button_down = FALSE;
|
||||
static gboolean button_down = FALSE;
|
||||
static GtkWidget *click_widget = NULL;
|
||||
static gint old_state;
|
||||
static gint exclusive;
|
||||
static gint old_state;
|
||||
static gint exclusive;
|
||||
|
||||
channel_widget =
|
||||
(ChannelWidget *) gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
@ -1896,7 +1898,6 @@ channel_widget_button_events (GtkWidget *widget,
|
|||
break;
|
||||
}
|
||||
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case GDK_EXPOSE:
|
||||
|
@ -2009,7 +2010,7 @@ channel_widget_preview_events (GtkWidget *widget,
|
|||
ChannelWidget *channel_widget;
|
||||
GdkEventExpose *eevent;
|
||||
GdkEventButton *bevent;
|
||||
gboolean valid;
|
||||
gboolean valid;
|
||||
|
||||
valid = FALSE;
|
||||
|
||||
|
@ -2082,8 +2083,8 @@ static void
|
|||
channel_widget_preview_redraw (ChannelWidget *channel_widget)
|
||||
{
|
||||
TempBuf *preview_buf;
|
||||
gint width, height;
|
||||
gint channel;
|
||||
gint width, height;
|
||||
gint channel;
|
||||
|
||||
/* allocate the channel widget pixmap */
|
||||
if (! channel_widget->channel_pixmap)
|
||||
|
@ -2180,15 +2181,15 @@ channel_widget_preview_redraw (ChannelWidget *channel_widget)
|
|||
static void
|
||||
channel_widget_no_preview_redraw (ChannelWidget *channel_widget)
|
||||
{
|
||||
GdkPixmap *pixmap;
|
||||
GdkPixmap **pixmap_normal;
|
||||
GdkPixmap **pixmap_selected;
|
||||
GdkPixmap **pixmap_insensitive;
|
||||
GdkColor *color;
|
||||
GtkWidget *widget;
|
||||
GtkStateType state;
|
||||
gchar *bits;
|
||||
gint width, height;
|
||||
GdkPixmap *pixmap;
|
||||
GdkPixmap **pixmap_normal;
|
||||
GdkPixmap **pixmap_selected;
|
||||
GdkPixmap **pixmap_insensitive;
|
||||
GdkColor *color;
|
||||
GtkWidget *widget;
|
||||
GtkStateType state;
|
||||
gchar *bits;
|
||||
gint width, height;
|
||||
|
||||
state = channel_widget->list_item->state;
|
||||
|
||||
|
@ -2249,10 +2250,10 @@ channel_widget_no_preview_redraw (ChannelWidget *channel_widget)
|
|||
static void
|
||||
channel_widget_eye_redraw (ChannelWidget *channel_widget)
|
||||
{
|
||||
GdkPixmap *pixmap;
|
||||
GdkColor *color;
|
||||
GtkStateType state;
|
||||
gboolean visible;
|
||||
GdkPixmap *pixmap;
|
||||
GdkColor *color;
|
||||
GtkStateType state;
|
||||
gboolean visible;
|
||||
|
||||
state = channel_widget->list_item->state;
|
||||
|
||||
|
@ -2480,16 +2481,16 @@ struct _NewChannelOptions
|
|||
};
|
||||
|
||||
static gchar *channel_name = NULL;
|
||||
static guchar channel_color[3] = { 0, 0, 0 };
|
||||
static guchar channel_color[4] = { 0, 0, 0, 0 };
|
||||
|
||||
static void
|
||||
new_channel_query_ok_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
NewChannelOptions *options;
|
||||
Channel *new_channel;
|
||||
GimpImage *gimage;
|
||||
gint i;
|
||||
Channel *new_channel;
|
||||
GimpImage *gimage;
|
||||
gint i;
|
||||
|
||||
options = (NewChannelOptions *) data;
|
||||
|
||||
|
@ -2530,7 +2531,12 @@ channels_dialog_new_channel_query (GimpImage* gimage)
|
|||
options = g_new (NewChannelOptions, 1);
|
||||
options->gimage = gimage;
|
||||
options->opacity = 50.0;
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (channel_color[0],
|
||||
channel_color[1],
|
||||
channel_color[2],
|
||||
channel_color[3],
|
||||
FALSE,
|
||||
48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
@ -2633,9 +2639,9 @@ edit_channel_query_ok_callback (GtkWidget *widget,
|
|||
{
|
||||
EditChannelOptions *options;
|
||||
Channel *channel;
|
||||
gint opacity;
|
||||
gint update = FALSE;
|
||||
gint i;
|
||||
gint opacity;
|
||||
gint update = FALSE;
|
||||
gint i;
|
||||
|
||||
options = (EditChannelOptions *) data;
|
||||
channel = options->channel_widget->channel;
|
||||
|
@ -2654,6 +2660,7 @@ edit_channel_query_ok_callback (GtkWidget *widget,
|
|||
channel->opacity = opacity;
|
||||
update = TRUE;
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
if (options->color_panel->color[i] != channel->col[i])
|
||||
{
|
||||
|
@ -2683,17 +2690,23 @@ channels_dialog_edit_channel_query (ChannelWidget *channel_widget)
|
|||
GtkWidget *label;
|
||||
GtkWidget *opacity_scale;
|
||||
GtkObject *opacity_scale_data;
|
||||
gint i;
|
||||
gint i;
|
||||
|
||||
/* the new options structure */
|
||||
options = g_new (EditChannelOptions, 1);
|
||||
options->channel_widget = channel_widget;
|
||||
options->gimage = channel_widget->gimage;
|
||||
options->opacity = (gdouble) channel_widget->channel->opacity / 2.55;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
channel_color[i] = channel_widget->channel->col[i];
|
||||
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (channel_color[0],
|
||||
channel_color[1],
|
||||
channel_color[2],
|
||||
channel_color[3],
|
||||
FALSE,
|
||||
48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
|
|
@ -51,16 +51,19 @@ static void color_area_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void color_area_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void color_area_color_changed (GimpContext *context,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gpointer data);
|
||||
|
||||
/* Global variables */
|
||||
|
@ -277,6 +280,7 @@ static void
|
|||
color_area_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
void *client_data)
|
||||
{
|
||||
|
@ -330,8 +334,9 @@ color_area_edit (void)
|
|||
|
||||
if (! color_notebook)
|
||||
{
|
||||
color_notebook = color_notebook_new (r, g, b, color_area_select_callback,
|
||||
NULL, TRUE);
|
||||
color_notebook = color_notebook_new (r, g, b, 255,
|
||||
color_area_select_callback,
|
||||
NULL, TRUE, FALSE);
|
||||
color_notebook_active = TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -344,7 +349,7 @@ color_area_edit (void)
|
|||
else
|
||||
gdk_window_raise (color_notebook->shell->window);
|
||||
|
||||
color_notebook_set_color (color_notebook, r, g, b, TRUE);
|
||||
color_notebook_set_color (color_notebook, r, g, b, 255, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -534,8 +539,11 @@ color_area_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
*a = 255;
|
||||
|
||||
if (active_color == FOREGROUND)
|
||||
gimp_context_get_foreground (gimp_context_get_user (), r, g, b);
|
||||
else
|
||||
|
@ -547,12 +555,13 @@ color_area_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
if (color_notebook_active &&
|
||||
active_color == edit_color)
|
||||
{
|
||||
color_notebook_set_color (color_notebook, r, g, b, TRUE);
|
||||
color_notebook_set_color (color_notebook, r, g, b, 255, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -568,6 +577,7 @@ color_area_color_changed (GimpContext *context,
|
|||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gpointer data)
|
||||
{
|
||||
color_area_draw ();
|
||||
|
|
|
@ -46,7 +46,7 @@ struct _ColorSelectorInfo
|
|||
{
|
||||
char *name; /* label used in notebook tab */
|
||||
char *help_page;
|
||||
GimpColorSelectorMethods m;
|
||||
GimpColorSelectorMethods methods;
|
||||
int refs; /* number of instances around */
|
||||
gboolean active;
|
||||
void (*death_callback) (void *data);
|
||||
|
@ -71,7 +71,8 @@ static void color_notebook_cancel_callback (GtkWidget *widget,
|
|||
static void color_notebook_update_callback (gpointer data,
|
||||
gint red,
|
||||
gint green,
|
||||
gint blue);
|
||||
gint blue,
|
||||
gint alpha);
|
||||
static void color_notebook_page_switch (GtkWidget *widget,
|
||||
GtkNotebookPage *page,
|
||||
guint page_num);
|
||||
|
@ -88,6 +89,7 @@ enum
|
|||
RED,
|
||||
GREEN,
|
||||
BLUE,
|
||||
ALPHA,
|
||||
NUM_COLORS
|
||||
};
|
||||
|
||||
|
@ -96,13 +98,15 @@ ColorNotebook *
|
|||
color_notebook_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookCallback callback,
|
||||
gpointer client_data,
|
||||
gboolean wants_updates)
|
||||
gboolean wants_updates,
|
||||
gboolean show_alpha)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
GtkWidget *label;
|
||||
ColorSelectorInfo *info;
|
||||
ColorNotebook *cnp;
|
||||
GtkWidget *label;
|
||||
ColorSelectorInfo *info;
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
g_return_val_if_fail (selector_info != NULL, NULL);
|
||||
|
@ -118,6 +122,7 @@ color_notebook_new (gint red,
|
|||
cnp->values[RED] = cnp->orig_values[RED] = red & 0xff;
|
||||
cnp->values[GREEN] = cnp->orig_values[GREEN] = green & 0xff;
|
||||
cnp->values[BLUE] = cnp->orig_values[BLUE] = blue & 0xff;
|
||||
cnp->values[ALPHA] = cnp->orig_values[ALPHA] = alpha & 0xff;
|
||||
|
||||
cnp->shell =
|
||||
gimp_dialog_new (_("Color Selection"), "color_selection",
|
||||
|
@ -158,9 +163,10 @@ color_notebook_new (gint red,
|
|||
csel->color_notebook = cnp;
|
||||
csel->info = info;
|
||||
info->refs++;
|
||||
csel->frame = info->m.new (red, green, blue,
|
||||
color_notebook_update_callback, csel,
|
||||
&csel->selector_data);
|
||||
csel->frame = info->methods.new (red, green, blue, alpha,
|
||||
show_alpha,
|
||||
color_notebook_update_callback, csel,
|
||||
&csel->selector_data);
|
||||
gtk_object_set_data (GTK_OBJECT (csel->frame), "gimp_color_notebook",
|
||||
csel);
|
||||
|
||||
|
@ -201,7 +207,8 @@ color_notebook_new (gint red,
|
|||
{
|
||||
gtk_object_set_user_data (GTK_OBJECT (cnp->notebook), cnp);
|
||||
gtk_signal_connect (GTK_OBJECT (cnp->notebook), "switch_page",
|
||||
(GtkSignalFunc)color_notebook_page_switch, NULL);
|
||||
GTK_SIGNAL_FUNC (color_notebook_page_switch),
|
||||
NULL);
|
||||
}
|
||||
|
||||
return cnp;
|
||||
|
@ -236,7 +243,7 @@ color_notebook_free (ColorNotebook *cnp)
|
|||
{
|
||||
next = csel->next;
|
||||
|
||||
csel->info->m.free (csel->selector_data);
|
||||
csel->info->methods.free (csel->selector_data);
|
||||
|
||||
csel->info->refs--;
|
||||
if (csel->info->refs == 0 && !csel->info->active)
|
||||
|
@ -254,24 +261,30 @@ color_notebook_set_color (ColorNotebook *cnp,
|
|||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gboolean set_current)
|
||||
{
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
g_return_if_fail (cnp != NULL);
|
||||
|
||||
cnp->orig_values[RED] = red;
|
||||
cnp->orig_values[GREEN] = green;
|
||||
cnp->orig_values[BLUE] = blue;
|
||||
cnp->orig_values[ALPHA] = alpha;
|
||||
|
||||
if (set_current)
|
||||
{
|
||||
cnp->values[RED] = red;
|
||||
cnp->values[GREEN] = green;
|
||||
cnp->values[BLUE] = blue;
|
||||
cnp->values[ALPHA] = alpha;
|
||||
}
|
||||
|
||||
csel = cnp->cur_page;
|
||||
csel->info->m.setcolor (csel->selector_data, red, green, blue, set_current);
|
||||
csel->info->methods.setcolor (csel->selector_data,
|
||||
red, green, blue, alpha,
|
||||
set_current);
|
||||
}
|
||||
|
||||
/* Called by a colour selector on user selection of a colour */
|
||||
|
@ -279,10 +292,11 @@ static void
|
|||
color_notebook_update_callback (gpointer data,
|
||||
gint red,
|
||||
gint green,
|
||||
gint blue)
|
||||
gint blue,
|
||||
gint alpha)
|
||||
{
|
||||
ColorSelectorInstance *csel;
|
||||
ColorNotebook *cnp;
|
||||
ColorNotebook *cnp;
|
||||
|
||||
g_return_if_fail (data != NULL);
|
||||
|
||||
|
@ -292,12 +306,14 @@ color_notebook_update_callback (gpointer data,
|
|||
cnp->values[RED] = red;
|
||||
cnp->values[GREEN] = green;
|
||||
cnp->values[BLUE] = blue;
|
||||
cnp->values[ALPHA] = alpha;
|
||||
|
||||
if (cnp->wants_updates && cnp->callback)
|
||||
{
|
||||
(* cnp->callback) (cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
COLOR_NOTEBOOK_UPDATE,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -315,6 +331,7 @@ color_notebook_ok_callback (GtkWidget *widget,
|
|||
(* cnp->callback) (cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
COLOR_NOTEBOOK_OK,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -331,6 +348,7 @@ color_notebook_cancel_callback (GtkWidget *widget,
|
|||
(* cnp->callback) (cnp->orig_values[RED],
|
||||
cnp->orig_values[GREEN],
|
||||
cnp->orig_values[BLUE],
|
||||
cnp->orig_values[ALPHA],
|
||||
COLOR_NOTEBOOK_CANCEL,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -340,7 +358,7 @@ color_notebook_page_switch (GtkWidget *widget,
|
|||
GtkNotebookPage *page,
|
||||
guint page_num)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
ColorNotebook *cnp;
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
cnp = gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
@ -349,18 +367,19 @@ color_notebook_page_switch (GtkWidget *widget,
|
|||
g_return_if_fail (cnp != NULL && csel != NULL);
|
||||
|
||||
cnp->cur_page = csel;
|
||||
csel->info->m.setcolor (csel->selector_data,
|
||||
cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
TRUE);
|
||||
csel->info->methods.setcolor (csel->selector_data,
|
||||
cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
color_notebook_help_func (const gchar *data)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
gchar *help_path;
|
||||
gchar *help_path;
|
||||
|
||||
cnp = (ColorNotebook *) data;
|
||||
|
||||
|
@ -393,13 +412,14 @@ gimp_color_selector_register (const gchar *name,
|
|||
|
||||
info = g_new (ColorSelectorInfo, 1);
|
||||
|
||||
info->name = g_strdup (name);
|
||||
info->name = g_strdup (name);
|
||||
info->help_page = g_strdup (help_page);
|
||||
info->m = *methods;
|
||||
info->refs = 0;
|
||||
info->active = TRUE;
|
||||
info->methods = *methods;
|
||||
info->refs = 0;
|
||||
info->active = TRUE;
|
||||
|
||||
info->next = selector_info;
|
||||
|
||||
info->next = selector_info;
|
||||
selector_info = info;
|
||||
|
||||
return info;
|
||||
|
|
|
@ -30,6 +30,7 @@ typedef enum
|
|||
typedef void (* ColorNotebookCallback) (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookState state,
|
||||
gpointer data);
|
||||
|
||||
|
@ -42,8 +43,8 @@ struct _ColorNotebook
|
|||
GtkWidget *shell;
|
||||
GtkWidget *notebook;
|
||||
|
||||
gint values[3];
|
||||
gint orig_values[3];
|
||||
gint values[4];
|
||||
gint orig_values[4];
|
||||
|
||||
ColorNotebookCallback callback;
|
||||
gpointer client_data;
|
||||
|
@ -57,9 +58,11 @@ struct _ColorNotebook
|
|||
ColorNotebook * color_notebook_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookCallback callback,
|
||||
gpointer data,
|
||||
gboolean wants_update);
|
||||
gboolean wants_update,
|
||||
gboolean show_aplha);
|
||||
|
||||
void color_notebook_show (ColorNotebook *cnb);
|
||||
void color_notebook_hide (ColorNotebook *cnb);
|
||||
|
@ -69,6 +72,7 @@ void color_notebook_set_color (ColorNotebook *cnb,
|
|||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gboolean set_current);
|
||||
|
||||
#endif /* __COLOR_NOTEBOOK_H__ */
|
||||
|
|
|
@ -40,6 +40,7 @@ struct _ColorPanelPrivate
|
|||
GtkWidget *drawing_area;
|
||||
GdkGC *gc;
|
||||
|
||||
gboolean show_alpha;
|
||||
gboolean button_down;
|
||||
|
||||
ColorNotebook *color_notebook;
|
||||
|
@ -55,6 +56,7 @@ static gint color_panel_events (GtkWidget *widget,
|
|||
static void color_panel_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
gpointer data);
|
||||
|
||||
|
@ -62,11 +64,13 @@ static void color_panel_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void color_panel_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
|
||||
/* dnd stuff */
|
||||
|
@ -80,26 +84,31 @@ static guint n_color_panel_targets = (sizeof (color_panel_target_table) /
|
|||
/* public functions */
|
||||
|
||||
ColorPanel *
|
||||
color_panel_new (guchar *initial,
|
||||
gint width,
|
||||
gint height)
|
||||
color_panel_new (guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gboolean show_alpha,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
ColorPanel *color_panel;
|
||||
ColorPanel *color_panel;
|
||||
ColorPanelPrivate *private;
|
||||
gint i;
|
||||
|
||||
private = g_new0 (ColorPanelPrivate, 1);
|
||||
private->color_notebook = NULL;
|
||||
private->color_notebook_active = FALSE;
|
||||
private->gc = NULL;
|
||||
private->show_alpha = show_alpha;
|
||||
private->button_down = FALSE;
|
||||
|
||||
color_panel = g_new (ColorPanel, 1);
|
||||
color_panel->private_part = private;
|
||||
|
||||
/* set the initial color */
|
||||
for (i = 0; i < 3; i++)
|
||||
color_panel->color[i] = (initial) ? initial[i] : 0;
|
||||
color_panel->color[0] = r;
|
||||
color_panel->color[1] = g;
|
||||
color_panel->color[2] = b;
|
||||
color_panel->color[3] = a;
|
||||
|
||||
color_panel->color_panel_widget = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (color_panel->color_panel_widget),
|
||||
|
@ -111,7 +120,7 @@ color_panel_new (guchar *initial,
|
|||
width, height);
|
||||
gtk_widget_set_events (private->drawing_area, EVENT_MASK);
|
||||
gtk_signal_connect (GTK_OBJECT (private->drawing_area), "event",
|
||||
(GtkSignalFunc) color_panel_events,
|
||||
GTK_SIGNAL_FUNC (color_panel_events),
|
||||
color_panel);
|
||||
gtk_container_add (GTK_CONTAINER (color_panel->color_panel_widget),
|
||||
private->drawing_area);
|
||||
|
@ -144,17 +153,22 @@ color_panel_new (guchar *initial,
|
|||
|
||||
void
|
||||
color_panel_set_color (ColorPanel *color_panel,
|
||||
guchar *col)
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a)
|
||||
{
|
||||
ColorPanelPrivate *private = color_panel->private_part;
|
||||
|
||||
color_panel->color[0] = col[0];
|
||||
color_panel->color[1] = col[1];
|
||||
color_panel->color[2] = col[2];
|
||||
color_panel->color[0] = r;
|
||||
color_panel->color[1] = g;
|
||||
color_panel->color[2] = b;
|
||||
color_panel->color[3] = a;
|
||||
|
||||
if (private->color_notebook_active)
|
||||
color_notebook_set_color (private->color_notebook,
|
||||
col[0], col[1], col[2], TRUE);
|
||||
r, g, b, a,
|
||||
TRUE);
|
||||
|
||||
if (private->gc)
|
||||
color_panel_draw (color_panel);
|
||||
|
@ -186,9 +200,9 @@ color_panel_free (ColorPanel *color_panel)
|
|||
static void
|
||||
color_panel_draw (ColorPanel *color_panel)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
GtkWidget *widget;
|
||||
ColorPanelPrivate *private;
|
||||
GdkColor fg;
|
||||
GdkColor fg;
|
||||
|
||||
private = (ColorPanelPrivate *) color_panel->private_part;
|
||||
widget = private->drawing_area;
|
||||
|
@ -207,8 +221,8 @@ color_panel_events (GtkWidget *widget,
|
|||
GdkEvent *event,
|
||||
gpointer data)
|
||||
{
|
||||
GdkEventButton *bevent;
|
||||
ColorPanel *color_panel;
|
||||
GdkEventButton *bevent;
|
||||
ColorPanel *color_panel;
|
||||
ColorPanelPrivate *private;
|
||||
|
||||
color_panel = (ColorPanel *) data;
|
||||
|
@ -242,9 +256,11 @@ color_panel_events (GtkWidget *widget,
|
|||
color_notebook_new (color_panel->color[0],
|
||||
color_panel->color[1],
|
||||
color_panel->color[2],
|
||||
color_panel->color[3],
|
||||
color_panel_select_callback,
|
||||
color_panel,
|
||||
FALSE);
|
||||
FALSE,
|
||||
private->show_alpha);
|
||||
private->color_notebook_active = TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -257,7 +273,9 @@ color_panel_events (GtkWidget *widget,
|
|||
color_notebook_set_color (private->color_notebook,
|
||||
color_panel->color[0],
|
||||
color_panel->color[1],
|
||||
color_panel->color[2], 1);
|
||||
color_panel->color[2],
|
||||
color_panel->color[3],
|
||||
TRUE);
|
||||
}
|
||||
private->button_down = FALSE;
|
||||
}
|
||||
|
@ -278,10 +296,11 @@ static void
|
|||
color_panel_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel;
|
||||
ColorPanel *color_panel;
|
||||
ColorPanelPrivate *private;
|
||||
|
||||
color_panel = (ColorPanel *) data;
|
||||
|
@ -312,6 +331,7 @@ color_panel_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel;
|
||||
|
@ -321,6 +341,7 @@ color_panel_drag_color (GtkWidget *widget,
|
|||
*r = color_panel->color[0];
|
||||
*g = color_panel->color[1];
|
||||
*b = color_panel->color[2];
|
||||
*a = color_panel->color[3];
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -328,9 +349,10 @@ color_panel_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel;
|
||||
ColorPanel *color_panel;
|
||||
ColorPanelPrivate *private;
|
||||
|
||||
color_panel = (ColorPanel *) data;
|
||||
|
@ -339,9 +361,10 @@ color_panel_drop_color (GtkWidget *widget,
|
|||
color_panel->color[0] = r;
|
||||
color_panel->color[1] = g;
|
||||
color_panel->color[2] = b;
|
||||
color_panel->color[3] = a;
|
||||
|
||||
if (private->color_notebook_active)
|
||||
color_notebook_set_color (private->color_notebook, r, g, b, TRUE);
|
||||
color_notebook_set_color (private->color_notebook, r, g, b, a, TRUE);
|
||||
|
||||
color_panel_draw (color_panel);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#ifndef __COLOR_PANEL_H__
|
||||
#define __COLOR_PANEL_H__
|
||||
|
||||
|
||||
typedef struct _ColorPanel ColorPanel;
|
||||
|
||||
struct _ColorPanel
|
||||
|
@ -27,18 +28,26 @@ struct _ColorPanel
|
|||
GtkWidget *color_panel_widget;
|
||||
|
||||
/* The actual color */
|
||||
guchar color [3];
|
||||
guchar color [4];
|
||||
|
||||
/* Don't touch this :) */
|
||||
void *private_part;
|
||||
gpointer private_part;
|
||||
};
|
||||
|
||||
ColorPanel * color_panel_new (guchar *initial,
|
||||
|
||||
ColorPanel * color_panel_new (guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gboolean show_alpha,
|
||||
gint width,
|
||||
gint height);
|
||||
|
||||
void color_panel_set_color (ColorPanel *color_panel,
|
||||
guchar *col);
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a);
|
||||
|
||||
|
||||
#endif /* __COLOR_PANEL_H__ */
|
||||
|
|
|
@ -304,7 +304,9 @@ color_picker_button_press (Tool *tool,
|
|||
|
||||
gtk_widget_reparent (color_picker_info->info_table, hbox);
|
||||
|
||||
color_panel = color_panel_new (NULL, 48, 64);
|
||||
color_panel = color_panel_new (0, 0, 0, 0,
|
||||
gimp_drawable_has_alpha (tool->drawable),
|
||||
48, 64);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), color_panel->color_panel_widget,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (color_panel->color_panel_widget);
|
||||
|
@ -523,7 +525,7 @@ pick_color_do (GimpImage *gimage,
|
|||
|
||||
has_alpha = GIMP_IMAGE_TYPE_HAS_ALPHA (sample_type);
|
||||
|
||||
if (!(color = (*get_color_func) (get_color_obj, x, y)))
|
||||
if (!(color = (* get_color_func) (get_color_obj, x, y)))
|
||||
return FALSE;
|
||||
|
||||
if (sample_average)
|
||||
|
@ -536,7 +538,7 @@ pick_color_do (GimpImage *gimage,
|
|||
|
||||
for (i = x - radius; i <= x + radius; i++)
|
||||
for (j = y - radius; j <= y + radius; j++)
|
||||
if ((tmp_color = (*get_color_func) (get_color_obj, i, j)))
|
||||
if ((tmp_color = (* get_color_func) (get_color_obj, i, j)))
|
||||
{
|
||||
count++;
|
||||
|
||||
|
@ -573,6 +575,7 @@ pick_color_do (GimpImage *gimage,
|
|||
final);
|
||||
|
||||
g_free (color);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -622,7 +625,7 @@ colorpicker_draw (Tool *tool)
|
|||
ty - radiusy,
|
||||
2 * radiusx + cx, 2 * radiusy + cy);
|
||||
|
||||
if(radiusx > 1 && radiusy > 1)
|
||||
if (radiusx > 1 && radiusy > 1)
|
||||
{
|
||||
gdk_draw_rectangle (cp_tool->core->win, cp_tool->core->gc, 0,
|
||||
tx - radiusx + 2,
|
||||
|
@ -650,7 +653,10 @@ color_picker_info_update (Tool *tool,
|
|||
}
|
||||
else
|
||||
{
|
||||
guchar col[3];
|
||||
guchar r = 0;
|
||||
guchar g = 0;
|
||||
guchar b = 0;
|
||||
guchar a = 0;
|
||||
|
||||
if (! GTK_WIDGET_IS_SENSITIVE (color_panel->color_panel_widget))
|
||||
gtk_widget_set_sensitive (color_panel->color_panel_widget, TRUE);
|
||||
|
@ -670,9 +676,12 @@ color_picker_info_update (Tool *tool,
|
|||
col_value [RED_PIX],
|
||||
col_value [GREEN_PIX],
|
||||
col_value [BLUE_PIX]);
|
||||
col[0] = col_value [RED_PIX];
|
||||
col[1] = col_value [GREEN_PIX];
|
||||
col[2] = col_value [BLUE_PIX];
|
||||
|
||||
r = col_value [RED_PIX];
|
||||
g = col_value [GREEN_PIX];
|
||||
b = col_value [BLUE_PIX];
|
||||
if (sample_type == RGBA_GIMAGE)
|
||||
a = col_value [ALPHA_PIX];
|
||||
break;
|
||||
|
||||
case INDEXED_GIMAGE: case INDEXEDA_GIMAGE:
|
||||
|
@ -688,9 +697,12 @@ color_picker_info_update (Tool *tool,
|
|||
col_value [RED_PIX],
|
||||
col_value [GREEN_PIX],
|
||||
col_value [BLUE_PIX]);
|
||||
col[0] = col_value [RED_PIX];
|
||||
col[1] = col_value [GREEN_PIX];
|
||||
col[2] = col_value [BLUE_PIX];
|
||||
|
||||
r = col_value [RED_PIX];
|
||||
g = col_value [GREEN_PIX];
|
||||
b = col_value [BLUE_PIX];
|
||||
if (sample_type == INDEXEDA_GIMAGE)
|
||||
a = col_value [ALPHA_PIX];
|
||||
break;
|
||||
|
||||
case GRAY_GIMAGE: case GRAYA_GIMAGE:
|
||||
|
@ -703,13 +715,16 @@ color_picker_info_update (Tool *tool,
|
|||
col_value [GRAY_PIX],
|
||||
col_value [GRAY_PIX],
|
||||
col_value [GRAY_PIX]);
|
||||
col[0] = col_value [GRAY_PIX];
|
||||
col[1] = col_value [GRAY_PIX];
|
||||
col[2] = col_value [GRAY_PIX];
|
||||
|
||||
r = col_value [GRAY_PIX];
|
||||
g = col_value [GRAY_PIX];
|
||||
b = col_value [GRAY_PIX];
|
||||
if (sample_type == GRAYA_GIMAGE)
|
||||
a = col_value [ALPHA_PIX];
|
||||
break;
|
||||
}
|
||||
|
||||
color_panel_set_color (color_panel, col);
|
||||
color_panel_set_color (color_panel, r, g, b, a);
|
||||
}
|
||||
|
||||
info_dialog_update (color_picker_info);
|
||||
|
|
1030
app/color_select.c
1030
app/color_select.c
File diff suppressed because it is too large
Load Diff
|
@ -49,7 +49,7 @@ static void ipal_update_image_list (GimpColormapDialog *ipal);
|
|||
static void ipal_add_callback (GtkWidget *, gpointer);
|
||||
static void ipal_edit_callback (GtkWidget *, gpointer);
|
||||
static void ipal_close_callback (GtkWidget *, gpointer);
|
||||
static void ipal_select_callback (gint, gint, gint, ColorNotebookState,
|
||||
static void ipal_select_callback (gint, gint, gint, gint, ColorNotebookState,
|
||||
gpointer);
|
||||
|
||||
/* event callback */
|
||||
|
@ -90,17 +90,19 @@ palette_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
GimpColormapDialog *ipal = (GimpColormapDialog *) data;
|
||||
guint col = ipal->dnd_col_index;
|
||||
GimpImage *gimage;
|
||||
guint col = ipal->dnd_col_index;
|
||||
GimpImage *gimage;
|
||||
|
||||
gimage = ipal->image;
|
||||
|
||||
*r = gimage->cmap[col * 3 + 0];
|
||||
*g = gimage->cmap[col * 3 + 1];
|
||||
*b = gimage->cmap[col * 3 + 2];
|
||||
*a = 255;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -108,6 +110,7 @@ palette_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
GimpColormapDialog *ipal = (GimpColormapDialog *) data;
|
||||
|
@ -772,13 +775,13 @@ ipal_edit_callback (GtkWidget *widget,
|
|||
if (! ipal->color_notebook)
|
||||
{
|
||||
ipal->color_notebook
|
||||
= color_notebook_new (r, g, b,
|
||||
ipal_select_callback, ipal, FALSE);
|
||||
= color_notebook_new (r, g, b, 255,
|
||||
ipal_select_callback, ipal, FALSE, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
color_notebook_show (ipal->color_notebook);
|
||||
color_notebook_set_color (ipal->color_notebook, r, g, b, 1);
|
||||
color_notebook_set_color (ipal->color_notebook, r, g, b, 255, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -797,10 +800,11 @@ static void
|
|||
ipal_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *gimage;
|
||||
GimpImage *gimage;
|
||||
GimpColormapDialog *ipal = data;
|
||||
|
||||
g_return_if_fail (ipal);
|
||||
|
|
|
@ -255,9 +255,7 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
GtkWidget *label;
|
||||
GtkWidget *opacity_scale;
|
||||
GtkObject *opacity_scale_data;
|
||||
|
||||
gint i;
|
||||
guchar channel_color[3] = { 0, 0, 0 };
|
||||
guchar r, g, b, a;
|
||||
|
||||
/* channel = gimp_image_get_channel_by_name (gdisp->gimage, "Qmask"); */
|
||||
/* the new options structure */
|
||||
|
@ -265,10 +263,12 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
options->gimage = gdisp->gimage;
|
||||
options->opacity = (gdouble) options->gimage->qmask_opacity;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
channel_color[i] = options->gimage->qmask_color[i];
|
||||
r = options->gimage->qmask_color[0];
|
||||
g = options->gimage->qmask_color[1];
|
||||
b = options->gimage->qmask_color[2];
|
||||
a = 255;
|
||||
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (r, g, b, a, FALSE, 48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
|
|
@ -255,9 +255,7 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
GtkWidget *label;
|
||||
GtkWidget *opacity_scale;
|
||||
GtkObject *opacity_scale_data;
|
||||
|
||||
gint i;
|
||||
guchar channel_color[3] = { 0, 0, 0 };
|
||||
guchar r, g, b, a;
|
||||
|
||||
/* channel = gimp_image_get_channel_by_name (gdisp->gimage, "Qmask"); */
|
||||
/* the new options structure */
|
||||
|
@ -265,10 +263,12 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
options->gimage = gdisp->gimage;
|
||||
options->opacity = (gdouble) options->gimage->qmask_opacity;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
channel_color[i] = options->gimage->qmask_color[i];
|
||||
r = options->gimage->qmask_color[0];
|
||||
g = options->gimage->qmask_color[1];
|
||||
b = options->gimage->qmask_color[2];
|
||||
a = 255;
|
||||
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (r, g, b, a, FALSE, 48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
|
|
@ -101,40 +101,49 @@ struct _DeviceInfoDialog
|
|||
GtkWidget **eventboxes;
|
||||
};
|
||||
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *w, guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *widget,
|
||||
guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
static void devices_write_rc (void);
|
||||
|
||||
static void device_status_destroy_callback (void);
|
||||
static void devices_close_callback (GtkWidget *, gpointer);
|
||||
static void devices_close_callback (GtkWidget *widget,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update_current (void);
|
||||
|
||||
static ToolType device_status_drag_tool (GtkWidget *,
|
||||
gpointer);
|
||||
static void device_status_drop_tool (GtkWidget *,
|
||||
ToolType,
|
||||
gpointer);
|
||||
static void device_status_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
static void device_status_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void device_status_drop_brush (GtkWidget *,
|
||||
GimpBrush *,
|
||||
gpointer);
|
||||
static void device_status_drop_pattern (GtkWidget *,
|
||||
GPattern *,
|
||||
gpointer);
|
||||
static void device_status_drop_gradient (GtkWidget *,
|
||||
gradient_t *,
|
||||
gpointer);
|
||||
static ToolType device_status_drag_tool (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void device_status_drop_tool (GtkWidget *widget,
|
||||
ToolType tool,
|
||||
gpointer data);
|
||||
static void device_status_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void device_status_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void device_status_drop_brush (GtkWidget *widget,
|
||||
GimpBrush *brush,
|
||||
gpointer data);
|
||||
static void device_status_drop_pattern (GtkWidget *widget,
|
||||
GPattern *pattern,
|
||||
gpointer data);
|
||||
static void device_status_drop_gradient (GtkWidget *widget,
|
||||
gradient_t *gradient,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_color_changed (GimpContext *context,
|
||||
gint r,
|
||||
|
@ -148,6 +157,7 @@ static void device_status_data_changed (GimpContext *context,
|
|||
static void device_status_context_connect (GimpContext *context,
|
||||
guint32 deviceid);
|
||||
|
||||
|
||||
/* global data */
|
||||
gint current_device = GDK_CORE_POINTER;
|
||||
|
||||
|
@ -173,6 +183,7 @@ static GtkTargetEntry color_area_target_table[] =
|
|||
static guint n_color_area_targets = (sizeof (color_area_target_table) /
|
||||
sizeof (color_area_target_table[0]));
|
||||
|
||||
|
||||
/* utility functions for the device lists */
|
||||
|
||||
static GdkDeviceInfo *
|
||||
|
@ -1129,6 +1140,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
@ -1137,6 +1149,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
|
||||
if (device_info)
|
||||
{
|
||||
*a = 255;
|
||||
gimp_context_get_foreground (device_info->context, r, g, b);
|
||||
}
|
||||
else
|
||||
|
@ -1150,6 +1163,7 @@ device_status_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
|
|
@ -46,7 +46,7 @@ struct _ColorSelectorInfo
|
|||
{
|
||||
char *name; /* label used in notebook tab */
|
||||
char *help_page;
|
||||
GimpColorSelectorMethods m;
|
||||
GimpColorSelectorMethods methods;
|
||||
int refs; /* number of instances around */
|
||||
gboolean active;
|
||||
void (*death_callback) (void *data);
|
||||
|
@ -71,7 +71,8 @@ static void color_notebook_cancel_callback (GtkWidget *widget,
|
|||
static void color_notebook_update_callback (gpointer data,
|
||||
gint red,
|
||||
gint green,
|
||||
gint blue);
|
||||
gint blue,
|
||||
gint alpha);
|
||||
static void color_notebook_page_switch (GtkWidget *widget,
|
||||
GtkNotebookPage *page,
|
||||
guint page_num);
|
||||
|
@ -88,6 +89,7 @@ enum
|
|||
RED,
|
||||
GREEN,
|
||||
BLUE,
|
||||
ALPHA,
|
||||
NUM_COLORS
|
||||
};
|
||||
|
||||
|
@ -96,13 +98,15 @@ ColorNotebook *
|
|||
color_notebook_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookCallback callback,
|
||||
gpointer client_data,
|
||||
gboolean wants_updates)
|
||||
gboolean wants_updates,
|
||||
gboolean show_alpha)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
GtkWidget *label;
|
||||
ColorSelectorInfo *info;
|
||||
ColorNotebook *cnp;
|
||||
GtkWidget *label;
|
||||
ColorSelectorInfo *info;
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
g_return_val_if_fail (selector_info != NULL, NULL);
|
||||
|
@ -118,6 +122,7 @@ color_notebook_new (gint red,
|
|||
cnp->values[RED] = cnp->orig_values[RED] = red & 0xff;
|
||||
cnp->values[GREEN] = cnp->orig_values[GREEN] = green & 0xff;
|
||||
cnp->values[BLUE] = cnp->orig_values[BLUE] = blue & 0xff;
|
||||
cnp->values[ALPHA] = cnp->orig_values[ALPHA] = alpha & 0xff;
|
||||
|
||||
cnp->shell =
|
||||
gimp_dialog_new (_("Color Selection"), "color_selection",
|
||||
|
@ -158,9 +163,10 @@ color_notebook_new (gint red,
|
|||
csel->color_notebook = cnp;
|
||||
csel->info = info;
|
||||
info->refs++;
|
||||
csel->frame = info->m.new (red, green, blue,
|
||||
color_notebook_update_callback, csel,
|
||||
&csel->selector_data);
|
||||
csel->frame = info->methods.new (red, green, blue, alpha,
|
||||
show_alpha,
|
||||
color_notebook_update_callback, csel,
|
||||
&csel->selector_data);
|
||||
gtk_object_set_data (GTK_OBJECT (csel->frame), "gimp_color_notebook",
|
||||
csel);
|
||||
|
||||
|
@ -201,7 +207,8 @@ color_notebook_new (gint red,
|
|||
{
|
||||
gtk_object_set_user_data (GTK_OBJECT (cnp->notebook), cnp);
|
||||
gtk_signal_connect (GTK_OBJECT (cnp->notebook), "switch_page",
|
||||
(GtkSignalFunc)color_notebook_page_switch, NULL);
|
||||
GTK_SIGNAL_FUNC (color_notebook_page_switch),
|
||||
NULL);
|
||||
}
|
||||
|
||||
return cnp;
|
||||
|
@ -236,7 +243,7 @@ color_notebook_free (ColorNotebook *cnp)
|
|||
{
|
||||
next = csel->next;
|
||||
|
||||
csel->info->m.free (csel->selector_data);
|
||||
csel->info->methods.free (csel->selector_data);
|
||||
|
||||
csel->info->refs--;
|
||||
if (csel->info->refs == 0 && !csel->info->active)
|
||||
|
@ -254,24 +261,30 @@ color_notebook_set_color (ColorNotebook *cnp,
|
|||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gboolean set_current)
|
||||
{
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
g_return_if_fail (cnp != NULL);
|
||||
|
||||
cnp->orig_values[RED] = red;
|
||||
cnp->orig_values[GREEN] = green;
|
||||
cnp->orig_values[BLUE] = blue;
|
||||
cnp->orig_values[ALPHA] = alpha;
|
||||
|
||||
if (set_current)
|
||||
{
|
||||
cnp->values[RED] = red;
|
||||
cnp->values[GREEN] = green;
|
||||
cnp->values[BLUE] = blue;
|
||||
cnp->values[ALPHA] = alpha;
|
||||
}
|
||||
|
||||
csel = cnp->cur_page;
|
||||
csel->info->m.setcolor (csel->selector_data, red, green, blue, set_current);
|
||||
csel->info->methods.setcolor (csel->selector_data,
|
||||
red, green, blue, alpha,
|
||||
set_current);
|
||||
}
|
||||
|
||||
/* Called by a colour selector on user selection of a colour */
|
||||
|
@ -279,10 +292,11 @@ static void
|
|||
color_notebook_update_callback (gpointer data,
|
||||
gint red,
|
||||
gint green,
|
||||
gint blue)
|
||||
gint blue,
|
||||
gint alpha)
|
||||
{
|
||||
ColorSelectorInstance *csel;
|
||||
ColorNotebook *cnp;
|
||||
ColorNotebook *cnp;
|
||||
|
||||
g_return_if_fail (data != NULL);
|
||||
|
||||
|
@ -292,12 +306,14 @@ color_notebook_update_callback (gpointer data,
|
|||
cnp->values[RED] = red;
|
||||
cnp->values[GREEN] = green;
|
||||
cnp->values[BLUE] = blue;
|
||||
cnp->values[ALPHA] = alpha;
|
||||
|
||||
if (cnp->wants_updates && cnp->callback)
|
||||
{
|
||||
(* cnp->callback) (cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
COLOR_NOTEBOOK_UPDATE,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -315,6 +331,7 @@ color_notebook_ok_callback (GtkWidget *widget,
|
|||
(* cnp->callback) (cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
COLOR_NOTEBOOK_OK,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -331,6 +348,7 @@ color_notebook_cancel_callback (GtkWidget *widget,
|
|||
(* cnp->callback) (cnp->orig_values[RED],
|
||||
cnp->orig_values[GREEN],
|
||||
cnp->orig_values[BLUE],
|
||||
cnp->orig_values[ALPHA],
|
||||
COLOR_NOTEBOOK_CANCEL,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -340,7 +358,7 @@ color_notebook_page_switch (GtkWidget *widget,
|
|||
GtkNotebookPage *page,
|
||||
guint page_num)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
ColorNotebook *cnp;
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
cnp = gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
@ -349,18 +367,19 @@ color_notebook_page_switch (GtkWidget *widget,
|
|||
g_return_if_fail (cnp != NULL && csel != NULL);
|
||||
|
||||
cnp->cur_page = csel;
|
||||
csel->info->m.setcolor (csel->selector_data,
|
||||
cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
TRUE);
|
||||
csel->info->methods.setcolor (csel->selector_data,
|
||||
cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
color_notebook_help_func (const gchar *data)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
gchar *help_path;
|
||||
gchar *help_path;
|
||||
|
||||
cnp = (ColorNotebook *) data;
|
||||
|
||||
|
@ -393,13 +412,14 @@ gimp_color_selector_register (const gchar *name,
|
|||
|
||||
info = g_new (ColorSelectorInfo, 1);
|
||||
|
||||
info->name = g_strdup (name);
|
||||
info->name = g_strdup (name);
|
||||
info->help_page = g_strdup (help_page);
|
||||
info->m = *methods;
|
||||
info->refs = 0;
|
||||
info->active = TRUE;
|
||||
info->methods = *methods;
|
||||
info->refs = 0;
|
||||
info->active = TRUE;
|
||||
|
||||
info->next = selector_info;
|
||||
|
||||
info->next = selector_info;
|
||||
selector_info = info;
|
||||
|
||||
return info;
|
||||
|
|
|
@ -30,6 +30,7 @@ typedef enum
|
|||
typedef void (* ColorNotebookCallback) (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookState state,
|
||||
gpointer data);
|
||||
|
||||
|
@ -42,8 +43,8 @@ struct _ColorNotebook
|
|||
GtkWidget *shell;
|
||||
GtkWidget *notebook;
|
||||
|
||||
gint values[3];
|
||||
gint orig_values[3];
|
||||
gint values[4];
|
||||
gint orig_values[4];
|
||||
|
||||
ColorNotebookCallback callback;
|
||||
gpointer client_data;
|
||||
|
@ -57,9 +58,11 @@ struct _ColorNotebook
|
|||
ColorNotebook * color_notebook_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookCallback callback,
|
||||
gpointer data,
|
||||
gboolean wants_update);
|
||||
gboolean wants_update,
|
||||
gboolean show_aplha);
|
||||
|
||||
void color_notebook_show (ColorNotebook *cnb);
|
||||
void color_notebook_hide (ColorNotebook *cnb);
|
||||
|
@ -69,6 +72,7 @@ void color_notebook_set_color (ColorNotebook *cnb,
|
|||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gboolean set_current);
|
||||
|
||||
#endif /* __COLOR_NOTEBOOK_H__ */
|
||||
|
|
|
@ -898,9 +898,9 @@ gdisplay_bucket_fill (GtkWidget *widget,
|
|||
TileManager *buf_tiles;
|
||||
PixelRegion bufPR;
|
||||
GimpContext *context;
|
||||
gint x1, x2, y1, y2;
|
||||
gint bytes;
|
||||
gboolean has_alpha;
|
||||
gint x1, x2, y1, y2;
|
||||
gint bytes;
|
||||
gboolean has_alpha;
|
||||
|
||||
guchar color[3];
|
||||
TempBuf *pat_buf = NULL;
|
||||
|
@ -995,13 +995,15 @@ gdisplay_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
guchar color[3];
|
||||
guchar color[4];
|
||||
|
||||
color[0] = r;
|
||||
color[1] = g;
|
||||
color[2] = b;
|
||||
color[3] = a;
|
||||
|
||||
gdisplay_bucket_fill (widget, FG_BUCKET_FILL, color, NULL, data);
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ void gdisplay_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
void gdisplay_drop_pattern (GtkWidget *widget,
|
||||
GPattern *pattern,
|
||||
|
|
|
@ -898,9 +898,9 @@ gdisplay_bucket_fill (GtkWidget *widget,
|
|||
TileManager *buf_tiles;
|
||||
PixelRegion bufPR;
|
||||
GimpContext *context;
|
||||
gint x1, x2, y1, y2;
|
||||
gint bytes;
|
||||
gboolean has_alpha;
|
||||
gint x1, x2, y1, y2;
|
||||
gint bytes;
|
||||
gboolean has_alpha;
|
||||
|
||||
guchar color[3];
|
||||
TempBuf *pat_buf = NULL;
|
||||
|
@ -995,13 +995,15 @@ gdisplay_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
guchar color[3];
|
||||
guchar color[4];
|
||||
|
||||
color[0] = r;
|
||||
color[1] = g;
|
||||
color[2] = b;
|
||||
color[3] = a;
|
||||
|
||||
gdisplay_bucket_fill (widget, FG_BUCKET_FILL, color, NULL, data);
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ void gdisplay_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
void gdisplay_drop_pattern (GtkWidget *widget,
|
||||
GPattern *pattern,
|
||||
|
|
|
@ -898,9 +898,9 @@ gdisplay_bucket_fill (GtkWidget *widget,
|
|||
TileManager *buf_tiles;
|
||||
PixelRegion bufPR;
|
||||
GimpContext *context;
|
||||
gint x1, x2, y1, y2;
|
||||
gint bytes;
|
||||
gboolean has_alpha;
|
||||
gint x1, x2, y1, y2;
|
||||
gint bytes;
|
||||
gboolean has_alpha;
|
||||
|
||||
guchar color[3];
|
||||
TempBuf *pat_buf = NULL;
|
||||
|
@ -995,13 +995,15 @@ gdisplay_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
guchar color[3];
|
||||
guchar color[4];
|
||||
|
||||
color[0] = r;
|
||||
color[1] = g;
|
||||
color[2] = b;
|
||||
color[3] = a;
|
||||
|
||||
gdisplay_bucket_fill (widget, FG_BUCKET_FILL, color, NULL, data);
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ void gdisplay_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
void gdisplay_drop_pattern (GtkWidget *widget,
|
||||
GPattern *pattern,
|
||||
|
|
|
@ -255,9 +255,7 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
GtkWidget *label;
|
||||
GtkWidget *opacity_scale;
|
||||
GtkObject *opacity_scale_data;
|
||||
|
||||
gint i;
|
||||
guchar channel_color[3] = { 0, 0, 0 };
|
||||
guchar r, g, b, a;
|
||||
|
||||
/* channel = gimp_image_get_channel_by_name (gdisp->gimage, "Qmask"); */
|
||||
/* the new options structure */
|
||||
|
@ -265,10 +263,12 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
options->gimage = gdisp->gimage;
|
||||
options->opacity = (gdouble) options->gimage->qmask_opacity;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
channel_color[i] = options->gimage->qmask_color[i];
|
||||
r = options->gimage->qmask_color[0];
|
||||
g = options->gimage->qmask_color[1];
|
||||
b = options->gimage->qmask_color[2];
|
||||
a = 255;
|
||||
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (r, g, b, a, FALSE, 48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
|
|
@ -492,11 +492,11 @@ gimp_dnd_get_color_icon (GtkWidget *widget,
|
|||
gpointer get_color_data)
|
||||
{
|
||||
GtkWidget *preview;
|
||||
guchar r, g, b;
|
||||
guchar row[DRAG_PREVIEW_SIZE * 3];
|
||||
gint i;
|
||||
guchar r, g, b, a;
|
||||
guchar row[DRAG_PREVIEW_SIZE * 3];
|
||||
gint i;
|
||||
|
||||
(* (GimpDndDragColorFunc) get_color_func) (widget, &r, &g, &b,
|
||||
(* (GimpDndDragColorFunc) get_color_func) (widget, &r, &g, &b, &a,
|
||||
get_color_data);
|
||||
|
||||
for (i = 0; i < DRAG_PREVIEW_SIZE; i++)
|
||||
|
@ -527,9 +527,9 @@ gimp_dnd_get_color_data (GtkWidget *widget,
|
|||
gint *length)
|
||||
{
|
||||
guint16 *vals;
|
||||
guchar r, g, b;
|
||||
guchar r, g, b, a;
|
||||
|
||||
(* (GimpDndDragColorFunc) get_color_func) (widget, &r, &g, &b,
|
||||
(* (GimpDndDragColorFunc) get_color_func) (widget, &r, &g, &b, &a,
|
||||
get_color_data);
|
||||
|
||||
vals = g_new (guint16, 4);
|
||||
|
@ -537,7 +537,7 @@ gimp_dnd_get_color_data (GtkWidget *widget,
|
|||
vals[0] = r + (r << 8);
|
||||
vals[1] = g + (g << 8);
|
||||
vals[2] = b + (b << 8);
|
||||
vals[3] = 0xffff;
|
||||
vals[3] = a + (a << 8);
|
||||
|
||||
*format = 16;
|
||||
*length = 8;
|
||||
|
@ -554,7 +554,7 @@ gimp_dnd_set_color_data (GtkWidget *widget,
|
|||
gint length)
|
||||
{
|
||||
guint16 *color_vals;
|
||||
guchar r, g, b;
|
||||
guchar r, g, b, a;
|
||||
|
||||
if ((format != 16) || (length != 8))
|
||||
{
|
||||
|
@ -567,8 +567,9 @@ gimp_dnd_set_color_data (GtkWidget *widget,
|
|||
r = color_vals[0] >> 8;
|
||||
g = color_vals[1] >> 8;
|
||||
b = color_vals[2] >> 8;
|
||||
a = color_vals[3] >> 8;
|
||||
|
||||
(* (GimpDndDropColorFunc) set_color_func) (widget, r, g, b,
|
||||
(* (GimpDndDropColorFunc) set_color_func) (widget, r, g, b, a,
|
||||
set_color_data);
|
||||
}
|
||||
|
||||
|
@ -627,7 +628,7 @@ gimp_dnd_get_brush_data (GtkWidget *widget,
|
|||
gint *length)
|
||||
{
|
||||
GimpBrush *brush;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
brush = (* (GimpDndDragBrushFunc) get_brush_func) (widget, get_brush_data);
|
||||
|
||||
|
@ -654,7 +655,7 @@ gimp_dnd_set_brush_data (GtkWidget *widget,
|
|||
gint length)
|
||||
{
|
||||
GimpBrush *brush;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
if ((format != 8) || (length < 1))
|
||||
{
|
||||
|
@ -729,7 +730,7 @@ gimp_dnd_get_pattern_data (GtkWidget *widget,
|
|||
gint *length)
|
||||
{
|
||||
GPattern *pattern;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
pattern = (* (GimpDndDragPatternFunc) get_pattern_func) (widget,
|
||||
get_pattern_data);
|
||||
|
@ -754,7 +755,7 @@ gimp_dnd_set_pattern_data (GtkWidget *widget,
|
|||
gint length)
|
||||
{
|
||||
GPattern *pattern;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
if ((format != 8) || (length < 1))
|
||||
{
|
||||
|
@ -830,7 +831,7 @@ gimp_dnd_get_gradient_data (GtkWidget *widget,
|
|||
gint *length)
|
||||
{
|
||||
gradient_t *gradient;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
gradient =
|
||||
(* (GimpDndDragGradientFunc) get_gradient_func) (widget, get_gradient_data);
|
||||
|
@ -855,7 +856,7 @@ gimp_dnd_set_gradient_data (GtkWidget *widget,
|
|||
gint length)
|
||||
{
|
||||
gradient_t *gradient;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
if ((format != 8) || (length < 1))
|
||||
{
|
||||
|
|
|
@ -97,11 +97,13 @@ typedef void (* GimpDndDropColorFunc) (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
typedef void (* GimpDndDragColorFunc) (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
|
||||
void gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
|
|
|
@ -185,6 +185,7 @@ static void channel_widget_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void channel_widget_draw_drop_indicator (ChannelWidget *cw,
|
||||
GimpDropType drop_type);
|
||||
|
@ -1757,10 +1758,11 @@ channel_widget_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
ChannelWidget *channel_widget = (ChannelWidget *) data;
|
||||
Channel *channel = channel_widget->channel;
|
||||
Channel *channel = channel_widget->channel;
|
||||
|
||||
if (r != channel->col[0] ||
|
||||
g != channel->col[1] ||
|
||||
|
@ -1782,7 +1784,7 @@ channel_widget_draw_drop_indicator (ChannelWidget *channel_widget,
|
|||
GimpDropType drop_type)
|
||||
{
|
||||
static GdkGC *gc = NULL;
|
||||
gint y = 0;
|
||||
gint y = 0;
|
||||
|
||||
if (!gc)
|
||||
{
|
||||
|
@ -1868,14 +1870,14 @@ channel_widget_button_events (GtkWidget *widget,
|
|||
ChannelWidget *channel_widget;
|
||||
GtkWidget *event_widget;
|
||||
GdkEventButton *bevent;
|
||||
gint return_val;
|
||||
gint visible;
|
||||
gint width, height;
|
||||
gint return_val;
|
||||
gint visible;
|
||||
gint width, height;
|
||||
|
||||
static gboolean button_down = FALSE;
|
||||
static gboolean button_down = FALSE;
|
||||
static GtkWidget *click_widget = NULL;
|
||||
static gint old_state;
|
||||
static gint exclusive;
|
||||
static gint old_state;
|
||||
static gint exclusive;
|
||||
|
||||
channel_widget =
|
||||
(ChannelWidget *) gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
@ -1896,7 +1898,6 @@ channel_widget_button_events (GtkWidget *widget,
|
|||
break;
|
||||
}
|
||||
|
||||
|
||||
switch (event->type)
|
||||
{
|
||||
case GDK_EXPOSE:
|
||||
|
@ -2009,7 +2010,7 @@ channel_widget_preview_events (GtkWidget *widget,
|
|||
ChannelWidget *channel_widget;
|
||||
GdkEventExpose *eevent;
|
||||
GdkEventButton *bevent;
|
||||
gboolean valid;
|
||||
gboolean valid;
|
||||
|
||||
valid = FALSE;
|
||||
|
||||
|
@ -2082,8 +2083,8 @@ static void
|
|||
channel_widget_preview_redraw (ChannelWidget *channel_widget)
|
||||
{
|
||||
TempBuf *preview_buf;
|
||||
gint width, height;
|
||||
gint channel;
|
||||
gint width, height;
|
||||
gint channel;
|
||||
|
||||
/* allocate the channel widget pixmap */
|
||||
if (! channel_widget->channel_pixmap)
|
||||
|
@ -2180,15 +2181,15 @@ channel_widget_preview_redraw (ChannelWidget *channel_widget)
|
|||
static void
|
||||
channel_widget_no_preview_redraw (ChannelWidget *channel_widget)
|
||||
{
|
||||
GdkPixmap *pixmap;
|
||||
GdkPixmap **pixmap_normal;
|
||||
GdkPixmap **pixmap_selected;
|
||||
GdkPixmap **pixmap_insensitive;
|
||||
GdkColor *color;
|
||||
GtkWidget *widget;
|
||||
GtkStateType state;
|
||||
gchar *bits;
|
||||
gint width, height;
|
||||
GdkPixmap *pixmap;
|
||||
GdkPixmap **pixmap_normal;
|
||||
GdkPixmap **pixmap_selected;
|
||||
GdkPixmap **pixmap_insensitive;
|
||||
GdkColor *color;
|
||||
GtkWidget *widget;
|
||||
GtkStateType state;
|
||||
gchar *bits;
|
||||
gint width, height;
|
||||
|
||||
state = channel_widget->list_item->state;
|
||||
|
||||
|
@ -2249,10 +2250,10 @@ channel_widget_no_preview_redraw (ChannelWidget *channel_widget)
|
|||
static void
|
||||
channel_widget_eye_redraw (ChannelWidget *channel_widget)
|
||||
{
|
||||
GdkPixmap *pixmap;
|
||||
GdkColor *color;
|
||||
GtkStateType state;
|
||||
gboolean visible;
|
||||
GdkPixmap *pixmap;
|
||||
GdkColor *color;
|
||||
GtkStateType state;
|
||||
gboolean visible;
|
||||
|
||||
state = channel_widget->list_item->state;
|
||||
|
||||
|
@ -2480,16 +2481,16 @@ struct _NewChannelOptions
|
|||
};
|
||||
|
||||
static gchar *channel_name = NULL;
|
||||
static guchar channel_color[3] = { 0, 0, 0 };
|
||||
static guchar channel_color[4] = { 0, 0, 0, 0 };
|
||||
|
||||
static void
|
||||
new_channel_query_ok_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
NewChannelOptions *options;
|
||||
Channel *new_channel;
|
||||
GimpImage *gimage;
|
||||
gint i;
|
||||
Channel *new_channel;
|
||||
GimpImage *gimage;
|
||||
gint i;
|
||||
|
||||
options = (NewChannelOptions *) data;
|
||||
|
||||
|
@ -2530,7 +2531,12 @@ channels_dialog_new_channel_query (GimpImage* gimage)
|
|||
options = g_new (NewChannelOptions, 1);
|
||||
options->gimage = gimage;
|
||||
options->opacity = 50.0;
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (channel_color[0],
|
||||
channel_color[1],
|
||||
channel_color[2],
|
||||
channel_color[3],
|
||||
FALSE,
|
||||
48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
@ -2633,9 +2639,9 @@ edit_channel_query_ok_callback (GtkWidget *widget,
|
|||
{
|
||||
EditChannelOptions *options;
|
||||
Channel *channel;
|
||||
gint opacity;
|
||||
gint update = FALSE;
|
||||
gint i;
|
||||
gint opacity;
|
||||
gint update = FALSE;
|
||||
gint i;
|
||||
|
||||
options = (EditChannelOptions *) data;
|
||||
channel = options->channel_widget->channel;
|
||||
|
@ -2654,6 +2660,7 @@ edit_channel_query_ok_callback (GtkWidget *widget,
|
|||
channel->opacity = opacity;
|
||||
update = TRUE;
|
||||
}
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
if (options->color_panel->color[i] != channel->col[i])
|
||||
{
|
||||
|
@ -2683,17 +2690,23 @@ channels_dialog_edit_channel_query (ChannelWidget *channel_widget)
|
|||
GtkWidget *label;
|
||||
GtkWidget *opacity_scale;
|
||||
GtkObject *opacity_scale_data;
|
||||
gint i;
|
||||
gint i;
|
||||
|
||||
/* the new options structure */
|
||||
options = g_new (EditChannelOptions, 1);
|
||||
options->channel_widget = channel_widget;
|
||||
options->gimage = channel_widget->gimage;
|
||||
options->opacity = (gdouble) channel_widget->channel->opacity / 2.55;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
channel_color[i] = channel_widget->channel->col[i];
|
||||
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (channel_color[0],
|
||||
channel_color[1],
|
||||
channel_color[2],
|
||||
channel_color[3],
|
||||
FALSE,
|
||||
48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
|
|
@ -51,16 +51,19 @@ static void color_area_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void color_area_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void color_area_color_changed (GimpContext *context,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gpointer data);
|
||||
|
||||
/* Global variables */
|
||||
|
@ -277,6 +280,7 @@ static void
|
|||
color_area_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
void *client_data)
|
||||
{
|
||||
|
@ -330,8 +334,9 @@ color_area_edit (void)
|
|||
|
||||
if (! color_notebook)
|
||||
{
|
||||
color_notebook = color_notebook_new (r, g, b, color_area_select_callback,
|
||||
NULL, TRUE);
|
||||
color_notebook = color_notebook_new (r, g, b, 255,
|
||||
color_area_select_callback,
|
||||
NULL, TRUE, FALSE);
|
||||
color_notebook_active = TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -344,7 +349,7 @@ color_area_edit (void)
|
|||
else
|
||||
gdk_window_raise (color_notebook->shell->window);
|
||||
|
||||
color_notebook_set_color (color_notebook, r, g, b, TRUE);
|
||||
color_notebook_set_color (color_notebook, r, g, b, 255, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -534,8 +539,11 @@ color_area_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
*a = 255;
|
||||
|
||||
if (active_color == FOREGROUND)
|
||||
gimp_context_get_foreground (gimp_context_get_user (), r, g, b);
|
||||
else
|
||||
|
@ -547,12 +555,13 @@ color_area_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
if (color_notebook_active &&
|
||||
active_color == edit_color)
|
||||
{
|
||||
color_notebook_set_color (color_notebook, r, g, b, TRUE);
|
||||
color_notebook_set_color (color_notebook, r, g, b, 255, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -568,6 +577,7 @@ color_area_color_changed (GimpContext *context,
|
|||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gpointer data)
|
||||
{
|
||||
color_area_draw ();
|
||||
|
|
|
@ -46,7 +46,7 @@ struct _ColorSelectorInfo
|
|||
{
|
||||
char *name; /* label used in notebook tab */
|
||||
char *help_page;
|
||||
GimpColorSelectorMethods m;
|
||||
GimpColorSelectorMethods methods;
|
||||
int refs; /* number of instances around */
|
||||
gboolean active;
|
||||
void (*death_callback) (void *data);
|
||||
|
@ -71,7 +71,8 @@ static void color_notebook_cancel_callback (GtkWidget *widget,
|
|||
static void color_notebook_update_callback (gpointer data,
|
||||
gint red,
|
||||
gint green,
|
||||
gint blue);
|
||||
gint blue,
|
||||
gint alpha);
|
||||
static void color_notebook_page_switch (GtkWidget *widget,
|
||||
GtkNotebookPage *page,
|
||||
guint page_num);
|
||||
|
@ -88,6 +89,7 @@ enum
|
|||
RED,
|
||||
GREEN,
|
||||
BLUE,
|
||||
ALPHA,
|
||||
NUM_COLORS
|
||||
};
|
||||
|
||||
|
@ -96,13 +98,15 @@ ColorNotebook *
|
|||
color_notebook_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookCallback callback,
|
||||
gpointer client_data,
|
||||
gboolean wants_updates)
|
||||
gboolean wants_updates,
|
||||
gboolean show_alpha)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
GtkWidget *label;
|
||||
ColorSelectorInfo *info;
|
||||
ColorNotebook *cnp;
|
||||
GtkWidget *label;
|
||||
ColorSelectorInfo *info;
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
g_return_val_if_fail (selector_info != NULL, NULL);
|
||||
|
@ -118,6 +122,7 @@ color_notebook_new (gint red,
|
|||
cnp->values[RED] = cnp->orig_values[RED] = red & 0xff;
|
||||
cnp->values[GREEN] = cnp->orig_values[GREEN] = green & 0xff;
|
||||
cnp->values[BLUE] = cnp->orig_values[BLUE] = blue & 0xff;
|
||||
cnp->values[ALPHA] = cnp->orig_values[ALPHA] = alpha & 0xff;
|
||||
|
||||
cnp->shell =
|
||||
gimp_dialog_new (_("Color Selection"), "color_selection",
|
||||
|
@ -158,9 +163,10 @@ color_notebook_new (gint red,
|
|||
csel->color_notebook = cnp;
|
||||
csel->info = info;
|
||||
info->refs++;
|
||||
csel->frame = info->m.new (red, green, blue,
|
||||
color_notebook_update_callback, csel,
|
||||
&csel->selector_data);
|
||||
csel->frame = info->methods.new (red, green, blue, alpha,
|
||||
show_alpha,
|
||||
color_notebook_update_callback, csel,
|
||||
&csel->selector_data);
|
||||
gtk_object_set_data (GTK_OBJECT (csel->frame), "gimp_color_notebook",
|
||||
csel);
|
||||
|
||||
|
@ -201,7 +207,8 @@ color_notebook_new (gint red,
|
|||
{
|
||||
gtk_object_set_user_data (GTK_OBJECT (cnp->notebook), cnp);
|
||||
gtk_signal_connect (GTK_OBJECT (cnp->notebook), "switch_page",
|
||||
(GtkSignalFunc)color_notebook_page_switch, NULL);
|
||||
GTK_SIGNAL_FUNC (color_notebook_page_switch),
|
||||
NULL);
|
||||
}
|
||||
|
||||
return cnp;
|
||||
|
@ -236,7 +243,7 @@ color_notebook_free (ColorNotebook *cnp)
|
|||
{
|
||||
next = csel->next;
|
||||
|
||||
csel->info->m.free (csel->selector_data);
|
||||
csel->info->methods.free (csel->selector_data);
|
||||
|
||||
csel->info->refs--;
|
||||
if (csel->info->refs == 0 && !csel->info->active)
|
||||
|
@ -254,24 +261,30 @@ color_notebook_set_color (ColorNotebook *cnp,
|
|||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gboolean set_current)
|
||||
{
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
g_return_if_fail (cnp != NULL);
|
||||
|
||||
cnp->orig_values[RED] = red;
|
||||
cnp->orig_values[GREEN] = green;
|
||||
cnp->orig_values[BLUE] = blue;
|
||||
cnp->orig_values[ALPHA] = alpha;
|
||||
|
||||
if (set_current)
|
||||
{
|
||||
cnp->values[RED] = red;
|
||||
cnp->values[GREEN] = green;
|
||||
cnp->values[BLUE] = blue;
|
||||
cnp->values[ALPHA] = alpha;
|
||||
}
|
||||
|
||||
csel = cnp->cur_page;
|
||||
csel->info->m.setcolor (csel->selector_data, red, green, blue, set_current);
|
||||
csel->info->methods.setcolor (csel->selector_data,
|
||||
red, green, blue, alpha,
|
||||
set_current);
|
||||
}
|
||||
|
||||
/* Called by a colour selector on user selection of a colour */
|
||||
|
@ -279,10 +292,11 @@ static void
|
|||
color_notebook_update_callback (gpointer data,
|
||||
gint red,
|
||||
gint green,
|
||||
gint blue)
|
||||
gint blue,
|
||||
gint alpha)
|
||||
{
|
||||
ColorSelectorInstance *csel;
|
||||
ColorNotebook *cnp;
|
||||
ColorNotebook *cnp;
|
||||
|
||||
g_return_if_fail (data != NULL);
|
||||
|
||||
|
@ -292,12 +306,14 @@ color_notebook_update_callback (gpointer data,
|
|||
cnp->values[RED] = red;
|
||||
cnp->values[GREEN] = green;
|
||||
cnp->values[BLUE] = blue;
|
||||
cnp->values[ALPHA] = alpha;
|
||||
|
||||
if (cnp->wants_updates && cnp->callback)
|
||||
{
|
||||
(* cnp->callback) (cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
COLOR_NOTEBOOK_UPDATE,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -315,6 +331,7 @@ color_notebook_ok_callback (GtkWidget *widget,
|
|||
(* cnp->callback) (cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
COLOR_NOTEBOOK_OK,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -331,6 +348,7 @@ color_notebook_cancel_callback (GtkWidget *widget,
|
|||
(* cnp->callback) (cnp->orig_values[RED],
|
||||
cnp->orig_values[GREEN],
|
||||
cnp->orig_values[BLUE],
|
||||
cnp->orig_values[ALPHA],
|
||||
COLOR_NOTEBOOK_CANCEL,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -340,7 +358,7 @@ color_notebook_page_switch (GtkWidget *widget,
|
|||
GtkNotebookPage *page,
|
||||
guint page_num)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
ColorNotebook *cnp;
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
cnp = gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
@ -349,18 +367,19 @@ color_notebook_page_switch (GtkWidget *widget,
|
|||
g_return_if_fail (cnp != NULL && csel != NULL);
|
||||
|
||||
cnp->cur_page = csel;
|
||||
csel->info->m.setcolor (csel->selector_data,
|
||||
cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
TRUE);
|
||||
csel->info->methods.setcolor (csel->selector_data,
|
||||
cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
color_notebook_help_func (const gchar *data)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
gchar *help_path;
|
||||
gchar *help_path;
|
||||
|
||||
cnp = (ColorNotebook *) data;
|
||||
|
||||
|
@ -393,13 +412,14 @@ gimp_color_selector_register (const gchar *name,
|
|||
|
||||
info = g_new (ColorSelectorInfo, 1);
|
||||
|
||||
info->name = g_strdup (name);
|
||||
info->name = g_strdup (name);
|
||||
info->help_page = g_strdup (help_page);
|
||||
info->m = *methods;
|
||||
info->refs = 0;
|
||||
info->active = TRUE;
|
||||
info->methods = *methods;
|
||||
info->refs = 0;
|
||||
info->active = TRUE;
|
||||
|
||||
info->next = selector_info;
|
||||
|
||||
info->next = selector_info;
|
||||
selector_info = info;
|
||||
|
||||
return info;
|
||||
|
|
|
@ -30,6 +30,7 @@ typedef enum
|
|||
typedef void (* ColorNotebookCallback) (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookState state,
|
||||
gpointer data);
|
||||
|
||||
|
@ -42,8 +43,8 @@ struct _ColorNotebook
|
|||
GtkWidget *shell;
|
||||
GtkWidget *notebook;
|
||||
|
||||
gint values[3];
|
||||
gint orig_values[3];
|
||||
gint values[4];
|
||||
gint orig_values[4];
|
||||
|
||||
ColorNotebookCallback callback;
|
||||
gpointer client_data;
|
||||
|
@ -57,9 +58,11 @@ struct _ColorNotebook
|
|||
ColorNotebook * color_notebook_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookCallback callback,
|
||||
gpointer data,
|
||||
gboolean wants_update);
|
||||
gboolean wants_update,
|
||||
gboolean show_aplha);
|
||||
|
||||
void color_notebook_show (ColorNotebook *cnb);
|
||||
void color_notebook_hide (ColorNotebook *cnb);
|
||||
|
@ -69,6 +72,7 @@ void color_notebook_set_color (ColorNotebook *cnb,
|
|||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gboolean set_current);
|
||||
|
||||
#endif /* __COLOR_NOTEBOOK_H__ */
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -101,40 +101,49 @@ struct _DeviceInfoDialog
|
|||
GtkWidget **eventboxes;
|
||||
};
|
||||
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *w, guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *widget,
|
||||
guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
static void devices_write_rc (void);
|
||||
|
||||
static void device_status_destroy_callback (void);
|
||||
static void devices_close_callback (GtkWidget *, gpointer);
|
||||
static void devices_close_callback (GtkWidget *widget,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update_current (void);
|
||||
|
||||
static ToolType device_status_drag_tool (GtkWidget *,
|
||||
gpointer);
|
||||
static void device_status_drop_tool (GtkWidget *,
|
||||
ToolType,
|
||||
gpointer);
|
||||
static void device_status_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
static void device_status_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void device_status_drop_brush (GtkWidget *,
|
||||
GimpBrush *,
|
||||
gpointer);
|
||||
static void device_status_drop_pattern (GtkWidget *,
|
||||
GPattern *,
|
||||
gpointer);
|
||||
static void device_status_drop_gradient (GtkWidget *,
|
||||
gradient_t *,
|
||||
gpointer);
|
||||
static ToolType device_status_drag_tool (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void device_status_drop_tool (GtkWidget *widget,
|
||||
ToolType tool,
|
||||
gpointer data);
|
||||
static void device_status_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void device_status_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void device_status_drop_brush (GtkWidget *widget,
|
||||
GimpBrush *brush,
|
||||
gpointer data);
|
||||
static void device_status_drop_pattern (GtkWidget *widget,
|
||||
GPattern *pattern,
|
||||
gpointer data);
|
||||
static void device_status_drop_gradient (GtkWidget *widget,
|
||||
gradient_t *gradient,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_color_changed (GimpContext *context,
|
||||
gint r,
|
||||
|
@ -148,6 +157,7 @@ static void device_status_data_changed (GimpContext *context,
|
|||
static void device_status_context_connect (GimpContext *context,
|
||||
guint32 deviceid);
|
||||
|
||||
|
||||
/* global data */
|
||||
gint current_device = GDK_CORE_POINTER;
|
||||
|
||||
|
@ -173,6 +183,7 @@ static GtkTargetEntry color_area_target_table[] =
|
|||
static guint n_color_area_targets = (sizeof (color_area_target_table) /
|
||||
sizeof (color_area_target_table[0]));
|
||||
|
||||
|
||||
/* utility functions for the device lists */
|
||||
|
||||
static GdkDeviceInfo *
|
||||
|
@ -1129,6 +1140,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
@ -1137,6 +1149,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
|
||||
if (device_info)
|
||||
{
|
||||
*a = 255;
|
||||
gimp_context_get_foreground (device_info->context, r, g, b);
|
||||
}
|
||||
else
|
||||
|
@ -1150,6 +1163,7 @@ device_status_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
|
|
@ -101,40 +101,49 @@ struct _DeviceInfoDialog
|
|||
GtkWidget **eventboxes;
|
||||
};
|
||||
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *w, guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *widget,
|
||||
guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
static void devices_write_rc (void);
|
||||
|
||||
static void device_status_destroy_callback (void);
|
||||
static void devices_close_callback (GtkWidget *, gpointer);
|
||||
static void devices_close_callback (GtkWidget *widget,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update_current (void);
|
||||
|
||||
static ToolType device_status_drag_tool (GtkWidget *,
|
||||
gpointer);
|
||||
static void device_status_drop_tool (GtkWidget *,
|
||||
ToolType,
|
||||
gpointer);
|
||||
static void device_status_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
static void device_status_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void device_status_drop_brush (GtkWidget *,
|
||||
GimpBrush *,
|
||||
gpointer);
|
||||
static void device_status_drop_pattern (GtkWidget *,
|
||||
GPattern *,
|
||||
gpointer);
|
||||
static void device_status_drop_gradient (GtkWidget *,
|
||||
gradient_t *,
|
||||
gpointer);
|
||||
static ToolType device_status_drag_tool (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void device_status_drop_tool (GtkWidget *widget,
|
||||
ToolType tool,
|
||||
gpointer data);
|
||||
static void device_status_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void device_status_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void device_status_drop_brush (GtkWidget *widget,
|
||||
GimpBrush *brush,
|
||||
gpointer data);
|
||||
static void device_status_drop_pattern (GtkWidget *widget,
|
||||
GPattern *pattern,
|
||||
gpointer data);
|
||||
static void device_status_drop_gradient (GtkWidget *widget,
|
||||
gradient_t *gradient,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_color_changed (GimpContext *context,
|
||||
gint r,
|
||||
|
@ -148,6 +157,7 @@ static void device_status_data_changed (GimpContext *context,
|
|||
static void device_status_context_connect (GimpContext *context,
|
||||
guint32 deviceid);
|
||||
|
||||
|
||||
/* global data */
|
||||
gint current_device = GDK_CORE_POINTER;
|
||||
|
||||
|
@ -173,6 +183,7 @@ static GtkTargetEntry color_area_target_table[] =
|
|||
static guint n_color_area_targets = (sizeof (color_area_target_table) /
|
||||
sizeof (color_area_target_table[0]));
|
||||
|
||||
|
||||
/* utility functions for the device lists */
|
||||
|
||||
static GdkDeviceInfo *
|
||||
|
@ -1129,6 +1140,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
@ -1137,6 +1149,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
|
||||
if (device_info)
|
||||
{
|
||||
*a = 255;
|
||||
gimp_context_get_foreground (device_info->context, r, g, b);
|
||||
}
|
||||
else
|
||||
|
@ -1150,6 +1163,7 @@ device_status_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
|
|
@ -1008,6 +1008,7 @@ static void
|
|||
palette_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
void *data)
|
||||
{
|
||||
|
@ -1086,7 +1087,7 @@ palette_dialog_edit_entry_callback (GtkWidget *widget,
|
|||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
guchar *color;
|
||||
guchar *color;
|
||||
|
||||
palette = data;
|
||||
if (palette && palette->entries && palette->color)
|
||||
|
@ -1096,9 +1097,9 @@ palette_dialog_edit_entry_callback (GtkWidget *widget,
|
|||
if (!palette->color_notebook)
|
||||
{
|
||||
palette->color_notebook =
|
||||
color_notebook_new (color[0], color[1], color[2],
|
||||
color_notebook_new (color[0], color[1], color[2], 255,
|
||||
palette_select_callback, palette,
|
||||
FALSE);
|
||||
FALSE, FALSE);
|
||||
palette->color_notebook_active = TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -1110,7 +1111,8 @@ palette_dialog_edit_entry_callback (GtkWidget *widget,
|
|||
}
|
||||
|
||||
color_notebook_set_color (palette->color_notebook,
|
||||
color[0], color[1], color[2], 1);
|
||||
color[0], color[1], color[2], 255,
|
||||
TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1119,10 +1121,10 @@ static void
|
|||
palette_dialog_delete_entry_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteEntry *entry;
|
||||
PaletteEntry *entry;
|
||||
PaletteDialog *palette;
|
||||
GSList *tmp_link;
|
||||
gint pos = 0;
|
||||
GSList *tmp_link;
|
||||
gint pos = 0;
|
||||
|
||||
palette = data;
|
||||
|
||||
|
@ -1984,6 +1986,7 @@ palette_dialog_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
|
@ -1995,6 +1998,7 @@ palette_dialog_drag_color (GtkWidget *widget,
|
|||
*r = (guchar) palette->dnd_color->color[0];
|
||||
*g = (guchar) palette->dnd_color->color[1];
|
||||
*b = (guchar) palette->dnd_color->color[2];
|
||||
*a = (guchar) 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2007,6 +2011,7 @@ palette_dialog_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
|
|
|
@ -255,9 +255,7 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
GtkWidget *label;
|
||||
GtkWidget *opacity_scale;
|
||||
GtkObject *opacity_scale_data;
|
||||
|
||||
gint i;
|
||||
guchar channel_color[3] = { 0, 0, 0 };
|
||||
guchar r, g, b, a;
|
||||
|
||||
/* channel = gimp_image_get_channel_by_name (gdisp->gimage, "Qmask"); */
|
||||
/* the new options structure */
|
||||
|
@ -265,10 +263,12 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
options->gimage = gdisp->gimage;
|
||||
options->opacity = (gdouble) options->gimage->qmask_opacity;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
channel_color[i] = options->gimage->qmask_color[i];
|
||||
r = options->gimage->qmask_color[0];
|
||||
g = options->gimage->qmask_color[1];
|
||||
b = options->gimage->qmask_color[2];
|
||||
a = 255;
|
||||
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (r, g, b, a, FALSE, 48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
|
|
@ -1008,6 +1008,7 @@ static void
|
|||
palette_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
void *data)
|
||||
{
|
||||
|
@ -1086,7 +1087,7 @@ palette_dialog_edit_entry_callback (GtkWidget *widget,
|
|||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
guchar *color;
|
||||
guchar *color;
|
||||
|
||||
palette = data;
|
||||
if (palette && palette->entries && palette->color)
|
||||
|
@ -1096,9 +1097,9 @@ palette_dialog_edit_entry_callback (GtkWidget *widget,
|
|||
if (!palette->color_notebook)
|
||||
{
|
||||
palette->color_notebook =
|
||||
color_notebook_new (color[0], color[1], color[2],
|
||||
color_notebook_new (color[0], color[1], color[2], 255,
|
||||
palette_select_callback, palette,
|
||||
FALSE);
|
||||
FALSE, FALSE);
|
||||
palette->color_notebook_active = TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -1110,7 +1111,8 @@ palette_dialog_edit_entry_callback (GtkWidget *widget,
|
|||
}
|
||||
|
||||
color_notebook_set_color (palette->color_notebook,
|
||||
color[0], color[1], color[2], 1);
|
||||
color[0], color[1], color[2], 255,
|
||||
TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1119,10 +1121,10 @@ static void
|
|||
palette_dialog_delete_entry_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteEntry *entry;
|
||||
PaletteEntry *entry;
|
||||
PaletteDialog *palette;
|
||||
GSList *tmp_link;
|
||||
gint pos = 0;
|
||||
GSList *tmp_link;
|
||||
gint pos = 0;
|
||||
|
||||
palette = data;
|
||||
|
||||
|
@ -1984,6 +1986,7 @@ palette_dialog_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
|
@ -1995,6 +1998,7 @@ palette_dialog_drag_color (GtkWidget *widget,
|
|||
*r = (guchar) palette->dnd_color->color[0];
|
||||
*g = (guchar) palette->dnd_color->color[1];
|
||||
*b = (guchar) palette->dnd_color->color[2];
|
||||
*a = (guchar) 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2007,6 +2011,7 @@ palette_dialog_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
|
|
12
app/qmask.c
12
app/qmask.c
|
@ -255,9 +255,7 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
GtkWidget *label;
|
||||
GtkWidget *opacity_scale;
|
||||
GtkObject *opacity_scale_data;
|
||||
|
||||
gint i;
|
||||
guchar channel_color[3] = { 0, 0, 0 };
|
||||
guchar r, g, b, a;
|
||||
|
||||
/* channel = gimp_image_get_channel_by_name (gdisp->gimage, "Qmask"); */
|
||||
/* the new options structure */
|
||||
|
@ -265,10 +263,12 @@ edit_qmask_channel_query (GDisplay * gdisp)
|
|||
options->gimage = gdisp->gimage;
|
||||
options->opacity = (gdouble) options->gimage->qmask_opacity;
|
||||
|
||||
for (i = 0; i < 3; i++)
|
||||
channel_color[i] = options->gimage->qmask_color[i];
|
||||
r = options->gimage->qmask_color[0];
|
||||
g = options->gimage->qmask_color[1];
|
||||
b = options->gimage->qmask_color[2];
|
||||
a = 255;
|
||||
|
||||
options->color_panel = color_panel_new (channel_color, 48, 64);
|
||||
options->color_panel = color_panel_new (r, g, b, a, FALSE, 48, 64);
|
||||
|
||||
/* The dialog */
|
||||
options->query_box =
|
||||
|
|
|
@ -102,6 +102,7 @@ static void by_color_select_color_drop (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
|
||||
/* by_color select action functions */
|
||||
|
@ -1232,6 +1233,7 @@ by_color_select_color_drop (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
|
||||
{
|
||||
|
|
|
@ -304,7 +304,9 @@ color_picker_button_press (Tool *tool,
|
|||
|
||||
gtk_widget_reparent (color_picker_info->info_table, hbox);
|
||||
|
||||
color_panel = color_panel_new (NULL, 48, 64);
|
||||
color_panel = color_panel_new (0, 0, 0, 0,
|
||||
gimp_drawable_has_alpha (tool->drawable),
|
||||
48, 64);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), color_panel->color_panel_widget,
|
||||
FALSE, FALSE, 0);
|
||||
gtk_widget_show (color_panel->color_panel_widget);
|
||||
|
@ -523,7 +525,7 @@ pick_color_do (GimpImage *gimage,
|
|||
|
||||
has_alpha = GIMP_IMAGE_TYPE_HAS_ALPHA (sample_type);
|
||||
|
||||
if (!(color = (*get_color_func) (get_color_obj, x, y)))
|
||||
if (!(color = (* get_color_func) (get_color_obj, x, y)))
|
||||
return FALSE;
|
||||
|
||||
if (sample_average)
|
||||
|
@ -536,7 +538,7 @@ pick_color_do (GimpImage *gimage,
|
|||
|
||||
for (i = x - radius; i <= x + radius; i++)
|
||||
for (j = y - radius; j <= y + radius; j++)
|
||||
if ((tmp_color = (*get_color_func) (get_color_obj, i, j)))
|
||||
if ((tmp_color = (* get_color_func) (get_color_obj, i, j)))
|
||||
{
|
||||
count++;
|
||||
|
||||
|
@ -573,6 +575,7 @@ pick_color_do (GimpImage *gimage,
|
|||
final);
|
||||
|
||||
g_free (color);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -622,7 +625,7 @@ colorpicker_draw (Tool *tool)
|
|||
ty - radiusy,
|
||||
2 * radiusx + cx, 2 * radiusy + cy);
|
||||
|
||||
if(radiusx > 1 && radiusy > 1)
|
||||
if (radiusx > 1 && radiusy > 1)
|
||||
{
|
||||
gdk_draw_rectangle (cp_tool->core->win, cp_tool->core->gc, 0,
|
||||
tx - radiusx + 2,
|
||||
|
@ -650,7 +653,10 @@ color_picker_info_update (Tool *tool,
|
|||
}
|
||||
else
|
||||
{
|
||||
guchar col[3];
|
||||
guchar r = 0;
|
||||
guchar g = 0;
|
||||
guchar b = 0;
|
||||
guchar a = 0;
|
||||
|
||||
if (! GTK_WIDGET_IS_SENSITIVE (color_panel->color_panel_widget))
|
||||
gtk_widget_set_sensitive (color_panel->color_panel_widget, TRUE);
|
||||
|
@ -670,9 +676,12 @@ color_picker_info_update (Tool *tool,
|
|||
col_value [RED_PIX],
|
||||
col_value [GREEN_PIX],
|
||||
col_value [BLUE_PIX]);
|
||||
col[0] = col_value [RED_PIX];
|
||||
col[1] = col_value [GREEN_PIX];
|
||||
col[2] = col_value [BLUE_PIX];
|
||||
|
||||
r = col_value [RED_PIX];
|
||||
g = col_value [GREEN_PIX];
|
||||
b = col_value [BLUE_PIX];
|
||||
if (sample_type == RGBA_GIMAGE)
|
||||
a = col_value [ALPHA_PIX];
|
||||
break;
|
||||
|
||||
case INDEXED_GIMAGE: case INDEXEDA_GIMAGE:
|
||||
|
@ -688,9 +697,12 @@ color_picker_info_update (Tool *tool,
|
|||
col_value [RED_PIX],
|
||||
col_value [GREEN_PIX],
|
||||
col_value [BLUE_PIX]);
|
||||
col[0] = col_value [RED_PIX];
|
||||
col[1] = col_value [GREEN_PIX];
|
||||
col[2] = col_value [BLUE_PIX];
|
||||
|
||||
r = col_value [RED_PIX];
|
||||
g = col_value [GREEN_PIX];
|
||||
b = col_value [BLUE_PIX];
|
||||
if (sample_type == INDEXEDA_GIMAGE)
|
||||
a = col_value [ALPHA_PIX];
|
||||
break;
|
||||
|
||||
case GRAY_GIMAGE: case GRAYA_GIMAGE:
|
||||
|
@ -703,13 +715,16 @@ color_picker_info_update (Tool *tool,
|
|||
col_value [GRAY_PIX],
|
||||
col_value [GRAY_PIX],
|
||||
col_value [GRAY_PIX]);
|
||||
col[0] = col_value [GRAY_PIX];
|
||||
col[1] = col_value [GRAY_PIX];
|
||||
col[2] = col_value [GRAY_PIX];
|
||||
|
||||
r = col_value [GRAY_PIX];
|
||||
g = col_value [GRAY_PIX];
|
||||
b = col_value [GRAY_PIX];
|
||||
if (sample_type == GRAYA_GIMAGE)
|
||||
a = col_value [ALPHA_PIX];
|
||||
break;
|
||||
}
|
||||
|
||||
color_panel_set_color (color_panel, col);
|
||||
color_panel_set_color (color_panel, r, g, b, a);
|
||||
}
|
||||
|
||||
info_dialog_update (color_picker_info);
|
||||
|
|
|
@ -102,6 +102,7 @@ static void by_color_select_color_drop (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
|
||||
/* by_color select action functions */
|
||||
|
@ -1232,6 +1233,7 @@ by_color_select_color_drop (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
|
||||
{
|
||||
|
|
|
@ -46,7 +46,7 @@ struct _ColorSelectorInfo
|
|||
{
|
||||
char *name; /* label used in notebook tab */
|
||||
char *help_page;
|
||||
GimpColorSelectorMethods m;
|
||||
GimpColorSelectorMethods methods;
|
||||
int refs; /* number of instances around */
|
||||
gboolean active;
|
||||
void (*death_callback) (void *data);
|
||||
|
@ -71,7 +71,8 @@ static void color_notebook_cancel_callback (GtkWidget *widget,
|
|||
static void color_notebook_update_callback (gpointer data,
|
||||
gint red,
|
||||
gint green,
|
||||
gint blue);
|
||||
gint blue,
|
||||
gint alpha);
|
||||
static void color_notebook_page_switch (GtkWidget *widget,
|
||||
GtkNotebookPage *page,
|
||||
guint page_num);
|
||||
|
@ -88,6 +89,7 @@ enum
|
|||
RED,
|
||||
GREEN,
|
||||
BLUE,
|
||||
ALPHA,
|
||||
NUM_COLORS
|
||||
};
|
||||
|
||||
|
@ -96,13 +98,15 @@ ColorNotebook *
|
|||
color_notebook_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookCallback callback,
|
||||
gpointer client_data,
|
||||
gboolean wants_updates)
|
||||
gboolean wants_updates,
|
||||
gboolean show_alpha)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
GtkWidget *label;
|
||||
ColorSelectorInfo *info;
|
||||
ColorNotebook *cnp;
|
||||
GtkWidget *label;
|
||||
ColorSelectorInfo *info;
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
g_return_val_if_fail (selector_info != NULL, NULL);
|
||||
|
@ -118,6 +122,7 @@ color_notebook_new (gint red,
|
|||
cnp->values[RED] = cnp->orig_values[RED] = red & 0xff;
|
||||
cnp->values[GREEN] = cnp->orig_values[GREEN] = green & 0xff;
|
||||
cnp->values[BLUE] = cnp->orig_values[BLUE] = blue & 0xff;
|
||||
cnp->values[ALPHA] = cnp->orig_values[ALPHA] = alpha & 0xff;
|
||||
|
||||
cnp->shell =
|
||||
gimp_dialog_new (_("Color Selection"), "color_selection",
|
||||
|
@ -158,9 +163,10 @@ color_notebook_new (gint red,
|
|||
csel->color_notebook = cnp;
|
||||
csel->info = info;
|
||||
info->refs++;
|
||||
csel->frame = info->m.new (red, green, blue,
|
||||
color_notebook_update_callback, csel,
|
||||
&csel->selector_data);
|
||||
csel->frame = info->methods.new (red, green, blue, alpha,
|
||||
show_alpha,
|
||||
color_notebook_update_callback, csel,
|
||||
&csel->selector_data);
|
||||
gtk_object_set_data (GTK_OBJECT (csel->frame), "gimp_color_notebook",
|
||||
csel);
|
||||
|
||||
|
@ -201,7 +207,8 @@ color_notebook_new (gint red,
|
|||
{
|
||||
gtk_object_set_user_data (GTK_OBJECT (cnp->notebook), cnp);
|
||||
gtk_signal_connect (GTK_OBJECT (cnp->notebook), "switch_page",
|
||||
(GtkSignalFunc)color_notebook_page_switch, NULL);
|
||||
GTK_SIGNAL_FUNC (color_notebook_page_switch),
|
||||
NULL);
|
||||
}
|
||||
|
||||
return cnp;
|
||||
|
@ -236,7 +243,7 @@ color_notebook_free (ColorNotebook *cnp)
|
|||
{
|
||||
next = csel->next;
|
||||
|
||||
csel->info->m.free (csel->selector_data);
|
||||
csel->info->methods.free (csel->selector_data);
|
||||
|
||||
csel->info->refs--;
|
||||
if (csel->info->refs == 0 && !csel->info->active)
|
||||
|
@ -254,24 +261,30 @@ color_notebook_set_color (ColorNotebook *cnp,
|
|||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gboolean set_current)
|
||||
{
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
g_return_if_fail (cnp != NULL);
|
||||
|
||||
cnp->orig_values[RED] = red;
|
||||
cnp->orig_values[GREEN] = green;
|
||||
cnp->orig_values[BLUE] = blue;
|
||||
cnp->orig_values[ALPHA] = alpha;
|
||||
|
||||
if (set_current)
|
||||
{
|
||||
cnp->values[RED] = red;
|
||||
cnp->values[GREEN] = green;
|
||||
cnp->values[BLUE] = blue;
|
||||
cnp->values[ALPHA] = alpha;
|
||||
}
|
||||
|
||||
csel = cnp->cur_page;
|
||||
csel->info->m.setcolor (csel->selector_data, red, green, blue, set_current);
|
||||
csel->info->methods.setcolor (csel->selector_data,
|
||||
red, green, blue, alpha,
|
||||
set_current);
|
||||
}
|
||||
|
||||
/* Called by a colour selector on user selection of a colour */
|
||||
|
@ -279,10 +292,11 @@ static void
|
|||
color_notebook_update_callback (gpointer data,
|
||||
gint red,
|
||||
gint green,
|
||||
gint blue)
|
||||
gint blue,
|
||||
gint alpha)
|
||||
{
|
||||
ColorSelectorInstance *csel;
|
||||
ColorNotebook *cnp;
|
||||
ColorNotebook *cnp;
|
||||
|
||||
g_return_if_fail (data != NULL);
|
||||
|
||||
|
@ -292,12 +306,14 @@ color_notebook_update_callback (gpointer data,
|
|||
cnp->values[RED] = red;
|
||||
cnp->values[GREEN] = green;
|
||||
cnp->values[BLUE] = blue;
|
||||
cnp->values[ALPHA] = alpha;
|
||||
|
||||
if (cnp->wants_updates && cnp->callback)
|
||||
{
|
||||
(* cnp->callback) (cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
COLOR_NOTEBOOK_UPDATE,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -315,6 +331,7 @@ color_notebook_ok_callback (GtkWidget *widget,
|
|||
(* cnp->callback) (cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
COLOR_NOTEBOOK_OK,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -331,6 +348,7 @@ color_notebook_cancel_callback (GtkWidget *widget,
|
|||
(* cnp->callback) (cnp->orig_values[RED],
|
||||
cnp->orig_values[GREEN],
|
||||
cnp->orig_values[BLUE],
|
||||
cnp->orig_values[ALPHA],
|
||||
COLOR_NOTEBOOK_CANCEL,
|
||||
cnp->client_data);
|
||||
}
|
||||
|
@ -340,7 +358,7 @@ color_notebook_page_switch (GtkWidget *widget,
|
|||
GtkNotebookPage *page,
|
||||
guint page_num)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
ColorNotebook *cnp;
|
||||
ColorSelectorInstance *csel;
|
||||
|
||||
cnp = gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
@ -349,18 +367,19 @@ color_notebook_page_switch (GtkWidget *widget,
|
|||
g_return_if_fail (cnp != NULL && csel != NULL);
|
||||
|
||||
cnp->cur_page = csel;
|
||||
csel->info->m.setcolor (csel->selector_data,
|
||||
cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
TRUE);
|
||||
csel->info->methods.setcolor (csel->selector_data,
|
||||
cnp->values[RED],
|
||||
cnp->values[GREEN],
|
||||
cnp->values[BLUE],
|
||||
cnp->values[ALPHA],
|
||||
TRUE);
|
||||
}
|
||||
|
||||
static void
|
||||
color_notebook_help_func (const gchar *data)
|
||||
{
|
||||
ColorNotebook *cnp;
|
||||
gchar *help_path;
|
||||
gchar *help_path;
|
||||
|
||||
cnp = (ColorNotebook *) data;
|
||||
|
||||
|
@ -393,13 +412,14 @@ gimp_color_selector_register (const gchar *name,
|
|||
|
||||
info = g_new (ColorSelectorInfo, 1);
|
||||
|
||||
info->name = g_strdup (name);
|
||||
info->name = g_strdup (name);
|
||||
info->help_page = g_strdup (help_page);
|
||||
info->m = *methods;
|
||||
info->refs = 0;
|
||||
info->active = TRUE;
|
||||
info->methods = *methods;
|
||||
info->refs = 0;
|
||||
info->active = TRUE;
|
||||
|
||||
info->next = selector_info;
|
||||
|
||||
info->next = selector_info;
|
||||
selector_info = info;
|
||||
|
||||
return info;
|
||||
|
|
|
@ -30,6 +30,7 @@ typedef enum
|
|||
typedef void (* ColorNotebookCallback) (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookState state,
|
||||
gpointer data);
|
||||
|
||||
|
@ -42,8 +43,8 @@ struct _ColorNotebook
|
|||
GtkWidget *shell;
|
||||
GtkWidget *notebook;
|
||||
|
||||
gint values[3];
|
||||
gint orig_values[3];
|
||||
gint values[4];
|
||||
gint orig_values[4];
|
||||
|
||||
ColorNotebookCallback callback;
|
||||
gpointer client_data;
|
||||
|
@ -57,9 +58,11 @@ struct _ColorNotebook
|
|||
ColorNotebook * color_notebook_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
ColorNotebookCallback callback,
|
||||
gpointer data,
|
||||
gboolean wants_update);
|
||||
gboolean wants_update,
|
||||
gboolean show_aplha);
|
||||
|
||||
void color_notebook_show (ColorNotebook *cnb);
|
||||
void color_notebook_hide (ColorNotebook *cnb);
|
||||
|
@ -69,6 +72,7 @@ void color_notebook_set_color (ColorNotebook *cnb,
|
|||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gboolean set_current);
|
||||
|
||||
#endif /* __COLOR_NOTEBOOK_H__ */
|
||||
|
|
|
@ -40,6 +40,7 @@ struct _ColorPanelPrivate
|
|||
GtkWidget *drawing_area;
|
||||
GdkGC *gc;
|
||||
|
||||
gboolean show_alpha;
|
||||
gboolean button_down;
|
||||
|
||||
ColorNotebook *color_notebook;
|
||||
|
@ -55,6 +56,7 @@ static gint color_panel_events (GtkWidget *widget,
|
|||
static void color_panel_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
gpointer data);
|
||||
|
||||
|
@ -62,11 +64,13 @@ static void color_panel_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void color_panel_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
|
||||
/* dnd stuff */
|
||||
|
@ -80,26 +84,31 @@ static guint n_color_panel_targets = (sizeof (color_panel_target_table) /
|
|||
/* public functions */
|
||||
|
||||
ColorPanel *
|
||||
color_panel_new (guchar *initial,
|
||||
gint width,
|
||||
gint height)
|
||||
color_panel_new (guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gboolean show_alpha,
|
||||
gint width,
|
||||
gint height)
|
||||
{
|
||||
ColorPanel *color_panel;
|
||||
ColorPanel *color_panel;
|
||||
ColorPanelPrivate *private;
|
||||
gint i;
|
||||
|
||||
private = g_new0 (ColorPanelPrivate, 1);
|
||||
private->color_notebook = NULL;
|
||||
private->color_notebook_active = FALSE;
|
||||
private->gc = NULL;
|
||||
private->show_alpha = show_alpha;
|
||||
private->button_down = FALSE;
|
||||
|
||||
color_panel = g_new (ColorPanel, 1);
|
||||
color_panel->private_part = private;
|
||||
|
||||
/* set the initial color */
|
||||
for (i = 0; i < 3; i++)
|
||||
color_panel->color[i] = (initial) ? initial[i] : 0;
|
||||
color_panel->color[0] = r;
|
||||
color_panel->color[1] = g;
|
||||
color_panel->color[2] = b;
|
||||
color_panel->color[3] = a;
|
||||
|
||||
color_panel->color_panel_widget = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (color_panel->color_panel_widget),
|
||||
|
@ -111,7 +120,7 @@ color_panel_new (guchar *initial,
|
|||
width, height);
|
||||
gtk_widget_set_events (private->drawing_area, EVENT_MASK);
|
||||
gtk_signal_connect (GTK_OBJECT (private->drawing_area), "event",
|
||||
(GtkSignalFunc) color_panel_events,
|
||||
GTK_SIGNAL_FUNC (color_panel_events),
|
||||
color_panel);
|
||||
gtk_container_add (GTK_CONTAINER (color_panel->color_panel_widget),
|
||||
private->drawing_area);
|
||||
|
@ -144,17 +153,22 @@ color_panel_new (guchar *initial,
|
|||
|
||||
void
|
||||
color_panel_set_color (ColorPanel *color_panel,
|
||||
guchar *col)
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a)
|
||||
{
|
||||
ColorPanelPrivate *private = color_panel->private_part;
|
||||
|
||||
color_panel->color[0] = col[0];
|
||||
color_panel->color[1] = col[1];
|
||||
color_panel->color[2] = col[2];
|
||||
color_panel->color[0] = r;
|
||||
color_panel->color[1] = g;
|
||||
color_panel->color[2] = b;
|
||||
color_panel->color[3] = a;
|
||||
|
||||
if (private->color_notebook_active)
|
||||
color_notebook_set_color (private->color_notebook,
|
||||
col[0], col[1], col[2], TRUE);
|
||||
r, g, b, a,
|
||||
TRUE);
|
||||
|
||||
if (private->gc)
|
||||
color_panel_draw (color_panel);
|
||||
|
@ -186,9 +200,9 @@ color_panel_free (ColorPanel *color_panel)
|
|||
static void
|
||||
color_panel_draw (ColorPanel *color_panel)
|
||||
{
|
||||
GtkWidget *widget;
|
||||
GtkWidget *widget;
|
||||
ColorPanelPrivate *private;
|
||||
GdkColor fg;
|
||||
GdkColor fg;
|
||||
|
||||
private = (ColorPanelPrivate *) color_panel->private_part;
|
||||
widget = private->drawing_area;
|
||||
|
@ -207,8 +221,8 @@ color_panel_events (GtkWidget *widget,
|
|||
GdkEvent *event,
|
||||
gpointer data)
|
||||
{
|
||||
GdkEventButton *bevent;
|
||||
ColorPanel *color_panel;
|
||||
GdkEventButton *bevent;
|
||||
ColorPanel *color_panel;
|
||||
ColorPanelPrivate *private;
|
||||
|
||||
color_panel = (ColorPanel *) data;
|
||||
|
@ -242,9 +256,11 @@ color_panel_events (GtkWidget *widget,
|
|||
color_notebook_new (color_panel->color[0],
|
||||
color_panel->color[1],
|
||||
color_panel->color[2],
|
||||
color_panel->color[3],
|
||||
color_panel_select_callback,
|
||||
color_panel,
|
||||
FALSE);
|
||||
FALSE,
|
||||
private->show_alpha);
|
||||
private->color_notebook_active = TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -257,7 +273,9 @@ color_panel_events (GtkWidget *widget,
|
|||
color_notebook_set_color (private->color_notebook,
|
||||
color_panel->color[0],
|
||||
color_panel->color[1],
|
||||
color_panel->color[2], 1);
|
||||
color_panel->color[2],
|
||||
color_panel->color[3],
|
||||
TRUE);
|
||||
}
|
||||
private->button_down = FALSE;
|
||||
}
|
||||
|
@ -278,10 +296,11 @@ static void
|
|||
color_panel_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel;
|
||||
ColorPanel *color_panel;
|
||||
ColorPanelPrivate *private;
|
||||
|
||||
color_panel = (ColorPanel *) data;
|
||||
|
@ -312,6 +331,7 @@ color_panel_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel;
|
||||
|
@ -321,6 +341,7 @@ color_panel_drag_color (GtkWidget *widget,
|
|||
*r = color_panel->color[0];
|
||||
*g = color_panel->color[1];
|
||||
*b = color_panel->color[2];
|
||||
*a = color_panel->color[3];
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -328,9 +349,10 @@ color_panel_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel;
|
||||
ColorPanel *color_panel;
|
||||
ColorPanelPrivate *private;
|
||||
|
||||
color_panel = (ColorPanel *) data;
|
||||
|
@ -339,9 +361,10 @@ color_panel_drop_color (GtkWidget *widget,
|
|||
color_panel->color[0] = r;
|
||||
color_panel->color[1] = g;
|
||||
color_panel->color[2] = b;
|
||||
color_panel->color[3] = a;
|
||||
|
||||
if (private->color_notebook_active)
|
||||
color_notebook_set_color (private->color_notebook, r, g, b, TRUE);
|
||||
color_notebook_set_color (private->color_notebook, r, g, b, a, TRUE);
|
||||
|
||||
color_panel_draw (color_panel);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#ifndef __COLOR_PANEL_H__
|
||||
#define __COLOR_PANEL_H__
|
||||
|
||||
|
||||
typedef struct _ColorPanel ColorPanel;
|
||||
|
||||
struct _ColorPanel
|
||||
|
@ -27,18 +28,26 @@ struct _ColorPanel
|
|||
GtkWidget *color_panel_widget;
|
||||
|
||||
/* The actual color */
|
||||
guchar color [3];
|
||||
guchar color [4];
|
||||
|
||||
/* Don't touch this :) */
|
||||
void *private_part;
|
||||
gpointer private_part;
|
||||
};
|
||||
|
||||
ColorPanel * color_panel_new (guchar *initial,
|
||||
|
||||
ColorPanel * color_panel_new (guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gboolean show_alpha,
|
||||
gint width,
|
||||
gint height);
|
||||
|
||||
void color_panel_set_color (ColorPanel *color_panel,
|
||||
guchar *col);
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a);
|
||||
|
||||
|
||||
#endif /* __COLOR_PANEL_H__ */
|
||||
|
|
|
@ -101,40 +101,49 @@ struct _DeviceInfoDialog
|
|||
GtkWidget **eventboxes;
|
||||
};
|
||||
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *w, guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *widget,
|
||||
guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
static void devices_write_rc (void);
|
||||
|
||||
static void device_status_destroy_callback (void);
|
||||
static void devices_close_callback (GtkWidget *, gpointer);
|
||||
static void devices_close_callback (GtkWidget *widget,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update_current (void);
|
||||
|
||||
static ToolType device_status_drag_tool (GtkWidget *,
|
||||
gpointer);
|
||||
static void device_status_drop_tool (GtkWidget *,
|
||||
ToolType,
|
||||
gpointer);
|
||||
static void device_status_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
static void device_status_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void device_status_drop_brush (GtkWidget *,
|
||||
GimpBrush *,
|
||||
gpointer);
|
||||
static void device_status_drop_pattern (GtkWidget *,
|
||||
GPattern *,
|
||||
gpointer);
|
||||
static void device_status_drop_gradient (GtkWidget *,
|
||||
gradient_t *,
|
||||
gpointer);
|
||||
static ToolType device_status_drag_tool (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void device_status_drop_tool (GtkWidget *widget,
|
||||
ToolType tool,
|
||||
gpointer data);
|
||||
static void device_status_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void device_status_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void device_status_drop_brush (GtkWidget *widget,
|
||||
GimpBrush *brush,
|
||||
gpointer data);
|
||||
static void device_status_drop_pattern (GtkWidget *widget,
|
||||
GPattern *pattern,
|
||||
gpointer data);
|
||||
static void device_status_drop_gradient (GtkWidget *widget,
|
||||
gradient_t *gradient,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_color_changed (GimpContext *context,
|
||||
gint r,
|
||||
|
@ -148,6 +157,7 @@ static void device_status_data_changed (GimpContext *context,
|
|||
static void device_status_context_connect (GimpContext *context,
|
||||
guint32 deviceid);
|
||||
|
||||
|
||||
/* global data */
|
||||
gint current_device = GDK_CORE_POINTER;
|
||||
|
||||
|
@ -173,6 +183,7 @@ static GtkTargetEntry color_area_target_table[] =
|
|||
static guint n_color_area_targets = (sizeof (color_area_target_table) /
|
||||
sizeof (color_area_target_table[0]));
|
||||
|
||||
|
||||
/* utility functions for the device lists */
|
||||
|
||||
static GdkDeviceInfo *
|
||||
|
@ -1129,6 +1140,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
@ -1137,6 +1149,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
|
||||
if (device_info)
|
||||
{
|
||||
*a = 255;
|
||||
gimp_context_get_foreground (device_info->context, r, g, b);
|
||||
}
|
||||
else
|
||||
|
@ -1150,6 +1163,7 @@ device_status_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
|
|
@ -101,40 +101,49 @@ struct _DeviceInfoDialog
|
|||
GtkWidget **eventboxes;
|
||||
};
|
||||
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *w, guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
/* local functions */
|
||||
static void input_dialog_able_callback (GtkWidget *widget,
|
||||
guint32 deviceid,
|
||||
gpointer data);
|
||||
|
||||
static void devices_write_rc_device (DeviceInfo *device_info,
|
||||
FILE *fp);
|
||||
static void devices_write_rc (void);
|
||||
|
||||
static void device_status_destroy_callback (void);
|
||||
static void devices_close_callback (GtkWidget *, gpointer);
|
||||
static void devices_close_callback (GtkWidget *widget,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update (guint32 deviceid);
|
||||
static void device_status_update_current (void);
|
||||
|
||||
static ToolType device_status_drag_tool (GtkWidget *,
|
||||
gpointer);
|
||||
static void device_status_drop_tool (GtkWidget *,
|
||||
ToolType,
|
||||
gpointer);
|
||||
static void device_status_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
static void device_status_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void device_status_drop_brush (GtkWidget *,
|
||||
GimpBrush *,
|
||||
gpointer);
|
||||
static void device_status_drop_pattern (GtkWidget *,
|
||||
GPattern *,
|
||||
gpointer);
|
||||
static void device_status_drop_gradient (GtkWidget *,
|
||||
gradient_t *,
|
||||
gpointer);
|
||||
static ToolType device_status_drag_tool (GtkWidget *widget,
|
||||
gpointer data);
|
||||
static void device_status_drop_tool (GtkWidget *widget,
|
||||
ToolType tool,
|
||||
gpointer data);
|
||||
static void device_status_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void device_status_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void device_status_drop_brush (GtkWidget *widget,
|
||||
GimpBrush *brush,
|
||||
gpointer data);
|
||||
static void device_status_drop_pattern (GtkWidget *widget,
|
||||
GPattern *pattern,
|
||||
gpointer data);
|
||||
static void device_status_drop_gradient (GtkWidget *widget,
|
||||
gradient_t *gradient,
|
||||
gpointer data);
|
||||
|
||||
static void device_status_color_changed (GimpContext *context,
|
||||
gint r,
|
||||
|
@ -148,6 +157,7 @@ static void device_status_data_changed (GimpContext *context,
|
|||
static void device_status_context_connect (GimpContext *context,
|
||||
guint32 deviceid);
|
||||
|
||||
|
||||
/* global data */
|
||||
gint current_device = GDK_CORE_POINTER;
|
||||
|
||||
|
@ -173,6 +183,7 @@ static GtkTargetEntry color_area_target_table[] =
|
|||
static guint n_color_area_targets = (sizeof (color_area_target_table) /
|
||||
sizeof (color_area_target_table[0]));
|
||||
|
||||
|
||||
/* utility functions for the device lists */
|
||||
|
||||
static GdkDeviceInfo *
|
||||
|
@ -1129,6 +1140,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
@ -1137,6 +1149,7 @@ device_status_drag_color (GtkWidget *widget,
|
|||
|
||||
if (device_info)
|
||||
{
|
||||
*a = 255;
|
||||
gimp_context_get_foreground (device_info->context, r, g, b);
|
||||
}
|
||||
else
|
||||
|
@ -1150,6 +1163,7 @@ device_status_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
DeviceInfo *device_info;
|
||||
|
|
|
@ -492,11 +492,11 @@ gimp_dnd_get_color_icon (GtkWidget *widget,
|
|||
gpointer get_color_data)
|
||||
{
|
||||
GtkWidget *preview;
|
||||
guchar r, g, b;
|
||||
guchar row[DRAG_PREVIEW_SIZE * 3];
|
||||
gint i;
|
||||
guchar r, g, b, a;
|
||||
guchar row[DRAG_PREVIEW_SIZE * 3];
|
||||
gint i;
|
||||
|
||||
(* (GimpDndDragColorFunc) get_color_func) (widget, &r, &g, &b,
|
||||
(* (GimpDndDragColorFunc) get_color_func) (widget, &r, &g, &b, &a,
|
||||
get_color_data);
|
||||
|
||||
for (i = 0; i < DRAG_PREVIEW_SIZE; i++)
|
||||
|
@ -527,9 +527,9 @@ gimp_dnd_get_color_data (GtkWidget *widget,
|
|||
gint *length)
|
||||
{
|
||||
guint16 *vals;
|
||||
guchar r, g, b;
|
||||
guchar r, g, b, a;
|
||||
|
||||
(* (GimpDndDragColorFunc) get_color_func) (widget, &r, &g, &b,
|
||||
(* (GimpDndDragColorFunc) get_color_func) (widget, &r, &g, &b, &a,
|
||||
get_color_data);
|
||||
|
||||
vals = g_new (guint16, 4);
|
||||
|
@ -537,7 +537,7 @@ gimp_dnd_get_color_data (GtkWidget *widget,
|
|||
vals[0] = r + (r << 8);
|
||||
vals[1] = g + (g << 8);
|
||||
vals[2] = b + (b << 8);
|
||||
vals[3] = 0xffff;
|
||||
vals[3] = a + (a << 8);
|
||||
|
||||
*format = 16;
|
||||
*length = 8;
|
||||
|
@ -554,7 +554,7 @@ gimp_dnd_set_color_data (GtkWidget *widget,
|
|||
gint length)
|
||||
{
|
||||
guint16 *color_vals;
|
||||
guchar r, g, b;
|
||||
guchar r, g, b, a;
|
||||
|
||||
if ((format != 16) || (length != 8))
|
||||
{
|
||||
|
@ -567,8 +567,9 @@ gimp_dnd_set_color_data (GtkWidget *widget,
|
|||
r = color_vals[0] >> 8;
|
||||
g = color_vals[1] >> 8;
|
||||
b = color_vals[2] >> 8;
|
||||
a = color_vals[3] >> 8;
|
||||
|
||||
(* (GimpDndDropColorFunc) set_color_func) (widget, r, g, b,
|
||||
(* (GimpDndDropColorFunc) set_color_func) (widget, r, g, b, a,
|
||||
set_color_data);
|
||||
}
|
||||
|
||||
|
@ -627,7 +628,7 @@ gimp_dnd_get_brush_data (GtkWidget *widget,
|
|||
gint *length)
|
||||
{
|
||||
GimpBrush *brush;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
brush = (* (GimpDndDragBrushFunc) get_brush_func) (widget, get_brush_data);
|
||||
|
||||
|
@ -654,7 +655,7 @@ gimp_dnd_set_brush_data (GtkWidget *widget,
|
|||
gint length)
|
||||
{
|
||||
GimpBrush *brush;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
if ((format != 8) || (length < 1))
|
||||
{
|
||||
|
@ -729,7 +730,7 @@ gimp_dnd_get_pattern_data (GtkWidget *widget,
|
|||
gint *length)
|
||||
{
|
||||
GPattern *pattern;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
pattern = (* (GimpDndDragPatternFunc) get_pattern_func) (widget,
|
||||
get_pattern_data);
|
||||
|
@ -754,7 +755,7 @@ gimp_dnd_set_pattern_data (GtkWidget *widget,
|
|||
gint length)
|
||||
{
|
||||
GPattern *pattern;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
if ((format != 8) || (length < 1))
|
||||
{
|
||||
|
@ -830,7 +831,7 @@ gimp_dnd_get_gradient_data (GtkWidget *widget,
|
|||
gint *length)
|
||||
{
|
||||
gradient_t *gradient;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
gradient =
|
||||
(* (GimpDndDragGradientFunc) get_gradient_func) (widget, get_gradient_data);
|
||||
|
@ -855,7 +856,7 @@ gimp_dnd_set_gradient_data (GtkWidget *widget,
|
|||
gint length)
|
||||
{
|
||||
gradient_t *gradient;
|
||||
gchar *name;
|
||||
gchar *name;
|
||||
|
||||
if ((format != 8) || (length < 1))
|
||||
{
|
||||
|
|
|
@ -97,11 +97,13 @@ typedef void (* GimpDndDropColorFunc) (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
typedef void (* GimpDndDragColorFunc) (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
|
||||
void gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
|
|
|
@ -1008,6 +1008,7 @@ static void
|
|||
palette_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
void *data)
|
||||
{
|
||||
|
@ -1086,7 +1087,7 @@ palette_dialog_edit_entry_callback (GtkWidget *widget,
|
|||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
guchar *color;
|
||||
guchar *color;
|
||||
|
||||
palette = data;
|
||||
if (palette && palette->entries && palette->color)
|
||||
|
@ -1096,9 +1097,9 @@ palette_dialog_edit_entry_callback (GtkWidget *widget,
|
|||
if (!palette->color_notebook)
|
||||
{
|
||||
palette->color_notebook =
|
||||
color_notebook_new (color[0], color[1], color[2],
|
||||
color_notebook_new (color[0], color[1], color[2], 255,
|
||||
palette_select_callback, palette,
|
||||
FALSE);
|
||||
FALSE, FALSE);
|
||||
palette->color_notebook_active = TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -1110,7 +1111,8 @@ palette_dialog_edit_entry_callback (GtkWidget *widget,
|
|||
}
|
||||
|
||||
color_notebook_set_color (palette->color_notebook,
|
||||
color[0], color[1], color[2], 1);
|
||||
color[0], color[1], color[2], 255,
|
||||
TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1119,10 +1121,10 @@ static void
|
|||
palette_dialog_delete_entry_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteEntry *entry;
|
||||
PaletteEntry *entry;
|
||||
PaletteDialog *palette;
|
||||
GSList *tmp_link;
|
||||
gint pos = 0;
|
||||
GSList *tmp_link;
|
||||
gint pos = 0;
|
||||
|
||||
palette = data;
|
||||
|
||||
|
@ -1984,6 +1986,7 @@ palette_dialog_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
|
@ -1995,6 +1998,7 @@ palette_dialog_drag_color (GtkWidget *widget,
|
|||
*r = (guchar) palette->dnd_color->color[0];
|
||||
*g = (guchar) palette->dnd_color->color[1];
|
||||
*b = (guchar) palette->dnd_color->color[2];
|
||||
*a = (guchar) 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2007,6 +2011,7 @@ palette_dialog_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
|
|
|
@ -51,16 +51,19 @@ static void color_area_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data);
|
||||
static void color_area_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data);
|
||||
static void color_area_color_changed (GimpContext *context,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gpointer data);
|
||||
|
||||
/* Global variables */
|
||||
|
@ -277,6 +280,7 @@ static void
|
|||
color_area_select_callback (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
ColorNotebookState state,
|
||||
void *client_data)
|
||||
{
|
||||
|
@ -330,8 +334,9 @@ color_area_edit (void)
|
|||
|
||||
if (! color_notebook)
|
||||
{
|
||||
color_notebook = color_notebook_new (r, g, b, color_area_select_callback,
|
||||
NULL, TRUE);
|
||||
color_notebook = color_notebook_new (r, g, b, 255,
|
||||
color_area_select_callback,
|
||||
NULL, TRUE, FALSE);
|
||||
color_notebook_active = TRUE;
|
||||
}
|
||||
else
|
||||
|
@ -344,7 +349,7 @@ color_area_edit (void)
|
|||
else
|
||||
gdk_window_raise (color_notebook->shell->window);
|
||||
|
||||
color_notebook_set_color (color_notebook, r, g, b, TRUE);
|
||||
color_notebook_set_color (color_notebook, r, g, b, 255, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -534,8 +539,11 @@ color_area_drag_color (GtkWidget *widget,
|
|||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
guchar *a,
|
||||
gpointer data)
|
||||
{
|
||||
*a = 255;
|
||||
|
||||
if (active_color == FOREGROUND)
|
||||
gimp_context_get_foreground (gimp_context_get_user (), r, g, b);
|
||||
else
|
||||
|
@ -547,12 +555,13 @@ color_area_drop_color (GtkWidget *widget,
|
|||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
guchar a,
|
||||
gpointer data)
|
||||
{
|
||||
if (color_notebook_active &&
|
||||
active_color == edit_color)
|
||||
{
|
||||
color_notebook_set_color (color_notebook, r, g, b, TRUE);
|
||||
color_notebook_set_color (color_notebook, r, g, b, 255, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -568,6 +577,7 @@ color_area_color_changed (GimpContext *context,
|
|||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gpointer data)
|
||||
{
|
||||
color_area_draw ();
|
||||
|
|
|
@ -28,34 +28,38 @@ extern "C" {
|
|||
/* For information look at the html documentation */
|
||||
|
||||
|
||||
typedef void (* GimpColorSelector_Callback) (gpointer data,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b);
|
||||
typedef void (* GimpColorSelectorCallback) (gpointer data,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a);
|
||||
|
||||
typedef GtkWidget * (* GimpColorSelector_NewFunc) (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
GimpColorSelector_Callback cb,
|
||||
gpointer data,
|
||||
gpointer *selector_data);
|
||||
typedef GtkWidget * (* GimpColorSelectorNewFunc) (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean show_alpha,
|
||||
GimpColorSelectorCallback cb,
|
||||
gpointer data,
|
||||
gpointer *selector_data);
|
||||
|
||||
typedef void (* GimpColorSelector_FreeFunc) (gpointer selector_data);
|
||||
typedef void (* GimpColorSelectorFreeFunc) (gpointer selector_data);
|
||||
|
||||
|
||||
typedef void (* GimpColorSelector_SetColorFunc) (gpointer selector_data,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gboolean set_current);
|
||||
typedef void (* GimpColorSelectorSetColorFunc) (gpointer selector_data,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean set_current);
|
||||
|
||||
typedef struct _GimpColorSelectorMethods GimpColorSelectorMethods;
|
||||
|
||||
struct _GimpColorSelectorMethods
|
||||
{
|
||||
GimpColorSelector_NewFunc new;
|
||||
GimpColorSelector_FreeFunc free;
|
||||
GimpColorSelector_SetColorFunc setcolor;
|
||||
GimpColorSelectorNewFunc new;
|
||||
GimpColorSelectorFreeFunc free;
|
||||
GimpColorSelectorSetColorFunc setcolor;
|
||||
};
|
||||
|
||||
typedef gpointer GimpColorSelectorID;
|
||||
|
@ -65,15 +69,17 @@ typedef gpointer GimpColorSelectorID;
|
|||
|
||||
/* Bypass when compiling the source for these functions.
|
||||
*/
|
||||
GimpColorSelectorID gimp_color_selector_register (const gchar *name,
|
||||
const gchar *help_page,
|
||||
GimpColorSelectorMethods *methods);
|
||||
GimpColorSelectorID
|
||||
gimp_color_selector_register (const gchar *name,
|
||||
const gchar *help_page,
|
||||
GimpColorSelectorMethods *methods);
|
||||
|
||||
typedef void (* GimpColorSelectorFinishedCB) (gpointer finished_data);
|
||||
typedef void (* GimpColorSelectorFinishedCB) (gpointer finished_data);
|
||||
|
||||
gboolean gimp_color_selector_unregister (GimpColorSelectorID id,
|
||||
GimpColorSelectorFinishedCB finished_cb,
|
||||
gpointer finished_data);
|
||||
gboolean
|
||||
gimp_color_selector_unregister (GimpColorSelectorID id,
|
||||
GimpColorSelectorFinishedCB finished_cb,
|
||||
gpointer finished_data);
|
||||
|
||||
#endif /* !__COLOR_NOTEBOOK_C__ */
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -17,6 +17,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
@ -32,12 +33,23 @@
|
|||
|
||||
|
||||
/* prototypes */
|
||||
static GtkWidget * colorsel_gtk_new (int, int, int,
|
||||
GimpColorSelector_Callback, void *,
|
||||
void **);
|
||||
static void colorsel_gtk_free (void *);
|
||||
static void colorsel_gtk_setcolor (void *, int, int, int, int);
|
||||
static void colorsel_gtk_update (GtkWidget *, gpointer);
|
||||
static GtkWidget * colorsel_gtk_new (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean show_alpha,
|
||||
GimpColorSelectorCallback callback,
|
||||
gpointer data,
|
||||
gpointer *selector_data);
|
||||
static void colorsel_gtk_free (gpointer data);
|
||||
static void colorsel_gtk_setcolor (gpointer data,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean set_current);
|
||||
static void colorsel_gtk_update (GtkWidget *widget,
|
||||
gpointer data);
|
||||
|
||||
|
||||
/* local methods */
|
||||
|
@ -48,13 +60,14 @@ static GimpColorSelectorMethods methods =
|
|||
colorsel_gtk_setcolor
|
||||
};
|
||||
|
||||
static GimpModuleInfo info = {
|
||||
NULL,
|
||||
N_("GTK color selector as a pluggable color selector"),
|
||||
"Austin Donnelly <austin@gimp.org>",
|
||||
"v0.02",
|
||||
"(c) 1999, released under the GPL",
|
||||
"17 Jan 1999"
|
||||
static GimpModuleInfo info =
|
||||
{
|
||||
NULL,
|
||||
N_("GTK color selector as a pluggable color selector"),
|
||||
"Austin Donnelly <austin@gimp.org>",
|
||||
"v0.02",
|
||||
"(c) 1999, released under the GPL",
|
||||
"17 Jan 1999"
|
||||
};
|
||||
|
||||
|
||||
|
@ -69,23 +82,24 @@ module_init (GimpModuleInfo **inforet)
|
|||
#else
|
||||
id = mod_color_selector_register ("GTK", "gtk.html", &methods);
|
||||
#endif
|
||||
|
||||
if (id)
|
||||
{
|
||||
info.shutdown_data = id;
|
||||
*inforet = &info;
|
||||
return GIMP_MODULE_OK;
|
||||
}
|
||||
{
|
||||
info.shutdown_data = id;
|
||||
*inforet = &info;
|
||||
return GIMP_MODULE_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GIMP_MODULE_UNLOAD;
|
||||
}
|
||||
{
|
||||
return GIMP_MODULE_UNLOAD;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
module_unload (void *shutdown_data,
|
||||
void (*completed_cb)(void *),
|
||||
void *completed_data)
|
||||
module_unload (gpointer shutdown_data,
|
||||
GimpColorSelectorFinishedCB completed_cb,
|
||||
gpointer completed_data)
|
||||
{
|
||||
#ifndef __EMX__
|
||||
gimp_color_selector_unregister (shutdown_data, completed_cb, completed_data);
|
||||
|
@ -95,37 +109,43 @@ module_unload (void *shutdown_data,
|
|||
}
|
||||
|
||||
|
||||
/******************************/
|
||||
/* GTK color selector methods */
|
||||
|
||||
/**************************************************************/
|
||||
/* GTK colour selector methods */
|
||||
|
||||
typedef struct {
|
||||
GtkWidget *selector;
|
||||
GimpColorSelector_Callback callback;
|
||||
void *client_data;
|
||||
typedef struct
|
||||
{
|
||||
GtkWidget *selector;
|
||||
GimpColorSelectorCallback callback;
|
||||
void *client_data;
|
||||
} ColorselGtk;
|
||||
|
||||
|
||||
static GtkWidget *
|
||||
colorsel_gtk_new (int r, int g, int b,
|
||||
GimpColorSelector_Callback callback, void *client_data,
|
||||
colorsel_gtk_new (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean show_alpha,
|
||||
GimpColorSelectorCallback callback,
|
||||
gpointer data,
|
||||
/* RETURNS: */
|
||||
void **selector_data)
|
||||
gpointer *selector_data)
|
||||
{
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *vbox;
|
||||
ColorselGtk *p;
|
||||
|
||||
p = g_malloc (sizeof (ColorselGtk));
|
||||
p = g_new (ColorselGtk, 1);
|
||||
|
||||
p->selector = gtk_color_selection_new ();
|
||||
p->callback = callback;
|
||||
p->client_data = client_data;
|
||||
p->selector = gtk_color_selection_new ();
|
||||
p->callback = callback;
|
||||
p->client_data = data;
|
||||
|
||||
colorsel_gtk_setcolor (p, r, g, b, FALSE);
|
||||
colorsel_gtk_setcolor (p, r, g, b, a, FALSE);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (p->selector), "color_changed",
|
||||
(GtkSignalFunc) colorsel_gtk_update, p);
|
||||
GTK_SIGNAL_FUNC (colorsel_gtk_update),
|
||||
p);
|
||||
|
||||
vbox = gtk_vbox_new (TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), p->selector, FALSE, FALSE, 0);
|
||||
|
@ -135,55 +155,60 @@ colorsel_gtk_new (int r, int g, int b,
|
|||
hbox = gtk_hbox_new (TRUE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
|
||||
|
||||
(*selector_data) = p;
|
||||
*selector_data = p;
|
||||
|
||||
return hbox;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
colorsel_gtk_free (void *data)
|
||||
colorsel_gtk_free (gpointer data)
|
||||
{
|
||||
ColorselGtk *p = data;
|
||||
|
||||
/* don't need to gtk_widget_destroy() the selector, since that's
|
||||
* done for us. */
|
||||
* done for us.
|
||||
*/
|
||||
|
||||
g_free (p);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
colorsel_gtk_setcolor (void *data,
|
||||
int r, int g, int b, int set_current)
|
||||
colorsel_gtk_setcolor (gpointer data,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean set_current)
|
||||
{
|
||||
ColorselGtk *p = data;
|
||||
double color[3];
|
||||
|
||||
gdouble color[4];
|
||||
|
||||
color[0] = ((gdouble) r) / 255.999;
|
||||
color[1] = ((gdouble) g) / 255.999;
|
||||
color[2] = ((gdouble) b) / 255.999;
|
||||
color[3] = ((gdouble) a) / 255.999;
|
||||
|
||||
gtk_color_selection_set_color (GTK_COLOR_SELECTION (p->selector), color);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
colorsel_gtk_update (GtkWidget *widget, gpointer data)
|
||||
colorsel_gtk_update (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
ColorselGtk *p = data;
|
||||
int r;
|
||||
int g;
|
||||
int b;
|
||||
double color[3];
|
||||
gint r;
|
||||
gint g;
|
||||
gint b;
|
||||
gint a;
|
||||
gdouble color[4];
|
||||
|
||||
gtk_color_selection_get_color (GTK_COLOR_SELECTION (p->selector), color);
|
||||
|
||||
r = (int) (color[0] * 255.999);
|
||||
g = (int) (color[1] * 255.999);
|
||||
b = (int) (color[2] * 255.999);
|
||||
r = (gint) (color[0] * 255.999);
|
||||
g = (gint) (color[1] * 255.999);
|
||||
b = (gint) (color[2] * 255.999);
|
||||
a = (gint) (color[3] * 255.999);
|
||||
|
||||
p->callback (p->client_data, r, g, b);
|
||||
p->callback (p->client_data, r, g, b, a);
|
||||
}
|
||||
|
||||
/* End of colorsel_gtk.c */
|
||||
|
|
|
@ -40,7 +40,9 @@
|
|||
static GtkWidget * colorsel_triangle_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
GimpColorSelector_Callback callback,
|
||||
gint alpha,
|
||||
gboolean show_alpha,
|
||||
GimpColorSelectorCallback callback,
|
||||
gpointer callback_data,
|
||||
gpointer *selector_data);
|
||||
|
||||
|
@ -50,6 +52,7 @@ static void colorsel_triangle_setcolor (gpointer selector_data,
|
|||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gint set_current);
|
||||
|
||||
static void colorsel_triangle_drag_begin (GtkWidget *widget,
|
||||
|
@ -86,16 +89,18 @@ static GimpColorSelectorMethods methods =
|
|||
};
|
||||
|
||||
|
||||
static GimpModuleInfo info = {
|
||||
NULL,
|
||||
N_("Painter-style color selector as a pluggable color selector"),
|
||||
"Simon Budig <Simon.Budig@unix-ag.org>",
|
||||
"v0.02",
|
||||
"(c) 1999, released under the GPL",
|
||||
"17 Jan 1999"
|
||||
static GimpModuleInfo info =
|
||||
{
|
||||
NULL,
|
||||
N_("Painter-style color selector as a pluggable color selector"),
|
||||
"Simon Budig <Simon.Budig@unix-ag.org>",
|
||||
"v0.02",
|
||||
"(c) 1999, released under the GPL",
|
||||
"17 Jan 1999"
|
||||
};
|
||||
|
||||
static const GtkTargetEntry targets[] = {
|
||||
static const GtkTargetEntry targets[] =
|
||||
{
|
||||
{ "application/x-color", 0 }
|
||||
};
|
||||
|
||||
|
@ -111,30 +116,27 @@ static const GtkTargetEntry targets[] = {
|
|||
GDK_BUTTON_RELEASE_MASK | \
|
||||
GDK_BUTTON_MOTION_MASK
|
||||
|
||||
typedef enum {
|
||||
typedef enum
|
||||
{
|
||||
HUE = 0,
|
||||
SATURATION,
|
||||
VALUE,
|
||||
RED,
|
||||
GREEN,
|
||||
BLUE,
|
||||
HUE_SATURATION,
|
||||
HUE_VALUE,
|
||||
SATURATION_VALUE,
|
||||
RED_GREEN,
|
||||
RED_BLUE,
|
||||
GREEN_BLUE
|
||||
ALPHA
|
||||
} ColorSelectFillType;
|
||||
|
||||
struct _ColorSelect {
|
||||
gint values[6];
|
||||
gdouble oldsat;
|
||||
gdouble oldval;
|
||||
gint mode;
|
||||
GtkWidget *preview;
|
||||
GtkWidget *color_preview;
|
||||
GimpColorSelector_Callback callback;
|
||||
gpointer data;
|
||||
struct _ColorSelect
|
||||
{
|
||||
gint values[7];
|
||||
gdouble oldsat;
|
||||
gdouble oldval;
|
||||
gint mode;
|
||||
GtkWidget *preview;
|
||||
GtkWidget *color_preview;
|
||||
GimpColorSelectorCallback callback;
|
||||
gpointer data;
|
||||
};
|
||||
|
||||
typedef struct _ColorSelect ColorSelect;
|
||||
|
@ -157,31 +159,31 @@ static void color_select_update_hsv_values (ColorSelect *coldata);
|
|||
/* globaly exported init function */
|
||||
G_MODULE_EXPORT GimpModuleStatus
|
||||
module_init (GimpModuleInfo **inforet)
|
||||
{
|
||||
GimpColorSelectorID id;
|
||||
{
|
||||
GimpColorSelectorID id;
|
||||
|
||||
#ifndef __EMX__
|
||||
id = gimp_color_selector_register (_("Triangle"), "triangle.html", &methods);
|
||||
id = gimp_color_selector_register (_("Triangle"), "triangle.html", &methods);
|
||||
#else
|
||||
id = mod_color_selector_register (_("Triangle"), "triangle.html", &methods);
|
||||
id = mod_color_selector_register (_("Triangle"), "triangle.html", &methods);
|
||||
#endif
|
||||
if (id)
|
||||
{
|
||||
info.shutdown_data = id;
|
||||
*inforet = &info;
|
||||
return GIMP_MODULE_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GIMP_MODULE_UNLOAD;
|
||||
}
|
||||
}
|
||||
|
||||
if (id)
|
||||
{
|
||||
info.shutdown_data = id;
|
||||
*inforet = &info;
|
||||
return GIMP_MODULE_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GIMP_MODULE_UNLOAD;
|
||||
}
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
module_unload (gpointer shutdown_data,
|
||||
void (*completed_cb) (gpointer),
|
||||
gpointer completed_data)
|
||||
module_unload (gpointer shutdown_data,
|
||||
GimpColorSelectorFinishedCB completed_cb,
|
||||
gpointer completed_data)
|
||||
{
|
||||
#ifndef __EMX__
|
||||
gimp_color_selector_unregister (shutdown_data, completed_cb, completed_data);
|
||||
|
@ -190,17 +192,19 @@ module_unload (gpointer shutdown_data,
|
|||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*************************************************************/
|
||||
/* methods */
|
||||
|
||||
static GtkWidget *
|
||||
colorsel_triangle_new (gint red, gint green, gint blue,
|
||||
GimpColorSelector_Callback callback,
|
||||
gpointer callback_data,
|
||||
colorsel_triangle_new (gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gboolean show_alpha,
|
||||
GimpColorSelectorCallback callback,
|
||||
gpointer callback_data,
|
||||
/* RETURNS: */
|
||||
gpointer *selector_data)
|
||||
gpointer *selector_data)
|
||||
{
|
||||
ColorSelect *coldata;
|
||||
GtkWidget *preview;
|
||||
|
@ -209,10 +213,12 @@ colorsel_triangle_new (gint red, gint green, gint blue,
|
|||
GtkWidget *hbox;
|
||||
GtkWidget *vbox;
|
||||
|
||||
coldata = g_malloc (sizeof (ColorSelect));
|
||||
coldata->values[RED] = red;
|
||||
coldata = g_new (ColorSelect, 1);
|
||||
coldata->values[RED] = red;
|
||||
coldata->values[GREEN] = green;
|
||||
coldata->values[BLUE] = blue;
|
||||
coldata->values[BLUE] = blue;
|
||||
coldata->values[ALPHA] = alpha;
|
||||
|
||||
color_select_update_hsv_values (coldata);
|
||||
|
||||
coldata->oldsat = 0;
|
||||
|
@ -221,7 +227,7 @@ colorsel_triangle_new (gint red, gint green, gint blue,
|
|||
coldata->mode = 0;
|
||||
|
||||
coldata->callback = callback;
|
||||
coldata->data = callback_data;
|
||||
coldata->data = callback_data;
|
||||
|
||||
preview = create_preview (coldata);
|
||||
coldata->preview = preview;
|
||||
|
@ -249,7 +255,6 @@ colorsel_triangle_new (gint red, gint green, gint blue,
|
|||
return hbox;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
colorsel_triangle_free (gpointer selector_data)
|
||||
{
|
||||
|
@ -257,33 +262,37 @@ colorsel_triangle_free (gpointer selector_data)
|
|||
g_free (selector_data);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
colorsel_triangle_setcolor (gpointer selector_data,
|
||||
gint red, gint green, gint blue,
|
||||
gint set_current)
|
||||
colorsel_triangle_setcolor (gpointer selector_data,
|
||||
gint red,
|
||||
gint green,
|
||||
gint blue,
|
||||
gint alpha,
|
||||
gint set_current)
|
||||
{
|
||||
ColorSelect *coldata;
|
||||
|
||||
coldata = selector_data;
|
||||
|
||||
coldata->values[RED] = red;
|
||||
coldata->values[RED] = red;
|
||||
coldata->values[GREEN] = green;
|
||||
coldata->values[BLUE] = blue;
|
||||
coldata->values[BLUE] = blue;
|
||||
coldata->values[ALPHA] = alpha;
|
||||
|
||||
color_select_update_hsv_values (coldata);
|
||||
|
||||
update_previews (coldata, TRUE);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************/
|
||||
/* helper functions */
|
||||
|
||||
static void
|
||||
color_select_update_rgb_values (ColorSelect *csp)
|
||||
{
|
||||
csp->values[RED] = RINT (((gdouble) csp->values[HUE]) / 360.0 * 255);
|
||||
csp->values[RED] = RINT (((gdouble) csp->values[HUE]) / 360.0 * 255);
|
||||
csp->values[GREEN] = RINT (((gdouble) csp->values[SATURATION]) / 100.0 * 255);
|
||||
csp->values[BLUE] = RINT (((gdouble) csp->values[VALUE]) / 100.0 * 255);
|
||||
csp->values[BLUE] = RINT (((gdouble) csp->values[VALUE]) / 100.0 * 255);
|
||||
|
||||
gimp_hsv_to_rgb_int (&(csp->values[RED]),
|
||||
&(csp->values[GREEN]),
|
||||
|
@ -295,15 +304,15 @@ color_select_update_hsv_values (ColorSelect *csp)
|
|||
{
|
||||
gdouble hue, sat, val;
|
||||
|
||||
hue = (double) csp->values[RED] / 255;
|
||||
sat = (double) csp->values[GREEN] / 255;
|
||||
val = (double) csp->values[BLUE] / 255;
|
||||
hue = (gdouble) csp->values[RED] / 255;
|
||||
sat = (gdouble) csp->values[GREEN] / 255;
|
||||
val = (gdouble) csp->values[BLUE] / 255;
|
||||
|
||||
gimp_rgb_to_hsv_double (&hue, &sat, &val);
|
||||
|
||||
csp->values[HUE] = RINT (hue * 360);
|
||||
csp->values[HUE] = RINT (hue * 360);
|
||||
csp->values[SATURATION] = RINT (sat * 100);
|
||||
csp->values[VALUE] = RINT (val * 100);
|
||||
csp->values[VALUE] = RINT (val * 100);
|
||||
}
|
||||
|
||||
|
||||
|
@ -312,11 +321,11 @@ update_previews (ColorSelect *coldata,
|
|||
gint hue_changed)
|
||||
{
|
||||
GtkWidget *preview;
|
||||
guchar buf[3*PREVIEWSIZE];
|
||||
gint x, y, k, r2, dx, col;
|
||||
gint x0, y0;
|
||||
gdouble hue, sat, val, s, v, atn;
|
||||
gint hx,hy, sx,sy, vx,vy;
|
||||
guchar buf[3*PREVIEWSIZE];
|
||||
gint x, y, k, r2, dx, col;
|
||||
gint x0, y0;
|
||||
gdouble hue, sat, val, s, v, atn;
|
||||
gint hx,hy, sx,sy, vx,vy;
|
||||
|
||||
hue = (gdouble) coldata->values[HUE] * G_PI / 180;
|
||||
|
||||
|
@ -499,10 +508,10 @@ color_selection_callback (GtkWidget *widget,
|
|||
GdkEvent *event)
|
||||
{
|
||||
ColorSelect *coldata;
|
||||
gint x,y, angle, mousex, mousey;
|
||||
gdouble r;
|
||||
gdouble hue, sat, val;
|
||||
gint hx,hy, sx,sy, vx,vy;
|
||||
gint x,y, angle, mousex, mousey;
|
||||
gdouble r;
|
||||
gdouble hue, sat, val;
|
||||
gint hx,hy, sx,sy, vx,vy;
|
||||
|
||||
coldata = gtk_object_get_user_data (GTK_OBJECT (widget));
|
||||
|
||||
|
@ -534,7 +543,8 @@ color_selection_callback (GtkWidget *widget,
|
|||
(*coldata->callback) (coldata->data,
|
||||
coldata->values[RED],
|
||||
coldata->values[GREEN],
|
||||
coldata->values[BLUE]);
|
||||
coldata->values[BLUE],
|
||||
coldata->values[ALPHA]);
|
||||
|
||||
return FALSE;
|
||||
break;
|
||||
|
@ -621,7 +631,8 @@ color_selection_callback (GtkWidget *widget,
|
|||
(*coldata->callback) (coldata->data,
|
||||
coldata->values[RED],
|
||||
coldata->values[GREEN],
|
||||
coldata->values[BLUE]);
|
||||
coldata->values[BLUE],
|
||||
coldata->values[ALPHA]);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -630,8 +641,8 @@ static GtkWidget *
|
|||
create_preview (ColorSelect *coldata)
|
||||
{
|
||||
GtkWidget *preview;
|
||||
guchar buf[3 * PREVIEWSIZE];
|
||||
gint i;
|
||||
guchar buf[3 * PREVIEWSIZE];
|
||||
gint i;
|
||||
|
||||
preview = gtk_preview_new (GTK_PREVIEW_COLOR);
|
||||
gtk_preview_set_dither (GTK_PREVIEW (preview), GDK_RGB_DITHER_MAX);
|
||||
|
@ -641,16 +652,20 @@ create_preview (ColorSelect *coldata)
|
|||
gtk_object_set_user_data (GTK_OBJECT (preview), coldata);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (preview), "motion_notify_event",
|
||||
GTK_SIGNAL_FUNC (color_selection_callback), NULL);
|
||||
GTK_SIGNAL_FUNC (color_selection_callback),
|
||||
NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (preview), "button_press_event",
|
||||
GTK_SIGNAL_FUNC (color_selection_callback), NULL);
|
||||
GTK_SIGNAL_FUNC (color_selection_callback),
|
||||
NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (preview), "button_release_event",
|
||||
GTK_SIGNAL_FUNC (color_selection_callback), NULL);
|
||||
GTK_SIGNAL_FUNC (color_selection_callback),
|
||||
NULL);
|
||||
|
||||
for (i=0; i < 3 * PREVIEWSIZE; i += 3)
|
||||
buf[i] = buf[i+1] = buf[i+2] = BGCOLOR;
|
||||
for (i=0; i < PREVIEWSIZE; i++)
|
||||
gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, i, PREVIEWSIZE);
|
||||
|
||||
gtk_widget_draw (preview, NULL);
|
||||
|
||||
return preview;
|
||||
|
@ -675,22 +690,19 @@ create_color_preview (ColorSelect *coldata)
|
|||
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
|
||||
targets, 1,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gtk_signal_connect (GTK_OBJECT (preview),
|
||||
"drag_begin",
|
||||
gtk_signal_connect (GTK_OBJECT (preview), "drag_begin",
|
||||
GTK_SIGNAL_FUNC (colorsel_triangle_drag_begin),
|
||||
coldata);
|
||||
gtk_signal_connect (GTK_OBJECT (preview),
|
||||
"drag_end",
|
||||
gtk_signal_connect (GTK_OBJECT (preview), "drag_end",
|
||||
GTK_SIGNAL_FUNC (colorsel_triangle_drag_end),
|
||||
coldata);
|
||||
gtk_signal_connect (GTK_OBJECT (preview),
|
||||
"drag_data_get",
|
||||
gtk_signal_connect (GTK_OBJECT (preview), "drag_data_get",
|
||||
GTK_SIGNAL_FUNC (colorsel_triangle_drag_handle),
|
||||
coldata);
|
||||
gtk_signal_connect (GTK_OBJECT (preview),
|
||||
"drag_data_received",
|
||||
gtk_signal_connect (GTK_OBJECT (preview), "drag_data_received",
|
||||
GTK_SIGNAL_FUNC (colorsel_triangle_drop_handle),
|
||||
coldata);
|
||||
|
||||
return preview;
|
||||
}
|
||||
|
||||
|
@ -700,8 +712,8 @@ colorsel_triangle_drag_begin (GtkWidget *widget,
|
|||
GdkDragContext *context,
|
||||
gpointer data)
|
||||
{
|
||||
GtkWidget *window;
|
||||
GdkColor bg;
|
||||
GtkWidget *window;
|
||||
GdkColor bg;
|
||||
ColorSelect *coldata;
|
||||
|
||||
coldata = (ColorSelect *) data;
|
||||
|
@ -715,9 +727,9 @@ colorsel_triangle_drag_begin (GtkWidget *widget,
|
|||
window,
|
||||
(GtkDestroyNotify) gtk_widget_destroy);
|
||||
|
||||
bg.red = 256 * coldata->values[RED];
|
||||
bg.red = 256 * coldata->values[RED];
|
||||
bg.green = 256 * coldata->values[GREEN];
|
||||
bg.blue = 256 * coldata->values[BLUE];
|
||||
bg.blue = 256 * coldata->values[BLUE];
|
||||
|
||||
gdk_color_alloc (gtk_widget_get_colormap (window), &bg);
|
||||
gdk_window_set_background (window->window, &bg);
|
||||
|
@ -745,7 +757,7 @@ colorsel_triangle_drop_handle (GtkWidget *widget,
|
|||
guint time,
|
||||
gpointer data)
|
||||
{
|
||||
guint16 *vals;
|
||||
guint16 *vals;
|
||||
ColorSelect *coldata;
|
||||
|
||||
coldata = (ColorSelect *) data;
|
||||
|
@ -765,6 +777,7 @@ colorsel_triangle_drop_handle (GtkWidget *widget,
|
|||
coldata->values[RED] = vals[0] / 256;
|
||||
coldata->values[GREEN] = vals[1] / 256;
|
||||
coldata->values[BLUE] = vals[2] / 256;
|
||||
coldata->values[ALPHA] = vals[3] / 256;
|
||||
|
||||
color_select_update_hsv_values (coldata);
|
||||
update_previews (coldata, TRUE);
|
||||
|
@ -778,7 +791,7 @@ colorsel_triangle_drag_handle (GtkWidget *widget,
|
|||
guint time,
|
||||
gpointer data)
|
||||
{
|
||||
guint16 vals[4];
|
||||
guint16 vals[4];
|
||||
ColorSelect *coldata;
|
||||
|
||||
coldata = (ColorSelect *) data;
|
||||
|
@ -786,7 +799,7 @@ colorsel_triangle_drag_handle (GtkWidget *widget,
|
|||
vals[0] = coldata->values[RED] * 256;
|
||||
vals[1] = coldata->values[GREEN] * 256;
|
||||
vals[2] = coldata->values[BLUE] * 256;
|
||||
vals[3] = 0xffff;
|
||||
vals[3] = coldata->values[ALPHA] * 256;
|
||||
|
||||
gtk_selection_data_set (selection_data,
|
||||
gdk_atom_intern ("application/x-color", FALSE),
|
||||
|
|
|
@ -34,13 +34,22 @@
|
|||
#include <libgimp/gimpintl.h>
|
||||
|
||||
/* prototypes */
|
||||
static GtkWidget * colorsel_water_new (int, int, int,
|
||||
GimpColorSelector_Callback,
|
||||
void *,
|
||||
void **);
|
||||
static void colorsel_water_free (void *);
|
||||
static void colorsel_water_setcolor (void *, int, int, int, int);
|
||||
static void colorsel_water_update ();
|
||||
static GtkWidget * colorsel_water_new (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean show_alpha,
|
||||
GimpColorSelectorCallback,
|
||||
gpointer,
|
||||
gpointer *);
|
||||
static void colorsel_water_free (gpointer data);
|
||||
static void colorsel_water_setcolor (gpointer data,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean set_current);
|
||||
static void colorsel_water_update (void);
|
||||
static void colorsel_water_drag_begin (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
gpointer data);
|
||||
|
@ -71,17 +80,19 @@ static GimpColorSelectorMethods methods =
|
|||
};
|
||||
|
||||
|
||||
static GimpModuleInfo info = {
|
||||
NULL,
|
||||
N_("Watercolor style color selector as a pluggable module"),
|
||||
"Raph Levien <raph@acm.org>, Sven Neumann <sven@gimp.org>",
|
||||
"v0.3",
|
||||
"(c) 1998-1999, released under the GPL",
|
||||
"May, 10 1999"
|
||||
static GimpModuleInfo info =
|
||||
{
|
||||
NULL,
|
||||
N_("Watercolor style color selector as a pluggable module"),
|
||||
"Raph Levien <raph@acm.org>, Sven Neumann <sven@gimp.org>",
|
||||
"v0.3",
|
||||
"(c) 1998-1999, released under the GPL",
|
||||
"May, 10 1999"
|
||||
};
|
||||
|
||||
|
||||
static const GtkTargetEntry targets[] = {
|
||||
static const GtkTargetEntry targets[] =
|
||||
{
|
||||
{ "application/x-color", 0 }
|
||||
};
|
||||
|
||||
|
@ -97,26 +108,27 @@ module_init (GimpModuleInfo **inforet)
|
|||
id = gimp_color_selector_register (_("Watercolor"), "watercolor.html",
|
||||
&methods);
|
||||
#else
|
||||
id = mod_color_selector_register (_("Watercolor"), "watercolor.html",
|
||||
&methods);
|
||||
id = mod_color_selector_register (_("Watercolor"), "watercolor.html",
|
||||
&methods);
|
||||
#endif
|
||||
|
||||
if (id)
|
||||
{
|
||||
info.shutdown_data = id;
|
||||
*inforet = &info;
|
||||
return GIMP_MODULE_OK;
|
||||
}
|
||||
{
|
||||
info.shutdown_data = id;
|
||||
*inforet = &info;
|
||||
return GIMP_MODULE_OK;
|
||||
}
|
||||
else
|
||||
{
|
||||
return GIMP_MODULE_UNLOAD;
|
||||
}
|
||||
{
|
||||
return GIMP_MODULE_UNLOAD;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
module_unload (void *shutdown_data,
|
||||
void (*completed_cb)(void *),
|
||||
void *completed_data)
|
||||
module_unload (gpointer shutdown_data,
|
||||
GimpColorSelectorFinishedCB completed_cb,
|
||||
gpointer completed_data)
|
||||
{
|
||||
#ifndef __EMX__
|
||||
gimp_color_selector_unregister (shutdown_data, completed_cb, completed_data);
|
||||
|
@ -128,61 +140,70 @@ module_unload (void *shutdown_data,
|
|||
|
||||
/* definitions and variables */
|
||||
|
||||
#define N_BUCKETS 10
|
||||
#define LAST_BUCKET (N_BUCKETS) /* bucket number 0 is current color */
|
||||
#define IMAGE_SIZE 200
|
||||
#define BUCKET_SIZE 20
|
||||
#define N_BUCKETS 10
|
||||
#define LAST_BUCKET (N_BUCKETS) /* bucket number 0 is current color */
|
||||
#define IMAGE_SIZE 200
|
||||
#define BUCKET_SIZE 20
|
||||
#define PREVIEW_SIZE 40
|
||||
|
||||
typedef struct {
|
||||
GimpColorSelector_Callback callback;
|
||||
void *data;
|
||||
typedef struct
|
||||
{
|
||||
GimpColorSelectorCallback callback;
|
||||
gpointer data;
|
||||
} ColorselWater;
|
||||
|
||||
static gdouble bucket[N_BUCKETS + 1][3];
|
||||
static GtkWidget *color_preview[N_BUCKETS + 1];
|
||||
static gdouble last_x, last_y, last_pressure;
|
||||
static gfloat pressure_adjust = 1.0;
|
||||
static guint32 motion_time;
|
||||
static gint button_state;
|
||||
static gdouble bucket[N_BUCKETS + 1][4];
|
||||
static GtkWidget *color_preview[N_BUCKETS + 1];
|
||||
static gdouble last_x, last_y, last_pressure;
|
||||
static gfloat pressure_adjust = 1.0;
|
||||
static guint32 motion_time;
|
||||
static gint button_state;
|
||||
static ColorselWater *coldata;
|
||||
|
||||
|
||||
static void
|
||||
set_bucket (gint i, gdouble r, gdouble g, gdouble b)
|
||||
set_bucket (gint i,
|
||||
gdouble r,
|
||||
gdouble g,
|
||||
gdouble b,
|
||||
gdouble a)
|
||||
{
|
||||
if (i >= 0 && i <= N_BUCKETS)
|
||||
{
|
||||
bucket[i][0] = r;
|
||||
bucket[i][1] = g;
|
||||
bucket[i][2] = b;
|
||||
bucket[i][3] = a;
|
||||
}
|
||||
}
|
||||
|
||||
static gdouble
|
||||
calc (gdouble x, gdouble y, gdouble angle)
|
||||
calc (gdouble x,
|
||||
gdouble y,
|
||||
gdouble angle)
|
||||
{
|
||||
gdouble s, c;
|
||||
|
||||
s = 1.6 * sin (angle * G_PI / 180) * 256.0 / IMAGE_SIZE;
|
||||
c = 1.6 * cos (angle * G_PI / 180) * 256.0 / IMAGE_SIZE;
|
||||
|
||||
return 128 + (x - (IMAGE_SIZE >> 1)) * c - (y - (IMAGE_SIZE >> 1)) * s;
|
||||
}
|
||||
|
||||
static guchar
|
||||
bucket_to_byte (gdouble val)
|
||||
{
|
||||
return CLAMP ((gint)(val * 280 - 25), 0, 255);
|
||||
return CLAMP ((gint) (val * 280 - 25), 0, 255);
|
||||
}
|
||||
|
||||
static void
|
||||
draw_bucket (gint i)
|
||||
{
|
||||
guchar *buf;
|
||||
gint x, y;
|
||||
gint width;
|
||||
gint height;
|
||||
guchar r, g, b;
|
||||
gint x, y;
|
||||
gint width;
|
||||
gint height;
|
||||
guchar r, g, b;
|
||||
|
||||
g_return_if_fail (i >= 0 && i <= N_BUCKETS);
|
||||
|
||||
|
@ -192,11 +213,12 @@ draw_bucket (gint i)
|
|||
|
||||
width = (i == 0 ? PREVIEW_SIZE : BUCKET_SIZE);
|
||||
height = width;
|
||||
buf = g_new (guchar, 3*width);
|
||||
buf = g_new (guchar, 3 * width);
|
||||
|
||||
r = bucket_to_byte (bucket[i][0]);
|
||||
g = bucket_to_byte (bucket[i][1]);
|
||||
b = bucket_to_byte (bucket[i][2]);
|
||||
|
||||
for (x = 0; x < width; x++)
|
||||
{
|
||||
buf[x * 3] = r;
|
||||
|
@ -212,7 +234,7 @@ draw_bucket (gint i)
|
|||
|
||||
|
||||
static void
|
||||
draw_all_buckets ()
|
||||
draw_all_buckets (void)
|
||||
{
|
||||
gint i;
|
||||
|
||||
|
@ -239,12 +261,13 @@ pick_up_bucket_callback (GtkWidget *widget,
|
|||
bucket[0][0] = bucket[i][0];
|
||||
bucket[0][1] = bucket[i][1];
|
||||
bucket[0][2] = bucket[i][2];
|
||||
bucket[0][3] = bucket[i][3];
|
||||
colorsel_water_update ();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
shift_buckets ()
|
||||
shift_buckets (void)
|
||||
{
|
||||
gint i;
|
||||
|
||||
|
@ -257,7 +280,8 @@ shift_buckets ()
|
|||
{
|
||||
if (bucket[i][0] == bucket[0][0] &&
|
||||
bucket[i][1] == bucket[0][1] &&
|
||||
bucket[i][2] == bucket[0][2])
|
||||
bucket[i][2] == bucket[0][2] &&
|
||||
bucket[i][3] == bucket[0][3])
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -273,6 +297,7 @@ shift_buckets ()
|
|||
bucket[i][0] = bucket[i-1][0];
|
||||
bucket[i][1] = bucket[i-1][1];
|
||||
bucket[i][2] = bucket[i-1][2];
|
||||
bucket[i][3] = bucket[i-1][3];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -280,8 +305,8 @@ shift_buckets ()
|
|||
static void
|
||||
select_area_draw (GtkWidget *preview)
|
||||
{
|
||||
guchar buf[3 * IMAGE_SIZE];
|
||||
gint x, y;
|
||||
guchar buf[3 * IMAGE_SIZE];
|
||||
gint x, y;
|
||||
gdouble r, g, b;
|
||||
gdouble dr, dg, db;
|
||||
|
||||
|
@ -297,24 +322,28 @@ select_area_draw (GtkWidget *preview)
|
|||
|
||||
for (x = 0; x < IMAGE_SIZE; x++)
|
||||
{
|
||||
buf[x * 3] = CLAMP ((gint)r, 0, 255);
|
||||
buf[x * 3 + 1] = CLAMP ((gint)g, 0, 255);
|
||||
buf[x * 3 + 2] = CLAMP ((gint)b, 0, 255);
|
||||
buf[x * 3] = CLAMP ((gint) r, 0, 255);
|
||||
buf[x * 3 + 1] = CLAMP ((gint) g, 0, 255);
|
||||
buf[x * 3 + 2] = CLAMP ((gint) b, 0, 255);
|
||||
r += dr;
|
||||
g += dg;
|
||||
b += db;
|
||||
}
|
||||
|
||||
gtk_preview_draw_row (GTK_PREVIEW (preview), buf, 0, y, IMAGE_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
add_pigment (gboolean erase, gdouble x, gdouble y, gdouble much)
|
||||
add_pigment (gboolean erase,
|
||||
gdouble x,
|
||||
gdouble y,
|
||||
gdouble much)
|
||||
{
|
||||
gdouble r, g, b;
|
||||
|
||||
much *= (gdouble)pressure_adjust;
|
||||
much *= (gdouble) pressure_adjust;
|
||||
|
||||
#ifdef VERBOSE
|
||||
g_print ("x: %g, y: %g, much: %g\n", x, y, much);
|
||||
|
@ -349,8 +378,11 @@ add_pigment (gboolean erase, gdouble x, gdouble y, gdouble much)
|
|||
}
|
||||
|
||||
static void
|
||||
draw_brush (GtkWidget *widget, gboolean erase,
|
||||
gdouble x, gdouble y, gdouble pressure)
|
||||
draw_brush (GtkWidget *widget,
|
||||
gboolean erase,
|
||||
gdouble x,
|
||||
gdouble y,
|
||||
gdouble pressure)
|
||||
{
|
||||
gdouble much; /* how much pigment to mix in */
|
||||
|
||||
|
@ -372,7 +404,8 @@ draw_brush (GtkWidget *widget, gboolean erase,
|
|||
|
||||
|
||||
static gint
|
||||
button_press_event (GtkWidget *widget, GdkEventButton *event)
|
||||
button_press_event (GtkWidget *widget,
|
||||
GdkEventButton *event)
|
||||
{
|
||||
gboolean erase;
|
||||
|
||||
|
@ -395,7 +428,8 @@ button_press_event (GtkWidget *widget, GdkEventButton *event)
|
|||
}
|
||||
|
||||
static gint
|
||||
button_release_event (GtkWidget *widget, GdkEventButton *event)
|
||||
button_release_event (GtkWidget *widget,
|
||||
GdkEventButton *event)
|
||||
{
|
||||
button_state &= ~(1 << event->button);
|
||||
|
||||
|
@ -403,14 +437,18 @@ button_release_event (GtkWidget *widget, GdkEventButton *event)
|
|||
}
|
||||
|
||||
static gint
|
||||
motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
|
||||
motion_notify_event (GtkWidget *widget,
|
||||
GdkEventMotion *event)
|
||||
{
|
||||
GdkTimeCoord *coords;
|
||||
int nevents;
|
||||
int i;
|
||||
gboolean erase;
|
||||
gint nevents;
|
||||
gint i;
|
||||
gboolean erase;
|
||||
|
||||
if (event->state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK | GDK_BUTTON3_MASK | GDK_BUTTON4_MASK))
|
||||
if (event->state & (GDK_BUTTON1_MASK |
|
||||
GDK_BUTTON2_MASK |
|
||||
GDK_BUTTON3_MASK |
|
||||
GDK_BUTTON4_MASK))
|
||||
{
|
||||
coords = gdk_input_motion_events (event->window, event->deviceid,
|
||||
motion_time, event->time,
|
||||
|
@ -454,7 +492,8 @@ motion_notify_event (GtkWidget *widget, GdkEventMotion *event)
|
|||
}
|
||||
|
||||
static gint
|
||||
proximity_out_event (GtkWidget *widget, GdkEventProximity *event)
|
||||
proximity_out_event (GtkWidget *widget,
|
||||
GdkEventProximity *event)
|
||||
{
|
||||
#ifdef VERBOSE
|
||||
g_print ("proximity out\n");
|
||||
|
@ -463,7 +502,8 @@ proximity_out_event (GtkWidget *widget, GdkEventProximity *event)
|
|||
}
|
||||
|
||||
static void
|
||||
new_color_callback (GtkWidget *widget, gpointer data)
|
||||
new_color_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
#ifdef VERBOSE
|
||||
g_print ("new color\n");
|
||||
|
@ -474,6 +514,7 @@ new_color_callback (GtkWidget *widget, gpointer data)
|
|||
bucket[0][0] = 1.0;
|
||||
bucket[0][1] = 1.0;
|
||||
bucket[0][2] = 1.0;
|
||||
bucket[0][3] = 1.0;
|
||||
|
||||
draw_all_buckets ();
|
||||
colorsel_water_update ();
|
||||
|
@ -482,7 +523,8 @@ new_color_callback (GtkWidget *widget, gpointer data)
|
|||
}
|
||||
|
||||
static void
|
||||
reset_color_callback (GtkWidget *widget, gpointer data)
|
||||
reset_color_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
{
|
||||
#ifdef VERBOSE
|
||||
g_print ("reset color\n");
|
||||
|
@ -492,6 +534,7 @@ reset_color_callback (GtkWidget *widget, gpointer data)
|
|||
bucket[0][0] = 1.0;
|
||||
bucket[0][1] = 1.0;
|
||||
bucket[0][2] = 1.0;
|
||||
bucket[0][3] = 1.0;
|
||||
|
||||
colorsel_water_update ();
|
||||
|
||||
|
@ -499,7 +542,8 @@ reset_color_callback (GtkWidget *widget, gpointer data)
|
|||
}
|
||||
|
||||
static void
|
||||
pressure_adjust_update (GtkAdjustment *adj, gpointer data)
|
||||
pressure_adjust_update (GtkAdjustment *adj,
|
||||
gpointer data)
|
||||
{
|
||||
pressure_adjust = adj->value / 100;
|
||||
}
|
||||
|
@ -510,11 +554,15 @@ pressure_adjust_update (GtkAdjustment *adj, gpointer data)
|
|||
|
||||
|
||||
static GtkWidget*
|
||||
colorsel_water_new (int r, int g, int b,
|
||||
GimpColorSelector_Callback callback,
|
||||
void *callback_data,
|
||||
colorsel_water_new (gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean show_alpha,
|
||||
GimpColorSelectorCallback callback,
|
||||
gpointer callback_data,
|
||||
/* RETURNS: */
|
||||
void **selector_data)
|
||||
gpointer *selector_data)
|
||||
{
|
||||
GtkWidget *preview;
|
||||
GtkWidget *event_box;
|
||||
|
@ -533,10 +581,10 @@ colorsel_water_new (int r, int g, int b,
|
|||
GtkWidget *scale;
|
||||
guint i;
|
||||
|
||||
coldata = g_malloc (sizeof (ColorselWater));
|
||||
coldata = g_new (ColorselWater, 1);
|
||||
|
||||
coldata->callback = callback;
|
||||
coldata->data = callback_data;
|
||||
coldata->data = callback_data;
|
||||
|
||||
*selector_data = coldata;
|
||||
|
||||
|
@ -559,24 +607,30 @@ colorsel_water_new (int r, int g, int b,
|
|||
|
||||
/* Event signals */
|
||||
gtk_signal_connect (GTK_OBJECT (event_box), "motion_notify_event",
|
||||
(GtkSignalFunc) motion_notify_event, NULL);
|
||||
GTK_SIGNAL_FUNC (motion_notify_event),
|
||||
NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (event_box), "button_press_event",
|
||||
(GtkSignalFunc) button_press_event, NULL);
|
||||
GTK_SIGNAL_FUNC (button_press_event),
|
||||
NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (event_box), "button_release_event",
|
||||
(GtkSignalFunc) button_release_event, NULL);
|
||||
GTK_SIGNAL_FUNC (button_release_event),
|
||||
NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (event_box), "proximity_out_event",
|
||||
(GtkSignalFunc) proximity_out_event, NULL);
|
||||
GTK_SIGNAL_FUNC (proximity_out_event),
|
||||
NULL);
|
||||
|
||||
gtk_widget_set_events (event_box, GDK_EXPOSURE_MASK
|
||||
| GDK_LEAVE_NOTIFY_MASK
|
||||
| GDK_BUTTON_PRESS_MASK
|
||||
| GDK_KEY_PRESS_MASK
|
||||
| GDK_POINTER_MOTION_MASK
|
||||
| GDK_POINTER_MOTION_HINT_MASK
|
||||
| GDK_PROXIMITY_OUT_MASK);
|
||||
gtk_widget_set_events (event_box,
|
||||
GDK_EXPOSURE_MASK |
|
||||
GDK_LEAVE_NOTIFY_MASK |
|
||||
GDK_BUTTON_PRESS_MASK |
|
||||
GDK_KEY_PRESS_MASK |
|
||||
GDK_POINTER_MOTION_MASK |
|
||||
GDK_POINTER_MOTION_HINT_MASK |
|
||||
GDK_PROXIMITY_OUT_MASK);
|
||||
|
||||
/* The following call enables tracking and processing of extension
|
||||
events for the drawing area */
|
||||
* events for the drawing area
|
||||
*/
|
||||
gtk_widget_set_extension_events (event_box, GDK_EXTENSION_EVENTS_ALL);
|
||||
gtk_widget_grab_focus (event_box);
|
||||
|
||||
|
@ -605,20 +659,16 @@ colorsel_water_new (int r, int g, int b,
|
|||
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
|
||||
targets, 1,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gtk_signal_connect (GTK_OBJECT (color_preview[0]),
|
||||
"drag_begin",
|
||||
gtk_signal_connect (GTK_OBJECT (color_preview[0]), "drag_begin",
|
||||
GTK_SIGNAL_FUNC (colorsel_water_drag_begin),
|
||||
bucket[0]);
|
||||
gtk_signal_connect (GTK_OBJECT (color_preview[0]),
|
||||
"drag_end",
|
||||
gtk_signal_connect (GTK_OBJECT (color_preview[0]), "drag_end",
|
||||
GTK_SIGNAL_FUNC (colorsel_water_drag_end),
|
||||
bucket[0]);
|
||||
gtk_signal_connect (GTK_OBJECT (color_preview[0]),
|
||||
"drag_data_get",
|
||||
gtk_signal_connect (GTK_OBJECT (color_preview[0]), "drag_data_get",
|
||||
GTK_SIGNAL_FUNC (colorsel_water_drag_handle),
|
||||
bucket[0]);
|
||||
gtk_signal_connect (GTK_OBJECT (color_preview[0]),
|
||||
"drag_data_received",
|
||||
gtk_signal_connect (GTK_OBJECT (color_preview[0]), "drag_data_received",
|
||||
GTK_SIGNAL_FUNC (colorsel_water_drop_handle),
|
||||
bucket[0]);
|
||||
gtk_container_add (GTK_CONTAINER (frame), color_preview[0]);
|
||||
|
@ -629,12 +679,12 @@ colorsel_water_new (int r, int g, int b,
|
|||
button = gtk_button_new_with_label (_("New"));
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "clicked",
|
||||
(GtkSignalFunc) new_color_callback,
|
||||
GTK_SIGNAL_FUNC (new_color_callback),
|
||||
NULL);
|
||||
button = gtk_button_new_with_label (_("Reset"));
|
||||
gtk_container_add (GTK_CONTAINER (bbox), button);
|
||||
gtk_signal_connect (GTK_OBJECT (button), "clicked",
|
||||
(GtkSignalFunc) reset_color_callback,
|
||||
GTK_SIGNAL_FUNC (reset_color_callback),
|
||||
NULL);
|
||||
|
||||
frame = gtk_frame_new (_("Color History"));
|
||||
|
@ -649,7 +699,7 @@ colorsel_water_new (int r, int g, int b,
|
|||
button = gtk_button_new ();
|
||||
gtk_signal_connect (GTK_OBJECT (button), "clicked",
|
||||
GTK_SIGNAL_FUNC (pick_up_bucket_callback),
|
||||
(gpointer) GUINT_TO_POINTER (i+1));
|
||||
GUINT_TO_POINTER (i + 1));
|
||||
gtk_drag_dest_set (button,
|
||||
GTK_DEST_DEFAULT_HIGHLIGHT |
|
||||
GTK_DEST_DEFAULT_MOTION |
|
||||
|
@ -660,20 +710,16 @@ colorsel_water_new (int r, int g, int b,
|
|||
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
|
||||
targets, 1,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gtk_signal_connect (GTK_OBJECT (button),
|
||||
"drag_begin",
|
||||
gtk_signal_connect (GTK_OBJECT (button), "drag_begin",
|
||||
GTK_SIGNAL_FUNC (colorsel_water_drag_begin),
|
||||
bucket[i+1]);
|
||||
gtk_signal_connect (GTK_OBJECT (button),
|
||||
"drag_end",
|
||||
gtk_signal_connect (GTK_OBJECT (button), "drag_end",
|
||||
GTK_SIGNAL_FUNC (colorsel_water_drag_end),
|
||||
bucket[i+1]);
|
||||
gtk_signal_connect (GTK_OBJECT (button),
|
||||
"drag_data_get",
|
||||
gtk_signal_connect (GTK_OBJECT (button), "drag_data_get",
|
||||
GTK_SIGNAL_FUNC (colorsel_water_drag_handle),
|
||||
bucket[i+1]);
|
||||
gtk_signal_connect (GTK_OBJECT (button),
|
||||
"drag_data_received",
|
||||
gtk_signal_connect (GTK_OBJECT (button), "drag_data_received",
|
||||
GTK_SIGNAL_FUNC (colorsel_water_drop_handle),
|
||||
bucket[i+1]);
|
||||
gtk_table_attach_defaults (GTK_TABLE (table),
|
||||
|
@ -681,9 +727,10 @@ colorsel_water_new (int r, int g, int b,
|
|||
i % 5, (i % 5) + 1,
|
||||
i / 5, (i/ 5) + 1);
|
||||
color_preview[i+1] = gtk_preview_new (GTK_PREVIEW_COLOR);
|
||||
gtk_preview_size (GTK_PREVIEW (color_preview[i+1]), BUCKET_SIZE, BUCKET_SIZE);
|
||||
gtk_preview_size (GTK_PREVIEW (color_preview[i+1]),
|
||||
BUCKET_SIZE, BUCKET_SIZE);
|
||||
gtk_container_add (GTK_CONTAINER (button), color_preview[i+1]);
|
||||
set_bucket (i+1, 1.0, 1.0, 1.0);
|
||||
set_bucket (i+1, 1.0, 1.0, 1.0, 1.0);
|
||||
}
|
||||
|
||||
hbox2 = gtk_hbox_new (FALSE, 0);
|
||||
|
@ -700,44 +747,52 @@ colorsel_water_new (int r, int g, int b,
|
|||
|
||||
gtk_widget_show_all (hbox);
|
||||
|
||||
colorsel_water_setcolor (coldata, r, g, b, 0);
|
||||
colorsel_water_setcolor (coldata, r, g, b, a, 0);
|
||||
draw_all_buckets ();
|
||||
|
||||
return (vbox);
|
||||
return vbox;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
colorsel_water_free (void *selector_data)
|
||||
colorsel_water_free (gpointer selector_data)
|
||||
{
|
||||
g_free (selector_data);
|
||||
}
|
||||
|
||||
static void
|
||||
colorsel_water_setcolor (void *data, int r, int g, int b,
|
||||
int set_current)
|
||||
colorsel_water_setcolor (gpointer data,
|
||||
gint r,
|
||||
gint g,
|
||||
gint b,
|
||||
gint a,
|
||||
gboolean set_current)
|
||||
{
|
||||
set_bucket (0,
|
||||
((gdouble) r) / 255.999,
|
||||
((gdouble) g) / 255.999,
|
||||
((gdouble) b) / 255.999);
|
||||
((gdouble) b) / 255.999,
|
||||
((gdouble) a) / 255.999);
|
||||
|
||||
draw_bucket (0);
|
||||
}
|
||||
|
||||
static void
|
||||
colorsel_water_update ()
|
||||
colorsel_water_update (void)
|
||||
{
|
||||
int r;
|
||||
int g;
|
||||
int b;
|
||||
gint r;
|
||||
gint g;
|
||||
gint b;
|
||||
gint a;
|
||||
|
||||
r = (int) (bucket[0][0] * 255.999);
|
||||
g = (int) (bucket[0][1] * 255.999);
|
||||
b = (int) (bucket[0][2] * 255.999);
|
||||
r = (gint) (bucket[0][0] * 255.999);
|
||||
g = (gint) (bucket[0][1] * 255.999);
|
||||
b = (gint) (bucket[0][2] * 255.999);
|
||||
a = (gint) (bucket[0][3] * 255.999);
|
||||
|
||||
draw_bucket (0);
|
||||
|
||||
coldata->callback (coldata->data, r, g, b);
|
||||
coldata->callback (coldata->data, r, g, b, a);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -746,8 +801,8 @@ colorsel_water_drag_begin (GtkWidget *widget,
|
|||
gpointer data)
|
||||
{
|
||||
GtkWidget *window;
|
||||
gdouble *colors;
|
||||
GdkColor bg;
|
||||
gdouble *colors;
|
||||
GdkColor bg;
|
||||
|
||||
colors = (gdouble *)data;
|
||||
|
||||
|
@ -760,9 +815,9 @@ colorsel_water_drag_begin (GtkWidget *widget,
|
|||
window,
|
||||
(GtkDestroyNotify) gtk_widget_destroy);
|
||||
|
||||
bg.red = 0xffff * colors[0];
|
||||
bg.red = 0xffff * colors[0];
|
||||
bg.green = 0xffff * colors[1];
|
||||
bg.blue = 0xffff * colors[2];
|
||||
bg.blue = 0xffff * colors[2];
|
||||
|
||||
gdk_color_alloc (gtk_widget_get_colormap (window), &bg);
|
||||
gdk_window_set_background (window->window, &bg);
|
||||
|
@ -805,11 +860,12 @@ colorsel_water_drop_handle (GtkWidget *widget,
|
|||
return;
|
||||
}
|
||||
|
||||
vals = (guint16 *)selection_data->data;
|
||||
vals = (guint16 *) selection_data->data;
|
||||
|
||||
colors[0] = (gdouble)vals[0] / 0xffff;
|
||||
colors[1] = (gdouble)vals[1] / 0xffff;
|
||||
colors[2] = (gdouble)vals[2] / 0xffff;
|
||||
colors[3] = (gdouble)vals[3] / 0xffff;
|
||||
|
||||
draw_all_buckets ();
|
||||
colorsel_water_update ();
|
||||
|
@ -831,16 +887,13 @@ colorsel_water_drag_handle (GtkWidget *widget,
|
|||
vals[0] = colors[0] * 0xffff;
|
||||
vals[1] = colors[1] * 0xffff;
|
||||
vals[2] = colors[2] * 0xffff;
|
||||
vals[3] = 0xffff;
|
||||
vals[3] = colors[3] * 0xffff;
|
||||
|
||||
gtk_selection_data_set (selection_data,
|
||||
gdk_atom_intern ("application/x-color", FALSE),
|
||||
16, (guchar *)vals, 8);
|
||||
}
|
||||
|
||||
/* End of colorsel_gtk.c */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue