blob: 87df70bc8d3fea23f8cf8bf4012190ad86fe041d [file] [log] [blame]
cristy3ed852e2009-09-05 21:47:34 +00001/*
cristyfe676ee2013-11-18 13:03:38 +00002 Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization
cristy3ed852e2009-09-05 21:47:34 +00003 dedicated to making software imaging solutions freely available.
cristy4c08aed2011-07-01 19:47:50 +00004
cristy3ed852e2009-09-05 21:47:34 +00005 You may not use this file except in compliance with the License.
6 obtain a copy of the License at
cristy4c08aed2011-07-01 19:47:50 +00007
cristy3ed852e2009-09-05 21:47:34 +00008 http://www.imagemagick.org/script/license.php
cristy4c08aed2011-07-01 19:47:50 +00009
cristy3ed852e2009-09-05 21:47:34 +000010 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 image methods.
17*/
18#ifndef _MAGICKCORE_IMAGE_H
19#define _MAGICKCORE_IMAGE_H
20
cristy6398ec72013-11-28 02:00:27 +000021#include "MagickCore/color.h"
22#include "MagickCore/pixel.h"
23
cristy3ed852e2009-09-05 21:47:34 +000024#if defined(__cplusplus) || defined(c_plusplus)
25extern "C" {
26#endif
27
cristy288a3532012-08-28 00:19:44 +000028#define OpaqueAlpha ((Quantum) QuantumRange)
29#define TransparentAlpha ((Quantum) 0)
cristy3ed852e2009-09-05 21:47:34 +000030
31typedef enum
32{
33 UndefinedAlphaChannel,
34 ActivateAlphaChannel,
35 BackgroundAlphaChannel,
36 CopyAlphaChannel,
37 DeactivateAlphaChannel,
38 ExtractAlphaChannel,
39 OpaqueAlphaChannel,
cristy61808382012-01-30 01:24:49 +000040 RemoveAlphaChannel,
cristy3ed852e2009-09-05 21:47:34 +000041 SetAlphaChannel,
42 ShapeAlphaChannel,
cristy61808382012-01-30 01:24:49 +000043 TransparentAlphaChannel
cristyb15b06c2012-08-28 11:36:48 +000044} AlphaChannelOption;
cristy3ed852e2009-09-05 21:47:34 +000045
46typedef enum
47{
cristy5f1c1ff2010-12-23 21:38:06 +000048 UndefinedType,
cristy3ed852e2009-09-05 21:47:34 +000049 BilevelType,
50 GrayscaleType,
51 GrayscaleMatteType,
52 PaletteType,
53 PaletteMatteType,
54 TrueColorType,
55 TrueColorMatteType,
56 ColorSeparationType,
57 ColorSeparationMatteType,
58 OptimizeType,
59 PaletteBilevelMatteType
60} ImageType;
61
62typedef enum
63{
64 UndefinedInterlace,
65 NoInterlace,
66 LineInterlace,
67 PlaneInterlace,
68 PartitionInterlace,
69 GIFInterlace,
70 JPEGInterlace,
71 PNGInterlace
72} InterlaceType;
73
74typedef enum
75{
76 UndefinedOrientation,
77 TopLeftOrientation,
78 TopRightOrientation,
79 BottomRightOrientation,
80 BottomLeftOrientation,
81 LeftTopOrientation,
82 RightTopOrientation,
83 RightBottomOrientation,
84 LeftBottomOrientation
85} OrientationType;
86
87typedef enum
88{
89 UndefinedResolution,
90 PixelsPerInchResolution,
91 PixelsPerCentimeterResolution
92} ResolutionType;
93
94typedef struct _PrimaryInfo
95{
96 double
97 x,
98 y,
99 z;
100} PrimaryInfo;
101
102typedef struct _SegmentInfo
103{
104 double
105 x1,
106 y1,
107 x2,
108 y2;
109} SegmentInfo;
110
111typedef enum
112{
113 UndefinedTransmitType,
114 FileTransmitType,
115 BlobTransmitType,
116 StreamTransmitType,
117 ImageTransmitType
118} TransmitType;
119
120typedef struct _ChromaticityInfo
121{
122 PrimaryInfo
123 red_primary,
124 green_primary,
125 blue_primary,
126 white_point;
127} ChromaticityInfo;
128
cristy4c08aed2011-07-01 19:47:50 +0000129#include "MagickCore/blob.h"
130#include "MagickCore/colorspace.h"
131#include "MagickCore/cache-view.h"
132#include "MagickCore/color.h"
133#include "MagickCore/composite.h"
134#include "MagickCore/compress.h"
135#include "MagickCore/effect.h"
136#include "MagickCore/geometry.h"
137#include "MagickCore/layer.h"
138#include "MagickCore/locale_.h"
139#include "MagickCore/monitor.h"
140#include "MagickCore/pixel.h"
141#include "MagickCore/profile.h"
142#include "MagickCore/quantum.h"
143#include "MagickCore/resample.h"
144#include "MagickCore/resize.h"
145#include "MagickCore/semaphore.h"
146#include "MagickCore/stream.h"
147#include "MagickCore/timer.h"
cristy3ed852e2009-09-05 21:47:34 +0000148
149struct _Image
150{
151 ClassType
152 storage_class;
153
154 ColorspaceType
anthonyfd706f92012-01-19 04:22:02 +0000155 colorspace; /* colorspace of image data */
cristy3ed852e2009-09-05 21:47:34 +0000156
157 CompressionType
anthonyfd706f92012-01-19 04:22:02 +0000158 compression; /* compression of image when read/write */
cristy3ed852e2009-09-05 21:47:34 +0000159
cristybb503372010-05-27 20:51:26 +0000160 size_t
anthonyfd706f92012-01-19 04:22:02 +0000161 quality; /* compression quality setting, meaning varies */
cristy3ed852e2009-09-05 21:47:34 +0000162
163 OrientationType
anthonyfd706f92012-01-19 04:22:02 +0000164 orientation; /* photo orientation of image */
cristy3ed852e2009-09-05 21:47:34 +0000165
166 MagickBooleanType
cristy8a46d822012-08-28 23:32:39 +0000167 taint; /* has image been modified since reading */
cristy3ed852e2009-09-05 21:47:34 +0000168
cristybb503372010-05-27 20:51:26 +0000169 size_t
anthonyfd706f92012-01-19 04:22:02 +0000170 columns, /* physical size of image */
cristy3ed852e2009-09-05 21:47:34 +0000171 rows,
anthonyfd706f92012-01-19 04:22:02 +0000172 depth, /* depth of image on read/write */
173 colors; /* Size of color table, or actual color count */
174 /* Only valid if image is not DirectClass */
cristy3ed852e2009-09-05 21:47:34 +0000175
cristy101ab702011-10-13 13:06:32 +0000176 PixelInfo
cristy3ed852e2009-09-05 21:47:34 +0000177 *colormap,
anthonyfd706f92012-01-19 04:22:02 +0000178 background_color, /* current background color attribute */
179 border_color, /* current bordercolor attribute */
180 matte_color, /* current mattecolor attribute */
181 transparent_color; /* color for 'transparent' color index in GIF */
cristy3ed852e2009-09-05 21:47:34 +0000182
183 double
184 gamma;
185
186 ChromaticityInfo
187 chromaticity;
188
189 RenderingIntent
190 rendering_intent;
191
192 void
193 *profiles;
194
195 ResolutionType
anthony1e4df872011-03-19 14:10:59 +0000196 units; /* resolution/density ppi or ppc */
cristy3ed852e2009-09-05 21:47:34 +0000197
198 char
199 *montage,
200 *directory,
201 *geometry;
202
cristybb503372010-05-27 20:51:26 +0000203 ssize_t
anthony30b912a2012-03-22 01:20:28 +0000204 offset; /* ??? */
cristy3ed852e2009-09-05 21:47:34 +0000205
cristy2a11bef2011-10-28 18:33:11 +0000206 PointInfo
207 resolution; /* image resolution/density */
cristy3ed852e2009-09-05 21:47:34 +0000208
209 RectangleInfo
anthony1e4df872011-03-19 14:10:59 +0000210 page, /* virtual canvas size and offset of image */
cristy4c08aed2011-07-01 19:47:50 +0000211 extract_info;
cristy3ed852e2009-09-05 21:47:34 +0000212
213 double
anthonya322a832013-04-27 06:28:03 +0000214 fuzz; /* current color fuzz attribute - move to image_info */
cristy3ed852e2009-09-05 21:47:34 +0000215
216 FilterTypes
anthony1e4df872011-03-19 14:10:59 +0000217 filter; /* resize/distort filter to apply */
cristy3ed852e2009-09-05 21:47:34 +0000218
cristy70e9f682013-03-12 22:31:22 +0000219 PixelIntensityMethod
220 intensity; /* method to generate an intensity value from a pixel */
221
cristy3ed852e2009-09-05 21:47:34 +0000222 InterlaceType
223 interlace;
224
225 EndianType
anthony1e4df872011-03-19 14:10:59 +0000226 endian; /* raw data integer ordering on read/write */
cristy3ed852e2009-09-05 21:47:34 +0000227
228 GravityType
anthony1e4df872011-03-19 14:10:59 +0000229 gravity; /* Gravity attribute for positioning in image */
cristy3ed852e2009-09-05 21:47:34 +0000230
231 CompositeOperator
anthony1e4df872011-03-19 14:10:59 +0000232 compose; /* alpha composition method for layered images */
cristy3ed852e2009-09-05 21:47:34 +0000233
234 DisposeType
anthony1e4df872011-03-19 14:10:59 +0000235 dispose; /* GIF animation disposal method */
cristy3ed852e2009-09-05 21:47:34 +0000236
cristybb503372010-05-27 20:51:26 +0000237 size_t
anthony1e4df872011-03-19 14:10:59 +0000238 scene, /* index of image in multi-image file */
cristy90895472014-01-27 20:12:07 +0000239 delay, /* Animation delay time */
240 duration; /* Total animation duration sum(delay*iterations) */
cristy3ed852e2009-09-05 21:47:34 +0000241
cristybb503372010-05-27 20:51:26 +0000242 ssize_t
anthony1e4df872011-03-19 14:10:59 +0000243 ticks_per_second; /* units for delay time, default 100 for GIF */
cristy3ed852e2009-09-05 21:47:34 +0000244
cristybb503372010-05-27 20:51:26 +0000245 size_t
anthony5f78bca2012-10-05 06:51:00 +0000246 iterations, /* number of interations for GIF animations */
cristy3ed852e2009-09-05 21:47:34 +0000247 total_colors;
248
cristybb503372010-05-27 20:51:26 +0000249 ssize_t
anthony30b912a2012-03-22 01:20:28 +0000250 start_loop; /* ??? */
cristy3ed852e2009-09-05 21:47:34 +0000251
cristy5c4e2582011-09-11 19:21:03 +0000252 PixelInterpolateMethod
anthony1e4df872011-03-19 14:10:59 +0000253 interpolate; /* Interpolation of color for between pixel lookups */
cristy3ed852e2009-09-05 21:47:34 +0000254
255 MagickBooleanType
256 black_point_compensation;
257
cristy3ed852e2009-09-05 21:47:34 +0000258 RectangleInfo
259 tile_offset;
260
cristy3ed852e2009-09-05 21:47:34 +0000261 ImageType
262 type;
263
264 MagickBooleanType
anthonyad98c292011-09-29 10:43:26 +0000265 dither; /* dithering on/off */
cristy81b8ce52010-02-05 01:53:17 +0000266
267 MagickSizeType
anthony8ea79832011-10-05 10:08:39 +0000268 extent; /* Size of image read from disk */
cristy73724512010-04-12 14:43:14 +0000269
270 MagickBooleanType
anthony30b912a2012-03-22 01:20:28 +0000271 ping; /* no image data read, just attributes */
cristy0d267172011-04-25 20:13:48 +0000272
cristy10a6c612012-01-29 21:41:05 +0000273 MagickBooleanType
cristy883fde12013-04-08 00:50:13 +0000274 read_mask,
275 write_mask;
cristy10a6c612012-01-29 21:41:05 +0000276
cristy24855942012-08-28 11:25:09 +0000277 PixelTrait
cristy8a46d822012-08-28 23:32:39 +0000278 alpha_trait; /* is transparency channel defined and active */
cristy288a3532012-08-28 00:19:44 +0000279
cristy0d267172011-04-25 20:13:48 +0000280 size_t
cristyed231572011-07-14 02:18:59 +0000281 number_channels,
cristyb3a73b52011-07-26 01:34:43 +0000282 number_meta_channels,
cristy4c08aed2011-07-01 19:47:50 +0000283 metacontent_extent;
284
cristybd5a96c2011-08-21 00:04:26 +0000285 ChannelType
anthonyad98c292011-09-29 10:43:26 +0000286 channel_mask;
cristy490408a2011-07-07 14:42:05 +0000287
cristyed231572011-07-14 02:18:59 +0000288 PixelChannelMap
cristybd5a96c2011-08-21 00:04:26 +0000289 *channel_map;
cristy4c08aed2011-07-01 19:47:50 +0000290
291 void
292 *cache;
293
294 ErrorInfo
295 error;
296
297 TimerInfo
298 timer;
299
300 MagickProgressMonitor
301 progress_monitor;
302
303 void
304 *client_data;
305
306 Ascii85Info
307 *ascii85;
308
309 ProfileInfo
cristy4c08aed2011-07-01 19:47:50 +0000310 *generic_profile;
311
cristybd686c62013-02-03 19:01:05 +0000312 void
313 *properties, /* general settings, to save with image */
314 *artifacts; /* general operational/coder settings, not saved */
315
cristy4c08aed2011-07-01 19:47:50 +0000316 char
anthony8ea79832011-10-05 10:08:39 +0000317 filename[MaxTextExtent], /* images input filename */
318 magick_filename[MaxTextExtent], /* given image filename (with read mods) */
319 magick[MaxTextExtent]; /* images file format (file magic) */
cristy4c08aed2011-07-01 19:47:50 +0000320
321 size_t
anthony30b912a2012-03-22 01:20:28 +0000322 magick_columns, /* size of image when read/created */
cristy4c08aed2011-07-01 19:47:50 +0000323 magick_rows;
324
325 BlobInfo
anthony8ea79832011-10-05 10:08:39 +0000326 *blob; /* image file as in-memory string of 'extent' */
cristy4c08aed2011-07-01 19:47:50 +0000327
cristybd686c62013-02-03 19:01:05 +0000328 time_t
329 timestamp;
330
cristy4c08aed2011-07-01 19:47:50 +0000331 MagickBooleanType
anthony8ea79832011-10-05 10:08:39 +0000332 debug; /* debug output attribute */
cristy4c08aed2011-07-01 19:47:50 +0000333
334 volatile ssize_t
anthony8ea79832011-10-05 10:08:39 +0000335 reference_count; /* image data sharing memory management */
cristy4c08aed2011-07-01 19:47:50 +0000336
337 SemaphoreInfo
338 *semaphore;
339
cristy027ff402012-11-11 20:43:03 +0000340 const struct _ImageInfo
anthony5f78bca2012-10-05 06:51:00 +0000341 *image_info; /* (Optional) Image belongs to this ImageInfo 'list'
342 * For access to 'global options' when no per-image
343 * attribute, properity, or artifact has been set.
344 * It may be set or unset as needed, but never freed.
345 */
anthony007bad32012-07-28 10:52:03 +0000346
cristy4c08aed2011-07-01 19:47:50 +0000347 struct _Image
anthony007bad32012-07-28 10:52:03 +0000348 *list, /* Undo/Redo image processing list (for display) */
349 *previous, /* Image list links */
cristy4c08aed2011-07-01 19:47:50 +0000350 *next;
351
352 size_t
353 signature;
cristy3ed852e2009-09-05 21:47:34 +0000354};
355
anthony5f78bca2012-10-05 06:51:00 +0000356/* ImageInfo structure
357 * Stores an image list, as well as all global settings used by
358 * all images held, -- unless overridden for that specific image.
359 * See SyncImagesettings() which maps any global setting that always
360 * overrides specific image settings.
361 */
cristy3ed852e2009-09-05 21:47:34 +0000362struct _ImageInfo
363{
364 CompressionType
anthonyfd706f92012-01-19 04:22:02 +0000365 compression; /* compression method when reading/saving image */
cristy3ed852e2009-09-05 21:47:34 +0000366
367 OrientationType
anthonyfd706f92012-01-19 04:22:02 +0000368 orientation; /* orientation setting */
cristy3ed852e2009-09-05 21:47:34 +0000369
370 MagickBooleanType
anthonyd5daafa2012-03-28 12:49:10 +0000371 temporary, /* image file to be deleted after read "empemeral:" */
anthony72feaa62012-01-17 06:46:23 +0000372 adjoin, /* save images to seperate scene files */
cristy3ed852e2009-09-05 21:47:34 +0000373 affirm,
374 antialias;
375
376 char
anthony72feaa62012-01-17 06:46:23 +0000377 *size, /* image generation size */
378 *extract, /* crop/resize string on image read */
cristy3ed852e2009-09-05 21:47:34 +0000379 *page,
anthony72feaa62012-01-17 06:46:23 +0000380 *scenes; /* scene numbers that is to be read in */
cristy3ed852e2009-09-05 21:47:34 +0000381
cristybb503372010-05-27 20:51:26 +0000382 size_t
anthony72feaa62012-01-17 06:46:23 +0000383 scene, /* starting value for image save numbering */
384 number_scenes, /* total number of images in list - for escapes */
anthonyfd706f92012-01-19 04:22:02 +0000385 depth; /* current read/save depth of images */
cristy3ed852e2009-09-05 21:47:34 +0000386
387 InterlaceType
anthony8ea79832011-10-05 10:08:39 +0000388 interlace; /* interlace for image write */
cristy3ed852e2009-09-05 21:47:34 +0000389
390 EndianType
anthony8ea79832011-10-05 10:08:39 +0000391 endian; /* integer endian order for raw image data */
cristy3ed852e2009-09-05 21:47:34 +0000392
393 ResolutionType
anthony8ea79832011-10-05 10:08:39 +0000394 units; /* denisty pixels/inch or pixel/cm */
cristy3ed852e2009-09-05 21:47:34 +0000395
cristybb503372010-05-27 20:51:26 +0000396 size_t
anthony8ea79832011-10-05 10:08:39 +0000397 quality; /* compression quality */
cristy3ed852e2009-09-05 21:47:34 +0000398
399 char
anthony8ea79832011-10-05 10:08:39 +0000400 *sampling_factor, /* JPEG write sampling factor */
401 *server_name, /* X windows server name - display/animate */
anthony72feaa62012-01-17 06:46:23 +0000402 *font, /* DUP for draw_info */
anthony8ea79832011-10-05 10:08:39 +0000403 *texture, /* montage/display background tile */
anthony72feaa62012-01-17 06:46:23 +0000404 *density; /* DUP for image and draw_info */
cristy3ed852e2009-09-05 21:47:34 +0000405
406 double
cristy947cb4c2011-10-20 18:41:46 +0000407 pointsize,
anthonye95d3f02011-10-12 10:58:48 +0000408 fuzz; /* current color fuzz attribute */
cristy3ed852e2009-09-05 21:47:34 +0000409
cristy101ab702011-10-13 13:06:32 +0000410 PixelInfo
anthony72feaa62012-01-17 06:46:23 +0000411 background_color, /* user set background color */
412 border_color, /* user set border color */
413 matte_color, /* matte (frame) color */
414 transparent_color; /* color for transparent index in color tables */
415 /* NB: fill color is only needed in draw_info! */
416 /* the same for undercolor (for font drawing) */
cristy3ed852e2009-09-05 21:47:34 +0000417
418 MagickBooleanType
anthonyfd706f92012-01-19 04:22:02 +0000419 dither, /* dither enable-disable */
420 monochrome; /* read/write pcl,pdf,ps,xps as monocrome image */
cristy3ed852e2009-09-05 21:47:34 +0000421
cristy3ed852e2009-09-05 21:47:34 +0000422 ColorspaceType
423 colorspace;
424
anthony72feaa62012-01-17 06:46:23 +0000425 CompositeOperator
426 compose;
427
cristy3ed852e2009-09-05 21:47:34 +0000428 ImageType
429 type;
430
431 PreviewType
432 preview_type;
433
cristybb503372010-05-27 20:51:26 +0000434 ssize_t
cristy3ed852e2009-09-05 21:47:34 +0000435 group;
436
437 MagickBooleanType
anthony8ea79832011-10-05 10:08:39 +0000438 ping, /* fast read image attributes, not image data */
439 verbose; /* verbose output enable/disable */
cristy3ed852e2009-09-05 21:47:34 +0000440
441 char
anthony1afdc7a2011-10-05 11:54:28 +0000442 *view;
cristy3ed852e2009-09-05 21:47:34 +0000443
444 ChannelType
445 channel;
446
cristy3ed852e2009-09-05 21:47:34 +0000447 void
anthony5f78bca2012-10-05 06:51:00 +0000448 *options; /* splay tree of global options */
cristy3ed852e2009-09-05 21:47:34 +0000449
cristy4c08aed2011-07-01 19:47:50 +0000450 void
451 *profile;
452
453 MagickBooleanType
454 synchronize;
455
cristy3ed852e2009-09-05 21:47:34 +0000456 MagickProgressMonitor
457 progress_monitor;
458
459 void
460 *client_data,
461 *cache;
462
463 StreamHandler
464 stream;
465
466 FILE
467 *file;
468
469 void
470 *blob;
471
472 size_t
473 length;
474
475 char
anthony8ea79832011-10-05 10:08:39 +0000476 magick[MaxTextExtent], /* image file format (file magick) */
477 unique[MaxTextExtent], /* unique tempory filename - delegates */
478 zero[MaxTextExtent], /* unique filename ? - delegates */
479 filename[MaxTextExtent]; /* filename when reading/writing image */
cristy3ed852e2009-09-05 21:47:34 +0000480
481 MagickBooleanType
482 debug;
483
cristybb503372010-05-27 20:51:26 +0000484 size_t
cristy3ed852e2009-09-05 21:47:34 +0000485 signature;
cristy3ed852e2009-09-05 21:47:34 +0000486};
487
cristycf1296e2012-08-26 23:40:49 +0000488extern MagickExport ChannelType
489 SetImageChannelMask(Image *,const ChannelType);
490
cristy8ea81222011-09-04 10:33:32 +0000491extern MagickExport const char
cristy8ea81222011-09-04 10:33:32 +0000492 DefaultTileGeometry[],
493 DefaultTileLabel[],
494 LoadImageTag[],
495 LoadImagesTag[],
496 PSDensityGeometry[],
497 PSPageGeometry[],
498 SaveImageTag[],
499 SaveImagesTag[];
500
501extern MagickExport const double
502 DefaultResolution;
503
cristy3ed852e2009-09-05 21:47:34 +0000504extern MagickExport ExceptionType
505 CatchImageException(Image *);
506
cristy15781e52009-12-05 23:05:27 +0000507extern MagickExport FILE
508 *GetImageInfoFile(const ImageInfo *);
509
cristy3ed852e2009-09-05 21:47:34 +0000510extern MagickExport Image
cristy9950d572011-10-01 18:22:35 +0000511 *AcquireImage(const ImageInfo *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000512 *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
cristy5ed838e2010-05-31 00:05:35 +0000513 *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
514 ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000515 *DestroyImage(Image *),
516 *GetImageClipMask(const Image *,ExceptionInfo *),
517 *GetImageMask(const Image *,ExceptionInfo *),
cristy0740a982011-10-13 15:01:01 +0000518 *NewMagickImage(const ImageInfo *,const size_t,const size_t,const PixelInfo *,
519 ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000520 *ReferenceImage(Image *),
cristy4285d782011-02-09 20:12:28 +0000521 *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
522 ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000523
524extern MagickExport ImageInfo
525 *AcquireImageInfo(void),
526 *CloneImageInfo(const ImageInfo *),
527 *DestroyImageInfo(ImageInfo *);
528
cristy3ed852e2009-09-05 21:47:34 +0000529extern MagickExport MagickBooleanType
cristy018f07f2011-09-04 21:15:19 +0000530 ClipImage(Image *,ExceptionInfo *),
531 ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000532 IsTaintImage(const Image *),
cristy3ed852e2009-09-05 21:47:34 +0000533 IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
534 IsImageObject(const Image *),
535 ListMagickInfo(FILE *,ExceptionInfo *),
536 ModifyImage(Image **,ExceptionInfo *),
537 ResetImagePage(Image *,const char *),
cristye941a752011-10-15 01:52:48 +0000538 SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000539 SetImageBackgroundColor(Image *,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000540 SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
cristy63240882011-08-05 19:05:27 +0000541 SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
cristyd965a422010-03-03 17:47:35 +0000542 SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
cristy018f07f2011-09-04 21:15:19 +0000543 SetImageMask(Image *,const Image *,ExceptionInfo *),
cristy574cc262011-08-05 01:23:58 +0000544 SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000545 StripImage(Image *,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000546 SyncImage(Image *,ExceptionInfo *),
cristy6fccee12011-10-20 18:43:18 +0000547 SyncImageSettings(const ImageInfo *,Image *,ExceptionInfo *),
548 SyncImagesSettings(ImageInfo *,Image *,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000549
550extern MagickExport size_t
cristy6fccee12011-10-20 18:43:18 +0000551 InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
552 ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000553
cristy5ed838e2010-05-31 00:05:35 +0000554extern MagickExport ssize_t
555 GetImageReferenceCount(Image *);
556
cristy3ed852e2009-09-05 21:47:34 +0000557extern MagickExport VirtualPixelMethod
558 GetImageVirtualPixelMethod(const Image *),
cristy387430f2012-02-07 13:09:46 +0000559 SetImageVirtualPixelMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000560
561extern MagickExport void
cristy9950d572011-10-01 18:22:35 +0000562 AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000563 DestroyImagePixels(Image *),
564 DisassociateImageStream(Image *),
cristy3ed852e2009-09-05 21:47:34 +0000565 GetImageInfo(ImageInfo *),
566 SetImageInfoBlob(ImageInfo *,const void *,const size_t),
567 SetImageInfoFile(ImageInfo *,FILE *);
568
569#if defined(__cplusplus) || defined(c_plusplus)
570}
571#endif
572
573#endif