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=(((double) QuantumRange-(QuantumScale*pixel->red*((double)
33 QuantumRange-pixel->index)+pixel->index)));
34 pixel->green=(((double) QuantumRange-(QuantumScale*pixel->green*((double)
35 QuantumRange-pixel->index)+pixel->index)));
36 pixel->blue=(((double) QuantumRange-(QuantumScale*pixel->blue*((double)
37 QuantumRange-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=(double) QuantumRange*cyan;
83 pixel->green=(double) QuantumRange*magenta;
84 pixel->blue=(double) QuantumRange*yellow;
85 pixel->index=(double) QuantumRange*black;
88static inline MagickBooleanType IsCMYKColorspace(
89 const ColorspaceType colorspace)
91 if (colorspace == CMYKColorspace)
96static inline MagickBooleanType IsGrayColorspace(
97 const ColorspaceType colorspace)
99 if ((colorspace == LinearGRAYColorspace) || (colorspace == GRAYColorspace) ||
100 (colorspace == Rec601LumaColorspace) ||
101 (colorspace == Rec709LumaColorspace))
106static inline MagickBooleanType IsHueCompatibleColorspace(
107 const ColorspaceType colorspace)
109 if ((colorspace == HCLColorspace) || (colorspace == HCLpColorspace) ||
110 (colorspace == HSBColorspace) || (colorspace == HSIColorspace) ||
111 (colorspace == HSLColorspace) || (colorspace == HSVColorspace))
116static inline MagickBooleanType IsLabCompatibleColorspace(
117 const ColorspaceType colorspace)
119 if ((colorspace == LabColorspace) || (colorspace == LCHColorspace) ||
120 (colorspace == LCHabColorspace) || (colorspace == LCHuvColorspace))
125static inline MagickBooleanType IsRGBColorspace(
const ColorspaceType colorspace)
127 if ((colorspace == RGBColorspace) || (colorspace == scRGBColorspace) ||
128 (colorspace == LinearGRAYColorspace))
133static inline MagickBooleanType IssRGBColorspace(
134 const ColorspaceType colorspace)
136 if ((colorspace == sRGBColorspace) || (colorspace == TransparentColorspace))
141static inline MagickBooleanType IssRGBCompatibleColorspace(
142 const ColorspaceType colorspace)
144 if ((colorspace == sRGBColorspace) || (colorspace == RGBColorspace) ||
145 (colorspace == scRGBColorspace) ||
146 (colorspace == TransparentColorspace) || (colorspace == GRAYColorspace) ||
147 (colorspace == LinearGRAYColorspace))
152static inline MagickBooleanType IsYCbCrCompatibleColorspace(
153 const ColorspaceType colorspace)
155 if ((colorspace == YCbCrColorspace) ||
156 (colorspace == Rec709YCbCrColorspace) ||
157 (colorspace == Rec601YCbCrColorspace))
162#if defined(__cplusplus) || defined(c_plusplus)