libgimpwidgets: Convert CIE LCH(ab) babl format to float

This patch converts the
few instances of CIE LCH(ab) double
to float to match babl's precision.
This commit is contained in:
Alx Sa 2024-08-08 19:25:07 +00:00
parent ddfb4d4f73
commit 3833ab2b1d
3 changed files with 42 additions and 42 deletions

View File

@ -139,7 +139,7 @@ gimp_color_scale_class_init (GimpColorScaleClass *klass)
gtk_widget_class_set_css_name (widget_class, "GimpColorScale"); gtk_widget_class_set_css_name (widget_class, "GimpColorScale");
fish_lch_to_rgb = babl_fish (babl_format ("CIE LCH(ab) double"), fish_lch_to_rgb = babl_fish (babl_format ("CIE LCH(ab) float"),
babl_format ("R'G'B' double")); babl_format ("R'G'B' double"));
fish_hsv_to_rgb = babl_fish (babl_format ("HSV float"), fish_hsv_to_rgb = babl_fish (babl_format ("HSV float"),
babl_format ("R'G'B' double")); babl_format ("R'G'B' double"));
@ -503,7 +503,7 @@ gimp_color_scale_set_format (GimpColorScale *scale,
if (scale->format != format) if (scale->format != format)
{ {
scale->format = format; scale->format = format;
fish_lch_to_rgb = babl_fish (babl_format ("CIE LCH(ab) double"), fish_lch_to_rgb = babl_fish (babl_format ("CIE LCH(ab) float"),
babl_format_with_space ("R'G'B' double", format)); babl_format_with_space ("R'G'B' double", format));
fish_hsv_to_rgb = babl_fish (babl_format_with_space ("HSV float", format), fish_hsv_to_rgb = babl_fish (babl_format_with_space ("HSV float", format),
babl_format_with_space ("R'G'B' double", format)); babl_format_with_space ("R'G'B' double", format));
@ -632,7 +632,7 @@ gimp_color_scale_render (GimpColorScale *scale)
GtkRange *range = GTK_RANGE (scale); GtkRange *range = GTK_RANGE (scale);
gdouble rgb[4]; gdouble rgb[4];
gfloat hsv[3]; gfloat hsv[3];
gdouble lch[3]; gfloat lch[3];
gint multiplier = 1; gint multiplier = 1;
guint x, y; guint x, y;
gdouble *channel_value = NULL; gdouble *channel_value = NULL;
@ -654,7 +654,7 @@ gimp_color_scale_render (GimpColorScale *scale)
gegl_color_get_pixel (scale->color, babl_format_with_space ("R'G'B'A double", scale->format), rgb); gegl_color_get_pixel (scale->color, babl_format_with_space ("R'G'B'A double", scale->format), rgb);
gegl_color_get_pixel (scale->color, babl_format_with_space ("HSV float", scale->format), hsv); gegl_color_get_pixel (scale->color, babl_format_with_space ("HSV float", scale->format), hsv);
gegl_color_get_pixel (scale->color, babl_format ("CIE LCH(ab) double"), lch); gegl_color_get_pixel (scale->color, babl_format ("CIE LCH(ab) float"), lch);
switch (scale->channel) switch (scale->channel)
{ {
@ -667,9 +667,9 @@ gimp_color_scale_render (GimpColorScale *scale)
case GIMP_COLOR_SELECTOR_BLUE: channel_value = &rgb[2]; break; case GIMP_COLOR_SELECTOR_BLUE: channel_value = &rgb[2]; break;
case GIMP_COLOR_SELECTOR_ALPHA: channel_value = &rgb[3]; break; case GIMP_COLOR_SELECTOR_ALPHA: channel_value = &rgb[3]; break;
case GIMP_COLOR_SELECTOR_LCH_LIGHTNESS: channel_value = &lch[0]; break; case GIMP_COLOR_SELECTOR_LCH_LIGHTNESS: channel_value_f = &lch[0]; break;
case GIMP_COLOR_SELECTOR_LCH_CHROMA: channel_value = &lch[1]; break; case GIMP_COLOR_SELECTOR_LCH_CHROMA: channel_value_f = &lch[1]; break;
case GIMP_COLOR_SELECTOR_LCH_HUE: channel_value = &lch[2]; break; case GIMP_COLOR_SELECTOR_LCH_HUE: channel_value_f = &lch[2]; break;
} }
switch (scale->channel) switch (scale->channel)

View File

@ -832,10 +832,10 @@ gimp_color_scales_update_scales (GimpColorScales *scales,
values[GIMP_COLOR_SELECTOR_BLUE_U8] = pixel[2] * 255.0; values[GIMP_COLOR_SELECTOR_BLUE_U8] = pixel[2] * 255.0;
values[GIMP_COLOR_SELECTOR_ALPHA_U8] = pixel[3] * 255.0; values[GIMP_COLOR_SELECTOR_ALPHA_U8] = pixel[3] * 255.0;
gegl_color_get_pixel (color, babl_format ("CIE LCH(ab) double"), pixel); gegl_color_get_pixel (color, babl_format ("CIE LCH(ab) float"), pixel_f);
values[GIMP_COLOR_SELECTOR_LCH_LIGHTNESS] = pixel[0]; values[GIMP_COLOR_SELECTOR_LCH_LIGHTNESS] = pixel_f[0];
values[GIMP_COLOR_SELECTOR_LCH_CHROMA] = pixel[1]; values[GIMP_COLOR_SELECTOR_LCH_CHROMA] = pixel_f[1];
values[GIMP_COLOR_SELECTOR_LCH_HUE] = pixel[2]; values[GIMP_COLOR_SELECTOR_LCH_HUE] = pixel_f[2];
for (i = 0; i < G_N_ELEMENTS (scale_defs); i++) for (i = 0; i < G_N_ELEMENTS (scale_defs); i++)
{ {

View File

@ -347,9 +347,9 @@ gimp_color_select_class_init (GimpColorSelectClass *klass)
gtk_widget_class_set_css_name (GTK_WIDGET_CLASS (klass), "GimpColorSelect"); gtk_widget_class_set_css_name (GTK_WIDGET_CLASS (klass), "GimpColorSelect");
fish_lch_to_rgb = babl_fish (babl_format ("CIE LCH(ab) double"), fish_lch_to_rgb = babl_fish (babl_format ("CIE LCH(ab) float"),
babl_format ("R'G'B' double")); babl_format ("R'G'B' double"));
fish_lch_to_rgb_u8 = babl_fish (babl_format ("CIE LCH(ab) double"), fish_lch_to_rgb_u8 = babl_fish (babl_format ("CIE LCH(ab) float"),
babl_format ("R'G'B' u8")); babl_format ("R'G'B' u8"));
rgbf_format = babl_format ("R'G'B' float"); rgbf_format = babl_format ("R'G'B' float");
rgbu_format = babl_format ("R'G'B' u8"); rgbu_format = babl_format ("R'G'B' u8");
@ -681,9 +681,9 @@ gimp_color_select_set_format (GimpColorSelector *selector,
rgbf_format = babl_format_with_space ("R'G'B' float", format); rgbf_format = babl_format_with_space ("R'G'B' float", format);
rgbu_format = babl_format_with_space ("R'G'B' u8", format); rgbu_format = babl_format_with_space ("R'G'B' u8", format);
hsvf_format = babl_format_with_space ("HSV float", format); hsvf_format = babl_format_with_space ("HSV float", format);
fish_lch_to_rgb = babl_fish (babl_format ("CIE LCH(ab) double"), fish_lch_to_rgb = babl_fish (babl_format ("CIE LCH(ab) float"),
babl_format_with_space ("R'G'B' double", format)); babl_format_with_space ("R'G'B' double", format));
fish_lch_to_rgb_u8 = babl_fish (babl_format ("CIE LCH(ab) double"), fish_lch_to_rgb_u8 = babl_fish (babl_format ("CIE LCH(ab) float"),
babl_format_with_space ("R'G'B' u8", format)); babl_format_with_space ("R'G'B' u8", format));
if (format == NULL || babl_format_get_space (format) == babl_space ("sRGB")) if (format == NULL || babl_format_get_space (format) == babl_space ("sRGB"))
@ -806,7 +806,7 @@ gimp_color_select_simulation (GimpColorSelector *selector,
if (format) if (format)
{ {
softproof_format = format; softproof_format = format;
fish_lch_to_softproof = babl_fish (babl_format ("CIE LCH(ab) double"), format); fish_lch_to_softproof = babl_fish (babl_format ("CIE LCH(ab) float"), format);
if (babl_format_get_space (format) == babl_space ("sRGB")) if (babl_format_get_space (format) == babl_space ("sRGB"))
{ {
@ -939,22 +939,22 @@ gimp_color_select_update_values (GimpColorSelect *select)
break; break;
case COLOR_SELECT_LCH_LIGHTNESS: case COLOR_SELECT_LCH_LIGHTNESS:
values[0] = select->pos[2] * 100.0; values_float[0] = select->pos[2] * 100.0;
values[1] = select->pos[1] * 200.0; values_float[1] = select->pos[1] * 200.0;
values[2] = select->pos[0] * 360.0; values_float[2] = select->pos[0] * 360.0;
gegl_color_set_pixel (color, babl_format ("CIE LCH(ab) double"), values); gegl_color_set_pixel (color, babl_format ("CIE LCH(ab) float"), values);
break; break;
case COLOR_SELECT_LCH_CHROMA: case COLOR_SELECT_LCH_CHROMA:
values[0] = select->pos[1] * 100.0; values_float[0] = select->pos[1] * 100.0;
values[1] = select->pos[2] * 200.0; values_float[1] = select->pos[2] * 200.0;
values[2] = select->pos[0] * 360.0; values_float[2] = select->pos[0] * 360.0;
gegl_color_set_pixel (color, babl_format ("CIE LCH(ab) double"), values); gegl_color_set_pixel (color, babl_format ("CIE LCH(ab) float"), values);
break; break;
case COLOR_SELECT_LCH_HUE: case COLOR_SELECT_LCH_HUE:
values[0] = select->pos[1] * 100.0; values_float[0] = select->pos[1] * 100.0;
values[1] = select->pos[0] * 200.0; values_float[1] = select->pos[0] * 200.0;
values[2] = select->pos[2] * 360.0; values_float[2] = select->pos[2] * 360.0;
gegl_color_set_pixel (color, babl_format ("CIE LCH(ab) double"), values); gegl_color_set_pixel (color, babl_format ("CIE LCH(ab) float"), values);
break; break;
default: default:
@ -971,13 +971,13 @@ gimp_color_select_update_pos (GimpColorSelect *select)
{ {
GimpColorSelector *selector = GIMP_COLOR_SELECTOR (select); GimpColorSelector *selector = GIMP_COLOR_SELECTOR (select);
GeglColor *color = gimp_color_selector_get_color (selector); GeglColor *color = gimp_color_selector_get_color (selector);
gdouble rgb[3]; gfloat rgb[3];
gdouble lch[3]; gdouble lch[3];
gfloat hsv[3]; gfloat hsv[3];
gegl_color_get_pixel (color, babl_format_with_space ("R'G'B' double", select->format), rgb); gegl_color_get_pixel (color, babl_format_with_space ("R'G'B' double", select->format), rgb);
gegl_color_get_pixel (color, babl_format_with_space ("HSV float", select->format), hsv); gegl_color_get_pixel (color, babl_format_with_space ("HSV float", select->format), hsv);
gegl_color_get_pixel (color, babl_format ("CIE LCH(ab) double"), lch); gegl_color_get_pixel (color, babl_format ("CIE LCH(ab) float"), lch);
g_object_unref (color); g_object_unref (color);
switch (select->z_color_fill) switch (select->z_color_fill)
@ -1602,7 +1602,7 @@ static void
color_select_render_lch_lightness (ColorSelectFill *csf) color_select_render_lch_lightness (ColorSelectFill *csf)
{ {
guchar *p = csf->buffer; guchar *p = csf->buffer;
gdouble lch[4] = { 0.0, 0.0, 0.0, 1.0 }; gfloat lch[4] = { 0.0, 0.0, 0.0, 1.0 };
guchar rgb[3]; guchar rgb[3];
gint i; gint i;
@ -1621,7 +1621,7 @@ static void
color_select_render_lch_chroma (ColorSelectFill *csf) color_select_render_lch_chroma (ColorSelectFill *csf)
{ {
guchar *p = csf->buffer; guchar *p = csf->buffer;
gdouble lch[4] = { 80.0, 0.0, 0.0, 1.0 }; gfloat lch[4] = { 80.0, 0.0, 0.0, 1.0 };
guchar rgb[3]; guchar rgb[3];
gint i; gint i;
@ -1640,7 +1640,7 @@ static void
color_select_render_lch_hue (ColorSelectFill *csf) color_select_render_lch_hue (ColorSelectFill *csf)
{ {
guchar *p = csf->buffer; guchar *p = csf->buffer;
gdouble lch[4] = { 80.0, 200.0, 0.0, 1.0 }; gfloat lch[4] = { 80.0, 200.0, 0.0, 1.0 };
guchar rgb[3]; guchar rgb[3];
gint i; gint i;
@ -1895,7 +1895,7 @@ color_select_render_lch_chroma_lightness (ColorSelectFill *csf)
{ {
GeglColor *c = NULL; GeglColor *c = NULL;
guchar *p = csf->buffer; guchar *p = csf->buffer;
gdouble lch[3]; gfloat lch[3];
c = gegl_color_new (NULL); c = gegl_color_new (NULL);
@ -1906,7 +1906,7 @@ color_select_render_lch_chroma_lightness (ColorSelectFill *csf)
{ {
lch[1] = i * 200.0 / csf->width; lch[1] = i * 200.0 / csf->width;
gegl_color_set_pixel (c, babl_format ("CIE LCH(ab) double"), lch); gegl_color_set_pixel (c, babl_format ("CIE LCH(ab) float"), lch);
if (gimp_color_is_out_of_gamut (c, babl_format_get_space (rgbf_format)) || if (gimp_color_is_out_of_gamut (c, babl_format_get_space (rgbf_format)) ||
(softproof_format && (softproof_format &&
@ -1932,7 +1932,7 @@ color_select_render_lch_hue_lightness (ColorSelectFill *csf)
{ {
GeglColor *c = NULL; GeglColor *c = NULL;
guchar *p = csf->buffer; guchar *p = csf->buffer;
gdouble lch[3]; gfloat lch[3];
c = gegl_color_new (NULL); c = gegl_color_new (NULL);
@ -1943,7 +1943,7 @@ color_select_render_lch_hue_lightness (ColorSelectFill *csf)
{ {
lch[2] = i * 360.0 / csf->width; lch[2] = i * 360.0 / csf->width;
gegl_color_set_pixel (c, babl_format ("CIE LCH(ab) double"), lch); gegl_color_set_pixel (c, babl_format ("CIE LCH(ab) float"), lch);
if (gimp_color_is_out_of_gamut (c, babl_format_get_space (rgbf_format)) || if (gimp_color_is_out_of_gamut (c, babl_format_get_space (rgbf_format)) ||
(softproof_format && (softproof_format &&
@ -1969,7 +1969,7 @@ color_select_render_lch_hue_chroma (ColorSelectFill *csf)
{ {
GeglColor *c = NULL; GeglColor *c = NULL;
guchar *p = csf->buffer; guchar *p = csf->buffer;
gdouble lch[3]; gfloat lch[3];
gint i; gint i;
c = gegl_color_new (NULL); c = gegl_color_new (NULL);
@ -1981,7 +1981,7 @@ color_select_render_lch_hue_chroma (ColorSelectFill *csf)
{ {
lch[2] = i * 360.0 / csf->width; lch[2] = i * 360.0 / csf->width;
gegl_color_set_pixel (c, babl_format ("CIE LCH(ab) double"), lch); gegl_color_set_pixel (c, babl_format ("CIE LCH(ab) float"), lch);
if (gimp_color_is_out_of_gamut (c, babl_format_get_space (rgbf_format)) || if (gimp_color_is_out_of_gamut (c, babl_format_get_space (rgbf_format)) ||
(softproof_format && (softproof_format &&