18 #ifndef MAGICKCORE_COLORSPACE_PRIVATE_H
19 #define MAGICKCORE_COLORSPACE_PRIVATE_H
21 #include "magick/image.h"
22 #include "magick/image-private.h"
23 #include "magick/pixel.h"
24 #include "magick/pixel-accessor.h"
26 #if defined(__cplusplus) || defined(c_plusplus)
32 pixel->red=((QuantumRange-(QuantumScale*pixel->red*(QuantumRange-
33 pixel->index)+pixel->index)));
34 pixel->green=((QuantumRange-(QuantumScale*pixel->green*(QuantumRange-
35 pixel->index)+pixel->index)));
36 pixel->blue=((QuantumRange-(QuantumScale*pixel->blue*(QuantumRange-
37 pixel->index)+pixel->index)));
51 if (pixel->colorspace != sRGBColorspace)
53 red=QuantumScale*pixel->red;
54 green=QuantumScale*pixel->green;
55 blue=QuantumScale*pixel->blue;
59 red=QuantumScale*DecodePixelGamma(pixel->red);
60 green=QuantumScale*DecodePixelGamma(pixel->green);
61 blue=QuantumScale*DecodePixelGamma(pixel->blue);
63 if ((fabs((
double) red) < MagickEpsilon) &&
64 (fabs((
double) green) < MagickEpsilon) &&
65 (fabs((
double) blue) < MagickEpsilon))
67 pixel->index=(MagickRealType) QuantumRange;
70 cyan=(MagickRealType) (1.0-red);
71 magenta=(MagickRealType) (1.0-green);
72 yellow=(MagickRealType) (1.0-blue);
78 cyan=(MagickRealType) (PerceptibleReciprocal(1.0-black)*(cyan-black));
79 magenta=(MagickRealType) (PerceptibleReciprocal(1.0-black)*(magenta-black));
80 yellow=(MagickRealType) (PerceptibleReciprocal(1.0-black)*(yellow-black));
81 pixel->colorspace=CMYKColorspace;
82 pixel->red=QuantumRange*cyan;
83 pixel->green=QuantumRange*magenta;
84 pixel->blue=QuantumRange*yellow;
85 pixel->index=QuantumRange*black;
88 static inline MagickBooleanType IsCMYKColorspace(
89 const ColorspaceType colorspace)
91 if (colorspace == CMYKColorspace)
96 static inline MagickBooleanType IsGrayColorspace(
97 const ColorspaceType colorspace)
99 if ((colorspace == LinearGRAYColorspace) || (colorspace == GRAYColorspace) ||
100 (colorspace == Rec601LumaColorspace) ||
101 (colorspace == Rec709LumaColorspace))
106 static inline MagickBooleanType IsHueCompatibleColorspace(
107 const ColorspaceType colorspace)
109 if ((colorspace == HCLColorspace) || (colorspace == HCLpColorspace) ||
110 (colorspace == HSBColorspace) || (colorspace == HSIColorspace) ||
111 (colorspace == HSLColorspace) || (colorspace == HSVColorspace))
116 static inline MagickBooleanType IsRGBColorspace(
const ColorspaceType colorspace)
118 if ((colorspace == RGBColorspace) || (colorspace == scRGBColorspace) ||
119 (colorspace == LinearGRAYColorspace))
124 static inline MagickBooleanType IssRGBColorspace(
125 const ColorspaceType colorspace)
127 if ((colorspace == sRGBColorspace) || (colorspace == TransparentColorspace))
132 static inline MagickBooleanType IssRGBCompatibleColorspace(
133 const ColorspaceType colorspace)
135 if ((colorspace == sRGBColorspace) || (colorspace == RGBColorspace) ||
136 (colorspace == scRGBColorspace) ||
137 (colorspace == TransparentColorspace) || (colorspace == GRAYColorspace) ||
138 (colorspace == LinearGRAYColorspace))
143 static inline MagickBooleanType IsYCbCrCompatibleColorspace(
144 const ColorspaceType colorspace)
146 if ((colorspace == YCbCrColorspace) ||
147 (colorspace == Rec709YCbCrColorspace) ||
148 (colorspace == Rec601YCbCrColorspace))
153 #if defined(__cplusplus) || defined(c_plusplus)