studio.h revision d9123437a79f9d56a3e8c32aa912ae3ae1d47337
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 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) 22extern "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 MAGICKWAND_IMPLEMENTATION 1 32 33#if !defined(_MAGICKWAND_CONFIG_H) 34# define _MAGICKWAND_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(const) 58# define STDC 59#endif 60 61#if defined(__cplusplus) || defined(c_plusplus) 62# define storage_class c_class 63#else 64# define storage_class class 65#endif 66 67#include <stdarg.h> 68#include <stdio.h> 69#if defined(MAGICKCORE_HAVE_SYS_STAT_H) 70# include <sys/stat.h> 71#endif 72#if defined(MAGICKCORE_STDC_HEADERS) 73# include <stdlib.h> 74# include <stddef.h> 75#else 76# if defined(MAGICKCORE_HAVE_STDLIB_H) 77# include <stdlib.h> 78# endif 79#endif 80#if defined(MAGICKCORE_HAVE_STRING_H) 81# if !defined(STDC_HEADERS) && defined(MAGICKCORE_HAVE_MEMORY_H) 82# include <memory.h> 83# endif 84# include <string.h> 85#endif 86#if defined(MAGICKCORE_HAVE_STRINGS_H) 87# include <strings.h> 88#endif 89#if defined(MAGICKCORE_HAVE_INTTYPES_H) 90# include <inttypes.h> 91#endif 92#if defined(MAGICKCORE_HAVE_STDINT_H) 93# include <stdint.h> 94#endif 95#if defined(MAGICKCORE_HAVE_UNISTD_H) 96# include <unistd.h> 97#endif 98#if defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DEBUG) 99#define _CRTDBG_MAP_ALLOC 100#endif 101 102#if defined(MAGICKCORE_WINDOWS_SUPPORT) && defined(_DEBUG) 103#define _CRTDBG_MAP_ALLOC 104#endif 105#if defined(MAGICKCORE_WINDOWS_SUPPORT) 106# include <io.h> 107# include <direct.h> 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#elif defined(MAGICKCORE_WINDOWS_SUPPORT) 129# define MAGICKCORE_HAVE_WINTHREADS 1 130#include <windows.h> 131#endif 132#if defined(MAGICKCORE_HAVE_SYS_SYSLIMITS_H) 133# include <sys/syslimits.h> 134#endif 135#if defined(MAGICKCORE_HAVE_ARM_LIMITS_H) 136# include <arm/limits.h> 137#endif 138 139#if defined(MAGICKCORE__OPENCL) 140#if defined(MAGICKCORE_HAVE_CL_CL_H) 141# include <CL/cl.h> 142#endif 143#if defined(MAGICKCORE_HAVE_OPENCL_CL_H) 144# include <OpenCL/cl.h> 145#endif 146# define MAGICKCORE_OPENCL_SUPPORT 1 147#endif 148 149#if defined(_OPENMP) && ((_OPENMP >= 200203) || defined(__OPENCC__)) 150# include <omp.h> 151# define MAGICKCORE_OPENMP_SUPPORT 1 152#endif 153 154#if defined(MAGICKCORE_HAVE_PREAD) && defined(MAGICKCORE_HAVE_DECL_PREAD) && !MAGICKCORE_HAVE_DECL_PREAD 155ssize_t pread(int,void *,size_t,off_t); 156#endif 157 158#if defined(MAGICKCORE_HAVE_PWRITE) && defined(MAGICKCORE_HAVE_DECL_PWRITE) && !MAGICKCORE_HAVE_DECL_PWRITE 159ssize_t pwrite(int,const void *,size_t,off_t); 160#endif 161 162#if defined(MAGICKCORE_HAVE_STRLCPY) && defined(MAGICKCORE_HAVE_DECL_STRLCPY) && !MAGICKCORE_HAVE_DECL_STRLCPY 163extern size_t strlcpy(char *,const char *,size_t); 164#endif 165 166#if defined(MAGICKCORE_HAVE_VSNPRINTF) && defined(MAGICKCORE_HAVE_DECL_VSNPRINTF) && !MAGICKCORE_HAVE_DECL_VSNPRINTF 167extern int vsnprintf(char *,size_t,const char *,va_list); 168#endif 169 170#include "MagickWand/method-attribute.h" 171 172#if defined(MAGICKCORE_WINDOWS_SUPPORT) || defined(MAGICKCORE_POSIX_SUPPORT) 173# include <sys/types.h> 174# include <sys/stat.h> 175# if defined(MAGICKCORE_HAVE_FTIME) 176# include <sys/timeb.h> 177# endif 178# if defined(MAGICKCORE_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> 184# endif 185# if defined(MAGICKCORE_HAVE_SYS_DIR_H) 186# include <sys/dir.h> 187# endif 188# if defined(MAGICKCORE_HAVE_NDIR_H) 189# include <ndir.h> 190# endif 191# else 192# include <dirent.h> 193# define NAMLEN(dirent) strlen((dirent)->d_name) 194# endif 195# include <sys/wait.h> 196# include <pwd.h> 197# endif 198# if !defined(S_ISDIR) 199# define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) 200# endif 201# if !defined(S_ISREG) 202# define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) 203# endif 204# include "MagickWand/MagickWand.h" 205# if !defined(MAGICKCORE_WINDOWS_SUPPORT) 206# include <sys/time.h> 207# if defined(MAGICKCORE_HAVE_SYS_TIMES_H) 208# include <sys/times.h> 209# endif 210# if defined(MAGICKCORE_HAVE_SYS_RESOURCE_H) 211# include <sys/resource.h> 212# endif 213# if defined(MAGICKCORE_HAVE_SYS_MMAN_H) 214# include <sys/mman.h> 215# endif 216#endif 217#else 218# include <types.h> 219# include <stat.h> 220# if defined(macintosh) 221# if !defined(DISABLE_SIOUX) 222# include <SIOUX.h> 223# include <console.h> 224# endif 225# include <unix.h> 226# endif 227#endif 228 229#if defined(S_IRUSR) && defined(S_IWUSR) 230# define S_MODE (S_IRUSR | S_IWUSR) 231#elif defined (MAGICKCORE_WINDOWS_SUPPORT) 232# define S_MODE (_S_IREAD | _S_IWRITE) 233#else 234# define S_MODE 0600 235#endif 236 237#if defined(MAGICKCORE_WINDOWS_SUPPORT) 238# include "MagickCore/nt-base.h" 239#endif 240#if defined(macintosh) 241# include "MagickCore/mac.h" 242#endif 243#if defined(vms) 244# include "MagickCore/vms.h" 245#endif 246 247#undef HAVE_CONFIG_H 248#undef gamma 249#undef index 250#undef pipe 251#undef y1 252 253/* 254 Review these platform specific definitions. 255*/ 256#if defined(MAGICKCORE_POSIX_SUPPORT) && !defined(__OS2__) 257# define DirectorySeparator "/" 258# define DirectoryListSeparator ':' 259# define EditorOptions " -title \"Edit Image Comment\" -e vi" 260# define Exit exit 261# define IsBasenameSeparator(c) ((c) == '/' ? MagickTrue : MagickFalse) 262# define X11_PREFERENCES_PATH "~/." 263# define ProcessPendingEvents(text) 264# define ReadCommandlLine(argc,argv) 265# define SetNotifyHandlers 266#else 267# if defined(vms) 268# define X11_APPLICATION_PATH "decw$system_defaults:" 269# define DirectorySeparator "" 270# define DirectoryListSeparator ';' 271# define EditorOptions "" 272# define Exit exit 273# define IsBasenameSeparator(c) \ 274 (((c) == ']') || ((c) == ':') || ((c) == '/') ? MagickTrue : MagickFalse) 275# define MAGICKCORE_LIBRARY_PATH "sys$login:" 276# define MAGICKCORE_CODER_PATH "sys$login:" 277# define MAGICKCORE_FILTER_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(macintosh) 297# define X11_APPLICATION_PATH "/usr/lib/X11/app-defaults/" 298# define DirectorySeparator ":" 299# define DirectoryListSeparator ';' 300# define EditorOptions "" 301# define IsBasenameSeparator(c) ((c) == ':' ? MagickTrue : MagickFalse) 302# define MAGICKCORE_LIBRARY_PATH "" 303# define MAGICKCORE_CODER_PATH "" 304# define MAGICKCORE_FILTER_PATH "" 305# define MAGICKCORE_SHARE_PATH "" 306# define X11_PREFERENCES_PATH "~/." 307# if defined(DISABLE_SIOUX) 308# define ReadCommandlLine(argc,argv) 309# define SetNotifyHandlers \ 310 SetFatalErrorHandler(MacFatalErrorHandler); \ 311 SetErrorHandler(MACErrorHandler); \ 312 SetWarningHandler(MACWarningHandler) 313# else 314# define ReadCommandlLine(argc,argv) argc=ccommand(argv); puts(MagickVersion); 315# define SetNotifyHandlers \ 316 SetErrorHandler(MACErrorHandler); \ 317 SetWarningHandler(MACWarningHandler) 318# endif 319# endif 320# if defined(MAGICKCORE_WINDOWS_SUPPORT) 321# define DirectorySeparator "\\" 322# define DirectoryListSeparator ';' 323# define EditorOptions "" 324# define IsBasenameSeparator(c) \ 325 (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse) 326# define ProcessPendingEvents(text) 327# if !defined(X11_PREFERENCES_PATH) 328# define X11_PREFERENCES_PATH "~\\." 329# endif 330# define ReadCommandlLine(argc,argv) 331# define SetNotifyHandlers \ 332 SetErrorHandler(NTErrorHandler); \ 333 SetWarningHandler(NTWarningHandler) 334# undef sleep 335# define sleep(seconds) Sleep(seconds*1000) 336# if !defined(MAGICKCORE_HAVE_TIFFCONF_H) 337# define HAVE_TIFFCONF_H 338# endif 339# endif 340 341#endif 342 343/* 344 Define system symbols if not already defined. 345*/ 346#if !defined(STDIN_FILENO) 347#define STDIN_FILENO 0x00 348#endif 349 350#if !defined(O_BINARY) 351#define O_BINARY 0x00 352#endif 353 354#if !defined(PATH_MAX) 355#define PATH_MAX 4096 356#endif 357 358/* 359 Exception defines. 360*/ 361#define ThrowWandFatalException(severity,tag,context) \ 362{ \ 363 ExceptionInfo \ 364 *fatal_exception; \ 365 \ 366 fatal_exception=AcquireExceptionInfo(); \ 367 (void) ThrowMagickException(fatal_exception,GetMagickModule(),severity,tag, \ 368 "'%s'",(context)); \ 369 CatchException(fatal_exception); \ 370 fatal_exception=DestroyExceptionInfo(fatal_exception); \ 371} 372 373#if defined(__cplusplus) || defined(c_plusplus) 374} 375#endif 376 377#endif 378