# studio.h

Go to the documentation of this file.

    00001 /*
    00002   Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization
    00003   dedicated to making software imaging solutions freely available.
    00004
    00005   You may not use this file except in compliance with the License.
    00006   obtain a copy of the License at
    00007
    00008     http://www.imagemagick.org/script/license.php
    00009
    00010   Unless required by applicable law or agreed to in writing, software
    00011   distributed under the License is distributed on an "AS IS" BASIS,
    00012   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    00013   See the License for the specific language governing permissions and
    00014   limitations under the License.
    00015
    00016   MagickCore private application programming interface declarations.
    00017 */
    00018 #ifndef _MAGICKCORE_STUDIO_H
    00019 #define _MAGICKCORE_STUDIO_H
    00020
    00021 #if defined(__cplusplus) || defined(c_plusplus)
    00022 extern "C" {
    00023 #endif
    00024
    00025 #if defined(__CYGWIN32__)
    00026 #  if !defined(__CYGWIN__)
    00027 #    define __CYGWIN__ __CYGWIN32__
    00028 #  endif
    00029 #endif
    00030
    00031 #if defined(_WIN32) || defined(WIN32)
    00032 #  if !defined(__WINDOWS__)
    00033 #    if defined(_WIN32)
    00034 #      define __WINDOWS__ _WIN32
    00035 #    else
    00036 #      if defined(WIN32)
    00037 #        define __WINDOWS__ WIN32
    00038 #      endif
    00039 #    endif
    00040 #  endif
    00041 #endif
    00042
    00043 #if defined(_WIN64) || defined(WIN64)
    00044 #  if !defined(__WINDOWS__)
    00045 #    if defined(_WIN64)
    00046 #      define __WINDOWS__ _WIN64
    00047 #    else
    00048 #      if defined(WIN64)
    00049 #        define __WINDOWS__ WIN64
    00050 #      endif
    00051 #    endif
    00052 #  endif
    00053 #endif
    00054
    00055 #if !defined(vms) && !defined(macintosh) && !defined(__WINDOWS__)
    00056 # define MAGICKCORE_POSIX_SUPPORT
    00057 #endif
    00058
    00059 #define MAGICKCORE_IMPLEMENTATION  1
    00060
    00061 #if !defined(_MAGICKCORE_CONFIG_H)
    00062 # define _MAGICKCORE_CONFIG_H
    00063 # if !defined(vms) && !defined(macintosh)
    00064 #  include "magick/magick-config.h"
    00065 # else
    00066 #  include "magick-config.h"
    00067 # endif
    00068 # if defined(__cplusplus) || defined(c_plusplus)
    00069 #  undef inline
    00070 # endif
    00071 #endif
    00072
    00073 #if defined(MAGICKCORE_NAMESPACE_PREFIX)
    00074 # include "magick/methods.h"
    00075 #endif
    00076
    00077 #if !defined(const)
    00078 #  define STDC
    00079 #endif
    00080
    00081 #if defined(__BORLANDC__) && defined(_DLL)
    00082 #  pragma message("BCBMagick lib DLL export interface")
    00083 #  define _MAGICKDLL_
    00084 #  define _MAGICKLIB_
    00085 #  define MAGICKCORE_MODULES_SUPPORT
    00086 #  undef MAGICKCORE_BUILD_MODULES
    00087 #endif
    00088
    00089 #if defined(__WINDOWS__)
    00090 # if defined(_MT) && defined(_DLL) && !defined(_MAGICKDLL_) && !defined(_LIB)
    00091 #  define _MAGICKDLL_
    00092 # endif
    00093 # if defined(_MAGICKDLL_)
    00094 #  if defined(_VISUALC_)
    00095 #   pragma warning( disable: 4273 )  /* Disable the dll linkage warnings */
    00096 #  endif
    00097 #  if !defined(_MAGICKLIB_)
    00098 #   define MagickExport  __declspec(dllimport)
    00099 #   if defined(_VISUALC_)
    00100 #    pragma message( "MagickCore lib DLL import interface" )
    00101 #   endif
    00102 #  else
    00103 #   define MagickExport  __declspec(dllexport)
    00104 #   if defined(_VISUALC_)
    00105 #    pragma message( "MagickCore lib DLL export interface" )
    00106 #   endif
    00107 #  endif
    00108 # else
    00109 #  define MagickExport
    00110 #  if defined(_VISUALC_)
    00111 #   pragma message( "MagickCore lib static interface" )
    00112 #  endif
    00113 # endif
    00114
    00115 # if defined(_DLL) && !defined(_LIB)
    00116 #  define ModuleExport  __declspec(dllexport)
    00117 #  if defined(_VISUALC_)
    00118 #   pragma message( "MagickCore module DLL export interface" )
    00119 #  endif
    00120 # else
    00121 #  define ModuleExport
    00122 #  if defined(_VISUALC_)
    00123 #   pragma message( "MagickCore module static interface" )
    00124 #  endif
    00125
    00126 # endif
    00127 # define MagickGlobal __declspec(thread)
    00128 # if defined(_VISUALC_)
    00129 #  pragma warning(disable : 4018)
    00130 #  pragma warning(disable : 4068)
    00131 #  pragma warning(disable : 4244)
    00132 #  pragma warning(disable : 4142)
    00133 #  pragma warning(disable : 4800)
    00134 #  pragma warning(disable : 4786)
    00135 #  pragma warning(disable : 4996)
    00136 # endif
    00137 #else
    00138 # define MagickExport
    00139 # define ModuleExport
    00140 # define MagickGlobal
    00141 #endif
    00142
    00143 #define MagickSignature  0xabacadabUL
    00144 #if !defined(MaxTextExtent)
    00145 # define MaxTextExtent  4096
    00146 #endif
    00147
    00148 #include <stdarg.h>
    00149 #include <stdio.h>
    00150 #if defined(__WINDOWS__) && defined(_DEBUG)
    00151 #define _CRTDBG_MAP_ALLOC
    00152 #endif
    00153 #include <stdlib.h>
    00154 #if !defined(__WINDOWS__)
    00155 # include <unistd.h>
    00156 #else
    00157 # include <direct.h>
    00158 # if !defined(MAGICKCORE_HAVE_STRERROR)
    00159 #  define HAVE_STRERROR
    00160 # endif
    00161 #endif
    00162
    00163 #if defined(MAGICKCORE_HAVE_STRINGS_H)
    00164 # include <strings.h>
    00165 #endif
    00166 #include <string.h>
    00167 #include <ctype.h>
    00168 #include <locale.h>
    00169 #include <errno.h>
    00170 #include <fcntl.h>
    00171 #include <math.h>
    00172 #include <time.h>
    00173 #include <limits.h>
    00174 #include <signal.h>
    00175 #include <assert.h>
    00176
    00177 #if defined(MAGICKCORE_HAVE_PREAD) && defined(MAGICKCORE_HAVE_DECL_PREAD) && !MAGICKCORE_HAVE_DECL_PREAD
    00178 ssize_t pread(int,void *,size_t,off_t);
    00179 #endif
    00180
    00181 #if defined(MAGICKCORE_HAVE_PWRITE) && defined(MAGICKCORE_HAVE_DECL_PWRITE) && !MAGICKCORE_HAVE_DECL_PWRITE
    00182 ssize_t pwrite(int,const void *,size_t,off_t);
    00183 #endif
    00184
    00185 #if defined(MAGICKCORE_HAVE_STRLCPY) && defined(MAGICKCORE_HAVE_DECL_STRLCPY) && !MAGICKCORE_HAVE_DECL_STRLCPY
    00186 extern size_t strlcpy(char *,const char *,size_t);
    00187 #endif
    00188
    00189 #if defined(MAGICKCORE_HAVE_VSNPRINTF) && defined(MAGICKCORE_HAVE_DECL_VSNPRINTF) && !MAGICKCORE_HAVE_DECL_VSNPRINTF
    00190 extern int vsnprintf(char *,size_t,const char *,va_list);
    00191 #endif
    00192
    00193 #if !defined(magick_attribute)
    00194 #  if !defined(__GNUC__)
    00195 #    define magick_attribute(x)  /* nothing */
    00196 #  else
    00197 #    define magick_attribute  __attribute__
    00198 #  endif
    00199 #endif
    00200
    00201 #if !defined(magick_unused)
    00202 #  if defined(__GNUC__)
    00203 #     define magick_unused(x)  magick_unused_ ## x __attribute__((unused))
    00204 #  elif defined(__LCLINT__)
    00205 #    define magick_unused(x) /*@unused@*/ x
    00206 #  else
    00207 #    define magick_unused(x) x
    00208 #  endif
    00209 #endif
    00210
    00211 #if defined(__WINDOWS__) || defined(MAGICKCORE_POSIX_SUPPORT)
    00212 # include <sys/types.h>
    00213 # include <sys/stat.h>
    00214 # if defined(MAGICKCORE_HAVE_FTIME)
    00215 # include <sys/timeb.h>
    00216 # endif
    00217 # if defined(MAGICKCORE_POSIX_SUPPORT)
    00218 #  if defined(MAGICKCORE_HAVE_SYS_NDIR_H) || defined(MAGICKCORE_HAVE_SYS_DIR_H) || defined(MAGICKCORE_HAVE_NDIR_H)
    00219 #   define dirent direct
    00220 #   define NAMLEN(dirent) (dirent)->d_namlen
    00221 #   if defined(MAGICKCORE_HAVE_SYS_NDIR_H)
    00222 #    include <sys/ndir.h>
    00223 #   endif
    00224 #   if defined(MAGICKCORE_HAVE_SYS_DIR_H)
    00225 #    include <sys/dir.h>
    00226 #   endif
    00227 #   if defined(MAGICKCORE_HAVE_NDIR_H)
    00228 #    include <ndir.h>
    00229 #   endif
    00230 #  else
    00231 #   include <dirent.h>
    00232 #   define NAMLEN(dirent) strlen((dirent)->d_name)
    00233 #  endif
    00234 #  include <sys/wait.h>
    00235 #  include <pwd.h>
    00236 # endif
    00237 # if !defined(S_ISDIR)
    00238 #  define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
    00239 # endif
    00240 # if !defined(S_ISREG)
    00241 #  define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)
    00242 # endif
    00243 # include "magick/magick-type.h"
    00244 # if !defined(__WINDOWS__)
    00245 #  include <sys/time.h>
    00246 # if defined(MAGICKCORE_HAVE_SYS_TIMES_H)
    00247 #  include <sys/times.h>
    00248 # endif
    00249 # if defined(MAGICKCORE_HAVE_SYS_RESOURCE_H)
    00250 #  include <sys/resource.h>
    00251 # endif
    00252 #endif
    00253 #else
    00254 # include <types.h>
    00255 # include <stat.h>
    00256 # if defined(macintosh)
    00257 #  if !defined(DISABLE_SIOUX)
    00258 #   include <SIOUX.h>
    00259 #   include <console.h>
    00260 #  endif
    00261 #  include <unix.h>
    00262 # endif
    00263 # include "magick/magick-type.h"
    00264 #endif
    00265
    00266 #if defined(S_IRUSR) && defined(S_IWUSR)
    00267 # define S_MODE (S_IRUSR | S_IWUSR)
    00268 #elif defined (__WINDOWS__)
    00269 # define S_MODE (_S_IREAD | _S_IWRITE)
    00270 #else
    00271 # define S_MODE  0600
    00272 #endif
    00273
    00274 #if defined(__WINDOWS__)
    00275 # include "magick/nt-base.h"
    00276 #endif
    00277 #if defined(macintosh)
    00278 # include "magick/mac.h"
    00279 #endif
    00280 #if defined(vms)
    00281 # include "magick/vms.h"
    00282 #endif
    00283
    00284 #undef index
    00285 #undef pipe
    00286
    00287 /*
    00288   Review these platform specific definitions.
    00289 */
    00290 #if defined(MAGICKCORE_POSIX_SUPPORT)
    00291 # define DirectorySeparator  "/"
    00292 # define DirectoryListSeparator  ':'
    00293 # define EditorOptions  " -title \"Edit Image Comment\" -e vi"
    00294 # define Exit  exit
    00295 # define IsBasenameSeparator(c)  ((c) == '/' ? MagickTrue : MagickFalse)
    00296 # define X11_PREFERENCES_PATH  "~/."
    00297 # define ProcessPendingEvents(text)
    00298 # define ReadCommandlLine(argc,argv)
    00299 # define SetNotifyHandlers
    00300 #else
    00301 # if defined(vms)
    00302 #  define X11_APPLICATION_PATH  "decw$system_defaults:"
    00303 #  define DirectorySeparator  ""
    00304 #  define DirectoryListSeparator  ';'
    00305 #  define EditorOptions  ""
    00306 #  define Exit  exit
    00307 #  define IsBasenameSeparator(c) \
    00308   (((c) == ']') || ((c) == ':') || ((c) == '/') ? MagickTrue : MagickFalse)
    00309 #  define MAGICKCORE_LIBRARY_PATH  "sys$login:"
    00310 #  define MAGICKCORE_CODER_PATH  "sys$login:"
    00311 #  define MAGICKCORE_FILTER_PATH  "sys$login:"
    00312 #  define MAGICKCORE_SHARE_PATH  "sys$login:"
    00313 #  define X11_PREFERENCES_PATH  "decw$user_defaults:"
    00314 #  define ProcessPendingEvents(text)
    00315 #  define ReadCommandlLine(argc,argv)
    00316 #  define SetNotifyHandlers
    00317 # endif
    00318 # if defined(macintosh)
    00319 #  define X11_APPLICATION_PATH  "/usr/lib/X11/app-defaults/"
    00320 #  define DirectorySeparator  ":"
    00321 #  define DirectoryListSeparator  ';'
    00322 #  define EditorOptions ""
    00323 #  define IsBasenameSeparator(c)  ((c) == ':' ? MagickTrue : MagickFalse)
    00324 #  define MAGICKCORE_LIBRARY_PATH  ""
    00325 #  define MAGICKCORE_CODER_PATH  ""
    00326 #  define MAGICKCORE_FILTER_PATH  ""
    00327 #  define MAGICKCORE_SHARE_PATH  ""
    00328 #  define X11_PREFERENCES_PATH  "~/."
    00329 #  if defined(DISABLE_SIOUX)
    00330 #   define ReadCommandlLine(argc,argv)
    00331 #   define SetNotifyHandlers \
    00332      SetFatalErrorHandler(MacFatalErrorHandler); \
    00333      SetErrorHandler(MACErrorHandler); \
    00334      SetWarningHandler(MACWarningHandler)
    00335 #  else
    00336 #   define ReadCommandlLine(argc,argv) argc=ccommand(argv); puts(MagickVersion);
    00337 #   define SetNotifyHandlers \
    00338      SetErrorHandler(MACErrorHandler); \
    00339      SetWarningHandler(MACWarningHandler)
    00340 #  endif
    00341 # endif
    00342 # if defined(__WINDOWS__)
    00343 #  define DirectorySeparator  "\\"
    00344 #  define DirectoryListSeparator  ';'
    00345 #  define EditorOptions ""
    00346 #  define IsBasenameSeparator(c) \
    00347   (((c) == '/') || ((c) == '\\') ? MagickTrue : MagickFalse)
    00348 #  define ProcessPendingEvents(text)
    00349 #  if !defined(X11_PREFERENCES_PATH)
    00350 #    define X11_PREFERENCES_PATH  "~\\."
    00351 #  endif
    00352 #  define ReadCommandlLine(argc,argv)
    00353 #  define SetNotifyHandlers \
    00354     SetErrorHandler(NTErrorHandler); \
    00355     SetWarningHandler(NTWarningHandler)
    00356 #  undef sleep
    00357 #  define sleep(seconds)  Sleep(seconds*1000)
    00358 #  if !defined(MAGICKCORE_HAVE_TIFFCONF_H)
    00359 #    define HAVE_TIFFCONF_H
    00360 #  endif
    00361 # endif
    00362
    00363 #endif
    00364
    00365 /*
    00366   Define system symbols if not already defined.
    00367 */
    00368 #if !defined(STDIN_FILENO)
    00369 #define STDIN_FILENO  0x00
    00370 #endif
    00371
    00372 #if !defined(O_BINARY)
    00373 #define O_BINARY  0x00
    00374 #endif
    00375
    00376 #if defined(MAGICKCORE_LTDL_DELEGATE) || (defined(__WINDOWS__) && defined(_DLL) && !defined(_LIB))
    00377 #  define MAGICKCORE_MODULES_SUPPORT
    00378 #endif
    00379
    00380 #if defined(_MAGICKMOD_)
    00381 # undef MAGICKCORE_BUILD_MODULES
    00382 # define MAGICKCORE_BUILD_MODULES
    00383 #endif
    00384
    00385 /*
    00386   I/O defines.
    00387 */
    00388 #if defined(__WINDOWS__) && !defined(Windows95) && !defined(__BORLANDC__)
    00389 #define MagickSeek(file,offset,whence)  _lseeki64(file,offset,whence)
    00390 #define MagickTell(file)  _telli64(file)
    00391 #else
    00392 #define MagickSeek(file,offset,whence)  lseek(file,offset,whence)
    00393 #define MagickTell(file) tell(file)
    00394 #endif
    00395
    00396 /*
    00397   Magick defines.
    00398 */
    00399 #define Swap(x,y) ((x)^=(y), (y)^=(x), (x)^=(y))
    00400
    00401 #if defined(__cplusplus) || defined(c_plusplus)
    00402 }
    00403 #endif
    00404
    00405 #endif