1 /* 2 Copyright 1999-2019 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 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 #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 38 #endif 39 #if defined(_magickcore_const) && !defined(const) 40 # define const _magickcore_const 41 #endif 42 #if defined(_magickcore_inline) && !defined(inline) 43 # define inline _magickcore_inline 44 #endif 45 # if defined(__cplusplus) || defined(c_plusplus) 46 # undef inline 47 # endif 48 #endif 49 50 #if defined(MAGICKCORE_NAMESPACE_PREFIX) 51 # include "MagickCore/methods.h" 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(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DEBUG) 97 #define _CRTDBG_MAP_ALLOC 98 #endif 99 #if defined(MAGICKCORE_WINDOWS_SUPPORT) 100 # include <io.h> 101 #if !defined(__CYGWIN__) 102 # include <direct.h> 103 #endif 104 # if !defined(MAGICKCORE_HAVE_STRERROR) 105 # define HAVE_STRERROR 106 # endif 107 #endif 108 109 #include <ctype.h> 110 #include <locale.h> 111 #include <errno.h> 112 #include <fcntl.h> 113 #include <math.h> 114 #include <time.h> 115 #include <limits.h> 116 #include <signal.h> 117 #include <assert.h> 118 119 #if defined(MAGICKCORE_HAVE_XLOCALE_H) 120 # include <xlocale.h> 121 #endif 122 #if defined(MAGICKCORE_THREAD_SUPPORT) 123 # include <pthread.h> 124 #endif 125 #if defined(MAGICKCORE_WINDOWS_SUPPORT) 126 #if !defined(__CYGWIN__) 127 #include <winsock2.h> 128 #include <ws2tcpip.h> 129 #endif 130 #include <windows.h> 131 #pragma comment (lib, "ws2_32.lib") 132 #endif 133 #if defined(MAGICKCORE_HAVE_SYS_SYSLIMITS_H) 134 # include <sys/syslimits.h> 135 #endif 136 #if defined(MAGICKCORE_HAVE_ARM_LIMITS_H) 137 # include <arm/limits.h> 138 #endif 139 140 #if defined(MAGICKCORE__OPENCL) 141 #if defined(MAGICKCORE_HAVE_CL_CL_H) 142 # include <CL/cl.h> 143 #endif 144 #if defined(MAGICKCORE_HAVE_OPENCL_CL_H) 145 # include <OpenCL/cl.h> 146 #endif 147 # define MAGICKCORE_OPENCL_SUPPORT 1 148 #endif 149 150 #if defined(_OPENMP) && ((_OPENMP >= 200203) || defined(__OPENCC__)) 151 # include <omp.h> 152 # define MAGICKCORE_OPENMP_SUPPORT 1 153 #endif 154 155 #if defined(MAGICKCORE_HAVE_PREAD) && defined(MAGICKCORE_HAVE_DECL_PREAD) && !MAGICKCORE_HAVE_DECL_PREAD 156 ssize_t pread(int,void *,size_t,off_t); 157 #endif 158 159 #if defined(MAGICKCORE_HAVE_PWRITE) && defined(MAGICKCORE_HAVE_DECL_PWRITE) && !MAGICKCORE_HAVE_DECL_PWRITE 160 ssize_t pwrite(int,const void *,size_t,off_t); 161 #endif 162 163 #if defined(MAGICKCORE_HAVE_STRLCPY) && defined(MAGICKCORE_HAVE_DECL_STRLCPY) && !MAGICKCORE_HAVE_DECL_STRLCPY 164 extern size_t strlcpy(char *,const char *,size_t); 165 #endif 166 167 #if defined(MAGICKCORE_HAVE_VSNPRINTF) && defined(MAGICKCORE_HAVE_DECL_VSNPRINTF) && !MAGICKCORE_HAVE_DECL_VSNPRINTF 168 extern int vsnprintf(char *,size_t,const char *,va_list); 169 #endif 170 171 #include "MagickCore/method-attribute.h" 172 173 #if defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(MAGICKCORE_POSIX_SUPPORT) 174 # include <sys/types.h> 175 # include <sys/stat.h> 176 # if defined(MAGICKCORE_HAVE_SYS_TIMEB_H) 177 # include <sys/timeb.h> 178 # endif 179 # if defined(MAGICKCORE_POSIX_SUPPORT) 180 # if defined(MAGICKCORE_HAVE_SYS_NDIR_H) || defined(MAGICKCORE_HAVE_SYS_DIR_H) || defined(MAGICKCORE_HAVE_NDIR_H) 181 # define dirent direct 182 # define NAMLEN(dirent) (dirent)->d_namlen 183 # if defined(MAGICKCORE_HAVE_SYS_NDIR_H) 184 # include <sys/ndir.h> 185 # endif 186 # if defined(MAGICKCORE_HAVE_SYS_DIR_H) 187 # include <sys/dir.h> 188 # endif 189 # if defined(MAGICKCORE_HAVE_NDIR_H) 190 # include <ndir.h> 191 # endif 192 # else 193 # include <dirent.h> 194 # define NAMLEN(dirent) strlen((dirent)->d_name) 195 # endif 196 # include <sys/wait.h> 197 # include <pwd.h> 198 # endif 199 # if !defined(S_ISDIR) 200 # define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) 201 # endif 202 # if !defined(S_ISREG) 203 # define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) 204 # endif 205 # include "MagickCore/magick-type.h" 206 # if !defined(MAGICKCORE_WINDOWS_SUPPORT) 207 # include <sys/time.h> 208 # if defined(MAGICKCORE_HAVE_SYS_TIMES_H) 209 # include <sys/times.h> 210 # endif 211 # if defined(MAGICKCORE_HAVE_SYS_RESOURCE_H) 212 # include <sys/resource.h> 213 # endif 214 # if defined(MAGICKCORE_HAVE_SYS_MMAN_H) 215 # include <sys/mman.h> 216 # endif 217 # if defined(MAGICKCORE_HAVE_SYS_SENDFILE_H) 218 # include <sys/sendfile.h> 219 # endif 220 #endif 221 #else 222 # include <types.h> 223 # include <stat.h> 224 # if defined(macintosh) 225 # if !defined(DISABLE_SIOUX) 226 # include <SIOUX.h> 227 # include <console.h> 228 # endif 229 # include <unix.h> 230 # endif 231 # include "MagickCore/magick-type.h" 232 #endif 233 234 #if defined(S_IRUSR) && defined(S_IWUSR) 235 # define S_MODE (S_IRUSR | S_IWUSR) 236 #elif defined (MAGICKCORE_WINDOWS_SUPPORT) 237 # define S_MODE (_S_IREAD | _S_IWRITE) 238 #else 239 # define S_MODE 0600 240 #endif 241 242 #if defined(MAGICKCORE_WINDOWS_SUPPORT) 243 # include "MagickCore/nt-base.h" 244 #endif 245 #ifdef __VMS 246 # include "MagickCore/vms.h" 247 #endif 248 249 #undef HAVE_CONFIG_H 250 #undef gamma 251 #undef index 252 #undef pipe 253 #undef y1 254 255 /* 256 Review these platform specific definitions. 257 */ 258 #if defined(MAGICKCORE_POSIX_SUPPORT) && !( defined(__OS2__) || defined( vms ) ) 259 # define DirectorySeparator "/" 260 # define DirectoryListSeparator ':' 261 # define EditorOptions " -title \"Edit Image Comment\" -e vi" 262 # define Exit exit 263 # define IsBasenameSeparator(c) ((c) == '/' ? MagickTrue : MagickFalse) 264 # define X11_PREFERENCES_PATH "~/." 265 # define ProcessPendingEvents(text) 266 # define ReadCommandlLine(argc,argv) 267 # define SetNotifyHandlers 268 #else 269 # ifdef __VMS 270 # define X11_APPLICATION_PATH "decw$system_defaults:" 271 # define DirectorySeparator "" 272 # define DirectoryListSeparator ';' 273 # define EditorOptions "" 274 # define Exit exit 275 # define IsBasenameSeparator(c) \ 276 (((c) == ']') || ((c) == ':') || ((c) == '/') ? MagickTrue : MagickFalse) 277 # define MAGICKCORE_LIBRARY_PATH "sys$login:" 278 # define MAGICKCORE_SHARE_PATH "sys$login:" 279 # define X11_PREFERENCES_PATH "decw$user_defaults:" 280 # define ProcessPendingEvents(text) 281 # define ReadCommandlLine(argc,argv) 282 # define SetNotifyHandlers 283 # endif 284 # if defined(__OS2__) 285 # define DirectorySeparator "\\" 286 # define DirectoryListSeparator ';' 287 # define EditorOptions " -title \"Edit Image Comment\" -e vi" 288 # define Exit exit 289 # define IsBasenameSeparator(c) \ 290 (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse) 291 # define PreferencesDefaults "~\." 292 # define ProcessPendingEvents(text) 293 # define ReadCommandlLine(argc,argv) 294 # define SetNotifyHandlers 295 #endif 296 # if defined(MAGICKCORE_WINDOWS_SUPPORT) 297 # define DirectorySeparator "\\" 298 # define DirectoryListSeparator ';' 299 # define EditorOptions "" 300 # define IsBasenameSeparator(c) \ 301 (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse) 302 # define ProcessPendingEvents(text) 303 # if !defined(X11_PREFERENCES_PATH) 304 # define X11_PREFERENCES_PATH "~\\." 305 # endif 306 # define ReadCommandlLine(argc,argv) 307 # define SetNotifyHandlers \ 308 SetErrorHandler(NTErrorHandler); \ 309 SetWarningHandler(NTWarningHandler) 310 # if !defined(MAGICKCORE_HAVE_TIFFCONF_H) 311 # define HAVE_TIFFCONF_H 312 # endif 313 # endif 314 315 #endif 316 317 /* 318 Define system symbols if not already defined. 319 */ 320 #if !defined(STDIN_FILENO) 321 #define STDIN_FILENO 0x00 322 #endif 323 324 #if !defined(O_BINARY) 325 #define O_BINARY 0x00 326 #endif 327 328 #if !defined(PATH_MAX) 329 #define PATH_MAX 4096 330 #endif 331 332 #if defined(MAGICKCORE_LTDL_DELEGATE) || (defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DLL) && !defined(_LIB)) 333 # define MAGICKCORE_MODULES_SUPPORT 334 #endif 335 336 #if defined(_MAGICKMOD_) 337 # undef MAGICKCORE_BUILD_MODULES 338 # define MAGICKCORE_BUILD_MODULES 339 #endif 340 341 /* 342 Magick defines. 343 */ 344 #define MagickMaxRecursionDepth 600 345 #define Swap(x,y) ((x)^=(y), (y)^=(x), (x)^=(y)) 346 #if defined(_MSC_VER) 347 # define DisableMSCWarning(nr) __pragma(warning(push)) \ 348 __pragma(warning(disable:nr)) 349 # define RestoreMSCWarning __pragma(warning(pop)) 350 #else 351 # define DisableMSCWarning(nr) 352 # define RestoreMSCWarning 353 #endif 354 355 #if defined(__cplusplus) || defined(c_plusplus) 356 } 357 #endif 358 359 #endif 360