app: use GeglColor in GimpTextBuffer and GimpTextTag.

It's actually not enough to get proper colors for inner text tags. The
main color is correct, but color for subtext is currently not managed.
This must be fixed.
This commit is contained in:
Jehan 2023-12-24 23:25:45 +09:00
parent cbd970a92d
commit 47c1cb8504
7 changed files with 204 additions and 236 deletions

View File

@ -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:

View File

@ -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);
}

View File

@ -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));

View File

@ -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__ */

View File

@ -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 */

View File

@ -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;

View File

@ -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__ */