MagickWand.h revision 544a7f0eebd134ec2f3622c6b41194e8263bc6c1
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 Application Programming Interface declarations.
17*/
18
19#ifndef _MAGICK_WAND_H
20#define _MAGICK_WAND_H
21
22#if defined(__cplusplus) || defined(c_plusplus)
23extern "C" {
24#endif
25
26#if !defined(_MAGICKWAND_CONFIG_H)
27# define _MAGICKWAND_CONFIG_H
28# if !defined(vms) && !defined(macintosh)
29#  include "MagickCore/magick-config.h"
30# else
31#  include "magick-config.h"
32# endif
33#if defined(_magickcore_const) && !defined(const)
34# define const _magickcore_const
35#endif
36#if defined(_magickcore_inline) && !defined(inline)
37# define inline _magickcore_inline
38#endif
39#if defined(_magickcore_restrict) && !defined(restrict)
40# define restrict  _magickcore_restrict
41#endif
42# if defined(__cplusplus) || defined(c_plusplus)
43#  undef inline
44# endif
45#endif
46
47#include <stdio.h>
48#include <stdarg.h>
49#include <stdlib.h>
50#include <sys/types.h>
51
52#if defined(WIN32) || defined(WIN64)
53#  define MAGICKCORE_WINDOWS_SUPPORT
54#else
55#  define MAGICKCORE_POSIX_SUPPORT
56#endif
57
58#if defined(__BORLANDC__) && defined(_DLL)
59#  pragma message("BCBMagick lib DLL export interface")
60#  define _MAGICKDLL_
61#  define _MAGICKLIB_
62#endif
63
64#if defined(MAGICKCORE_WINDOWS_SUPPORT) && !defined(__CYGWIN__)
65# define WandPrivate
66# if defined(_MT) && defined(_DLL) && !defined(_MAGICKDLL_) && !defined(_LIB)
67#  define _MAGICKDLL_
68# endif
69# if defined(_MAGICKDLL_)
70#  if defined(_VISUALC_)
71#   pragma warning( disable: 4273 )  /* Disable the dll linkage warnings */
72#  endif
73#  if !defined(_MAGICKLIB_)
74#   if defined(__GNUC__)
75#    define WandExport __attribute__ ((__dllimport__))
76#   else
77#    define WandExport __declspec(dllimport)
78#   endif
79#   if defined(_VISUALC_)
80#    pragma message( "MagickWand lib DLL import interface" )
81#   endif
82#  else
83#   if defined(__GNUC__)
84#    define WandExport __attribute__ ((__dllexport__))
85#   else
86#    define WandExport __declspec(dllexport)
87#   endif
88#   if defined(_VISUALC_)
89#    pragma message( "MagickWand lib DLL export interface" )
90#   endif
91#  endif
92# else
93#  define WandExport
94#  if defined(_VISUALC_)
95#   pragma message( "MagickWand lib static interface" )
96#  endif
97# endif
98
99# define WandGlobal __declspec(thread)
100# if defined(_VISUALC_)
101#  pragma warning(disable : 4018)
102#  pragma warning(disable : 4244)
103#  pragma warning(disable : 4142)
104#  pragma warning(disable : 4800)
105#  pragma warning(disable : 4786)
106#  pragma warning(disable : 4996)
107# endif
108#else
109# if __GNUC__ >= 4
110#  define WandExport __attribute__ ((__visibility__ ("default")))
111#  define WandPrivate  __attribute__ ((__visibility__ ("hidden")))
112# else
113#   define WandExport
114#   define WandPrivate
115# endif
116# define WandGlobal
117#endif
118
119#if !defined(MaxTextExtent)
120# define MaxTextExtent  4096
121#endif
122#define WandSignature  0xabacadabUL
123
124#if defined(MAGICKCORE_HAVE___ATTRIBUTE__)
125#  define wand_aligned(x)  __attribute__((__aligned__(x)))
126#  define wand_attribute  __attribute__
127#  define wand_unused(x)  wand_unused_ ## x __attribute__((__unused__))
128#else
129#  define wand_aligned(x)  /* nothing */
130#  define wand_attribute(x)  /* nothing */
131#  define wand_unused(x) x
132#endif
133
134#if defined(MAGICKCORE_HAVE___ALLOC_SIZE__)
135#  define wand_alloc_size(x)  __attribute__((__alloc_size__(x)))
136#  define wand_alloc_sizes(x,y)  __attribute__((__alloc_size__(x,y)))
137#  define wand_cold  __attribute__((__cold__))
138#  define wand_hot  __attribute__((__hot__))
139#else
140#  define wand_alloc_size(x)  /* nothing */
141#  define wand_alloc_sizes(x,y)  /* nothing */
142#  define wand_cold
143#  define wand_hot
144#endif
145
146typedef struct _MagickWand
147  MagickWand;
148
149#include "MagickCore/MagickCore.h"
150#include "MagickWand/animate.h"
151#include "MagickWand/compare.h"
152#include "MagickWand/composite.h"
153#include "MagickWand/conjure.h"
154#include "MagickWand/convert.h"
155#include "MagickWand/deprecate.h"
156#include "MagickWand/display.h"
157#include "MagickWand/drawing-wand.h"
158#include "MagickWand/identify.h"
159#include "MagickWand/import.h"
160#include "MagickWand/magick-cli.h"
161#include "MagickWand/magick-property.h"
162#include "MagickWand/magick-image.h"
163#include "MagickWand/mogrify.h"
164#include "MagickWand/montage.h"
165#include "MagickWand/pixel-iterator.h"
166#include "MagickWand/pixel-wand.h"
167#include "MagickWand/stream.h"
168#include "MagickWand/wand-view.h"
169
170extern WandExport char
171  *MagickGetException(const MagickWand *,ExceptionType *);
172
173extern WandExport ExceptionType
174  MagickGetExceptionType(const MagickWand *);
175
176extern WandExport MagickBooleanType
177  IsMagickWand(const MagickWand *),
178  MagickClearException(MagickWand *),
179  MagickSetIteratorIndex(MagickWand *,const ssize_t);
180
181extern WandExport MagickWand
182  *CloneMagickWand(const MagickWand *),
183  *DestroyMagickWand(MagickWand *),
184  *NewMagickWand(void),
185  *NewMagickWandFromImage(const Image *);
186
187extern WandExport ssize_t
188  MagickGetIteratorIndex(MagickWand *);
189
190extern WandExport void
191  ClearMagickWand(MagickWand *),
192  MagickWandGenesis(void),
193  MagickWandTerminus(void),
194  *MagickRelinquishMemory(void *),
195  MagickResetIterator(MagickWand *),
196  MagickSetFirstIterator(MagickWand *),
197  MagickSetLastIterator(MagickWand *);
198
199#if defined(__cplusplus) || defined(c_plusplus)
200}
201#endif
202
203#endif
204