2 Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization
3 dedicated to making software imaging solutions freely available.
5 You may not use this file except in compliance with the License.
6 obtain a copy of the License at
8 http://www.imagemagick.org/script/license.php
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.
16 MagickWand private application programming interface declarations.
18 #ifndef _MAGICKWAND_STUDIO_H
19 #define _MAGICKWAND_STUDIO_H
21 #if defined(__cplusplus) || defined(c_plusplus)
25 #if defined(WIN32) || defined(WIN64)
26 # define MAGICKWAND_WINDOWS_SUPPORT
28 # define MAGICKWAND_POSIX_SUPPORT
31 #define MAGICKWAND_IMPLEMENTATION 1
33 #if !defined(_MAGICKWAND_CONFIG_H)
34 # define _MAGICKWAND_CONFIG_H
35 # include "MagickCore/magick-config.h"
36 #if defined(MAGICKCORE__FILE_OFFSET_BITS) && !defined(_FILE_OFFSET_BITS)
37 # define _FILE_OFFSET_BITS MAGICKCORE__FILE_OFFSET_BITS
39 #if defined(_magickcore_const) && !defined(const)
40 # define const _magickcore_const
42 #if defined(_magickcore_inline) && !defined(inline)
43 # define inline _magickcore_inline
45 # if defined(__cplusplus) || defined(c_plusplus)
54 #if defined(__cplusplus) || defined(c_plusplus)
55 # define storage_class c_class
57 # define storage_class class
62 #if defined(MAGICKCORE_HAVE_SYS_STAT_H)
63 # include <sys/stat.h>
65 #if defined(MAGICKCORE_STDC_HEADERS)
69 # if defined(MAGICKCORE_HAVE_STDLIB_H)
73 #if !defined(magick_restrict)
74 # if !defined(_magickcore_restrict)
75 # define magick_restrict restrict
77 # define magick_restrict _magickcore_restrict
80 #if defined(MAGICKCORE_HAVE_STRING_H)
81 # if !defined(STDC_HEADERS) && defined(MAGICKCORE_HAVE_MEMORY_H)
86 #if defined(MAGICKCORE_HAVE_STRINGS_H)
89 #if defined(MAGICKCORE_HAVE_INTTYPES_H)
90 # include <inttypes.h>
92 #if defined(MAGICKCORE_HAVE_STDINT_H)
95 #if defined(MAGICKCORE_HAVE_UNISTD_H)
98 #if defined(MAGICKWAND_WINDOWS_SUPPORT) && defined(_DEBUG)
99 #define _CRTDBG_MAP_ALLOC
102 #if defined(MAGICKWAND_WINDOWS_SUPPORT) && defined(_DEBUG)
103 #define _CRTDBG_MAP_ALLOC
105 #if defined(MAGICKWAND_WINDOWS_SUPPORT)
108 # if !defined(MAGICKCORE_HAVE_STRERROR)
109 # define HAVE_STRERROR
123 #if defined(MAGICKCORE_HAVE_XLOCALE_H)
124 # include <xlocale.h>
126 #if defined(MAGICKCORE_THREAD_SUPPORT)
127 # include <pthread.h>
128 #elif defined(MAGICKWAND_WINDOWS_SUPPORT)
129 # define MAGICKCORE_WINDOWS_SUPPORT 1
132 #if defined(MAGICKCORE_HAVE_SYS_SYSLIMITS_H)
133 # include <sys/syslimits.h>
135 #if defined(MAGICKCORE_HAVE_ARM_LIMITS_H)
136 # include <arm/limits.h>
139 #if defined(MAGICKCORE__OPENCL)
140 #if defined(MAGICKCORE_HAVE_CL_CL_H)
143 #if defined(MAGICKCORE_HAVE_OPENCL_CL_H)
144 # include <OpenCL/cl.h>
146 # define MAGICKCORE_OPENCL_SUPPORT 1
149 #if defined(_OPENMP) && ((_OPENMP >= 200203) || defined(__OPENCC__))
151 # define MAGICKCORE_OPENMP_SUPPORT 1
154 #if defined(MAGICKCORE_HAVE_PREAD) && defined(MAGICKCORE_HAVE_DECL_PREAD) && !MAGICKCORE_HAVE_DECL_PREAD
155 ssize_t pread(int,void *,size_t,off_t);
158 #if defined(MAGICKCORE_HAVE_PWRITE) && defined(MAGICKCORE_HAVE_DECL_PWRITE) && !MAGICKCORE_HAVE_DECL_PWRITE
159 ssize_t pwrite(int,const void *,size_t,off_t);
162 #if defined(MAGICKCORE_HAVE_STRLCPY) && defined(MAGICKCORE_HAVE_DECL_STRLCPY) && !MAGICKCORE_HAVE_DECL_STRLCPY
163 extern size_t strlcpy(char *,const char *,size_t);
166 #if defined(MAGICKCORE_HAVE_VSNPRINTF) && defined(MAGICKCORE_HAVE_DECL_VSNPRINTF) && !MAGICKCORE_HAVE_DECL_VSNPRINTF
167 extern int vsnprintf(char *,size_t,const char *,va_list);
170 #include "MagickWand/method-attribute.h"
172 #if defined(MAGICKWAND_WINDOWS_SUPPORT) || defined(MAGICKWAND_POSIX_SUPPORT)
173 # include <sys/types.h>
174 # include <sys/stat.h>
175 # if defined(MAGICKCORE_HAVE_FTIME)
176 # include <sys/timeb.h>
178 # if defined(MAGICKWAND_POSIX_SUPPORT)
179 # if defined(MAGICKCORE_HAVE_SYS_NDIR_H) || defined(MAGICKCORE_HAVE_SYS_DIR_H) || defined(MAGICKCORE_HAVE_NDIR_H)
180 # define dirent direct
181 # define NAMLEN(dirent) (dirent)->d_namlen
182 # if defined(MAGICKCORE_HAVE_SYS_NDIR_H)
183 # include <sys/ndir.h>
185 # if defined(MAGICKCORE_HAVE_SYS_DIR_H)
186 # include <sys/dir.h>
188 # if defined(MAGICKCORE_HAVE_NDIR_H)
193 # define NAMLEN(dirent) strlen((dirent)->d_name)
195 # include <sys/wait.h>
198 # if !defined(S_ISDIR)
199 # define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
201 # if !defined(S_ISREG)
202 # define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
204 # include "MagickWand/MagickWand.h"
205 # if !defined(MAGICKWAND_WINDOWS_SUPPORT)
206 # include <sys/time.h>
207 # if defined(MAGICKCORE_HAVE_SYS_TIMES_H)
208 # include <sys/times.h>
210 # if defined(MAGICKCORE_HAVE_SYS_RESOURCE_H)
211 # include <sys/resource.h>
213 # if defined(MAGICKCORE_HAVE_SYS_MMAN_H)
214 # include <sys/mman.h>
216 # if defined(MAGICKCORE_HAVE_SYS_SENDFILE_H)
217 # include <sys/sendfile.h>
223 # if defined(macintosh)
224 # if !defined(DISABLE_SIOUX)
226 # include <console.h>
232 #if defined(S_IRUSR) && defined(S_IWUSR)
233 # define S_MODE (S_IRUSR | S_IWUSR)
234 #elif defined (MAGICKWAND_WINDOWS_SUPPORT)
235 # define S_MODE (_S_IREAD | _S_IWRITE)
240 #if defined(MAGICKWAND_WINDOWS_SUPPORT)
241 # include "MagickCore/nt-base.h"
251 Review these platform specific definitions.
253 #if defined(MAGICKWAND_POSIX_SUPPORT) && !defined(__OS2__)
254 # define DirectorySeparator "/"
255 # define DirectoryListSeparator ':'
256 # define EditorOptions " -title \"Edit Image Comment\" -e vi"
258 # define IsBasenameSeparator(c) ((c) == '/' ? MagickTrue : MagickFalse)
259 # define X11_PREFERENCES_PATH "~/."
260 # define ProcessPendingEvents(text)
261 # define ReadCommandlLine(argc,argv)
262 # define SetNotifyHandlers
264 # if defined(__OS2__)
265 # define DirectorySeparator "\\"
266 # define DirectoryListSeparator ';'
267 # define EditorOptions " -title \"Edit Image Comment\" -e vi"
269 # define IsBasenameSeparator(c) \
270 (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse)
271 # define PreferencesDefaults "~\."
272 # define ProcessPendingEvents(text)
273 # define ReadCommandlLine(argc,argv)
274 # define SetNotifyHandlers
276 # if defined(MAGICKWAND_WINDOWS_SUPPORT)
277 # define DirectorySeparator "\\"
278 # define DirectoryListSeparator ';'
279 # define EditorOptions ""
280 # define IsBasenameSeparator(c) \
281 (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse)
282 # define ProcessPendingEvents(text)
283 # if !defined(X11_PREFERENCES_PATH)
284 # define X11_PREFERENCES_PATH "~\\."
286 # define ReadCommandlLine(argc,argv)
287 # define SetNotifyHandlers \
288 SetErrorHandler(NTErrorHandler); \
289 SetWarningHandler(NTWarningHandler)
290 # if !defined(MAGICKCORE_HAVE_TIFFCONF_H)
291 # define HAVE_TIFFCONF_H
298 Define system symbols if not already defined.
300 #if !defined(STDIN_FILENO)
301 #define STDIN_FILENO 0x00
304 #if !defined(O_BINARY)
305 #define O_BINARY 0x00
308 #if !defined(PATH_MAX)
309 #define PATH_MAX 4096
315 #if defined(_MSC_VER)
316 # define DisableMSCWarning(nr) __pragma(warning(push)) \
317 __pragma(warning(disable:nr))
318 # define RestoreMSCWarning __pragma(warning(pop))
320 # define DisableMSCWarning(nr)
321 # define RestoreMSCWarning
324 #if defined(__cplusplus) || defined(c_plusplus)