[gimp] app: add an LCH mode to GimpColorFrame



commit 2766a9f807ba0bfe19f06d2a0844fa19452a9cd6
Author: Michael Natterer <mitch gimp org>
Date:   Mon May 8 21:33:04 2017 +0200

    app: add an LCH mode to GimpColorFrame
    
    so picked colors can be displayed as LCH now.

 app/widgets/gimpcolorframe.c |   28 ++++++++++++++++++++++++++++
 app/widgets/widgets-enums.c  |    2 ++
 app/widgets/widgets-enums.h  |    1 +
 3 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/app/widgets/gimpcolorframe.c b/app/widgets/gimpcolorframe.c
index d8ef0f2..deccf27 100644
--- a/app/widgets/gimpcolorframe.c
+++ b/app/widgets/gimpcolorframe.c
@@ -788,6 +788,34 @@ gimp_color_frame_update (GimpColorFrame *frame)
         }
       break;
 
+    case GIMP_COLOR_FRAME_MODE_LCH:
+      names[0] = _("Light.:");
+      names[1] = _("Chr.:");
+      names[2] = _("Hue:");
+
+      if (has_alpha)
+        names[3] = _("Alpha:");
+
+      if (frame->sample_valid)
+        {
+          static const Babl *fish = NULL;
+          gfloat             lch[4];
+
+          if (G_UNLIKELY (! fish))
+            fish = babl_fish (babl_format ("R'G'B'A double"),
+                              babl_format ("CIE LCH(ab) alpha float"));
+
+          babl_process (fish, &frame->color, lch, 1);
+
+          values = g_new0 (gchar *, 5);
+
+          values[0] = g_strdup_printf ("%.01f  ",        lch[0]);
+          values[1] = g_strdup_printf ("%.01f  ",        lch[1]);
+          values[2] = g_strdup_printf ("%.01f \302\260", lch[2]);
+          values[3] = g_strdup_printf ("%.01f %%",       lch[3] * 100.0);
+        }
+      break;
+
     case GIMP_COLOR_FRAME_MODE_CMYK:
       names[0] = _("Cyan:");
       names[1] = _("Magenta:");
diff --git a/app/widgets/widgets-enums.c b/app/widgets/widgets-enums.c
index e9e6312..37e1041 100644
--- a/app/widgets/widgets-enums.c
+++ b/app/widgets/widgets-enums.c
@@ -106,6 +106,7 @@ gimp_color_frame_mode_get_type (void)
     { GIMP_COLOR_FRAME_MODE_RGB_PERCENT, "GIMP_COLOR_FRAME_MODE_RGB_PERCENT", "rgb-percent" },
     { GIMP_COLOR_FRAME_MODE_RGB_U8, "GIMP_COLOR_FRAME_MODE_RGB_U8", "rgb-u8" },
     { GIMP_COLOR_FRAME_MODE_HSV, "GIMP_COLOR_FRAME_MODE_HSV", "hsv" },
+    { GIMP_COLOR_FRAME_MODE_LCH, "GIMP_COLOR_FRAME_MODE_LCH", "lch" },
     { GIMP_COLOR_FRAME_MODE_CMYK, "GIMP_COLOR_FRAME_MODE_CMYK", "cmyk" },
     { 0, NULL, NULL }
   };
@@ -116,6 +117,7 @@ gimp_color_frame_mode_get_type (void)
     { GIMP_COLOR_FRAME_MODE_RGB_PERCENT, NC_("color-frame-mode", "RGB (%)"), NULL },
     { GIMP_COLOR_FRAME_MODE_RGB_U8, NC_("color-frame-mode", "RGB (0..255)"), NULL },
     { GIMP_COLOR_FRAME_MODE_HSV, NC_("color-frame-mode", "HSV"), NULL },
+    { GIMP_COLOR_FRAME_MODE_LCH, NC_("color-frame-mode", "CIE LCH"), NULL },
     { GIMP_COLOR_FRAME_MODE_CMYK, NC_("color-frame-mode", "CMYK"), NULL },
     { 0, NULL, NULL }
   };
diff --git a/app/widgets/widgets-enums.h b/app/widgets/widgets-enums.h
index a1f2780..30fcc4f 100644
--- a/app/widgets/widgets-enums.h
+++ b/app/widgets/widgets-enums.h
@@ -67,6 +67,7 @@ typedef enum
   GIMP_COLOR_FRAME_MODE_RGB_PERCENT, /*< desc="RGB (%)"      >*/
   GIMP_COLOR_FRAME_MODE_RGB_U8,      /*< desc="RGB (0..255)" >*/
   GIMP_COLOR_FRAME_MODE_HSV,         /*< desc="HSV"          >*/
+  GIMP_COLOR_FRAME_MODE_LCH,         /*< desc="CIE LCH"      >*/
   GIMP_COLOR_FRAME_MODE_CMYK         /*< desc="CMYK"         >*/
 } GimpColorFrameMode;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]