diff --git a/app/tools/gimptexttool-editor.c b/app/tools/gimptexttool-editor.c index b789b51c97..c8ac4d5ba5 100644 --- a/app/tools/gimptexttool-editor.c +++ b/app/tools/gimptexttool-editor.c @@ -1597,24 +1597,21 @@ gimp_text_tool_im_preedit_changed (GtkIMContext *context, case PANGO_ATTR_FOREGROUND: { PangoAttrColor *color_attr = (PangoAttrColor *) attr; - GimpRGB color; + GeglColor *color; - color.r = (gdouble) color_attr->color.red / 65535.0; - color.g = (gdouble) color_attr->color.green / 65535.0; - color.b = (gdouble) color_attr->color.blue / 65535.0; + color = gegl_color_new (NULL); + gegl_color_set_pixel (color, babl_format ("R'G'B' u16"), &color_attr->color); if (attr->klass->type == PANGO_ATTR_BACKGROUND) - { - gimp_text_buffer_set_preedit_bg_color (text_tool->buffer, - &start, &end, - &color); - } + gimp_text_buffer_set_preedit_bg_color (text_tool->buffer, + &start, &end, + color); else - { - gimp_text_buffer_set_preedit_color (text_tool->buffer, - &start, &end, - &color); - } + gimp_text_buffer_set_preedit_color (text_tool->buffer, + &start, &end, + color); + + g_object_unref (color); } break; default: diff --git a/app/tools/gimptexttool.c b/app/tools/gimptexttool.c index 4b041c39b3..cf9d4e8dd3 100644 --- a/app/tools/gimptexttool.c +++ b/app/tools/gimptexttool.c @@ -195,7 +195,7 @@ static void gimp_text_tool_buffer_end_edit (GimpTextBuffer *buffer, static void gimp_text_tool_buffer_color_applied (GimpTextBuffer *buffer, - const GimpRGB *color, + GeglColor *color, GimpTextTool *text_tool); @@ -2002,14 +2002,10 @@ gimp_text_tool_buffer_end_edit (GimpTextBuffer *buffer, static void gimp_text_tool_buffer_color_applied (GimpTextBuffer *buffer, - const GimpRGB *rgb, + GeglColor *color, GimpTextTool *text_tool) { - GeglColor *color = gegl_color_new (NULL); - - gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgb); gimp_palettes_add_color_history (GIMP_TOOL (text_tool)->tool_info->gimp, color); - g_object_unref (color); } diff --git a/app/widgets/gimptextbuffer.c b/app/widgets/gimptextbuffer.c index 3ae727b3a7..06a66cbe4b 100644 --- a/app/widgets/gimptextbuffer.c +++ b/app/widgets/gimptextbuffer.c @@ -81,7 +81,7 @@ gimp_text_buffer_class_init (GimpTextBufferClass *klass) G_STRUCT_OFFSET (GimpTextBufferClass, color_applied), NULL, NULL, NULL, G_TYPE_NONE, 1, - GIMP_TYPE_RGB); + GEGL_TYPE_COLOR); } static void @@ -932,9 +932,9 @@ gimp_text_buffer_set_font (GimpTextBuffer *buffer, } GtkTextTag * -gimp_text_buffer_get_iter_color (GimpTextBuffer *buffer, - const GtkTextIter *iter, - GimpRGB *color) +gimp_text_buffer_get_iter_color (GimpTextBuffer *buffer, + const GtkTextIter *iter, + GeglColor **color) { GList *list; @@ -956,41 +956,33 @@ gimp_text_buffer_get_iter_color (GimpTextBuffer *buffer, GtkTextTag * gimp_text_buffer_get_color_tag (GimpTextBuffer *buffer, - const GimpRGB *color) + GeglColor *color) { GList *list; GtkTextTag *tag; gchar name[256]; - guchar r, g, b; - - gimp_rgb_get_uchar (color, &r, &g, &b); + gdouble rgba[4]; for (list = buffer->color_tags; list; list = g_list_next (list)) { - GimpRGB tag_color; - guchar tag_r, tag_g, tag_b; + GeglColor *tag_color; tag = list->data; gimp_text_tag_get_fg_color (tag, &tag_color); - gimp_rgb_get_uchar (&tag_color, &tag_r, &tag_g, &tag_b); - /* Do not compare the alpha channel, since it's unused */ - if (tag_r == r && - tag_g == g && - tag_b == b) - { - return tag; - } + if (gimp_color_is_perceptually_identical (color, tag_color)) + return tag; } + gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), rgba); g_snprintf (name, sizeof (name), "color-#%02x%02x%02x", - r, g, b); + (guint) (rgba[0] * 255), (guint) (rgba[1] * 255), (guint) (rgba[2] * 255)); tag = gtk_text_buffer_create_tag (GTK_TEXT_BUFFER (buffer), name, - "foreground-rgba", (GdkRGBA *) color, + "foreground-rgba", (GdkRGBA *) rgba, "foreground-set", TRUE, NULL); @@ -1003,7 +995,7 @@ void gimp_text_buffer_set_color (GimpTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, - const GimpRGB *color) + GeglColor *color) { GList *list; @@ -1037,41 +1029,34 @@ gimp_text_buffer_set_color (GimpTextBuffer *buffer, GtkTextTag * gimp_text_buffer_get_preedit_color_tag (GimpTextBuffer *buffer, - const GimpRGB *color) + GeglColor *color) { GList *list; GtkTextTag *tag; gchar name[256]; - guchar r, g, b; - - gimp_rgb_get_uchar (color, &r, &g, &b); + gdouble rgba[4]; for (list = buffer->preedit_color_tags; list; list = g_list_next (list)) { - GimpRGB tag_color; - guchar tag_r, tag_g, tag_b; + GeglColor *tag_color; tag = list->data; gimp_text_tag_get_fg_color (tag, &tag_color); - gimp_rgb_get_uchar (&tag_color, &tag_r, &tag_g, &tag_b); - /* Do not compare the alpha channel, since it's unused */ - if (tag_r == r && - tag_g == g && - tag_b == b) - { - return tag; - } + if (gimp_color_is_perceptually_identical (color, tag_color)) + return tag; } + /* We save the color as unbounded sRGB. Is it right? TODO */ + gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), rgba); g_snprintf (name, sizeof (name), "preedit-color-#%02x%02x%02x", - r, g, b); + (guint) (rgba[0] * 255), (guint) (rgba[1] * 255), (guint) (rgba[2] * 255)); tag = gtk_text_buffer_create_tag (GTK_TEXT_BUFFER (buffer), name, - "foreground-rgba", (GdkRGBA *) color, + "foreground-rgba", (GdkRGBA *) rgba, "foreground-set", TRUE, NULL); @@ -1084,7 +1069,7 @@ void gimp_text_buffer_set_preedit_color (GimpTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, - const GimpRGB *color) + GeglColor *color) { GList *list; @@ -1116,41 +1101,33 @@ gimp_text_buffer_set_preedit_color (GimpTextBuffer *buffer, GtkTextTag * gimp_text_buffer_get_preedit_bg_color_tag (GimpTextBuffer *buffer, - const GimpRGB *color) + GeglColor *color) { GList *list; GtkTextTag *tag; gchar name[256]; - guchar r, g, b; - - gimp_rgb_get_uchar (color, &r, &g, &b); + gdouble rgba[4]; for (list = buffer->preedit_bg_color_tags; list; list = g_list_next (list)) { - GimpRGB tag_color; - guchar tag_r, tag_g, tag_b; + GeglColor *tag_color; tag = list->data; gimp_text_tag_get_bg_color (tag, &tag_color); - gimp_rgb_get_uchar (&tag_color, &tag_r, &tag_g, &tag_b); - /* Do not compare the alpha channel, since it's unused */ - if (tag_r == r && - tag_g == g && - tag_b == b) - { - return tag; - } + if (gimp_color_is_perceptually_identical (color, tag_color)) + return tag; } + gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), rgba); g_snprintf (name, sizeof (name), "bg-color-#%02x%02x%02x", - r, g, b); + (guint) (rgba[0] * 255), (guint) (rgba[1] * 255), (guint) (rgba[2] * 255)); tag = gtk_text_buffer_create_tag (GTK_TEXT_BUFFER (buffer), name, - "background-rgba", (GdkRGBA *) color, + "background-rgba", (GdkRGBA *) rgba, "background-set", TRUE, NULL); @@ -1163,7 +1140,7 @@ void gimp_text_buffer_set_preedit_bg_color (GimpTextBuffer *buffer, const GtkTextIter *start, const GtkTextIter *end, - const GimpRGB *color) + GeglColor *color) { GList *list; @@ -1283,13 +1260,13 @@ gimp_text_buffer_tag_to_name (GimpTextBuffer *buffer, if (value) { - GimpRGB color; - guchar r, g, b; + GeglColor *color; + guchar rgb[3]; gimp_text_tag_get_fg_color (tag, &color); - gimp_rgb_get_uchar (&color, &r, &g, &b); - - *value = g_strdup_printf ("#%02x%02x%02x", r, g, b); + gegl_color_get_pixel (color, babl_format ("R'G'B' u8"), rgb); + *value = g_strdup_printf ("#%02x%02x%02x", rgb[0], rgb[1], rgb[2]); + g_object_unref (color); } return "span"; @@ -1304,13 +1281,13 @@ gimp_text_buffer_tag_to_name (GimpTextBuffer *buffer, if (value) { - GimpRGB color; - guchar r, g, b; + GeglColor *color; + guchar rgb[3]; gimp_text_tag_get_fg_color (tag, &color); - gimp_rgb_get_uchar (&color, &r, &g, &b); - - *value = g_strdup_printf ("#%02x%02x%02x", r, g, b); + gegl_color_get_pixel (color, babl_format ("R'G'B' u8"), rgb); + *value = g_strdup_printf ("#%02x%02x%02x", rgb[0], rgb[1], rgb[2]); + g_object_unref (color); } return "span"; @@ -1322,13 +1299,13 @@ gimp_text_buffer_tag_to_name (GimpTextBuffer *buffer, if (value) { - GimpRGB color; - guchar r, g, b; + GeglColor *color; + guchar rgb[3]; gimp_text_tag_get_bg_color (tag, &color); - gimp_rgb_get_uchar (&color, &r, &g, &b); - - *value = g_strdup_printf ("#%02x%02x%02x", r, g, b); + gegl_color_get_pixel (color, babl_format ("R'G'B' u8"), rgb); + *value = g_strdup_printf ("#%02x%02x%02x", rgb[0], rgb[1], rgb[2]); + g_object_unref (color); } return "span"; @@ -1394,15 +1371,23 @@ gimp_text_buffer_name_to_tag (GimpTextBuffer *buffer, } else if (! strcmp (attribute, GIMP_TEXT_ATTR_NAME_COLOR)) { - GimpRGB color; - guint r, g, b; + GtkTextTag *tag; + GeglColor *color; + guint r, g, b; + guchar rgb[3]; sscanf (value, "#%02x%02x%02x", &r, &g, &b); + rgb[0] = r; + rgb[1] = g; + rgb[2] = b; - gimp_rgb_set_alpha (&color, 1.0); - gimp_rgb_set_uchar (&color, r, g, b); + color = gegl_color_new (NULL); + gegl_color_set_pixel (color, babl_format ("R'G'B' u8"), rgb); - return gimp_text_buffer_get_color_tag (buffer, &color); + tag = gimp_text_buffer_get_color_tag (buffer, color); + g_object_unref (color); + + return tag; } } @@ -1447,7 +1432,7 @@ gimp_text_buffer_insert (GimpTextBuffer *buffer, GList *insert_tags; GList *remove_tags; GSList *tags_off = NULL; - GimpRGB color; + GeglColor *color; g_return_if_fail (GIMP_IS_TEXT_BUFFER (buffer)); @@ -1518,7 +1503,8 @@ gimp_text_buffer_insert (GimpTextBuffer *buffer, if (gimp_text_buffer_get_iter_color (buffer, &start, &color)) { - g_signal_emit (buffer, buffer_signals[COLOR_APPLIED], 0, &color); + g_signal_emit (buffer, buffer_signals[COLOR_APPLIED], 0, color); + g_object_unref (color); } gtk_text_buffer_end_user_action (GTK_TEXT_BUFFER (buffer)); diff --git a/app/widgets/gimptextbuffer.h b/app/widgets/gimptextbuffer.h index 87898bbbd7..2ee8e100c2 100644 --- a/app/widgets/gimptextbuffer.h +++ b/app/widgets/gimptextbuffer.h @@ -62,129 +62,129 @@ struct _GimpTextBufferClass GtkTextBufferClass parent_class; void (* color_applied) (GimpTextBuffer *buffer, - const GimpRGB *color); + GeglColor *color); }; -GType gimp_text_buffer_get_type (void) G_GNUC_CONST; +GType gimp_text_buffer_get_type (void) G_GNUC_CONST; -GimpTextBuffer * gimp_text_buffer_new (void); +GimpTextBuffer * gimp_text_buffer_new (void); -void gimp_text_buffer_set_text (GimpTextBuffer *buffer, - const gchar *text); -gchar * gimp_text_buffer_get_text (GimpTextBuffer *buffer); +void gimp_text_buffer_set_text (GimpTextBuffer *buffer, + const gchar *text); +gchar * gimp_text_buffer_get_text (GimpTextBuffer *buffer); -void gimp_text_buffer_set_markup (GimpTextBuffer *buffer, - const gchar *markup); -gchar * gimp_text_buffer_get_markup (GimpTextBuffer *buffer); +void gimp_text_buffer_set_markup (GimpTextBuffer *buffer, + const gchar *markup); +gchar * gimp_text_buffer_get_markup (GimpTextBuffer *buffer); -gboolean gimp_text_buffer_has_markup (GimpTextBuffer *buffer); +gboolean gimp_text_buffer_has_markup (GimpTextBuffer *buffer); -GtkTextTag * gimp_text_buffer_get_iter_size (GimpTextBuffer *buffer, - const GtkTextIter *iter, - gint *size); -GtkTextTag * gimp_text_buffer_get_size_tag (GimpTextBuffer *buffer, - gint size); -void gimp_text_buffer_set_size (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - gint size); -void gimp_text_buffer_change_size (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - gint amount); +GtkTextTag * gimp_text_buffer_get_iter_size (GimpTextBuffer *buffer, + const GtkTextIter *iter, + gint *size); +GtkTextTag * gimp_text_buffer_get_size_tag (GimpTextBuffer *buffer, + gint size); +void gimp_text_buffer_set_size (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + gint size); +void gimp_text_buffer_change_size (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + gint amount); -GtkTextTag * gimp_text_buffer_get_iter_baseline (GimpTextBuffer *buffer, - const GtkTextIter *iter, - gint *baseline); -void gimp_text_buffer_set_baseline (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - gint count); -void gimp_text_buffer_change_baseline (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - gint count); +GtkTextTag * gimp_text_buffer_get_iter_baseline (GimpTextBuffer *buffer, + const GtkTextIter *iter, + gint *baseline); +void gimp_text_buffer_set_baseline (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + gint count); +void gimp_text_buffer_change_baseline (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + gint count); -GtkTextTag * gimp_text_buffer_get_iter_kerning (GimpTextBuffer *buffer, - const GtkTextIter *iter, - gint *kerning); -void gimp_text_buffer_set_kerning (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - gint count); -void gimp_text_buffer_change_kerning (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - gint count); +GtkTextTag * gimp_text_buffer_get_iter_kerning (GimpTextBuffer *buffer, + const GtkTextIter *iter, + gint *kerning); +void gimp_text_buffer_set_kerning (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + gint count); +void gimp_text_buffer_change_kerning (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + gint count); -GtkTextTag * gimp_text_buffer_get_iter_font (GimpTextBuffer *buffer, - const GtkTextIter *iter, - gchar **font); -GtkTextTag * gimp_text_buffer_get_font_tag (GimpTextBuffer *buffer, - const gchar *font); -void gimp_text_buffer_set_font (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - const gchar *font); +GtkTextTag * gimp_text_buffer_get_iter_font (GimpTextBuffer *buffer, + const GtkTextIter *iter, + gchar **font); +GtkTextTag * gimp_text_buffer_get_font_tag (GimpTextBuffer *buffer, + const gchar *font); +void gimp_text_buffer_set_font (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + const gchar *font); -GtkTextTag * gimp_text_buffer_get_iter_color (GimpTextBuffer *buffer, - const GtkTextIter *iter, - GimpRGB *color); -GtkTextTag * gimp_text_buffer_get_color_tag (GimpTextBuffer *buffer, - const GimpRGB *color); -void gimp_text_buffer_set_color (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - const GimpRGB *color); +GtkTextTag * gimp_text_buffer_get_iter_color (GimpTextBuffer *buffer, + const GtkTextIter *iter, + GeglColor **color); +GtkTextTag * gimp_text_buffer_get_color_tag (GimpTextBuffer *buffer, + GeglColor *color); +void gimp_text_buffer_set_color (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + GeglColor *color); -GtkTextTag * gimp_text_buffer_get_preedit_color_tag (GimpTextBuffer *buffer, - const GimpRGB *color); -void gimp_text_buffer_set_preedit_color (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - const GimpRGB *color); -GtkTextTag * gimp_text_buffer_get_preedit_bg_color_tag (GimpTextBuffer *buffer, - const GimpRGB *color); -void gimp_text_buffer_set_preedit_bg_color (GimpTextBuffer *buffer, - const GtkTextIter *start, - const GtkTextIter *end, - const GimpRGB *color); +GtkTextTag * gimp_text_buffer_get_preedit_color_tag (GimpTextBuffer *buffer, + GeglColor *color); +void gimp_text_buffer_set_preedit_color (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + GeglColor *color); +GtkTextTag * gimp_text_buffer_get_preedit_bg_color_tag (GimpTextBuffer *buffer, + GeglColor *color); +void gimp_text_buffer_set_preedit_bg_color (GimpTextBuffer *buffer, + const GtkTextIter *start, + const GtkTextIter *end, + GeglColor *color); -const gchar * gimp_text_buffer_tag_to_name (GimpTextBuffer *buffer, - GtkTextTag *tag, - const gchar **attribute, - gchar **value); -GtkTextTag * gimp_text_buffer_name_to_tag (GimpTextBuffer *buffer, - const gchar *name, - const gchar *attribute, - const gchar *value); +const gchar * gimp_text_buffer_tag_to_name (GimpTextBuffer *buffer, + GtkTextTag *tag, + const gchar **attribute, + gchar **value); +GtkTextTag * gimp_text_buffer_name_to_tag (GimpTextBuffer *buffer, + const gchar *name, + const gchar *attribute, + const gchar *value); -void gimp_text_buffer_set_insert_tags (GimpTextBuffer *buffer, - GList *insert_tags, - GList *remove_tags); -void gimp_text_buffer_clear_insert_tags (GimpTextBuffer *buffer); -void gimp_text_buffer_insert (GimpTextBuffer *buffer, - const gchar *text); +void gimp_text_buffer_set_insert_tags (GimpTextBuffer *buffer, + GList *insert_tags, + GList *remove_tags); +void gimp_text_buffer_clear_insert_tags (GimpTextBuffer *buffer); +void gimp_text_buffer_insert (GimpTextBuffer *buffer, + const gchar *text); -gint gimp_text_buffer_get_iter_index (GimpTextBuffer *buffer, - GtkTextIter *iter, - gboolean layout_index); -void gimp_text_buffer_get_iter_at_index (GimpTextBuffer *buffer, - GtkTextIter *iter, - gint index, - gboolean layout_index); +gint gimp_text_buffer_get_iter_index (GimpTextBuffer *buffer, + GtkTextIter *iter, + gboolean layout_index); +void gimp_text_buffer_get_iter_at_index (GimpTextBuffer *buffer, + GtkTextIter *iter, + gint index, + gboolean layout_index); -gboolean gimp_text_buffer_load (GimpTextBuffer *buffer, - GFile *file, - GError **error); -gboolean gimp_text_buffer_save (GimpTextBuffer *buffer, - GFile *file, - gboolean selection_only, - GError **error); +gboolean gimp_text_buffer_load (GimpTextBuffer *buffer, + GFile *file, + GError **error); +gboolean gimp_text_buffer_save (GimpTextBuffer *buffer, + GFile *file, + gboolean selection_only, + GError **error); -GList * gimp_text_buffer_get_tags_on_iter (GimpTextBuffer *buffer, - const GtkTextIter *iter); -GList * gimp_text_buffer_get_all_tags (GimpTextBuffer *buffer); +GList * gimp_text_buffer_get_tags_on_iter (GimpTextBuffer *buffer, + const GtkTextIter *iter); +GList * gimp_text_buffer_get_all_tags (GimpTextBuffer *buffer); #endif /* __GIMP_TEXT_BUFFER_H__ */ diff --git a/app/widgets/gimptextstyleeditor.c b/app/widgets/gimptextstyleeditor.c index 6c22fd18e6..6630024148 100644 --- a/app/widgets/gimptextstyleeditor.c +++ b/app/widgets/gimptextstyleeditor.c @@ -607,10 +607,8 @@ gimp_text_style_editor_list_tags (GimpTextStyleEditor *editor, if (TRUE) /* FIXME should have "inconsistent" state as for font and size */ { GtkTextTag *tag; - GimpRGB rgb; - gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb); - tag = gimp_text_buffer_get_color_tag (editor->buffer, &rgb); + tag = gimp_text_buffer_get_color_tag (editor->buffer, color); tags = g_list_prepend (tags, tag); } @@ -745,15 +743,11 @@ gimp_text_style_editor_color_changed (GimpColorButton *button, if (gtk_text_buffer_get_has_selection (buffer)) { GeglColor *color; - GimpRGB rgb; GtkTextIter start, end; gtk_text_buffer_get_selection_bounds (buffer, &start, &end); - color = gimp_color_button_get_color (button); - - gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb); - gimp_text_buffer_set_color (editor->buffer, &start, &end, &rgb); + gimp_text_buffer_set_color (editor->buffer, &start, &end, color); g_object_unref (color); } @@ -766,22 +760,17 @@ static void gimp_text_style_editor_set_color (GimpTextStyleEditor *editor, GtkTextTag *color_tag) { - GeglColor *color; - GimpRGB rgb; - - gimp_rgba_set (&rgb, 0.0, 0.0, 0.0, 1.0); + GeglColor *color = NULL; if (color_tag) - gimp_text_tag_get_fg_color (color_tag, &rgb); + gimp_text_tag_get_fg_color (color_tag, &color); g_signal_handlers_block_by_func (editor->color_button, gimp_text_style_editor_color_changed, editor); - color = gegl_color_new (NULL); - gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &rgb); gimp_color_button_set_color (GIMP_COLOR_BUTTON (editor->color_button), color); - g_object_unref (color); + g_clear_object (&color); /* FIXME should have "inconsistent" state as for font and size */ diff --git a/app/widgets/gimptexttag.c b/app/widgets/gimptexttag.c index c3b5cddfd5..d0c4870286 100644 --- a/app/widgets/gimptexttag.c +++ b/app/widgets/gimptexttag.c @@ -81,10 +81,10 @@ gimp_text_tag_get_font (GtkTextTag *tag) } gboolean -gimp_text_tag_get_fg_color (GtkTextTag *tag, - GimpRGB *color) +gimp_text_tag_get_fg_color (GtkTextTag *tag, + GeglColor **color) { - GdkRGBA *rgba; + GdkRGBA *rgba = NULL; gboolean set; g_object_get (tag, @@ -92,16 +92,16 @@ gimp_text_tag_get_fg_color (GtkTextTag *tag, GIMP_TEXT_PROP_NAME_FG_COLOR, &rgba, NULL); - gimp_rgb_set (color, rgba->red, rgba->green, rgba->blue); - + *color = gegl_color_new (NULL); + gegl_color_set_pixel (*color, babl_format ("R'G'B'A double"), rgba); gdk_rgba_free (rgba); return set; } gboolean -gimp_text_tag_get_bg_color (GtkTextTag *tag, - GimpRGB *color) +gimp_text_tag_get_bg_color (GtkTextTag *tag, + GeglColor **color) { GdkRGBA *rgba; gboolean set; @@ -111,8 +111,8 @@ gimp_text_tag_get_bg_color (GtkTextTag *tag, GIMP_TEXT_PROP_NAME_BG_COLOR, &rgba, NULL); - gimp_rgb_set (color, rgba->red, rgba->green, rgba->blue); - + *color = gegl_color_new (NULL); + gegl_color_set_pixel (*color, babl_format ("R'G'B'A double"), rgba); gdk_rgba_free (rgba); return set; diff --git a/app/widgets/gimptexttag.h b/app/widgets/gimptexttag.h index e638c0c3d0..440575146e 100644 --- a/app/widgets/gimptexttag.h +++ b/app/widgets/gimptexttag.h @@ -32,14 +32,14 @@ #define GIMP_TEXT_PROP_NAME_BG_COLOR "background-rgba" -gint gimp_text_tag_get_size (GtkTextTag *tag); -gint gimp_text_tag_get_baseline (GtkTextTag *tag); -gint gimp_text_tag_get_kerning (GtkTextTag *tag); -gchar * gimp_text_tag_get_font (GtkTextTag *tag); -gboolean gimp_text_tag_get_fg_color (GtkTextTag *tag, - GimpRGB *color); -gboolean gimp_text_tag_get_bg_color (GtkTextTag *tag, - GimpRGB *color); +gint gimp_text_tag_get_size (GtkTextTag *tag); +gint gimp_text_tag_get_baseline (GtkTextTag *tag); +gint gimp_text_tag_get_kerning (GtkTextTag *tag); +gchar * gimp_text_tag_get_font (GtkTextTag *tag); +gboolean gimp_text_tag_get_fg_color (GtkTextTag *tag, + GeglColor **color); +gboolean gimp_text_tag_get_bg_color (GtkTextTag *tag, + GeglColor **color); #endif /* __GIMP_TEXT_TAG_H__ */