]> granicus.if.org Git - imagemagick/blob - MagickCore/studio.h
(no commit message)
[imagemagick] / MagickCore / studio.h
1 /*
2   Copyright 1999-2012 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 private application programming interface declarations.
17 */
18 #ifndef _MAGICKCORE_STUDIO_H
19 #define _MAGICKCORE_STUDIO_H
20
21 #if defined(__cplusplus) || defined(c_plusplus)
22 extern "C" {
23 #endif
24
25 #if defined(WIN32) || defined(WIN64)
26 #  define MAGICKCORE_WINDOWS_SUPPORT
27 #else
28 #  define MAGICKCORE_POSIX_SUPPORT
29 #endif
30
31 #define MAGICKCORE_IMPLEMENTATION  1
32
33 #if !defined(_MAGICKCORE_CONFIG_H)
34 # define _MAGICKCORE_CONFIG_H
35 # if !defined(vms) && !defined(macintosh)
36 #  include "MagickCore/magick-config.h"
37 # else
38 #  include "magick-config.h"
39 # endif
40 #if defined(MAGICKCORE__FILE_OFFSET_BITS) && !defined(_FILE_OFFSET_BITS)
41 # define _FILE_OFFSET_BITS MAGICKCORE__FILE_OFFSET_BITS
42 #endif
43 #if defined(_magickcore_const) && !defined(const)
44 # define const  _magickcore_const
45 #endif
46 #if defined(_magickcore_inline) && !defined(inline)
47 # define inline  _magickcore_inline
48 #endif
49 #if defined(_magickcore_restrict) && !defined(restrict)
50 # define restrict  _magickcore_restrict
51 #endif
52 # if defined(__cplusplus) || defined(c_plusplus)
53 #  undef inline
54 # endif
55 #endif
56
57 #if defined(MAGICKCORE_NAMESPACE_PREFIX)
58 # include "MagickCore/methods.h"
59 #endif
60
61 #if !defined(const)
62 #  define STDC
63 #endif
64
65 #include <stdarg.h>
66 #include <stdio.h>
67 #if defined(MAGICKCORE_HAVE_SYS_STAT_H)
68 # include <sys/stat.h>
69 #endif
70 #if defined(MAGICKCORE_STDC_HEADERS)
71 # include <stdlib.h>
72 # include <stddef.h>
73 #else
74 # if defined(MAGICKCORE_HAVE_STDLIB_H)
75 #  include <stdlib.h>
76 # endif
77 #endif
78 #if defined(MAGICKCORE_HAVE_STRING_H)
79 # if !defined(STDC_HEADERS) && defined(MAGICKCORE_HAVE_MEMORY_H)
80 #  include <memory.h>
81 # endif
82 # include <string.h>
83 #endif
84 #if defined(MAGICKCORE_HAVE_STRINGS_H)
85 # include <strings.h>
86 #endif
87 #if defined(MAGICKCORE_HAVE_INTTYPES_H)
88 # include <inttypes.h>
89 #endif
90 #if defined(MAGICKCORE_HAVE_STDINT_H)
91 # include <stdint.h>
92 #endif
93 #if defined(MAGICKCORE_HAVE_UNISTD_H)
94 # include <unistd.h>
95 #endif
96 #if defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DEBUG)
97 #define _CRTDBG_MAP_ALLOC
98 #endif
99 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
100 # include <direct.h>
101 # if !defined(MAGICKCORE_HAVE_STRERROR)
102 #  define HAVE_STRERROR
103 # endif
104 #endif
105
106 #include <ctype.h>
107 #include <locale.h>
108 #include <errno.h>
109 #include <fcntl.h>
110 #include <math.h>
111 #include <time.h>
112 #include <limits.h>
113 #include <signal.h>
114 #include <assert.h>
115
116 #if defined(MAGICKCORE_HAVE_XLOCALE_H)
117 # include <xlocale.h>
118 #endif
119 #if defined(MAGICKCORE_THREAD_SUPPORT)
120 # include <pthread.h>
121 #elif defined(MAGICKCORE_WINDOWS_SUPPORT)
122 #  define MAGICKCORE_HAVE_WINTHREADS  1
123 #include <windows.h>
124 #endif
125 #if defined(MAGICKCORE_HAVE_SYS_SYSLIMITS_H)
126 # include <sys/syslimits.h>
127 #endif
128 #if defined(MAGICKCORE_HAVE_ARM_LIMITS_H)
129 # include <arm/limits.h>
130 #endif
131
132 #if defined(MAGICKCORE__OPENCL)
133 #if defined(MAGICKCORE_HAVE_CL_CL_H)
134 #  include <CL/cl.h>
135 #endif
136 #if defined(MAGICKCORE_HAVE_OPENCL_CL_H)
137 #  include <OpenCL/cl.h>
138 #endif
139 #  define MAGICKCORE_OPENCL_SUPPORT  1
140 #endif
141
142 #if defined(_OPENMP) && ((_OPENMP >= 200203) || defined(__OPENCC__))
143 #  include <omp.h>
144 #  define MAGICKCORE_OPENMP_SUPPORT  1
145 #endif
146
147 #if defined(MAGICKCORE_HAVE_PREAD) && defined(MAGICKCORE_HAVE_DECL_PREAD) && !MAGICKCORE_HAVE_DECL_PREAD
148 ssize_t pread(int,void *,size_t,off_t);
149 #endif
150
151 #if defined(MAGICKCORE_HAVE_PWRITE) && defined(MAGICKCORE_HAVE_DECL_PWRITE) && !MAGICKCORE_HAVE_DECL_PWRITE
152 ssize_t pwrite(int,const void *,size_t,off_t);
153 #endif
154
155 #if defined(MAGICKCORE_HAVE_STRLCPY) && defined(MAGICKCORE_HAVE_DECL_STRLCPY) && !MAGICKCORE_HAVE_DECL_STRLCPY
156 extern size_t strlcpy(char *,const char *,size_t);
157 #endif
158
159 #if defined(MAGICKCORE_HAVE_VSNPRINTF) && defined(MAGICKCORE_HAVE_DECL_VSNPRINTF) && !MAGICKCORE_HAVE_DECL_VSNPRINTF
160 extern int vsnprintf(char *,size_t,const char *,va_list);
161 #endif
162
163 #include "MagickCore/method-attribute.h"
164
165 #if defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(MAGICKCORE_POSIX_SUPPORT)
166 # include <sys/types.h>
167 # include <sys/stat.h>
168 # if defined(MAGICKCORE_HAVE_FTIME)
169 # include <sys/timeb.h>
170 # endif
171 # if defined(MAGICKCORE_POSIX_SUPPORT)
172 #  if defined(MAGICKCORE_HAVE_SYS_NDIR_H) || defined(MAGICKCORE_HAVE_SYS_DIR_H) || defined(MAGICKCORE_HAVE_NDIR_H)
173 #   define dirent direct
174 #   define NAMLEN(dirent) (dirent)->d_namlen
175 #   if defined(MAGICKCORE_HAVE_SYS_NDIR_H)
176 #    include <sys/ndir.h>
177 #   endif
178 #   if defined(MAGICKCORE_HAVE_SYS_DIR_H)
179 #    include <sys/dir.h>
180 #   endif
181 #   if defined(MAGICKCORE_HAVE_NDIR_H)
182 #    include <ndir.h>
183 #   endif
184 #  else
185 #   include <dirent.h>
186 #   define NAMLEN(dirent) strlen((dirent)->d_name)
187 #  endif
188 #  include <sys/wait.h>
189 #  include <pwd.h>
190 # endif
191 # if !defined(S_ISDIR)
192 #  define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
193 # endif
194 # if !defined(S_ISREG)
195 #  define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
196 # endif
197 # include "MagickCore/magick-type.h"
198 # if !defined(MAGICKCORE_WINDOWS_SUPPORT)
199 #  include <sys/time.h>
200 # if defined(MAGICKCORE_HAVE_SYS_TIMES_H)
201 #  include <sys/times.h>
202 # endif
203 # if defined(MAGICKCORE_HAVE_SYS_RESOURCE_H)
204 #  include <sys/resource.h>
205 # endif
206 #endif
207 #else
208 # include <types.h>
209 # include <stat.h>
210 # if defined(macintosh)
211 #  if !defined(DISABLE_SIOUX)
212 #   include <SIOUX.h>
213 #   include <console.h>
214 #  endif
215 #  include <unix.h>
216 # endif
217 # include "MagickCore/magick-type.h"
218 #endif
219
220 #if defined(S_IRUSR) && defined(S_IWUSR)
221 # define S_MODE (S_IRUSR | S_IWUSR)
222 #elif defined (MAGICKCORE_WINDOWS_SUPPORT)
223 # define S_MODE (_S_IREAD | _S_IWRITE)
224 #else
225 # define S_MODE  0600
226 #endif
227
228 #if defined(MAGICKCORE_WINDOWS_SUPPORT)
229 # include "MagickCore/nt-base.h"
230 #endif
231 #if defined(macintosh)
232 # include "MagickCore/mac.h"
233 #endif
234 #if defined(vms)
235 # include "MagickCore/vms.h"
236 #endif
237
238 #undef HAVE_CONFIG_H
239 #undef gamma
240 #undef index
241 #undef pipe
242 #undef y1
243
244 /*
245   Review these platform specific definitions.
246 */
247 #if defined(MAGICKCORE_POSIX_SUPPORT) && !defined(__OS2__)
248 # define DirectorySeparator  "/"
249 # define DirectoryListSeparator  ':'
250 # define EditorOptions  " -title \"Edit Image Comment\" -e vi"
251 # define Exit  exit
252 # define IsBasenameSeparator(c)  ((c) == '/' ? MagickTrue : MagickFalse)
253 # define X11_PREFERENCES_PATH  "~/."
254 # define ProcessPendingEvents(text)
255 # define ReadCommandlLine(argc,argv)
256 # define SetNotifyHandlers
257 #else
258 # if defined(vms)
259 #  define X11_APPLICATION_PATH  "decw$system_defaults:"
260 #  define DirectorySeparator  ""
261 #  define DirectoryListSeparator  ';'
262 #  define EditorOptions  ""
263 #  define Exit  exit
264 #  define IsBasenameSeparator(c) \
265   (((c) == ']') || ((c) == ':') || ((c) == '/') ? MagickTrue : MagickFalse)
266 #  define MAGICKCORE_LIBRARY_PATH  "sys$login:"
267 #  define MAGICKCORE_CODER_PATH  "sys$login:"
268 #  define MAGICKCORE_FILTER_PATH  "sys$login:"
269 #  define MAGICKCORE_SHARE_PATH  "sys$login:"
270 #  define X11_PREFERENCES_PATH  "decw$user_defaults:"
271 #  define ProcessPendingEvents(text)
272 #  define ReadCommandlLine(argc,argv)
273 #  define SetNotifyHandlers
274 # endif
275 # if defined(__OS2__)
276 #   define DirectorySeparator  "\\"
277 #   define DirectoryListSeparator  ';'
278 # define EditorOptions  " -title \"Edit Image Comment\" -e vi"
279 # define Exit  exit
280 #  define IsBasenameSeparator(c) \
281   (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse)
282 # define PreferencesDefaults  "~\."
283 # define ProcessPendingEvents(text)
284 # define ReadCommandlLine(argc,argv)
285 # define SetNotifyHandlers
286 #endif
287 # if defined(macintosh)
288 #  define X11_APPLICATION_PATH  "/usr/lib/X11/app-defaults/"
289 #  define DirectorySeparator  ":"
290 #  define DirectoryListSeparator  ';'
291 #  define EditorOptions ""
292 #  define IsBasenameSeparator(c)  ((c) == ':' ? MagickTrue : MagickFalse)
293 #  define MAGICKCORE_LIBRARY_PATH  ""
294 #  define MAGICKCORE_CODER_PATH  ""
295 #  define MAGICKCORE_FILTER_PATH  ""
296 #  define MAGICKCORE_SHARE_PATH  ""
297 #  define X11_PREFERENCES_PATH  "~/."
298 #  if defined(DISABLE_SIOUX)
299 #   define ReadCommandlLine(argc,argv)
300 #   define SetNotifyHandlers \
301      SetFatalErrorHandler(MacFatalErrorHandler); \
302      SetErrorHandler(MACErrorHandler); \
303      SetWarningHandler(MACWarningHandler)
304 #  else
305 #   define ReadCommandlLine(argc,argv) argc=ccommand(argv); puts(MagickVersion);
306 #   define SetNotifyHandlers \
307      SetErrorHandler(MACErrorHandler); \
308      SetWarningHandler(MACWarningHandler)
309 #  endif
310 # endif
311 # if defined(MAGICKCORE_WINDOWS_SUPPORT)
312 #  define DirectorySeparator  "\\"
313 #  define DirectoryListSeparator  ';'
314 #  define EditorOptions ""
315 #  define IsBasenameSeparator(c) \
316   (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse)
317 #  define ProcessPendingEvents(text)
318 #  if !defined(X11_PREFERENCES_PATH)
319 #    define X11_PREFERENCES_PATH  "~\\."
320 #  endif
321 #  define ReadCommandlLine(argc,argv)
322 #  define SetNotifyHandlers \
323     SetErrorHandler(NTErrorHandler); \
324     SetWarningHandler(NTWarningHandler)
325 #  undef sleep
326 #  define sleep(seconds)  Sleep(seconds*1000)
327 #  if !defined(MAGICKCORE_HAVE_TIFFCONF_H)
328 #    define HAVE_TIFFCONF_H
329 #  endif
330 # endif
331
332 #endif
333
334 /*
335   Define system symbols if not already defined.
336 */
337 #if !defined(STDIN_FILENO)
338 #define STDIN_FILENO  0x00
339 #endif
340
341 #if !defined(O_BINARY)
342 #define O_BINARY  0x00
343 #endif
344
345 #if !defined(PATH_MAX)
346 #define PATH_MAX  4096
347 #endif
348
349 #if defined(MAGICKCORE_LTDL_DELEGATE) || (defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DLL) && !defined(_LIB))
350 #  define MAGICKCORE_MODULES_SUPPORT
351 #endif
352
353 #if defined(_MAGICKMOD_)
354 # undef MAGICKCORE_BUILD_MODULES
355 # define MAGICKCORE_BUILD_MODULES
356 #endif
357
358 /*
359   Magick defines.
360 */
361 #define Swap(x,y) ((x)^=(y), (y)^=(x), (x)^=(y))
362
363 #if defined(__cplusplus) || defined(c_plusplus)
364 }
365 #endif
366
367 #endif