]> granicus.if.org Git - imagemagick/blob - MagickCore/magick-type.h
(no commit message)
[imagemagick] / MagickCore / magick-type.h
1 /*
2   Copyright 1999-2011 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     http://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 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24
25 #include "MagickCore/magick-config.h"
26
27 #if !defined(MAGICKCORE_QUANTUM_DEPTH)
28 #define MAGICKCORE_QUANTUM_DEPTH  16
29 #endif
30
31 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__MINGW32__)
32 #  define MagickLLConstant(c)  (MagickOffsetType) (c ## i64)
33 #  define MagickULLConstant(c)  (MagickSizeType) (c ## ui64)
34 #else
35 #  define MagickLLConstant(c)  (MagickOffsetType) (c ## LL)
36 #  define MagickULLConstant(c)  (MagickSizeType) (c ## ULL)
37 #endif
38
39 #if (MAGICKCORE_QUANTUM_DEPTH == 8)
40 #define MagickEpsilon  1.0e-6
41 #define MaxColormapSize  256UL
42 #define MaxMap  255UL
43
44 typedef double MagickRealType;
45 #if defined(MAGICKCORE_HDRI_SUPPORT)
46 typedef float Quantum;
47 #define QuantumRange  255.0
48 #define QuantumFormat  "%g"
49 #else
50 typedef unsigned char Quantum;
51 #define QuantumRange  255
52 #define QuantumFormat  "%u"
53 #endif
54 #elif (MAGICKCORE_QUANTUM_DEPTH == 16)
55 #define MagickEpsilon  1.0e-10
56 #define MaxColormapSize  65536UL
57 #define MaxMap  65535UL
58
59 typedef double MagickRealType;
60 #if defined(MAGICKCORE_HDRI_SUPPORT)
61 typedef float Quantum;
62 #define QuantumRange  65535.0
63 #define QuantumFormat  "%g"
64 #else
65 typedef unsigned short Quantum;
66 #define QuantumRange  65535
67 #define QuantumFormat  "%u"
68 #endif
69 #elif (MAGICKCORE_QUANTUM_DEPTH == 32)
70 #define MagickEpsilon  1.0e-10
71 #define MaxColormapSize  65536UL
72 #define MaxMap  65535UL
73
74 typedef double MagickRealType;
75 #if defined(MAGICKCORE_HDRI_SUPPORT)
76 typedef float Quantum;
77 #define QuantumRange  4294967295.0
78 #define QuantumFormat  "%g"
79 #else
80 typedef unsigned int Quantum;
81 #define QuantumRange  4294967295
82 #define QuantumFormat  "%u"
83 #endif
84 #elif (MAGICKCORE_QUANTUM_DEPTH == 64) && defined(MAGICKCORE_HAVE_LONG_DOUBLE_WIDER)
85 #define MagickEpsilon  1.0e-10
86 #define MaxColormapSize  65536UL
87 #define MaxMap  65535UL
88
89 typedef long double MagickRealType;
90 typedef double Quantum;
91 #define QuantumRange  18446744073709551615.0
92 #define QuantumFormat  "%g"
93 #else
94 #if !defined(_CH_)
95 # error "MAGICKCORE_QUANTUM_DEPTH must be one of 8, 16, 32, or 64"
96 #endif
97 #endif
98 #define MagickHuge  3.402823466E+38F
99 #define MagickPI  3.14159265358979323846264338327950288419716939937510L
100 #define QuantumScale  ((double) 1.0/(double) QuantumRange)
101
102 /*
103   Typedef declarations.
104 */
105 typedef unsigned int MagickStatusType;
106 #if !defined(MAGICKCORE_WINDOWS_SUPPORT)
107 #if (MAGICKCORE_SIZEOF_UNSIGNED_LONG_LONG == 8)
108 typedef long long MagickOffsetType;
109 typedef unsigned long long MagickSizeType;
110 #define MagickOffsetFormat  "lld"
111 #define MagickSizeFormat  "llu"
112 #else
113 typedef ssize_t MagickOffsetType;
114 typedef size_t MagickSizeType;
115 #define MagickOffsetFormat  "ld"
116 #define MagickSizeFormat  "lu"
117 #endif
118 #else
119 typedef __int64 MagickOffsetType;
120 typedef unsigned __int64 MagickSizeType;
121 #define MagickOffsetFormat  "I64i"
122 #define MagickSizeFormat  "I64u"
123 #endif
124
125 #if defined(_MSC_VER) && (_MSC_VER == 1200)
126 typedef MagickOffsetType QuantumAny;
127 #else
128 typedef MagickSizeType QuantumAny;
129 #endif
130
131 #if defined(macintosh)
132 #define ExceptionInfo  MagickExceptionInfo
133 #endif
134
135 typedef enum
136 {
137   UndefinedChannel = 0x0000,
138   RedChannel = 0x0001,
139   GrayChannel = 0x0001,
140   CyanChannel = 0x0001,
141   GreenChannel = 0x0002,
142   MagentaChannel = 0x0002,
143   BlueChannel = 0x0004,
144   YellowChannel = 0x0004,
145   AlphaChannel = 0x0008,
146   OpacityChannel = 0x0008,
147   BlackChannel = 0x0010,
148   IndexChannel = 0x0020,
149   CompositeChannels = 0x002F,
150   AllChannels = 0x7ffffff,
151   /*
152     Special purpose channel types.
153   */
154   TrueAlphaChannel = 0x0040, /* extract actual alpha channel from opacity */
155   RGBChannels = 0x0080,      /* set alpha from grayscale mask in RGB */
156   GrayChannels = 0x0080,
157   SyncChannels = 0x0100,     /* channels should be modified equally */
158   DefaultChannels = ((AllChannels | SyncChannels) &~ AlphaChannel)
159 } ChannelType;
160
161 typedef enum
162 {
163   UndefinedClass,
164   DirectClass,
165   PseudoClass
166 } ClassType;
167
168 typedef enum
169 {
170   MagickFalse = 0,
171   MagickTrue = 1
172 } MagickBooleanType;
173
174 typedef struct _BlobInfo BlobInfo;
175
176 typedef struct _ExceptionInfo ExceptionInfo;
177
178 typedef struct _Image Image;
179
180 typedef struct _ImageInfo ImageInfo;
181
182 #if defined(__cplusplus) || defined(c_plusplus)
183 }
184 #endif
185
186 #endif