diff --git a/app/actions/view-commands.c b/app/actions/view-commands.c index dabe8a467b..dbc5e8911b 100644 --- a/app/actions/view-commands.c +++ b/app/actions/view-commands.c @@ -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); } diff --git a/app/widgets/gimpcolordialog.c b/app/widgets/gimpcolordialog.c index abde52e5be..43beb55c0a 100644 --- a/app/widgets/gimpcolordialog.c +++ b/app/widgets/gimpcolordialog.c @@ -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); } diff --git a/app/widgets/gimpcolordialog.h b/app/widgets/gimpcolordialog.h index 7c7f2e22bb..1ff5d24f0e 100644 --- a/app/widgets/gimpcolordialog.h +++ b/app/widgets/gimpcolordialog.h @@ -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__ */ diff --git a/app/widgets/gimpcolormapeditor.c b/app/widgets/gimpcolormapeditor.c index 021422b130..1f317e22c2 100644 --- a/app/widgets/gimpcolormapeditor.c +++ b/app/widgets/gimpcolormapeditor.c @@ -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); } } diff --git a/app/widgets/gimpcolorpanel.c b/app/widgets/gimpcolorpanel.c index c63f11ab12..c6970de106 100644 --- a/app/widgets/gimpcolorpanel.c +++ b/app/widgets/gimpcolorpanel.c @@ -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); } diff --git a/app/widgets/gimpgradienteditor.c b/app/widgets/gimpgradienteditor.c index 8fa5f0878a..023a73310b 100644 --- a/app/widgets/gimpgradienteditor.c +++ b/app/widgets/gimpgradienteditor.c @@ -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); } diff --git a/app/widgets/gimppaletteeditor.c b/app/widgets/gimppaletteeditor.c index a7a4cd8b93..14855a7cf9 100644 --- a/app/widgets/gimppaletteeditor.c +++ b/app/widgets/gimppaletteeditor.c @@ -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 */ diff --git a/app/widgets/gimptoolbox-color-area.c b/app/widgets/gimptoolbox-color-area.c index a11c2f1f70..131ede84b4 100644 --- a/app/widgets/gimptoolbox-color-area.c +++ b/app/widgets/gimptoolbox-color-area.c @@ -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;