]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sun, 21 Nov 2010 16:10:43 +0000 (16:10 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sun, 21 Nov 2010 16:10:43 +0000 (16:10 +0000)
magick/colorspace-private.h

index 842758e1ef469639b20f51d3c3111dcef05ddeb2..64c7778566e344d41506bd0823572630d32a3e96 100644 (file)
@@ -22,6 +22,7 @@
 extern "C" {
 #endif
 
+#include <magick/image-private.h>
 #include <magick/pixel.h>
 
 static inline MagickBooleanType IsGrayColorspace(
@@ -41,36 +42,27 @@ static inline void ConvertRGBToCMYK(MagickPixelPacket *pixel)
     magenta,
     yellow;
                                                                                 
-  cyan=(MagickRealType) (QuantumRange-pixel->red);
-  magenta=(MagickRealType) (QuantumRange-pixel->green);
-  yellow=(MagickRealType) (QuantumRange-pixel->blue);
-  black=(MagickRealType) QuantumRange;
-  if (cyan < black)
-    black=cyan;
+  if ((pixel->red == 0) && (pixel->green == 0) && (pixel->blue == 0))
+    {
+      pixel->index=QuantumRange;
+      return;
+    }
+  cyan=(MagickRealType) (1.0-QuantumScale*pixel->red);
+  magenta=(MagickRealType) (1.0-QuantumScale*pixel->green);
+  yellow=(MagickRealType) (1.0-QuantumScale*pixel->blue);
+  black=cyan;
   if (magenta < black)
     black=magenta;
   if (yellow < black)
     black=yellow;
-  if (black == QuantumRange)
-    {
-      cyan=0.0;
-      magenta=0.0;
-      yellow=0.0;
-    }
-  else
-    {
-      cyan=(MagickRealType) (QuantumRange*(cyan-black)/
-        (QuantumRange-black));
-      magenta=(MagickRealType) (QuantumRange*(magenta-black)/
-        (QuantumRange-black));
-      yellow=(MagickRealType) (QuantumRange*(yellow-black)/
-        (QuantumRange-black));
-    }
+  cyan=(MagickRealType) ((cyan-black)/(1.0-black));
+  magenta=(MagickRealType) ((magenta-black)/(1.0-black));
+  yellow=(MagickRealType) ((yellow-black)/(1.0-black));
   pixel->colorspace=CMYKColorspace;
-  pixel->red=cyan;
-  pixel->green=magenta;
-  pixel->blue=yellow;
-  pixel->index=black;
+  pixel->red=QuantumRange*cyan;
+  pixel->green=QuantumRange*magenta;
+  pixel->blue=QuantumRange*yellow;
+  pixel->index=QuantumRange*black;
 }
 
 #if defined(__cplusplus) || defined(c_plusplus)