mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 17:33:25 +00:00
app: GimpColorDialog now fully uses GeglColor.
This commit is contained in:
parent
4b3702bfc1
commit
636a33aed2
8 changed files with 65 additions and 160 deletions
|
@ -80,7 +80,7 @@
|
|||
/* local function prototypes */
|
||||
|
||||
static void view_padding_color_dialog_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *color,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpDisplayShell *shell);
|
||||
|
||||
|
@ -1066,9 +1066,7 @@ view_padding_color_cmd_callback (GimpAction *action,
|
|||
{
|
||||
GimpImage *image = gimp_display_get_image (display);
|
||||
GimpDisplayShell *shell = gimp_display_get_shell (display);
|
||||
GimpRGB rgb;
|
||||
|
||||
gegl_color_get_pixel (options->padding_color, babl_format ("R'G'B'A double"), &rgb);
|
||||
dialog =
|
||||
gimp_color_dialog_new (GIMP_VIEWABLE (image),
|
||||
action_data_get_context (data),
|
||||
|
@ -1078,7 +1076,7 @@ view_padding_color_cmd_callback (GimpAction *action,
|
|||
_("Set Custom Canvas Padding Color"),
|
||||
GTK_WIDGET (shell),
|
||||
NULL, NULL,
|
||||
&rgb,
|
||||
options->padding_color,
|
||||
TRUE, FALSE);
|
||||
|
||||
g_signal_connect (dialog, "update",
|
||||
|
@ -1176,20 +1174,16 @@ view_fullscreen_cmd_callback (GimpAction *action,
|
|||
|
||||
static void
|
||||
view_padding_color_dialog_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *rgb,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpDisplayShell *shell)
|
||||
{
|
||||
GimpImageWindow *window;
|
||||
GimpDisplayOptions *options;
|
||||
GeglColor *color;
|
||||
GeglColor *old_color;
|
||||
GimpCanvasPaddingMode old_padding_mode;
|
||||
gboolean fullscreen;
|
||||
|
||||
color = gegl_color_new (NULL);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgb);
|
||||
|
||||
window = gimp_display_shell_get_window (shell);
|
||||
old_color = g_object_get_data (G_OBJECT (dialog), "old-color");
|
||||
old_padding_mode = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (dialog), "old-padding-mode"));
|
||||
|
@ -1231,6 +1225,4 @@ view_padding_color_dialog_update (GimpColorDialog *dialog,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
g_object_unref (color);
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ gimp_color_dialog_class_init (GimpColorDialogClass *klass)
|
|||
NULL, NULL,
|
||||
gimp_marshal_VOID__BOXED_ENUM,
|
||||
G_TYPE_NONE, 2,
|
||||
GIMP_TYPE_RGB,
|
||||
GEGL_TYPE_COLOR,
|
||||
GIMP_TYPE_COLOR_DIALOG_STATE);
|
||||
|
||||
g_object_class_install_property (object_class, PROP_USER_CONTEXT_AWARE,
|
||||
|
@ -336,7 +336,6 @@ gimp_color_dialog_response (GtkDialog *gtk_dialog,
|
|||
GimpColormapSelection *colormap_selection;
|
||||
gint col_index;
|
||||
GeglColor *color = NULL;
|
||||
GimpRGB rgb;
|
||||
|
||||
colormap_selection = GIMP_COLORMAP_SELECTION (dialog->colormap_selection);
|
||||
col_index = gimp_colormap_selection_get_index (colormap_selection, NULL);
|
||||
|
@ -356,7 +355,6 @@ gimp_color_dialog_response (GtkDialog *gtk_dialog,
|
|||
|
||||
case GTK_RESPONSE_OK:
|
||||
color = gimp_color_selection_get_color (GIMP_COLOR_SELECTION (dialog->selection));
|
||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
||||
|
||||
if (dialog->colormap_editing && image)
|
||||
{
|
||||
|
@ -372,14 +370,14 @@ gimp_color_dialog_response (GtkDialog *gtk_dialog,
|
|||
|
||||
gtk_stack_set_visible_child_name (GTK_STACK (dialog->stack), "colormap");
|
||||
g_signal_emit (dialog, color_dialog_signals[UPDATE], 0,
|
||||
&rgb, GIMP_COLOR_DIALOG_UPDATE);
|
||||
color, GIMP_COLOR_DIALOG_UPDATE);
|
||||
|
||||
g_object_unref (old_color);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_signal_emit (dialog, color_dialog_signals[UPDATE], 0,
|
||||
&rgb, GIMP_COLOR_DIALOG_OK);
|
||||
color, GIMP_COLOR_DIALOG_OK);
|
||||
}
|
||||
|
||||
g_object_unref (color);
|
||||
|
@ -387,7 +385,6 @@ gimp_color_dialog_response (GtkDialog *gtk_dialog,
|
|||
|
||||
default:
|
||||
color = gimp_color_selection_get_old_color (GIMP_COLOR_SELECTION (dialog->selection));
|
||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
||||
|
||||
if (dialog->colormap_editing && image)
|
||||
{
|
||||
|
@ -398,12 +395,12 @@ gimp_color_dialog_response (GtkDialog *gtk_dialog,
|
|||
|
||||
gtk_stack_set_visible_child_name (GTK_STACK (dialog->stack), "colormap");
|
||||
g_signal_emit (dialog, color_dialog_signals[UPDATE], 0,
|
||||
&rgb, GIMP_COLOR_DIALOG_UPDATE);
|
||||
color, GIMP_COLOR_DIALOG_UPDATE);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_signal_emit (dialog, color_dialog_signals[UPDATE], 0,
|
||||
&rgb, GIMP_COLOR_DIALOG_CANCEL);
|
||||
color, GIMP_COLOR_DIALOG_CANCEL);
|
||||
}
|
||||
|
||||
g_object_unref (color);
|
||||
|
@ -424,13 +421,12 @@ gimp_color_dialog_new (GimpViewable *viewable,
|
|||
GtkWidget *parent,
|
||||
GimpDialogFactory *dialog_factory,
|
||||
const gchar *dialog_identifier,
|
||||
const GimpRGB *rgb,
|
||||
GeglColor *color,
|
||||
gboolean wants_updates,
|
||||
gboolean show_alpha)
|
||||
{
|
||||
GimpColorDialog *dialog;
|
||||
const gchar *role;
|
||||
GeglColor *color;
|
||||
gboolean use_header_bar;
|
||||
|
||||
g_return_val_if_fail (viewable == NULL || GIMP_IS_VIEWABLE (viewable), NULL);
|
||||
|
@ -440,7 +436,7 @@ gimp_color_dialog_new (GimpViewable *viewable,
|
|||
GIMP_IS_DIALOG_FACTORY (dialog_factory), NULL);
|
||||
g_return_val_if_fail (dialog_factory == NULL || dialog_identifier != NULL,
|
||||
NULL);
|
||||
g_return_val_if_fail (rgb != NULL, NULL);
|
||||
g_return_val_if_fail (GEGL_IS_COLOR (color), NULL);
|
||||
|
||||
role = dialog_identifier ? dialog_identifier : "gimp-color-selector";
|
||||
|
||||
|
@ -511,55 +507,41 @@ gimp_color_dialog_new (GimpViewable *viewable,
|
|||
g_object_set_data (G_OBJECT (context->gimp->config->color_management),
|
||||
"gimp-context", NULL);
|
||||
|
||||
color = gegl_color_new (NULL);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgb);
|
||||
gimp_color_selection_set_color (GIMP_COLOR_SELECTION (dialog->selection),
|
||||
color);
|
||||
gimp_color_selection_set_old_color (GIMP_COLOR_SELECTION (dialog->selection),
|
||||
color);
|
||||
g_object_unref (color);
|
||||
|
||||
return GTK_WIDGET (dialog);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_color_dialog_set_color (GimpColorDialog *dialog,
|
||||
const GimpRGB *rgb)
|
||||
GeglColor *color)
|
||||
{
|
||||
GeglColor *color;
|
||||
|
||||
g_return_if_fail (GIMP_IS_COLOR_DIALOG (dialog));
|
||||
g_return_if_fail (rgb != NULL);
|
||||
g_return_if_fail (GEGL_IS_COLOR (color));
|
||||
|
||||
g_signal_handlers_block_by_func (dialog->selection,
|
||||
gimp_color_dialog_color_changed,
|
||||
dialog);
|
||||
|
||||
color = gegl_color_new (NULL);
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgb);
|
||||
gimp_color_selection_set_color (GIMP_COLOR_SELECTION (dialog->selection),
|
||||
color);
|
||||
gimp_color_selection_set_old_color (GIMP_COLOR_SELECTION (dialog->selection),
|
||||
color);
|
||||
g_object_unref (color);
|
||||
|
||||
g_signal_handlers_unblock_by_func (dialog->selection,
|
||||
gimp_color_dialog_color_changed,
|
||||
dialog);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_color_dialog_get_color (GimpColorDialog *dialog,
|
||||
GimpRGB *rgb)
|
||||
GeglColor *
|
||||
gimp_color_dialog_get_color (GimpColorDialog *dialog)
|
||||
{
|
||||
GeglColor *color;
|
||||
g_return_val_if_fail (GIMP_IS_COLOR_DIALOG (dialog), NULL);
|
||||
|
||||
g_return_if_fail (GIMP_IS_COLOR_DIALOG (dialog));
|
||||
g_return_if_fail (rgb != NULL);
|
||||
|
||||
color = gimp_color_selection_get_color (GIMP_COLOR_SELECTION (dialog->selection));
|
||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), rgb);
|
||||
g_object_unref (color);
|
||||
return gimp_color_selection_get_color (GIMP_COLOR_SELECTION (dialog->selection));
|
||||
}
|
||||
|
||||
|
||||
|
@ -588,16 +570,11 @@ gimp_color_dialog_colormap_clicked (GimpColorDialog *dialog,
|
|||
GimpPaletteEntry *entry,
|
||||
GdkModifierType state)
|
||||
{
|
||||
GimpRGB rgb;
|
||||
|
||||
gegl_color_get_pixel (entry->color, babl_format ("R'G'B'A double"), &rgb);
|
||||
gimp_color_dialog_set_color (dialog, &rgb);
|
||||
gimp_color_dialog_set_color (dialog, entry->color);
|
||||
|
||||
if (dialog->wants_updates)
|
||||
{
|
||||
g_signal_emit (dialog, color_dialog_signals[UPDATE], 0,
|
||||
&entry->color, GIMP_COLOR_DIALOG_UPDATE);
|
||||
}
|
||||
g_signal_emit (dialog, color_dialog_signals[UPDATE], 0,
|
||||
entry->color, GIMP_COLOR_DIALOG_UPDATE);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -605,7 +582,6 @@ gimp_color_dialog_colormap_edit_activate (GimpColorDialog *dialog)
|
|||
{
|
||||
GimpColormapSelection *colormap_selection;
|
||||
GeglColor *color;
|
||||
GimpRGB rgb;
|
||||
gint col_index;
|
||||
|
||||
dialog->colormap_editing = TRUE;
|
||||
|
@ -613,8 +589,7 @@ gimp_color_dialog_colormap_edit_activate (GimpColorDialog *dialog)
|
|||
colormap_selection = GIMP_COLORMAP_SELECTION (dialog->colormap_selection);
|
||||
col_index = gimp_colormap_selection_get_index (colormap_selection, NULL);
|
||||
color = gimp_image_get_colormap_entry (dialog->active_image, col_index);
|
||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
||||
gimp_color_dialog_set_color (dialog, &rgb);
|
||||
gimp_color_dialog_set_color (dialog, color);
|
||||
|
||||
gtk_stack_set_visible_child_name (GTK_STACK (dialog->stack), "color");
|
||||
}
|
||||
|
@ -681,13 +656,8 @@ gimp_color_dialog_color_changed (GimpColorSelection *selection,
|
|||
}
|
||||
|
||||
if (dialog->wants_updates)
|
||||
{
|
||||
GimpRGB rgb;
|
||||
|
||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
||||
g_signal_emit (dialog, color_dialog_signals[UPDATE], 0,
|
||||
&rgb, GIMP_COLOR_DIALOG_UPDATE);
|
||||
}
|
||||
g_signal_emit (dialog, color_dialog_signals[UPDATE], 0,
|
||||
color, GIMP_COLOR_DIALOG_UPDATE);
|
||||
|
||||
g_object_unref (color);
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ struct _GimpColorDialogClass
|
|||
GimpViewableDialogClass parent_class;
|
||||
|
||||
void (* update) (GimpColorDialog *dialog,
|
||||
const GimpRGB *color,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state);
|
||||
};
|
||||
|
||||
|
@ -73,14 +73,13 @@ GtkWidget * gimp_color_dialog_new (GimpViewable *viewable,
|
|||
GtkWidget *parent,
|
||||
GimpDialogFactory *dialog_factory,
|
||||
const gchar *dialog_identifier,
|
||||
const GimpRGB *color,
|
||||
GeglColor *color,
|
||||
gboolean wants_update,
|
||||
gboolean show_alpha);
|
||||
|
||||
void gimp_color_dialog_set_color (GimpColorDialog *dialog,
|
||||
const GimpRGB *color);
|
||||
void gimp_color_dialog_get_color (GimpColorDialog *dialog,
|
||||
GimpRGB *color);
|
||||
GeglColor *color);
|
||||
GeglColor * gimp_color_dialog_get_color (GimpColorDialog *dialog);
|
||||
|
||||
|
||||
#endif /* __GIMP_COLOR_DIALOG_H__ */
|
||||
|
|
|
@ -54,9 +54,9 @@ static void gimp_colormap_editor_set_context (GimpDocked
|
|||
GimpContext *context);
|
||||
|
||||
static void gimp_colormap_editor_color_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *color,
|
||||
GimpColorDialogState state,
|
||||
GimpColormapEditor *editor);
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpColormapEditor *editor);
|
||||
|
||||
static gboolean gimp_colormap_editor_entry_button_press (GtkWidget *widget,
|
||||
GdkEvent *event,
|
||||
|
@ -226,7 +226,6 @@ gimp_colormap_editor_edit_color (GimpColormapEditor *editor)
|
|||
{
|
||||
GimpImage *image;
|
||||
GeglColor *color;
|
||||
GimpRGB rgb;
|
||||
gchar *desc;
|
||||
gint index;
|
||||
|
||||
|
@ -241,7 +240,6 @@ gimp_colormap_editor_edit_color (GimpColormapEditor *editor)
|
|||
return;
|
||||
|
||||
color = gimp_image_get_colormap_entry (image, index);
|
||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
||||
|
||||
desc = g_strdup_printf (_("Edit colormap entry #%d"), index);
|
||||
|
||||
|
@ -257,8 +255,7 @@ gimp_colormap_editor_edit_color (GimpColormapEditor *editor)
|
|||
GTK_WIDGET (editor),
|
||||
gimp_dialog_factory_get_singleton (),
|
||||
"gimp-colormap-editor-color-dialog",
|
||||
(const GimpRGB *) &rgb,
|
||||
TRUE, FALSE);
|
||||
color, TRUE, FALSE);
|
||||
|
||||
g_signal_connect (editor->color_dialog, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
|
@ -274,8 +271,7 @@ gimp_colormap_editor_edit_color (GimpColormapEditor *editor)
|
|||
g_list_prepend (NULL, image),
|
||||
GIMP_IMAGE_EDITOR (editor)->context);
|
||||
g_object_set (editor->color_dialog, "description", desc, NULL);
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (editor->color_dialog),
|
||||
&rgb);
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (editor->color_dialog), color);
|
||||
|
||||
if (! gtk_widget_get_visible (editor->color_dialog))
|
||||
gimp_dialog_factory_position_dialog (gimp_dialog_factory_get_singleton (),
|
||||
|
@ -355,7 +351,7 @@ gimp_colormap_editor_max_index (GimpColormapEditor *editor)
|
|||
|
||||
static void
|
||||
gimp_colormap_editor_color_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *rgb,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpColormapEditor *editor)
|
||||
{
|
||||
|
@ -367,18 +363,12 @@ gimp_colormap_editor_color_update (GimpColorDialog *dialog,
|
|||
{
|
||||
case GIMP_COLOR_DIALOG_OK:
|
||||
{
|
||||
GeglColor *color = gegl_color_new ("black");
|
||||
|
||||
push_undo = TRUE;
|
||||
|
||||
gegl_color_set_rgba_with_space (color, rgb->r, rgb->g, rgb->b, rgb->a, NULL);
|
||||
|
||||
if (state & gimp_get_toggle_behavior_mask ())
|
||||
gimp_context_set_background (image_editor->context, color);
|
||||
else
|
||||
gimp_context_set_foreground (image_editor->context, color);
|
||||
|
||||
g_object_unref (color);
|
||||
}
|
||||
/* Fall through */
|
||||
|
||||
|
@ -392,8 +382,7 @@ gimp_colormap_editor_color_update (GimpColorDialog *dialog,
|
|||
|
||||
if (image)
|
||||
{
|
||||
GeglColor *color = gegl_color_new (NULL);
|
||||
gint col_index;
|
||||
gint col_index;
|
||||
|
||||
col_index = gimp_colormap_selection_get_index (GIMP_COLORMAP_SELECTION (editor->selection),
|
||||
NULL);
|
||||
|
@ -409,15 +398,12 @@ gimp_colormap_editor_color_update (GimpColorDialog *dialog,
|
|||
g_object_unref (old_color);
|
||||
}
|
||||
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgb);
|
||||
gimp_image_set_colormap_entry (image, col_index, color, push_undo);
|
||||
|
||||
if (push_undo)
|
||||
gimp_image_flush (image);
|
||||
else
|
||||
gimp_projection_flush (gimp_image_get_projection (image));
|
||||
|
||||
g_object_unref (color);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ static void gimp_color_panel_color_changed (GimpColorButton *button);
|
|||
static GType gimp_color_panel_get_action_type (GimpColorButton *button);
|
||||
|
||||
static void gimp_color_panel_dialog_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *color,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpColorPanel *panel);
|
||||
|
||||
|
@ -177,10 +177,8 @@ gimp_color_panel_clicked (GtkButton *button)
|
|||
{
|
||||
GimpColorPanel *panel = GIMP_COLOR_PANEL (button);
|
||||
GeglColor *color;
|
||||
GimpRGB rgb;
|
||||
|
||||
color = gimp_color_button_get_color (GIMP_COLOR_BUTTON (button));
|
||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
||||
|
||||
if (! panel->color_dialog)
|
||||
{
|
||||
|
@ -191,8 +189,7 @@ gimp_color_panel_clicked (GtkButton *button)
|
|||
gimp_color_button_get_title (color_button),
|
||||
NULL, NULL,
|
||||
GTK_WIDGET (button),
|
||||
NULL, NULL,
|
||||
&rgb,
|
||||
NULL, NULL, color,
|
||||
gimp_color_button_get_update (color_button),
|
||||
gimp_color_button_has_alpha (color_button));
|
||||
|
||||
|
@ -206,8 +203,7 @@ gimp_color_panel_clicked (GtkButton *button)
|
|||
}
|
||||
else
|
||||
{
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (panel->color_dialog),
|
||||
&rgb);
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (panel->color_dialog), color);
|
||||
}
|
||||
|
||||
gtk_window_present (GTK_WINDOW (panel->color_dialog));
|
||||
|
@ -253,23 +249,17 @@ gimp_color_panel_color_changed (GimpColorButton *button)
|
|||
if (panel->color_dialog)
|
||||
{
|
||||
GeglColor *color;
|
||||
GimpRGB dialog_color;
|
||||
GimpRGB rgb;
|
||||
GeglColor *dialog_color;
|
||||
|
||||
color = gimp_color_button_get_color (GIMP_COLOR_BUTTON (button));
|
||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
||||
|
||||
gimp_color_dialog_get_color (GIMP_COLOR_DIALOG (panel->color_dialog),
|
||||
&dialog_color);
|
||||
dialog_color = gimp_color_dialog_get_color (GIMP_COLOR_DIALOG (panel->color_dialog));
|
||||
|
||||
if (gimp_rgba_distance (&rgb, &dialog_color) > RGBA_EPSILON ||
|
||||
rgb.a != dialog_color.a)
|
||||
{
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (panel->color_dialog),
|
||||
&rgb);
|
||||
}
|
||||
if (! gimp_color_is_perceptually_identical (color, dialog_color))
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (panel->color_dialog), color);
|
||||
|
||||
g_object_unref (color);
|
||||
g_object_unref (dialog_color);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -304,18 +294,14 @@ gimp_color_panel_dialog_response (GimpColorPanel *panel,
|
|||
|
||||
static void
|
||||
gimp_color_panel_dialog_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *rgb,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpColorPanel *panel)
|
||||
{
|
||||
GeglColor *color = gegl_color_new (NULL);
|
||||
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgb);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case GIMP_COLOR_DIALOG_UPDATE:
|
||||
if (gimp_color_button_get_update (GIMP_COLOR_BUTTON (panel)))
|
||||
if (gimp_color_button_get_update (GIMP_COLOR_BUTTON (panel)) && color)
|
||||
gimp_color_button_set_color (GIMP_COLOR_BUTTON (panel), color);
|
||||
break;
|
||||
|
||||
|
@ -324,13 +310,12 @@ gimp_color_panel_dialog_update (GimpColorDialog *dialog,
|
|||
/* GimpColorDialog returns the appropriate color (new one or
|
||||
* original one if process cancelled.
|
||||
*/
|
||||
gimp_color_button_set_color (GIMP_COLOR_BUTTON (panel), color);
|
||||
if (color)
|
||||
gimp_color_button_set_color (GIMP_COLOR_BUTTON (panel), color);
|
||||
gtk_widget_hide (panel->color_dialog);
|
||||
|
||||
g_signal_emit (panel, color_panel_signals[RESPONSE], 0,
|
||||
state);
|
||||
break;
|
||||
}
|
||||
|
||||
g_object_unref (color);
|
||||
}
|
||||
|
|
|
@ -157,11 +157,11 @@ static void gradient_editor_replace_selection (GimpGradientEditor *editor,
|
|||
GimpGradientSegment *replace_seg);
|
||||
|
||||
static void gradient_editor_left_color_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *color,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpGradientEditor *editor);
|
||||
static void gradient_editor_right_color_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *color,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpGradientEditor *editor);
|
||||
|
||||
|
@ -602,7 +602,6 @@ void
|
|||
gimp_gradient_editor_edit_left_color (GimpGradientEditor *editor)
|
||||
{
|
||||
GimpGradient *gradient;
|
||||
GimpRGB rgb;
|
||||
|
||||
g_return_if_fail (GIMP_IS_GRADIENT_EDITOR (editor));
|
||||
|
||||
|
@ -616,8 +615,6 @@ gimp_gradient_editor_edit_left_color (GimpGradientEditor *editor)
|
|||
editor->saved_dirty = gimp_data_is_dirty (GIMP_DATA (gradient));
|
||||
editor->saved_segments = gradient_editor_save_selection (editor);
|
||||
|
||||
gegl_color_get_pixel (editor->control_sel_l->left_color, babl_format ("R'G'B'A double"),
|
||||
&rgb);
|
||||
editor->color_dialog =
|
||||
gimp_color_dialog_new (GIMP_VIEWABLE (gradient),
|
||||
GIMP_DATA_EDITOR (editor)->context,
|
||||
|
@ -628,7 +625,7 @@ gimp_gradient_editor_edit_left_color (GimpGradientEditor *editor)
|
|||
GTK_WIDGET (editor),
|
||||
gimp_dialog_factory_get_singleton (),
|
||||
"gimp-gradient-editor-color-dialog",
|
||||
&rgb,
|
||||
editor->control_sel_l->left_color,
|
||||
TRUE, TRUE);
|
||||
|
||||
g_signal_connect (editor->color_dialog, "destroy",
|
||||
|
@ -650,7 +647,6 @@ void
|
|||
gimp_gradient_editor_edit_right_color (GimpGradientEditor *editor)
|
||||
{
|
||||
GimpGradient *gradient;
|
||||
GimpRGB rgb;
|
||||
|
||||
g_return_if_fail (GIMP_IS_GRADIENT_EDITOR (editor));
|
||||
|
||||
|
@ -664,8 +660,6 @@ gimp_gradient_editor_edit_right_color (GimpGradientEditor *editor)
|
|||
editor->saved_dirty = gimp_data_is_dirty (GIMP_DATA (gradient));
|
||||
editor->saved_segments = gradient_editor_save_selection (editor);
|
||||
|
||||
gegl_color_get_pixel (editor->control_sel_l->right_color, babl_format ("R'G'B'A double"),
|
||||
&rgb);
|
||||
editor->color_dialog =
|
||||
gimp_color_dialog_new (GIMP_VIEWABLE (gradient),
|
||||
GIMP_DATA_EDITOR (editor)->context,
|
||||
|
@ -676,7 +670,8 @@ gimp_gradient_editor_edit_right_color (GimpGradientEditor *editor)
|
|||
GTK_WIDGET (editor),
|
||||
gimp_dialog_factory_get_singleton (),
|
||||
"gimp-gradient-editor-color-dialog",
|
||||
&rgb, TRUE, TRUE);
|
||||
editor->control_sel_l->right_color,
|
||||
TRUE, TRUE);
|
||||
|
||||
g_signal_connect (editor->color_dialog, "destroy",
|
||||
G_CALLBACK (gtk_widget_destroyed),
|
||||
|
@ -1061,14 +1056,11 @@ gradient_editor_replace_selection (GimpGradientEditor *editor,
|
|||
|
||||
static void
|
||||
gradient_editor_left_color_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *rgb,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpGradientEditor *editor)
|
||||
{
|
||||
GimpGradient *gradient = GIMP_GRADIENT (GIMP_DATA_EDITOR (editor)->data);
|
||||
GeglColor *color = gegl_color_new (NULL);
|
||||
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgb);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
|
@ -1108,20 +1100,15 @@ gradient_editor_left_color_update (GimpColorDialog *dialog,
|
|||
gimp_editor_get_popup_data (GIMP_EDITOR (editor)));
|
||||
break;
|
||||
}
|
||||
|
||||
g_object_unref (color);
|
||||
}
|
||||
|
||||
static void
|
||||
gradient_editor_right_color_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *rgb,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpGradientEditor *editor)
|
||||
{
|
||||
GimpGradient *gradient = GIMP_GRADIENT (GIMP_DATA_EDITOR (editor)->data);
|
||||
GeglColor *color = gegl_color_new (NULL);
|
||||
|
||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgb);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
|
@ -1161,8 +1148,6 @@ gradient_editor_right_color_update (GimpColorDialog *dialog,
|
|||
gimp_editor_get_popup_data (GIMP_EDITOR (editor)));
|
||||
break;
|
||||
}
|
||||
|
||||
g_object_unref (color);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ static void palette_editor_resize (GimpPaletteEditor *editor,
|
|||
gdouble zoom_factor);
|
||||
static void palette_editor_scroll_top_left (GimpPaletteEditor *editor);
|
||||
static void palette_editor_edit_color_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *color,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpPaletteEditor *editor);
|
||||
|
||||
|
@ -471,7 +471,6 @@ gimp_palette_editor_edit_color (GimpPaletteEditor *editor)
|
|||
{
|
||||
GimpDataEditor *data_editor;
|
||||
GimpPalette *palette;
|
||||
GimpRGB rgb;
|
||||
|
||||
g_return_if_fail (GIMP_IS_PALETTE_EDITOR (editor));
|
||||
|
||||
|
@ -482,7 +481,6 @@ gimp_palette_editor_edit_color (GimpPaletteEditor *editor)
|
|||
|
||||
palette = GIMP_PALETTE (gimp_data_editor_get_data (data_editor));
|
||||
|
||||
gegl_color_get_pixel (editor->color->color, babl_format ("R'G'B'A double"), &rgb);
|
||||
if (! editor->color_dialog)
|
||||
{
|
||||
editor->color_dialog =
|
||||
|
@ -495,7 +493,7 @@ gimp_palette_editor_edit_color (GimpPaletteEditor *editor)
|
|||
GTK_WIDGET (editor),
|
||||
gimp_dialog_factory_get_singleton (),
|
||||
"gimp-palette-editor-color-dialog",
|
||||
&rgb,
|
||||
editor->color->color,
|
||||
FALSE, FALSE);
|
||||
|
||||
g_signal_connect (editor->color_dialog, "destroy",
|
||||
|
@ -511,7 +509,8 @@ gimp_palette_editor_edit_color (GimpPaletteEditor *editor)
|
|||
gimp_viewable_dialog_set_viewables (GIMP_VIEWABLE_DIALOG (editor->color_dialog),
|
||||
g_list_prepend (NULL, palette),
|
||||
data_editor->context);
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (editor->color_dialog), &rgb);
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (editor->color_dialog),
|
||||
editor->color->color);
|
||||
|
||||
if (! gtk_widget_get_visible (editor->color_dialog))
|
||||
gimp_dialog_factory_position_dialog (gimp_dialog_factory_get_singleton (),
|
||||
|
@ -1005,7 +1004,7 @@ palette_editor_scroll_top_left (GimpPaletteEditor *palette_editor)
|
|||
|
||||
static void
|
||||
palette_editor_edit_color_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *color,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpPaletteEditor *editor)
|
||||
{
|
||||
|
@ -1019,7 +1018,8 @@ palette_editor_edit_color_update (GimpColorDialog *dialog,
|
|||
case GIMP_COLOR_DIALOG_OK:
|
||||
if (editor->color)
|
||||
{
|
||||
gegl_color_set_pixel (editor->color->color, babl_format ("R'G'B'A double"), color);
|
||||
g_clear_object (&editor->color->color);
|
||||
editor->color->color = gegl_color_duplicate (color);
|
||||
gimp_data_dirty (GIMP_DATA (palette));
|
||||
}
|
||||
/* Fallthrough */
|
||||
|
|
|
@ -53,7 +53,7 @@ static void color_area_background_changed (GimpContext *context,
|
|||
GimpColorDialog *dialog);
|
||||
|
||||
static void color_area_dialog_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *color,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpContext *context);
|
||||
|
||||
|
@ -131,8 +131,7 @@ color_area_foreground_changed (GimpContext *context,
|
|||
color_area_dialog_update,
|
||||
context);
|
||||
|
||||
/* FIXME this should use GimpColorDialog API */
|
||||
gimp_color_selection_set_color (GIMP_COLOR_SELECTION (dialog->selection), color);
|
||||
gimp_color_dialog_set_color (dialog, color);
|
||||
|
||||
g_signal_handlers_unblock_by_func (dialog,
|
||||
color_area_dialog_update,
|
||||
|
@ -151,8 +150,7 @@ color_area_background_changed (GimpContext *context,
|
|||
color_area_dialog_update,
|
||||
context);
|
||||
|
||||
/* FIXME this should use GimpColorDialog API */
|
||||
gimp_color_selection_set_color (GIMP_COLOR_SELECTION (dialog->selection), color);
|
||||
gimp_color_dialog_set_color (dialog, color);
|
||||
|
||||
g_signal_handlers_unblock_by_func (dialog,
|
||||
color_area_dialog_update,
|
||||
|
@ -162,14 +160,10 @@ color_area_background_changed (GimpContext *context,
|
|||
|
||||
static void
|
||||
color_area_dialog_update (GimpColorDialog *dialog,
|
||||
const GimpRGB *rgb,
|
||||
GeglColor *color,
|
||||
GimpColorDialogState state,
|
||||
GimpContext *context)
|
||||
{
|
||||
GeglColor *color = gegl_color_new ("black");
|
||||
|
||||
gegl_color_set_rgba_with_space (color, rgb->r, rgb->g, rgb->b, rgb->a, NULL);
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case GIMP_COLOR_DIALOG_OK:
|
||||
|
@ -216,8 +210,6 @@ color_area_dialog_update (GimpColorDialog *dialog,
|
|||
|
||||
if (gimp_context_get_display (context))
|
||||
gimp_display_grab_focus (gimp_context_get_display (context));
|
||||
|
||||
g_object_unref (color);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -226,7 +218,6 @@ color_area_color_clicked (GimpFgBgEditor *editor,
|
|||
GimpContext *context)
|
||||
{
|
||||
GeglColor *color;
|
||||
GimpRGB rgb;
|
||||
const gchar *title;
|
||||
|
||||
if (! color_dialog_active)
|
||||
|
@ -240,13 +231,11 @@ color_area_color_clicked (GimpFgBgEditor *editor,
|
|||
if (active_color == GIMP_ACTIVE_COLOR_FOREGROUND)
|
||||
{
|
||||
color = gimp_context_get_foreground (context);
|
||||
gegl_color_get_rgba_with_space (color, &rgb.r, &rgb.g, &rgb.b, &rgb.a, NULL);
|
||||
title = _("Change Foreground Color");
|
||||
}
|
||||
else
|
||||
{
|
||||
color = gimp_context_get_background (context);
|
||||
gegl_color_get_rgba_with_space (color, &rgb.r, &rgb.g, &rgb.b, &rgb.a, NULL);
|
||||
title = _("Change Background Color");
|
||||
}
|
||||
|
||||
|
@ -259,8 +248,7 @@ color_area_color_clicked (GimpFgBgEditor *editor,
|
|||
GTK_WIDGET (editor),
|
||||
gimp_dialog_factory_get_singleton (),
|
||||
"gimp-toolbox-color-dialog",
|
||||
&rgb,
|
||||
TRUE, FALSE);
|
||||
color, TRUE, FALSE);
|
||||
|
||||
g_signal_connect_object (color_dialog, "update",
|
||||
G_CALLBACK (color_area_dialog_update),
|
||||
|
@ -282,7 +270,7 @@ color_area_color_clicked (GimpFgBgEditor *editor,
|
|||
}
|
||||
|
||||
gtk_window_set_title (GTK_WINDOW (color_dialog), title);
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (color_dialog), &rgb);
|
||||
gimp_color_dialog_set_color (GIMP_COLOR_DIALOG (color_dialog), color);
|
||||
|
||||
gtk_window_present (GTK_WINDOW (color_dialog));
|
||||
color_dialog_active = TRUE;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue