mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 17:33:25 +00:00
widgets,modules,plug-ins: GeglColor ports
After the color space invasion, the Clip Warning filter no longer had color areas for its shadow, highlights, and bogus color properties. This patch ports them to GeglColor so the widget can be created correctly. GimpRGB structs are also converted to GeglColor in GimpPanedBox and two plug-ins.
This commit is contained in:
parent
0bc99a29e1
commit
ef548fff65
4 changed files with 146 additions and 86 deletions
|
@ -362,10 +362,12 @@ gimp_paned_box_drop_indicator_draw (GtkWidget *widget,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
GimpPanedBox *paned_box = GIMP_PANED_BOX (widget);
|
GimpPanedBox *paned_box = GIMP_PANED_BOX (widget);
|
||||||
GimpRGB color;
|
GeglColor *color;
|
||||||
|
gdouble rgba[4];
|
||||||
gsize i;
|
gsize i;
|
||||||
|
|
||||||
gimp_rgb_parse_hex (&color, DROP_HIGHLIGHT_COLOR, -1);
|
color = gimp_color_parse_hex (DROP_HIGHLIGHT_COLOR, -1);
|
||||||
|
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), rgba);
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (paned_box->p->dnd_highlights); i++)
|
for (i = 0; i < G_N_ELEMENTS (paned_box->p->dnd_highlights); i++)
|
||||||
{
|
{
|
||||||
|
@ -374,7 +376,10 @@ gimp_paned_box_drop_indicator_draw (GtkWidget *widget,
|
||||||
if (! highlight->active)
|
if (! highlight->active)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
cairo_set_source_rgba (cr, color.r, color.g, color.b, highlight->opacity);
|
rgba[3] = highlight->opacity;
|
||||||
|
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgba);
|
||||||
|
|
||||||
|
gimp_cairo_set_source_color (cr, color, NULL, FALSE, widget);
|
||||||
|
|
||||||
cairo_rectangle (cr,
|
cairo_rectangle (cr,
|
||||||
highlight->area.x,
|
highlight->area.x,
|
||||||
|
@ -384,6 +389,7 @@ gimp_paned_box_drop_indicator_draw (GtkWidget *widget,
|
||||||
|
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
}
|
}
|
||||||
|
g_object_unref (color);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,9 +33,9 @@
|
||||||
#include "libgimp/libgimp-intl.h"
|
#include "libgimp/libgimp-intl.h"
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_SHADOWS_COLOR (&(GimpRGB) {0.25, 0.25, 1.00, 1.00})
|
#define DEFAULT_SHADOWS_COLOR ((gdouble[]) {0.25, 0.25, 1.00, 1.00})
|
||||||
#define DEFAULT_HIGHLIGHTS_COLOR (&(GimpRGB) {1.00, 0.25, 0.25, 1.00})
|
#define DEFAULT_HIGHLIGHTS_COLOR ((gdouble[]) {1.00, 0.25, 0.25, 1.00})
|
||||||
#define DEFAULT_BOGUS_COLOR (&(GimpRGB) {1.00, 1.00, 0.25, 1.00})
|
#define DEFAULT_BOGUS_COLOR ((gdouble[]) {1.00, 1.00, 0.25, 1.00})
|
||||||
|
|
||||||
|
|
||||||
#define CDISPLAY_TYPE_CLIP_WARNING (cdisplay_clip_warning_get_type ())
|
#define CDISPLAY_TYPE_CLIP_WARNING (cdisplay_clip_warning_get_type ())
|
||||||
|
@ -61,11 +61,11 @@ struct _CdisplayClipWarning
|
||||||
GimpColorDisplay parent_instance;
|
GimpColorDisplay parent_instance;
|
||||||
|
|
||||||
gboolean show_shadows;
|
gboolean show_shadows;
|
||||||
GimpRGB shadows_color;
|
GeglColor *shadows_color;
|
||||||
gboolean show_highlights;
|
gboolean show_highlights;
|
||||||
GimpRGB highlights_color;
|
GeglColor *highlights_color;
|
||||||
gboolean show_bogus;
|
gboolean show_bogus;
|
||||||
GimpRGB bogus_color;
|
GeglColor *bogus_color;
|
||||||
gboolean include_alpha;
|
gboolean include_alpha;
|
||||||
gboolean include_transparent;
|
gboolean include_transparent;
|
||||||
|
|
||||||
|
@ -94,6 +94,7 @@ enum
|
||||||
|
|
||||||
GType cdisplay_clip_warning_get_type (void);
|
GType cdisplay_clip_warning_get_type (void);
|
||||||
|
|
||||||
|
static void cdisplay_clip_warning_finalize (GObject *object);
|
||||||
static void cdisplay_clip_warning_set_property (GObject *object,
|
static void cdisplay_clip_warning_set_property (GObject *object,
|
||||||
guint property_id,
|
guint property_id,
|
||||||
const GValue *value,
|
const GValue *value,
|
||||||
|
@ -152,10 +153,14 @@ cdisplay_clip_warning_class_init (CdisplayClipWarningClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||||
GimpColorDisplayClass *display_class = GIMP_COLOR_DISPLAY_CLASS (klass);
|
GimpColorDisplayClass *display_class = GIMP_COLOR_DISPLAY_CLASS (klass);
|
||||||
|
GeglColor *color = gegl_color_new (NULL);
|
||||||
|
|
||||||
object_class->get_property = cdisplay_clip_warning_get_property;
|
object_class->finalize = cdisplay_clip_warning_finalize;
|
||||||
object_class->set_property = cdisplay_clip_warning_set_property;
|
object_class->get_property = cdisplay_clip_warning_get_property;
|
||||||
|
object_class->set_property = cdisplay_clip_warning_set_property;
|
||||||
|
|
||||||
|
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"),
|
||||||
|
DEFAULT_SHADOWS_COLOR);
|
||||||
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_SHOW_SHADOWS,
|
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_SHOW_SHADOWS,
|
||||||
"show-shadows",
|
"show-shadows",
|
||||||
_("Show shadows"),
|
_("Show shadows"),
|
||||||
|
@ -163,14 +168,13 @@ cdisplay_clip_warning_class_init (CdisplayClipWarningClass *klass)
|
||||||
TRUE,
|
TRUE,
|
||||||
GIMP_PARAM_STATIC_STRINGS);
|
GIMP_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
GIMP_CONFIG_PROP_RGB (object_class, PROP_SHADOWS_COLOR,
|
GIMP_CONFIG_PROP_COLOR (object_class, PROP_SHADOWS_COLOR,
|
||||||
"shadows-color",
|
"shadows-color",
|
||||||
_("Shadows color"),
|
_("Shadows color"),
|
||||||
_("Shadows warning color"),
|
_("Shadows warning color"),
|
||||||
FALSE,
|
color,
|
||||||
DEFAULT_SHADOWS_COLOR,
|
GIMP_PARAM_STATIC_STRINGS |
|
||||||
GIMP_PARAM_STATIC_STRINGS |
|
GIMP_CONFIG_PARAM_DEFAULTS);
|
||||||
GIMP_CONFIG_PARAM_DEFAULTS);
|
|
||||||
|
|
||||||
gegl_param_spec_set_property_key (
|
gegl_param_spec_set_property_key (
|
||||||
g_object_class_find_property (G_OBJECT_CLASS (klass), "shadows-color"),
|
g_object_class_find_property (G_OBJECT_CLASS (klass), "shadows-color"),
|
||||||
|
@ -183,14 +187,15 @@ cdisplay_clip_warning_class_init (CdisplayClipWarningClass *klass)
|
||||||
TRUE,
|
TRUE,
|
||||||
GIMP_PARAM_STATIC_STRINGS);
|
GIMP_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
GIMP_CONFIG_PROP_RGB (object_class, PROP_HIGHLIGHTS_COLOR,
|
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"),
|
||||||
"highlights-color",
|
DEFAULT_HIGHLIGHTS_COLOR);
|
||||||
_("Highlights color"),
|
GIMP_CONFIG_PROP_COLOR (object_class, PROP_HIGHLIGHTS_COLOR,
|
||||||
_("Highlights warning color"),
|
"highlights-color",
|
||||||
FALSE,
|
_("Highlights color"),
|
||||||
DEFAULT_HIGHLIGHTS_COLOR,
|
_("Highlights warning color"),
|
||||||
GIMP_PARAM_STATIC_STRINGS |
|
color,
|
||||||
GIMP_CONFIG_PARAM_DEFAULTS);
|
GIMP_PARAM_STATIC_STRINGS |
|
||||||
|
GIMP_CONFIG_PARAM_DEFAULTS);
|
||||||
|
|
||||||
gegl_param_spec_set_property_key (
|
gegl_param_spec_set_property_key (
|
||||||
g_object_class_find_property (G_OBJECT_CLASS (klass), "highlights-color"),
|
g_object_class_find_property (G_OBJECT_CLASS (klass), "highlights-color"),
|
||||||
|
@ -203,14 +208,15 @@ cdisplay_clip_warning_class_init (CdisplayClipWarningClass *klass)
|
||||||
TRUE,
|
TRUE,
|
||||||
GIMP_PARAM_STATIC_STRINGS);
|
GIMP_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
GIMP_CONFIG_PROP_RGB (object_class, PROP_BOGUS_COLOR,
|
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"),
|
||||||
"bogus-color",
|
DEFAULT_BOGUS_COLOR);
|
||||||
_("Bogus color"),
|
GIMP_CONFIG_PROP_COLOR (object_class, PROP_BOGUS_COLOR,
|
||||||
_("Bogus warning color"),
|
"bogus-color",
|
||||||
FALSE,
|
_("Bogus color"),
|
||||||
DEFAULT_BOGUS_COLOR,
|
_("Bogus warning color"),
|
||||||
GIMP_PARAM_STATIC_STRINGS |
|
color,
|
||||||
GIMP_CONFIG_PARAM_DEFAULTS);
|
GIMP_PARAM_STATIC_STRINGS |
|
||||||
|
GIMP_CONFIG_PARAM_DEFAULTS);
|
||||||
|
|
||||||
gegl_param_spec_set_property_key (
|
gegl_param_spec_set_property_key (
|
||||||
g_object_class_find_property (G_OBJECT_CLASS (klass), "bogus-color"),
|
g_object_class_find_property (G_OBJECT_CLASS (klass), "bogus-color"),
|
||||||
|
@ -235,6 +241,8 @@ cdisplay_clip_warning_class_init (CdisplayClipWarningClass *klass)
|
||||||
display_class->icon_name = GIMP_ICON_DISPLAY_FILTER_CLIP_WARNING;
|
display_class->icon_name = GIMP_ICON_DISPLAY_FILTER_CLIP_WARNING;
|
||||||
|
|
||||||
display_class->convert_buffer = cdisplay_clip_warning_convert_buffer;
|
display_class->convert_buffer = cdisplay_clip_warning_convert_buffer;
|
||||||
|
|
||||||
|
g_object_unref (color);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -245,6 +253,32 @@ cdisplay_clip_warning_class_finalize (CdisplayClipWarningClass *klass)
|
||||||
static void
|
static void
|
||||||
cdisplay_clip_warning_init (CdisplayClipWarning *clip_warning)
|
cdisplay_clip_warning_init (CdisplayClipWarning *clip_warning)
|
||||||
{
|
{
|
||||||
|
GeglColor *color;
|
||||||
|
|
||||||
|
color = gegl_color_new (NULL);
|
||||||
|
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"),
|
||||||
|
DEFAULT_SHADOWS_COLOR);
|
||||||
|
clip_warning->shadows_color = color;
|
||||||
|
|
||||||
|
color = gegl_color_new (NULL);
|
||||||
|
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"),
|
||||||
|
DEFAULT_HIGHLIGHTS_COLOR);
|
||||||
|
clip_warning->highlights_color = color;
|
||||||
|
|
||||||
|
color = gegl_color_new (NULL);
|
||||||
|
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"),
|
||||||
|
DEFAULT_BOGUS_COLOR);
|
||||||
|
clip_warning->bogus_color = color;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cdisplay_clip_warning_finalize (GObject *object)
|
||||||
|
{
|
||||||
|
CdisplayClipWarning *clip_warning = CDISPLAY_CLIP_WARNING (object);
|
||||||
|
|
||||||
|
g_clear_object (&clip_warning->shadows_color);
|
||||||
|
g_clear_object (&clip_warning->highlights_color);
|
||||||
|
g_clear_object (&clip_warning->bogus_color);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -261,21 +295,21 @@ cdisplay_clip_warning_get_property (GObject *object,
|
||||||
g_value_set_boolean (value, clip_warning->show_shadows);
|
g_value_set_boolean (value, clip_warning->show_shadows);
|
||||||
break;
|
break;
|
||||||
case PROP_SHADOWS_COLOR:
|
case PROP_SHADOWS_COLOR:
|
||||||
g_value_set_boxed (value, &clip_warning->shadows_color);
|
g_value_set_object (value, clip_warning->shadows_color);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_SHOW_HIGHLIGHTS:
|
case PROP_SHOW_HIGHLIGHTS:
|
||||||
g_value_set_boolean (value, clip_warning->show_highlights);
|
g_value_set_boolean (value, clip_warning->show_highlights);
|
||||||
break;
|
break;
|
||||||
case PROP_HIGHLIGHTS_COLOR:
|
case PROP_HIGHLIGHTS_COLOR:
|
||||||
g_value_set_boxed (value, &clip_warning->highlights_color);
|
g_value_set_object (value, clip_warning->highlights_color);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_SHOW_BOGUS:
|
case PROP_SHOW_BOGUS:
|
||||||
g_value_set_boolean (value, clip_warning->show_bogus);
|
g_value_set_boolean (value, clip_warning->show_bogus);
|
||||||
break;
|
break;
|
||||||
case PROP_BOGUS_COLOR:
|
case PROP_BOGUS_COLOR:
|
||||||
g_value_set_boxed (value, &clip_warning->bogus_color);
|
g_value_set_object (value, clip_warning->bogus_color);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_INCLUDE_ALPHA:
|
case PROP_INCLUDE_ALPHA:
|
||||||
|
@ -314,21 +348,24 @@ cdisplay_clip_warning_set_property (GObject *object,
|
||||||
SET_MEMBER_VAL (show_shadows, gboolean, g_value_get_boolean (value));
|
SET_MEMBER_VAL (show_shadows, gboolean, g_value_get_boolean (value));
|
||||||
break;
|
break;
|
||||||
case PROP_SHADOWS_COLOR:
|
case PROP_SHADOWS_COLOR:
|
||||||
SET_MEMBER_PTR (shadows_color, g_value_get_boxed (value));
|
g_clear_object (&clip_warning->shadows_color);
|
||||||
|
clip_warning->shadows_color = gegl_color_duplicate (g_value_get_object (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_SHOW_HIGHLIGHTS:
|
case PROP_SHOW_HIGHLIGHTS:
|
||||||
SET_MEMBER_VAL (show_highlights, gboolean, g_value_get_boolean (value));
|
SET_MEMBER_VAL (show_highlights, gboolean, g_value_get_boolean (value));
|
||||||
break;
|
break;
|
||||||
case PROP_HIGHLIGHTS_COLOR:
|
case PROP_HIGHLIGHTS_COLOR:
|
||||||
SET_MEMBER_PTR (highlights_color, g_value_get_boxed (value));
|
g_clear_object (&clip_warning->highlights_color);
|
||||||
|
clip_warning->highlights_color = gegl_color_duplicate (g_value_get_object (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_SHOW_BOGUS:
|
case PROP_SHOW_BOGUS:
|
||||||
SET_MEMBER_VAL (show_bogus, gboolean, g_value_get_boolean (value));
|
SET_MEMBER_VAL (show_bogus, gboolean, g_value_get_boolean (value));
|
||||||
break;
|
break;
|
||||||
case PROP_BOGUS_COLOR:
|
case PROP_BOGUS_COLOR:
|
||||||
SET_MEMBER_PTR (bogus_color, g_value_get_boxed (value));
|
g_clear_object (&clip_warning->bogus_color);
|
||||||
|
clip_warning->bogus_color = gegl_color_duplicate (g_value_get_object (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_INCLUDE_ALPHA:
|
case PROP_INCLUDE_ALPHA:
|
||||||
|
@ -343,6 +380,15 @@ cdisplay_clip_warning_set_property (GObject *object,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (property_id == PROP_SHADOWS_COLOR ||
|
||||||
|
property_id == PROP_HIGHLIGHTS_COLOR ||
|
||||||
|
property_id == PROP_BOGUS_COLOR)
|
||||||
|
{
|
||||||
|
cdisplay_clip_warning_update_colors (clip_warning);
|
||||||
|
g_object_notify (G_OBJECT (clip_warning), pspec->name);
|
||||||
|
gimp_color_display_changed (GIMP_COLOR_DISPLAY (clip_warning));
|
||||||
|
}
|
||||||
|
|
||||||
#undef SET_MEMBER_PTR
|
#undef SET_MEMBER_PTR
|
||||||
#undef SET_MEMBER_VAL
|
#undef SET_MEMBER_VAL
|
||||||
}
|
}
|
||||||
|
@ -449,32 +495,42 @@ cdisplay_clip_warning_update_colors (CdisplayClipWarning *clip_warning)
|
||||||
gfloat *alt_color = clip_warning->colors[i][1];
|
gfloat *alt_color = clip_warning->colors[i][1];
|
||||||
gfloat alt_value;
|
gfloat alt_value;
|
||||||
gint n = 0;
|
gint n = 0;
|
||||||
|
gfloat rgb[3];
|
||||||
|
|
||||||
memset (color, 0, 3 * sizeof (gfloat));
|
memset (color, 0, 3 * sizeof (gfloat));
|
||||||
|
|
||||||
if (i & WARNING_SHADOW)
|
if (i & WARNING_SHADOW)
|
||||||
{
|
{
|
||||||
color[0] += clip_warning->shadows_color.r;
|
gegl_color_get_pixel (clip_warning->shadows_color,
|
||||||
color[1] += clip_warning->shadows_color.g;
|
babl_format ("R'G'B' float"),
|
||||||
color[2] += clip_warning->shadows_color.b;
|
rgb);
|
||||||
|
color[0] += rgb[0];
|
||||||
|
color[1] += rgb[1];
|
||||||
|
color[2] += rgb[2];
|
||||||
|
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i & WARNING_HIGHLIGHT)
|
if (i & WARNING_HIGHLIGHT)
|
||||||
{
|
{
|
||||||
color[0] += clip_warning->highlights_color.r;
|
gegl_color_get_pixel (clip_warning->highlights_color,
|
||||||
color[1] += clip_warning->highlights_color.g;
|
babl_format ("R'G'B' float"),
|
||||||
color[2] += clip_warning->highlights_color.b;
|
rgb);
|
||||||
|
color[0] += rgb[0];
|
||||||
|
color[1] += rgb[1];
|
||||||
|
color[2] += rgb[2];
|
||||||
|
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i & WARNING_BOGUS)
|
if (i & WARNING_BOGUS)
|
||||||
{
|
{
|
||||||
color[0] += clip_warning->bogus_color.r;
|
gegl_color_get_pixel (clip_warning->bogus_color,
|
||||||
color[1] += clip_warning->bogus_color.g;
|
babl_format ("R'G'B' float"),
|
||||||
color[2] += clip_warning->bogus_color.b;
|
rgb);
|
||||||
|
color[0] += rgb[0];
|
||||||
|
color[1] += rgb[1];
|
||||||
|
color[2] += rgb[2];
|
||||||
|
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -232,7 +232,7 @@ static cairo_surface_t *get_cairo_surface (GimpDrawable *drawable
|
||||||
gboolean as_mask,
|
gboolean as_mask,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
static GimpRGB get_layer_color (GimpLayer *layer,
|
static GeglColor * get_layer_color (GimpLayer *layer,
|
||||||
gboolean *single);
|
gboolean *single);
|
||||||
|
|
||||||
static void drawText (GimpLayer *layer,
|
static void drawText (GimpLayer *layer,
|
||||||
|
@ -1463,11 +1463,11 @@ get_cairo_surface (GimpDrawable *drawable,
|
||||||
/* A function to check if a drawable is single colored This allows to
|
/* A function to check if a drawable is single colored This allows to
|
||||||
* convert bitmaps to vector where possible
|
* convert bitmaps to vector where possible
|
||||||
*/
|
*/
|
||||||
static GimpRGB
|
static GeglColor *
|
||||||
get_layer_color (GimpLayer *layer,
|
get_layer_color (GimpLayer *layer,
|
||||||
gboolean *single)
|
gboolean *single)
|
||||||
{
|
{
|
||||||
GimpRGB col;
|
GeglColor *col = gegl_color_new (NULL);
|
||||||
gdouble red, green, blue, alpha;
|
gdouble red, green, blue, alpha;
|
||||||
gdouble dev, devSum;
|
gdouble dev, devSum;
|
||||||
gdouble median, pixels, count, percentile;
|
gdouble median, pixels, count, percentile;
|
||||||
|
@ -1483,7 +1483,7 @@ get_layer_color (GimpLayer *layer,
|
||||||
{
|
{
|
||||||
/* FIXME: We can't do a proper histogram on indexed layers! */
|
/* FIXME: We can't do a proper histogram on indexed layers! */
|
||||||
*single = FALSE;
|
*single = FALSE;
|
||||||
col. r = col.g = col.b = col.a = 0;
|
gegl_color_set_rgba (col, 0.0, 0.0, 0.0, 0.0);
|
||||||
return col;
|
return col;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1528,11 +1528,7 @@ get_layer_color (GimpLayer *layer,
|
||||||
devSum += dev;
|
devSum += dev;
|
||||||
*single = devSum == 0;
|
*single = devSum == 0;
|
||||||
|
|
||||||
col.r = red / 255;
|
gegl_color_set_rgba (col, red, green, blue, alpha);
|
||||||
col.g = green / 255;
|
|
||||||
col.b = blue / 255;
|
|
||||||
col.a = alpha / 255;
|
|
||||||
|
|
||||||
return col;
|
return col;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1891,8 +1887,8 @@ draw_layer (GimpLayer **layers,
|
||||||
{
|
{
|
||||||
/* For raster layers */
|
/* For raster layers */
|
||||||
|
|
||||||
GimpRGB layer_color;
|
GeglColor *layer_color;
|
||||||
gboolean single_color = FALSE;
|
gboolean single_color = FALSE;
|
||||||
|
|
||||||
layer_color = get_layer_color (layer, &single_color);
|
layer_color = get_layer_color (layer, &single_color);
|
||||||
|
|
||||||
|
@ -1902,11 +1898,7 @@ draw_layer (GimpLayer **layers,
|
||||||
|
|
||||||
if (vectorize && single_color)
|
if (vectorize && single_color)
|
||||||
{
|
{
|
||||||
cairo_set_source_rgba (cr,
|
gimp_cairo_set_source_color (cr, layer_color, NULL, FALSE, NULL);
|
||||||
layer_color.r,
|
|
||||||
layer_color.g,
|
|
||||||
layer_color.b,
|
|
||||||
layer_color.a * opacity);
|
|
||||||
if (mask)
|
if (mask)
|
||||||
cairo_mask_surface (cr, mask_image, x, y);
|
cairo_mask_surface (cr, mask_image, x, y);
|
||||||
else
|
else
|
||||||
|
@ -1938,6 +1930,8 @@ draw_layer (GimpLayer **layers,
|
||||||
|
|
||||||
cairo_surface_destroy (layer_image);
|
cairo_surface_destroy (layer_image);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_object_unref (layer_color);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -2486,15 +2486,15 @@ color1_changed (GimpColorButton *button)
|
||||||
if (t)
|
if (t)
|
||||||
{
|
{
|
||||||
GeglColor *color;
|
GeglColor *color;
|
||||||
GimpRGB rgb;
|
gdouble rgba[4];
|
||||||
|
|
||||||
color = gimp_color_button_get_color (button);
|
color = gimp_color_button_get_color (button);
|
||||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), rgba);
|
||||||
|
|
||||||
t->color1.x = rgb.r;
|
t->color1.x = rgba[0];
|
||||||
t->color1.y = rgb.g;
|
t->color1.y = rgba[1];
|
||||||
t->color1.z = rgb.b;
|
t->color1.z = rgba[2];
|
||||||
t->color1.w = rgb.a;
|
t->color1.w = rgba[3];
|
||||||
|
|
||||||
restartrender ();
|
restartrender ();
|
||||||
|
|
||||||
|
@ -2510,15 +2510,15 @@ color2_changed (GimpColorButton *button)
|
||||||
if (t)
|
if (t)
|
||||||
{
|
{
|
||||||
GeglColor *color;
|
GeglColor *color;
|
||||||
GimpRGB rgb;
|
gdouble rgba[4];
|
||||||
|
|
||||||
color = gimp_color_button_get_color (button);
|
color = gimp_color_button_get_color (button);
|
||||||
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
gegl_color_get_pixel (color, babl_format ("R'G'B'A double"), rgba);
|
||||||
|
|
||||||
t->color2.x = rgb.r;
|
t->color2.x = rgba[0];
|
||||||
t->color2.y = rgb.g;
|
t->color2.y = rgba[1];
|
||||||
t->color2.z = rgb.b;
|
t->color2.z = rgba[2];
|
||||||
t->color2.w = rgb.a;
|
t->color2.w = rgba[3];
|
||||||
|
|
||||||
restartrender ();
|
restartrender ();
|
||||||
|
|
||||||
|
@ -2531,7 +2531,7 @@ drawcolor1 (GtkWidget *w)
|
||||||
{
|
{
|
||||||
static GtkWidget *lastw = NULL;
|
static GtkWidget *lastw = NULL;
|
||||||
GeglColor *color;
|
GeglColor *color;
|
||||||
GimpRGB rgb;
|
gdouble rgba[4];
|
||||||
texture *t = currenttexture ();
|
texture *t = currenttexture ();
|
||||||
|
|
||||||
if (w)
|
if (w)
|
||||||
|
@ -2545,9 +2545,11 @@ drawcolor1 (GtkWidget *w)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
color = gegl_color_new (NULL);
|
color = gegl_color_new (NULL);
|
||||||
gimp_rgba_set (&rgb,
|
rgba[0] = t->color1.x;
|
||||||
t->color1.x, t->color1.y, t->color1.z, t->color1.w);
|
rgba[1] = t->color1.y;
|
||||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
rgba[2] = t->color1.z;
|
||||||
|
rgba[3] = t->color1.w;
|
||||||
|
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgba);
|
||||||
|
|
||||||
gimp_color_button_set_color (GIMP_COLOR_BUTTON (w), color);
|
gimp_color_button_set_color (GIMP_COLOR_BUTTON (w), color);
|
||||||
g_object_unref (color);
|
g_object_unref (color);
|
||||||
|
@ -2558,7 +2560,7 @@ drawcolor2 (GtkWidget *w)
|
||||||
{
|
{
|
||||||
static GtkWidget *lastw = NULL;
|
static GtkWidget *lastw = NULL;
|
||||||
GeglColor *color;
|
GeglColor *color;
|
||||||
GimpRGB rgb;
|
gdouble rgba[4];
|
||||||
texture *t = currenttexture ();
|
texture *t = currenttexture ();
|
||||||
|
|
||||||
if (w)
|
if (w)
|
||||||
|
@ -2572,9 +2574,11 @@ drawcolor2 (GtkWidget *w)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
color = gegl_color_new (NULL);
|
color = gegl_color_new (NULL);
|
||||||
gimp_rgba_set (&rgb,
|
rgba[0] = t->color2.x;
|
||||||
t->color2.x, t->color2.y, t->color2.z, t->color2.w);
|
rgba[1] = t->color2.y;
|
||||||
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), &rgb);
|
rgba[2] = t->color2.z;
|
||||||
|
rgba[3] = t->color2.w;
|
||||||
|
gegl_color_set_pixel (color, babl_format ("R'G'B'A double"), rgba);
|
||||||
|
|
||||||
gimp_color_button_set_color (GIMP_COLOR_BUTTON (w), color);
|
gimp_color_button_set_color (GIMP_COLOR_BUTTON (w), color);
|
||||||
g_object_unref (color);
|
g_object_unref (color);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue