MagickCore  6.9.10
Convert, Edit, Or Compose Bitmap Images
magick-type.h
Go to the documentation of this file.
1 /*
2  Copyright 1999-2018 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.
6  obtain a copy of the License at
7 
8  https://www.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 
21 #include "magick/magick-config.h"
22 
23 #if defined(__cplusplus) || defined(c_plusplus)
24 extern "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
43 typedef float MagickFloatType;
44 #elif (MAGICKCORE_SIZEOF_FLOAT_T == MAGICKCORE_SIZEOF_FLOAT)
45 typedef float MagickFloatType;
46 #elif (MAGICKCORE_SIZEOF_FLOAT_T == MAGICKCORE_SIZEOF_DOUBLE)
47 typedef double MagickFloatType;
48 #elif (MAGICKCORE_SIZEOF_FLOAT_T == MAGICKCORE_SIZEOF_LONG_DOUBLE)
49 typedef long 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
54 typedef double MagickDoubleType;
55 #elif (MAGICKCORE_SIZEOF_DOUBLE_T == MAGICKCORE_SIZEOF_DOUBLE)
56 typedef double MagickDoubleType;
57 #elif (MAGICKCORE_SIZEOF_DOUBLE_T == MAGICKCORE_SIZEOF_LONG_DOUBLE)
58 typedef 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
66 typedef ssize_t SignedQuantum;
67 #if defined(MAGICKCORE_HDRI_SUPPORT)
68 typedef MagickFloatType Quantum;
69 #define QuantumRange 255.0
70 #define QuantumFormat "%g"
71 #else
72 typedef 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
79 typedef ssize_t SignedQuantum;
80 #if defined(MAGICKCORE_HDRI_SUPPORT)
81 typedef MagickFloatType Quantum;
82 #define QuantumRange 65535.0
83 #define QuantumFormat "%g"
84 #else
85 typedef 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
92 typedef MagickDoubleType SignedQuantum;
93 #if defined(MAGICKCORE_HDRI_SUPPORT)
94 typedef MagickDoubleType Quantum;
95 #define QuantumRange 4294967295.0
96 #define QuantumFormat "%g"
97 #else
98 typedef 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
106 typedef MagickDoubleType SignedQuantum;
107 typedef MagickDoubleType Quantum;
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 QuantumScale ((double) 1.0/(double) QuantumRange)
119 
120 /*
121  Typedef declarations.
122 */
123 typedef MagickDoubleType MagickRealType;
124 
125 typedef unsigned int MagickStatusType;
126 #if !defined(MAGICKCORE_WINDOWS_SUPPORT)
127 #if (MAGICKCORE_SIZEOF_UNSIGNED_LONG_LONG == 8)
128 typedef long long MagickOffsetType;
129 typedef unsigned long long MagickSizeType;
130 #define MagickOffsetFormat "lld"
131 #define MagickSizeFormat "llu"
132 #else
133 typedef ssize_t MagickOffsetType;
134 typedef size_t MagickSizeType;
135 #define MagickOffsetFormat "ld"
136 #define MagickSizeFormat "lu"
137 #endif
138 #else
139 typedef __int64 MagickOffsetType;
140 typedef unsigned __int64 MagickSizeType;
141 #define MagickOffsetFormat "I64i"
142 #define MagickSizeFormat "I64u"
143 #endif
144 
145 #if defined(_MSC_VER) && (_MSC_VER == 1200)
146 typedef MagickOffsetType QuantumAny;
147 #else
148 typedef MagickSizeType QuantumAny;
149 #endif
150 
151 #if defined(macintosh)
152 #define ExceptionInfo MagickExceptionInfo
153 #endif
154 
155 typedef enum
156 {
158  RedChannel = 0x0001,
159  GrayChannel = 0x0001,
160  CyanChannel = 0x0001,
161  GreenChannel = 0x0002,
162  MagentaChannel = 0x0002,
163  BlueChannel = 0x0004,
164  YellowChannel = 0x0004,
165  AlphaChannel = 0x0008,
166  OpacityChannel = 0x0008,
167  MatteChannel = 0x0008, /* deprecated */
168  BlackChannel = 0x0020,
169  IndexChannel = 0x0020,
171  AllChannels = 0x7ffffff,
172  /*
173  Special purpose channel types.
174  */
175  TrueAlphaChannel = 0x0040, /* extract actual alpha channel from opacity */
176  RGBChannels = 0x0080, /* set alpha from grayscale mask in RGB */
177  GrayChannels = 0x0080,
178  SyncChannels = 0x0100, /* channels should be modified equally */
180 } ChannelType;
181 
182 typedef enum
183 {
187 } ClassType;
188 
189 typedef enum
190 {
194 
195 /*
196  The IsNaN test is for special floating point numbers of value Nan (not a
197  number). NaN's are defined as part of the IEEE standard for floating point
198  number representation, and need to be watched out for. Morphology Kernels
199  often use these special numbers as neighbourhood masks.
200 
201  The special property that two NaN's are never equal, even if they are from
202  the same variable allows you to test if a value is special NaN value.
203 
204  The macros are thus is only true if the value given is NaN.
205 */
206 #if defined(MAGICKCORE_HAVE_ISNAN)
207 # define IsNaN(a) isnan(a)
208 #elif defined(_MSC_VER) && (_MSC_VER >= 1310)
209 # include <float.h>
210 # define IsNaN(a) _isnan(a)
211 #else
212 # define IsNaN(a) ((a) != (a))
213 #endif
214 #if !defined(INFINITY)
215 # define INFINITY (-logf(0f))
216 #endif
217 
218 typedef struct _BlobInfo BlobInfo;
219 
221 
222 typedef struct _Image Image;
223 
224 typedef struct _ImageInfo ImageInfo;
225 
226 #if defined(__cplusplus) || defined(c_plusplus)
227 }
228 #endif
229 
230 #endif
MagickDoubleType MagickRealType
Definition: magick-type.h:123
double MagickDoubleType
Definition: magick-type.h:54
Definition: magick-type.h:176
Definition: exception.h:102
Definition: magick-type.h:165
Definition: magick-type.h:171
Definition: magick-type.h:160
Definition: image.h:361
Definition: magick-type.h:185
Definition: blob.c:114
ssize_t SignedQuantum
Definition: magick-type.h:79
float MagickFloatType
Definition: magick-type.h:43
Definition: magick-type.h:166
ssize_t MagickOffsetType
Definition: magick-type.h:133
Definition: image.h:152
Definition: magick-type.h:178
MagickBooleanType
Definition: magick-type.h:189
unsigned int MagickStatusType
Definition: magick-type.h:125
ClassType
Definition: magick-type.h:182
Definition: magick-type.h:162
Definition: magick-type.h:192
size_t MagickSizeType
Definition: magick-type.h:134
Definition: magick-type.h:164
Definition: magick-type.h:179
Definition: magick-type.h:159
Definition: magick-type.h:168
Definition: magick-type.h:167
Definition: magick-type.h:175
ChannelType
Definition: magick-type.h:155
Definition: magick-type.h:161
Definition: magick-type.h:191
unsigned short Quantum
Definition: magick-type.h:85
Definition: magick-type.h:157
Definition: magick-type.h:184
Definition: magick-type.h:163
Definition: magick-type.h:170
Definition: magick-type.h:158
Definition: magick-type.h:186
Definition: magick-type.h:177
MagickSizeType QuantumAny
Definition: magick-type.h:148
Definition: magick-type.h:169