[gimp] Desaturate to Luminance using AnyRGB
- From: Øyvind "pippin" Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Desaturate to Luminance using AnyRGB
- Date: Thu, 6 Jun 2019 13:11:07 +0000 (UTC)
commit 762fd66d28815fe2fcf2771075012aca0e7d69df
Author: Elle Stone <ellestone ninedegreesbelow com>
Date: Fri May 31 19:05:45 2019 -0400
Desaturate to Luminance using AnyRGB
Issue #3436 Replace sRGB Y values with Y values from XYZ for the
image's actual RGB space
This patch is for Colors/Desaturate/Desaturate to Luminance or
Luma.
app/operations/gimpoperationdesaturate.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/app/operations/gimpoperationdesaturate.c b/app/operations/gimpoperationdesaturate.c
index 9f833db18b..e7cc2d2e5a 100644
--- a/app/operations/gimpoperationdesaturate.c
+++ b/app/operations/gimpoperationdesaturate.c
@@ -167,8 +167,12 @@ gimp_operation_desaturate_process (GeglOperation *operation,
gint level)
{
GimpOperationDesaturate *desaturate = GIMP_OPERATION_DESATURATE (operation);
+
gfloat *src = in_buf;
gfloat *dest = out_buf;
+ double red_luminance, green_luminance, blue_luminance;
+ const Babl *space = gegl_operation_get_source_space (operation, "input");
+ babl_space_get_rgb_luminance (space, &red_luminance, &green_luminance, &blue_luminance);
switch (desaturate->mode)
{
@@ -201,8 +205,9 @@ gimp_operation_desaturate_process (GeglOperation *operation,
case GIMP_DESATURATE_LUMINANCE:
while (samples--)
{
- gfloat value = GIMP_RGB_LUMINANCE (src[0], src[1], src[2]);
-
+ gfloat value = (src[0] * red_luminance) +
+ (src[1] * green_luminance) +
+ (src[2] * blue_luminance);
dest[0] = value;
dest[1] = value;
dest[2] = value;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]