]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/colorspace-private.h
(no commit message)
[imagemagick] / MagickCore / colorspace-private.h
index d6ff0f10dfc1c0cbb5cb58e5d1dfe465ad47c16e..7dfb8fda3389cc8f2bcf33e1a34ba1e6e98078a2 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization
+  Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization
   dedicated to making software imaging solutions freely available.
   
   You may not use this file except in compliance with the License.
 #ifndef _MAGICKCORE_COLORSPACE_PRIVATE_H
 #define _MAGICKCORE_COLORSPACE_PRIVATE_H
 
+#include "MagickCore/image.h"
+#include "MagickCore/image-private.h"
+#include "MagickCore/pixel.h"
+#include "MagickCore/pixel-accessor.h"
+
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
 #endif
 
-#include <MagickCore/image.h>
-#include <MagickCore/image-private.h>
-#include <MagickCore/pixel.h>
-#include <MagickCore/pixel-accessor.h>
-
-static inline void ConvertsRGBToCMYK(PixelInfo *pixel)
+static inline void ConvertRGBToCMYK(PixelInfo *pixel)
 {
   MagickRealType
     black,
@@ -38,9 +38,18 @@ static inline void ConvertsRGBToCMYK(PixelInfo *pixel)
     red,
     yellow;
                                                                                 
-  red=DecompandsRGB(QuantumScale*pixel->red);
-  green=DecompandsRGB(QuantumScale*pixel->green);
-  blue=DecompandsRGB(QuantumScale*pixel->blue);
+  if (pixel->colorspace != sRGBColorspace)
+    {
+      red=QuantumScale*pixel->red;
+      green=QuantumScale*pixel->green;
+      blue=QuantumScale*pixel->blue;
+    }
+  else
+    {
+      red=DecodePixelGamma(pixel->red);
+      green=DecodePixelGamma(pixel->green);
+      blue=DecodePixelGamma(pixel->blue);
+    }
   if ((fabs(red) < MagickEpsilon) && (fabs(green) < MagickEpsilon) &&
       (fabs(blue) < MagickEpsilon))
     {
@@ -65,6 +74,47 @@ static inline void ConvertsRGBToCMYK(PixelInfo *pixel)
   pixel->black=QuantumRange*black;
 }
 
+static inline MagickBooleanType IsCMYKColorspace(
+  const ColorspaceType colorspace)
+{
+  if (colorspace == CMYKColorspace)
+    return(MagickTrue);
+  return(MagickFalse);
+}
+
+static inline MagickBooleanType IsGrayColorspace(
+  const ColorspaceType colorspace)
+{
+  if (colorspace == GRAYColorspace)
+    return(MagickTrue);
+  return(MagickFalse);
+}
+
+static inline MagickBooleanType IsRGBColorspace(const ColorspaceType colorspace)
+{
+  if ((colorspace == RGBColorspace) || (colorspace == scRGBColorspace))
+    return(MagickTrue);
+  return(MagickFalse);
+}
+
+static inline MagickBooleanType IssRGBColorspace(
+  const ColorspaceType colorspace)
+{
+  if ((colorspace == sRGBColorspace) || (colorspace == TransparentColorspace))
+    return(MagickTrue);
+  return(MagickFalse);
+}
+
+static inline MagickBooleanType IssRGBCompatibleColorspace(
+  const ColorspaceType colorspace)
+{
+  if ((colorspace == sRGBColorspace) || (colorspace == RGBColorspace) ||
+      (colorspace == scRGBColorspace) || 
+      (IsGrayColorspace(colorspace) != MagickFalse))
+    return(MagickTrue);
+  return(MagickFalse);
+}
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif