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