]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 6 Apr 2013 00:24:19 +0000 (00:24 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 6 Apr 2013 00:24:19 +0000 (00:24 +0000)
MagickCore/enhance.c

index 7dc5866c0995c33ee0dd21e13566df2f57d847f6..fbba44c550278725028330f5db96fa2ebdbeeba7 100644 (file)
@@ -2954,7 +2954,30 @@ static inline void ModulateHWB(const double percent_hue,
   ConvertHWBToRGB(hue,whiteness,blackness,red,green,blue);
 }
 
-static inline void ModulateLCH(const double percent_luma,
+static inline void ModulateLCHab(const double percent_luma,
+  const double percent_chroma,const double percent_hue,double *red,
+  double *green,double *blue)
+{
+  double
+    hue,
+    luma,
+    chroma;
+
+  /*
+    Increase or decrease color luma, chroma, or hue.
+  */
+  ConvertRGBToLCHab(*red,*green,*blue,&luma,&chroma,&hue);
+  luma*=0.01*percent_luma;
+  chroma*=0.01*percent_chroma;
+  hue+=0.5*(0.01*percent_hue-1.0);
+  while (hue < 0.0)
+    hue+=1.0;
+  while (hue >= 1.0)
+    hue-=1.0;
+  ConvertLCHabToRGB(luma,chroma,hue,red,green,blue);
+}
+
+static inline void ModulateLCHuv(const double percent_luma,
   const double percent_chroma,const double percent_hue,double *red,
   double *green,double *blue)
 {
@@ -3085,10 +3108,16 @@ MagickExport MagickBooleanType ModulateImage(Image *image,const char *modulate,
             &red,&green,&blue);
           break;
         }
+        case LCHabColorspace:
+        {
+          ModulateLCHab(percent_brightness,percent_saturation,percent_hue,
+            &red,&green,&blue);
+          break;
+        }
         case LCHColorspace:
         case LCHuvColorspace:
         {
-          ModulateLCH(percent_brightness,percent_saturation,percent_hue,
+          ModulateLCHuv(percent_brightness,percent_saturation,percent_hue,
             &red,&green,&blue);
           break;
         }
@@ -3172,10 +3201,16 @@ MagickExport MagickBooleanType ModulateImage(Image *image,const char *modulate,
             &red,&green,&blue);
           break;
         }
+        case LCHabColorspace:
+        {
+          ModulateLCHab(percent_brightness,percent_saturation,percent_hue,
+            &red,&green,&blue);
+          break;
+        }
         case LCHColorspace:
         case LCHuvColorspace:
         {
-          ModulateLCH(percent_brightness,percent_saturation,percent_hue,
+          ModulateLCHuv(percent_brightness,percent_saturation,percent_hue,
             &red,&green,&blue);
           break;
         }