MagickCore 6.9.12-20
Convert, Edit, Or Compose Bitmap Images
magick-type.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 types.
17*/
18#ifndef MAGICKCORE_MAGICK_TYPE_H
19#define MAGICKCORE_MAGICK_TYPE_H
20
22
23#if defined(__cplusplus) || defined(c_plusplus)
24extern "C" {
25#endif
26
27#if !defined(MAGICKCORE_QUANTUM_DEPTH)
28#define MAGICKCORE_QUANTUM_DEPTH 16
29#endif
30#if !defined(MagickPathExtent)
31#define MagickPathExtent MaxTextExtent
32#endif
33
34#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__MINGW32__)
35# define MagickLLConstant(c) ((MagickOffsetType) (c ## i64))
36# define MagickULLConstant(c) ((MagickSizeType) (c ## ui64))
37#else
38# define MagickLLConstant(c) ((MagickOffsetType) (c ## LL))
39# define MagickULLConstant(c) ((MagickSizeType) (c ## ULL))
40#endif
41
42#if MAGICKCORE_SIZEOF_FLOAT_T == 0
43typedef float MagickFloatType;
44#elif (MAGICKCORE_SIZEOF_FLOAT_T == MAGICKCORE_SIZEOF_FLOAT)
45typedef float MagickFloatType;
46#elif (MAGICKCORE_SIZEOF_FLOAT_T == MAGICKCORE_SIZEOF_DOUBLE)
47typedef double MagickFloatType;
48#elif (MAGICKCORE_SIZEOF_FLOAT_T == MAGICKCORE_SIZEOF_LONG_DOUBLE)
49typedef double MagickFloatType;
50#else
51#error Your MagickFloatType type is neither a float, nor a double, nor a long double
52#endif
53#if MAGICKCORE_SIZEOF_DOUBLE_T == 0
54typedef double MagickDoubleType;
55#elif (MAGICKCORE_SIZEOF_DOUBLE_T == MAGICKCORE_SIZEOF_DOUBLE)
56typedef double MagickDoubleType;
57#elif (MAGICKCORE_SIZEOF_DOUBLE_T == MAGICKCORE_SIZEOF_LONG_DOUBLE)
58typedef long double MagickDoubleType;
59#else
60#error Your MagickDoubleType type is neither a float, nor a double, nor a long double
61#endif
62
63#if (MAGICKCORE_QUANTUM_DEPTH == 8)
64#define MaxColormapSize 256UL
65#define MaxMap 255UL
66typedef ssize_t SignedQuantum;
67#if defined(MAGICKCORE_HDRI_SUPPORT)
69#define QuantumRange 255.0
70#define QuantumFormat "%g"
71#else
72typedef unsigned char Quantum;
73#define QuantumRange ((Quantum) 255)
74#define QuantumFormat "%u"
75#endif
76#elif (MAGICKCORE_QUANTUM_DEPTH == 16)
77#define MaxColormapSize 65536UL
78#define MaxMap 65535UL
79typedef ssize_t SignedQuantum;
80#if defined(MAGICKCORE_HDRI_SUPPORT)
82#define QuantumRange 65535.0
83#define QuantumFormat "%g"
84#else
85typedef unsigned short Quantum;
86#define QuantumRange ((Quantum) 65535)
87#define QuantumFormat "%u"
88#endif
89#elif (MAGICKCORE_QUANTUM_DEPTH == 32)
90#define MaxColormapSize 65536UL
91#define MaxMap 65535UL
93#if defined(MAGICKCORE_HDRI_SUPPORT)
95#define QuantumRange 4294967295.0
96#define QuantumFormat "%g"
97#else
98typedef unsigned int Quantum;
99#define QuantumRange ((Quantum) 4294967295)
100#define QuantumFormat "%u"
101#endif
102#elif (MAGICKCORE_QUANTUM_DEPTH == 64)
103#define MAGICKCORE_HDRI_SUPPORT 1
104#define MaxColormapSize 65536UL
105#define MaxMap 65535UL
108#define QuantumRange 18446744073709551615.0
109#define QuantumFormat "%g"
110#else
111#if !defined(_CH_)
112# error "MAGICKCORE_QUANTUM_DEPTH must be one of 8, 16, 32, or 64"
113#endif
114#endif
115#define MagickEpsilon (1.0e-12)
116#define MagickMaximumValue 1.79769313486231570E+308
117#define MagickMinimumValue 2.22507385850720140E-308
118#define MagickStringify(macro_or_string) MagickStringifyArg(macro_or_string)
119#define MagickStringifyArg(contents) #contents
120#define QuantumScale ((double) 1.0/(double) QuantumRange)
121
122/*
123 Typedef declarations.
124*/
126
127typedef unsigned int MagickStatusType;
128#if !defined(MAGICKCORE_WINDOWS_SUPPORT)
129#if (MAGICKCORE_SIZEOF_UNSIGNED_LONG_LONG == 8)
130typedef long long MagickOffsetType;
131typedef unsigned long long MagickSizeType;
132#define MagickOffsetFormat "lld"
133#define MagickSizeFormat "llu"
134#else
135typedef ssize_t MagickOffsetType;
136typedef size_t MagickSizeType;
137#define MagickOffsetFormat "ld"
138#define MagickSizeFormat "lu"
139#endif
140#else
141typedef __int64 MagickOffsetType;
142typedef unsigned __int64 MagickSizeType;
143#define MagickOffsetFormat "I64i"
144#define MagickSizeFormat "I64u"
145#endif
146
147#if MAGICKCORE_HAVE_UINTPTR_T || defined(uintptr_t)
148typedef uintptr_t MagickAddressType;
149#else
150/* Hope for the best, I guess. */
151typedef size_t MagickAddressType;
152#endif
153
154#if defined(_MSC_VER) && (_MSC_VER == 1200)
156#else
158#endif
159
160#if defined(macintosh)
161#define ExceptionInfo MagickExceptionInfo
162#endif
163
164typedef enum
165{
167 RedChannel = 0x0001,
168 GrayChannel = 0x0001,
169 CyanChannel = 0x0001,
170 GreenChannel = 0x0002,
172 BlueChannel = 0x0004,
174 AlphaChannel = 0x0008,
176 MatteChannel = 0x0008, /* deprecated */
177 BlackChannel = 0x0020,
178 IndexChannel = 0x0020,
180 AllChannels = 0x7ffffff,
181 /*
182 Special purpose channel types.
183 */
184 TrueAlphaChannel = 0x0040, /* extract actual alpha channel from opacity */
185 RGBChannels = 0x0080, /* set alpha from grayscale mask in RGB */
186 GrayChannels = 0x0080,
187 SyncChannels = 0x0100, /* channels should be modified equally */
190
191typedef enum
192{
197
198typedef enum
199{
201 MagickTrue = 1
203
204/*
205 The IsNaN test is for special floating point numbers of value Nan (not a
206 number). NaN's are defined as part of the IEEE standard for floating point
207 number representation, and need to be watched out for. Morphology Kernels
208 often use these special numbers as neighbourhood masks.
209
210 The special property that two NaN's are never equal, even if they are from
211 the same variable allows you to test if a value is special NaN value.
212
213 The macros are thus is only true if the value given is NaN.
214*/
215#if defined(MAGICKCORE_HAVE_ISNAN) && !defined(__cplusplus) && !defined(c_plusplus)
216# define IsNaN(a) isnan(a)
217#elif defined(_MSC_VER) && (_MSC_VER >= 1310)
218# include <float.h>
219# define IsNaN(a) _isnan(a)
220#else
221# define IsNaN(a) ((a) != (a))
222#endif
223#if !defined(INFINITY)
224# define INFINITY ((double) -logf(0f))
225#endif
226
227typedef struct _BlobInfo BlobInfo;
228
230
231typedef struct _Image Image;
232
233typedef struct _ImageInfo ImageInfo;
234
235#if defined(__cplusplus) || defined(c_plusplus)
236}
237#endif
238
239#endif
float MagickFloatType
Definition: magick-type.h:43
ChannelType
Definition: magick-type.h:165
@ MatteChannel
Definition: magick-type.h:176
@ UndefinedChannel
Definition: magick-type.h:166
@ GrayChannels
Definition: magick-type.h:186
@ AllChannels
Definition: magick-type.h:180
@ GreenChannel
Definition: magick-type.h:170
@ OpacityChannel
Definition: magick-type.h:175
@ CompositeChannels
Definition: magick-type.h:179
@ TrueAlphaChannel
Definition: magick-type.h:184
@ BlackChannel
Definition: magick-type.h:177
@ DefaultChannels
Definition: magick-type.h:188
@ BlueChannel
Definition: magick-type.h:172
@ RedChannel
Definition: magick-type.h:167
@ SyncChannels
Definition: magick-type.h:187
@ YellowChannel
Definition: magick-type.h:173
@ MagentaChannel
Definition: magick-type.h:171
@ RGBChannels
Definition: magick-type.h:185
@ IndexChannel
Definition: magick-type.h:178
@ CyanChannel
Definition: magick-type.h:169
@ AlphaChannel
Definition: magick-type.h:174
@ GrayChannel
Definition: magick-type.h:168
MagickDoubleType MagickRealType
Definition: magick-type.h:125
double MagickDoubleType
Definition: magick-type.h:54
ssize_t MagickOffsetType
Definition: magick-type.h:135
ssize_t SignedQuantum
Definition: magick-type.h:79
unsigned short Quantum
Definition: magick-type.h:85
unsigned int MagickStatusType
Definition: magick-type.h:127
ClassType
Definition: magick-type.h:192
@ UndefinedClass
Definition: magick-type.h:193
@ DirectClass
Definition: magick-type.h:194
@ PseudoClass
Definition: magick-type.h:195
MagickSizeType QuantumAny
Definition: magick-type.h:157
size_t MagickSizeType
Definition: magick-type.h:136
MagickBooleanType
Definition: magick-type.h:199
@ MagickFalse
Definition: magick-type.h:200
@ MagickTrue
Definition: magick-type.h:201
size_t MagickAddressType
Definition: magick-type.h:151
Definition: blob.c:116
Definition: exception.h:103
Definition: image.h:362
Definition: image.h:153