diff --git a/app/operations/gimpcolorizeconfig.c b/app/operations/gimpcolorizeconfig.c index 02975d601c..a276e59104 100644 --- a/app/operations/gimpcolorizeconfig.c +++ b/app/operations/gimpcolorizeconfig.c @@ -88,8 +88,8 @@ gimp_colorize_config_class_init (GimpColorizeConfigClass *klass) -1.0, 1.0, 0.0, 0); gimp_hsl_set (&hsl, 0.5, 0.5, 0.5); + gimp_hsl_set_alpha (&hsl, 1.0); gimp_hsl_to_rgb (&hsl, &rgb); - gimp_rgb_set_alpha (&rgb, 1.0); g_object_class_install_property (object_class, PROP_COLOR, gimp_param_spec_rgb ("color", @@ -135,8 +135,8 @@ gimp_colorize_config_get_property (GObject *object, self->hue, self->saturation, (self->lightness + 1.0) / 2.0); + gimp_hsl_set_alpha (&hsl, 1.0); gimp_hsl_to_rgb (&hsl, &rgb); - gimp_rgb_set_alpha (&rgb, 1.0); gimp_value_set_rgb (value, &rgb); } break; diff --git a/app/operations/gimpoperationcolorize.c b/app/operations/gimpoperationcolorize.c index 38c86c569e..1db74fbcc9 100644 --- a/app/operations/gimpoperationcolorize.c +++ b/app/operations/gimpoperationcolorize.c @@ -98,6 +98,7 @@ gimp_operation_colorize_process (GeglOperation *operation, hsl.h = config->hue; hsl.s = config->saturation; + hsl.a = src[ALPHA]; while (samples--) { @@ -129,7 +130,7 @@ gimp_operation_colorize_process (GeglOperation *operation, dest[RED] = rgb.r; /* * lum; */ dest[GREEN] = rgb.g; /* * lum; */ dest[BLUE] = rgb.b; /* * lum */; - dest[ALPHA] = src[ALPHA]; + dest[ALPHA] = rgb.a; src += 4; dest += 4; diff --git a/app/operations/gimpoperationhuesaturation.c b/app/operations/gimpoperationhuesaturation.c index c812787e75..36fa5c500f 100644 --- a/app/operations/gimpoperationhuesaturation.c +++ b/app/operations/gimpoperationhuesaturation.c @@ -162,6 +162,7 @@ gimp_operation_hue_saturation_process (GeglOperation *operation, rgb.r = src[RED]; rgb.g = src[GREEN]; rgb.b = src[BLUE]; + rgb.a = src[ALPHA]; gimp_rgb_to_hsl (&rgb, &hsl); @@ -253,7 +254,7 @@ gimp_operation_hue_saturation_process (GeglOperation *operation, dest[RED] = rgb.r; dest[GREEN] = rgb.g; dest[BLUE] = rgb.b; - dest[ALPHA] = src[ALPHA]; + dest[ALPHA] = rgb.a; src += 4; dest += 4; diff --git a/libgimpcolor/gimphsl.c b/libgimpcolor/gimphsl.c index 9c76778583..6f5722b10d 100644 --- a/libgimpcolor/gimphsl.c +++ b/libgimpcolor/gimphsl.c @@ -75,3 +75,19 @@ gimp_hsl_set (GimpHSL *hsl, hsl->s = s; hsl->l = l; } + +/** + * gimp_hsl_set_alpha: + * @hsl: + * @a: + * + * Since: GIMP 2.10 + **/ +void +gimp_hsl_set_alpha (GimpHSL *hsl, + gdouble a) +{ + g_return_if_fail (hsl != NULL); + + hsl->a = a; +} diff --git a/libgimpcolor/gimphsl.h b/libgimpcolor/gimphsl.h index 81d2e46c75..af76f7fdde 100644 --- a/libgimpcolor/gimphsl.h +++ b/libgimpcolor/gimphsl.h @@ -40,6 +40,8 @@ void gimp_hsl_set (GimpHSL *hsl, gdouble h, gdouble s, gdouble l); +void gimp_hsl_set_alpha (GimpHSL *hsl, + gdouble a); G_END_DECLS