MagickCore 6.9.11-60
Convert, Edit, Or Compose Bitmap Images
colorspace-private.h
Go to the documentation of this file.
1/*
2 Copyright 1999-2021 ImageMagick Studio LLC, a non-profit organization
3 dedicated to making software imaging solutions freely available.
4
5 You may not use this file except in compliance with the License. You may
6 obtain a copy of the License at
7
8 https://imagemagick.org/script/license.php
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15
16 MagickCore image colorspace private methods.
17*/
18#ifndef MAGICKCORE_COLORSPACE_PRIVATE_H
19#define MAGICKCORE_COLORSPACE_PRIVATE_H
20
21#include "magick/image.h"
23#include "magick/pixel.h"
25
26#if defined(__cplusplus) || defined(c_plusplus)
27extern "C" {
28#endif
29
30static inline void ConvertCMYKToRGB(MagickPixelPacket *pixel)
31{
33 pixel->index)+pixel->index)));
35 pixel->index)+pixel->index)));
37 pixel->index)+pixel->index)));
38}
39
40static inline void ConvertRGBToCMYK(MagickPixelPacket *pixel)
41{
43 black,
44 blue,
45 cyan,
46 green,
47 magenta,
48 red,
49 yellow;
50
51 if (pixel->colorspace != sRGBColorspace)
52 {
53 red=QuantumScale*pixel->red;
54 green=QuantumScale*pixel->green;
55 blue=QuantumScale*pixel->blue;
56 }
57 else
58 {
62 }
63 if ((fabs((double) red) < MagickEpsilon) &&
64 (fabs((double) green) < MagickEpsilon) &&
65 (fabs((double) blue) < MagickEpsilon))
66 {
68 return;
69 }
70 cyan=(MagickRealType) (1.0-red);
71 magenta=(MagickRealType) (1.0-green);
72 yellow=(MagickRealType) (1.0-blue);
73 black=cyan;
74 if (magenta < black)
75 black=magenta;
76 if (yellow < black)
77 black=yellow;
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));
82 pixel->red=QuantumRange*cyan;
83 pixel->green=QuantumRange*magenta;
84 pixel->blue=QuantumRange*yellow;
85 pixel->index=QuantumRange*black;
86}
87
89 const ColorspaceType colorspace)
90{
91 if (colorspace == CMYKColorspace)
92 return(MagickTrue);
93 return(MagickFalse);
94}
95
97 const ColorspaceType colorspace)
98{
99 if ((colorspace == LinearGRAYColorspace) || (colorspace == GRAYColorspace) ||
100 (colorspace == Rec601LumaColorspace) ||
101 (colorspace == Rec709LumaColorspace))
102 return(MagickTrue);
103 return(MagickFalse);
104}
105
107 const ColorspaceType colorspace)
108{
109 if ((colorspace == HCLColorspace) || (colorspace == HCLpColorspace) ||
110 (colorspace == HSBColorspace) || (colorspace == HSIColorspace) ||
111 (colorspace == HSLColorspace) || (colorspace == HSVColorspace))
112 return(MagickTrue);
113 return(MagickFalse);
114}
115
116static inline MagickBooleanType IsRGBColorspace(const ColorspaceType colorspace)
117{
118 if ((colorspace == RGBColorspace) || (colorspace == scRGBColorspace) ||
119 (colorspace == LinearGRAYColorspace))
120 return(MagickTrue);
121 return(MagickFalse);
122}
123
125 const ColorspaceType colorspace)
126{
127 if ((colorspace == sRGBColorspace) || (colorspace == TransparentColorspace))
128 return(MagickTrue);
129 return(MagickFalse);
130}
131
133 const ColorspaceType colorspace)
134{
135 if ((colorspace == sRGBColorspace) || (colorspace == RGBColorspace) ||
136 (colorspace == scRGBColorspace) ||
137 (colorspace == TransparentColorspace) || (colorspace == GRAYColorspace) ||
138 (colorspace == LinearGRAYColorspace))
139 return(MagickTrue);
140 return(MagickFalse);
141}
142
144 const ColorspaceType colorspace)
145{
146 if ((colorspace == YCbCrColorspace) ||
147 (colorspace == Rec709YCbCrColorspace) ||
148 (colorspace == Rec601YCbCrColorspace))
149 return(MagickTrue);
150 return(MagickFalse);
151}
152
153#if defined(__cplusplus) || defined(c_plusplus)
154}
155#endif
156
157#endif
static MagickBooleanType IssRGBColorspace(const ColorspaceType colorspace)
Definition colorspace-private.h:124
static MagickBooleanType IsGrayColorspace(const ColorspaceType colorspace)
Definition colorspace-private.h:96
static MagickBooleanType IsHueCompatibleColorspace(const ColorspaceType colorspace)
Definition colorspace-private.h:106
static MagickBooleanType IsYCbCrCompatibleColorspace(const ColorspaceType colorspace)
Definition colorspace-private.h:143
static MagickBooleanType IsCMYKColorspace(const ColorspaceType colorspace)
Definition colorspace-private.h:88
static void ConvertRGBToCMYK(MagickPixelPacket *pixel)
Definition colorspace-private.h:40
static void ConvertCMYKToRGB(MagickPixelPacket *pixel)
Definition colorspace-private.h:30
static MagickBooleanType IssRGBCompatibleColorspace(const ColorspaceType colorspace)
Definition colorspace-private.h:132
static MagickBooleanType IsRGBColorspace(const ColorspaceType colorspace)
Definition colorspace-private.h:116
ColorspaceType
Definition colorspace.h:26
@ Rec601LumaColorspace
Definition colorspace.h:44
@ Rec601YCbCrColorspace
Definition colorspace.h:45
@ HSLColorspace
Definition colorspace.h:42
@ YCbCrColorspace
Definition colorspace.h:34
@ scRGBColorspace
Definition colorspace.h:56
@ HSIColorspace
Definition colorspace.h:57
@ HSBColorspace
Definition colorspace.h:41
@ HCLColorspace
Definition colorspace.h:51
@ HCLpColorspace
Definition colorspace.h:59
@ RGBColorspace
Definition colorspace.h:28
@ CMYKColorspace
Definition colorspace.h:39
@ Rec709LumaColorspace
Definition colorspace.h:46
@ Rec709YCbCrColorspace
Definition colorspace.h:47
@ GRAYColorspace
Definition colorspace.h:29
@ HSVColorspace
Definition colorspace.h:58
@ TransparentColorspace
Definition colorspace.h:30
@ sRGBColorspace
Definition colorspace.h:40
@ LinearGRAYColorspace
Definition colorspace.h:62
MagickDoubleType MagickRealType
Definition magick-type.h:129
#define QuantumRange
Definition magick-type.h:90
#define MagickEpsilon
Definition magick-type.h:119
MagickBooleanType
Definition magick-type.h:203
@ MagickFalse
Definition magick-type.h:204
@ MagickTrue
Definition magick-type.h:205
#define QuantumScale
Definition magick-type.h:124
static double PerceptibleReciprocal(const double x)
Definition pixel-accessor.h:124
MagickExport MagickRealType DecodePixelGamma(const MagickRealType pixel)
Definition pixel.c:246
Definition pixel.h:105
ColorspaceType colorspace
Definition pixel.h:110
MagickRealType blue
Definition pixel.h:124
MagickRealType index
Definition pixel.h:126
MagickRealType green
Definition pixel.h:123
MagickRealType red
Definition pixel.h:122