blob: 18f938c2ab359ef0d7f4171a4a3cc0085a8be0e7 [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 */
239 delay; /* Animation delay time */
cristy3ed852e2009-09-05 21:47:34 +0000240
cristybb503372010-05-27 20:51:26 +0000241 ssize_t
anthony1e4df872011-03-19 14:10:59 +0000242 ticks_per_second; /* units for delay time, default 100 for GIF */
cristy3ed852e2009-09-05 21:47:34 +0000243
cristybb503372010-05-27 20:51:26 +0000244 size_t
anthony5f78bca2012-10-05 06:51:00 +0000245 iterations, /* number of interations for GIF animations */
cristy3ed852e2009-09-05 21:47:34 +0000246 total_colors;
247
cristybb503372010-05-27 20:51:26 +0000248 ssize_t
anthony30b912a2012-03-22 01:20:28 +0000249 start_loop; /* ??? */
cristy3ed852e2009-09-05 21:47:34 +0000250
cristy5c4e2582011-09-11 19:21:03 +0000251 PixelInterpolateMethod
anthony1e4df872011-03-19 14:10:59 +0000252 interpolate; /* Interpolation of color for between pixel lookups */
cristy3ed852e2009-09-05 21:47:34 +0000253
254 MagickBooleanType
255 black_point_compensation;
256
cristy3ed852e2009-09-05 21:47:34 +0000257 RectangleInfo
258 tile_offset;
259
cristy3ed852e2009-09-05 21:47:34 +0000260 ImageType
261 type;
262
263 MagickBooleanType
anthonyad98c292011-09-29 10:43:26 +0000264 dither; /* dithering on/off */
cristy81b8ce52010-02-05 01:53:17 +0000265
266 MagickSizeType
anthony8ea79832011-10-05 10:08:39 +0000267 extent; /* Size of image read from disk */
cristy73724512010-04-12 14:43:14 +0000268
269 MagickBooleanType
anthony30b912a2012-03-22 01:20:28 +0000270 ping; /* no image data read, just attributes */
cristy0d267172011-04-25 20:13:48 +0000271
cristy10a6c612012-01-29 21:41:05 +0000272 MagickBooleanType
cristy883fde12013-04-08 00:50:13 +0000273 read_mask,
274 write_mask;
cristy10a6c612012-01-29 21:41:05 +0000275
cristy24855942012-08-28 11:25:09 +0000276 PixelTrait
cristy8a46d822012-08-28 23:32:39 +0000277 alpha_trait; /* is transparency channel defined and active */
cristy288a3532012-08-28 00:19:44 +0000278
cristy0d267172011-04-25 20:13:48 +0000279 size_t
cristyed231572011-07-14 02:18:59 +0000280 number_channels,
cristyb3a73b52011-07-26 01:34:43 +0000281 number_meta_channels,
cristy4c08aed2011-07-01 19:47:50 +0000282 metacontent_extent;
283
cristybd5a96c2011-08-21 00:04:26 +0000284 ChannelType
anthonyad98c292011-09-29 10:43:26 +0000285 channel_mask;
cristy490408a2011-07-07 14:42:05 +0000286
cristyed231572011-07-14 02:18:59 +0000287 PixelChannelMap
cristybd5a96c2011-08-21 00:04:26 +0000288 *channel_map;
cristy4c08aed2011-07-01 19:47:50 +0000289
290 void
291 *cache;
292
293 ErrorInfo
294 error;
295
296 TimerInfo
297 timer;
298
299 MagickProgressMonitor
300 progress_monitor;
301
302 void
303 *client_data;
304
305 Ascii85Info
306 *ascii85;
307
308 ProfileInfo
cristy4c08aed2011-07-01 19:47:50 +0000309 *generic_profile;
310
cristybd686c62013-02-03 19:01:05 +0000311 void
312 *properties, /* general settings, to save with image */
313 *artifacts; /* general operational/coder settings, not saved */
314
cristy4c08aed2011-07-01 19:47:50 +0000315 char
anthony8ea79832011-10-05 10:08:39 +0000316 filename[MaxTextExtent], /* images input filename */
317 magick_filename[MaxTextExtent], /* given image filename (with read mods) */
318 magick[MaxTextExtent]; /* images file format (file magic) */
cristy4c08aed2011-07-01 19:47:50 +0000319
320 size_t
anthony30b912a2012-03-22 01:20:28 +0000321 magick_columns, /* size of image when read/created */
cristy4c08aed2011-07-01 19:47:50 +0000322 magick_rows;
323
324 BlobInfo
anthony8ea79832011-10-05 10:08:39 +0000325 *blob; /* image file as in-memory string of 'extent' */
cristy4c08aed2011-07-01 19:47:50 +0000326
cristybd686c62013-02-03 19:01:05 +0000327 time_t
328 timestamp;
329
cristy4c08aed2011-07-01 19:47:50 +0000330 MagickBooleanType
anthony8ea79832011-10-05 10:08:39 +0000331 debug; /* debug output attribute */
cristy4c08aed2011-07-01 19:47:50 +0000332
333 volatile ssize_t
anthony8ea79832011-10-05 10:08:39 +0000334 reference_count; /* image data sharing memory management */
cristy4c08aed2011-07-01 19:47:50 +0000335
336 SemaphoreInfo
337 *semaphore;
338
cristy027ff402012-11-11 20:43:03 +0000339 const struct _ImageInfo
anthony5f78bca2012-10-05 06:51:00 +0000340 *image_info; /* (Optional) Image belongs to this ImageInfo 'list'
341 * For access to 'global options' when no per-image
342 * attribute, properity, or artifact has been set.
343 * It may be set or unset as needed, but never freed.
344 */
anthony007bad32012-07-28 10:52:03 +0000345
cristy4c08aed2011-07-01 19:47:50 +0000346 struct _Image
anthony007bad32012-07-28 10:52:03 +0000347 *list, /* Undo/Redo image processing list (for display) */
348 *previous, /* Image list links */
cristy4c08aed2011-07-01 19:47:50 +0000349 *next;
350
351 size_t
352 signature;
cristy3ed852e2009-09-05 21:47:34 +0000353};
354
anthony5f78bca2012-10-05 06:51:00 +0000355/* ImageInfo structure
356 * Stores an image list, as well as all global settings used by
357 * all images held, -- unless overridden for that specific image.
358 * See SyncImagesettings() which maps any global setting that always
359 * overrides specific image settings.
360 */
cristy3ed852e2009-09-05 21:47:34 +0000361struct _ImageInfo
362{
363 CompressionType
anthonyfd706f92012-01-19 04:22:02 +0000364 compression; /* compression method when reading/saving image */
cristy3ed852e2009-09-05 21:47:34 +0000365
366 OrientationType
anthonyfd706f92012-01-19 04:22:02 +0000367 orientation; /* orientation setting */
cristy3ed852e2009-09-05 21:47:34 +0000368
369 MagickBooleanType
anthonyd5daafa2012-03-28 12:49:10 +0000370 temporary, /* image file to be deleted after read "empemeral:" */
anthony72feaa62012-01-17 06:46:23 +0000371 adjoin, /* save images to seperate scene files */
cristy3ed852e2009-09-05 21:47:34 +0000372 affirm,
373 antialias;
374
375 char
anthony72feaa62012-01-17 06:46:23 +0000376 *size, /* image generation size */
377 *extract, /* crop/resize string on image read */
cristy3ed852e2009-09-05 21:47:34 +0000378 *page,
anthony72feaa62012-01-17 06:46:23 +0000379 *scenes; /* scene numbers that is to be read in */
cristy3ed852e2009-09-05 21:47:34 +0000380
cristybb503372010-05-27 20:51:26 +0000381 size_t
anthony72feaa62012-01-17 06:46:23 +0000382 scene, /* starting value for image save numbering */
383 number_scenes, /* total number of images in list - for escapes */
anthonyfd706f92012-01-19 04:22:02 +0000384 depth; /* current read/save depth of images */
cristy3ed852e2009-09-05 21:47:34 +0000385
386 InterlaceType
anthony8ea79832011-10-05 10:08:39 +0000387 interlace; /* interlace for image write */
cristy3ed852e2009-09-05 21:47:34 +0000388
389 EndianType
anthony8ea79832011-10-05 10:08:39 +0000390 endian; /* integer endian order for raw image data */
cristy3ed852e2009-09-05 21:47:34 +0000391
392 ResolutionType
anthony8ea79832011-10-05 10:08:39 +0000393 units; /* denisty pixels/inch or pixel/cm */
cristy3ed852e2009-09-05 21:47:34 +0000394
cristybb503372010-05-27 20:51:26 +0000395 size_t
anthony8ea79832011-10-05 10:08:39 +0000396 quality; /* compression quality */
cristy3ed852e2009-09-05 21:47:34 +0000397
398 char
anthony8ea79832011-10-05 10:08:39 +0000399 *sampling_factor, /* JPEG write sampling factor */
400 *server_name, /* X windows server name - display/animate */
anthony72feaa62012-01-17 06:46:23 +0000401 *font, /* DUP for draw_info */
anthony8ea79832011-10-05 10:08:39 +0000402 *texture, /* montage/display background tile */
anthony72feaa62012-01-17 06:46:23 +0000403 *density; /* DUP for image and draw_info */
cristy3ed852e2009-09-05 21:47:34 +0000404
405 double
cristy947cb4c2011-10-20 18:41:46 +0000406 pointsize,
anthonye95d3f02011-10-12 10:58:48 +0000407 fuzz; /* current color fuzz attribute */
cristy3ed852e2009-09-05 21:47:34 +0000408
cristy101ab702011-10-13 13:06:32 +0000409 PixelInfo
anthony72feaa62012-01-17 06:46:23 +0000410 background_color, /* user set background color */
411 border_color, /* user set border color */
412 matte_color, /* matte (frame) color */
413 transparent_color; /* color for transparent index in color tables */
414 /* NB: fill color is only needed in draw_info! */
415 /* the same for undercolor (for font drawing) */
cristy3ed852e2009-09-05 21:47:34 +0000416
417 MagickBooleanType
anthonyfd706f92012-01-19 04:22:02 +0000418 dither, /* dither enable-disable */
419 monochrome; /* read/write pcl,pdf,ps,xps as monocrome image */
cristy3ed852e2009-09-05 21:47:34 +0000420
cristy3ed852e2009-09-05 21:47:34 +0000421 ColorspaceType
422 colorspace;
423
anthony72feaa62012-01-17 06:46:23 +0000424 CompositeOperator
425 compose;
426
cristy3ed852e2009-09-05 21:47:34 +0000427 ImageType
428 type;
429
430 PreviewType
431 preview_type;
432
cristybb503372010-05-27 20:51:26 +0000433 ssize_t
cristy3ed852e2009-09-05 21:47:34 +0000434 group;
435
436 MagickBooleanType
anthony8ea79832011-10-05 10:08:39 +0000437 ping, /* fast read image attributes, not image data */
438 verbose; /* verbose output enable/disable */
cristy3ed852e2009-09-05 21:47:34 +0000439
440 char
anthony1afdc7a2011-10-05 11:54:28 +0000441 *view;
cristy3ed852e2009-09-05 21:47:34 +0000442
443 ChannelType
444 channel;
445
cristy3ed852e2009-09-05 21:47:34 +0000446 void
anthony5f78bca2012-10-05 06:51:00 +0000447 *options; /* splay tree of global options */
cristy3ed852e2009-09-05 21:47:34 +0000448
cristy4c08aed2011-07-01 19:47:50 +0000449 void
450 *profile;
451
452 MagickBooleanType
453 synchronize;
454
cristy3ed852e2009-09-05 21:47:34 +0000455 MagickProgressMonitor
456 progress_monitor;
457
458 void
459 *client_data,
460 *cache;
461
462 StreamHandler
463 stream;
464
465 FILE
466 *file;
467
468 void
469 *blob;
470
471 size_t
472 length;
473
474 char
anthony8ea79832011-10-05 10:08:39 +0000475 magick[MaxTextExtent], /* image file format (file magick) */
476 unique[MaxTextExtent], /* unique tempory filename - delegates */
477 zero[MaxTextExtent], /* unique filename ? - delegates */
478 filename[MaxTextExtent]; /* filename when reading/writing image */
cristy3ed852e2009-09-05 21:47:34 +0000479
480 MagickBooleanType
481 debug;
482
cristybb503372010-05-27 20:51:26 +0000483 size_t
cristy3ed852e2009-09-05 21:47:34 +0000484 signature;
cristy3ed852e2009-09-05 21:47:34 +0000485};
486
cristycf1296e2012-08-26 23:40:49 +0000487extern MagickExport ChannelType
488 SetImageChannelMask(Image *,const ChannelType);
489
cristy8ea81222011-09-04 10:33:32 +0000490extern MagickExport const char
cristy8ea81222011-09-04 10:33:32 +0000491 DefaultTileGeometry[],
492 DefaultTileLabel[],
493 LoadImageTag[],
494 LoadImagesTag[],
495 PSDensityGeometry[],
496 PSPageGeometry[],
497 SaveImageTag[],
498 SaveImagesTag[];
499
500extern MagickExport const double
501 DefaultResolution;
502
cristy3ed852e2009-09-05 21:47:34 +0000503extern MagickExport ExceptionType
504 CatchImageException(Image *);
505
cristy15781e52009-12-05 23:05:27 +0000506extern MagickExport FILE
507 *GetImageInfoFile(const ImageInfo *);
508
cristy3ed852e2009-09-05 21:47:34 +0000509extern MagickExport Image
cristy9950d572011-10-01 18:22:35 +0000510 *AcquireImage(const ImageInfo *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000511 *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
cristy5ed838e2010-05-31 00:05:35 +0000512 *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
513 ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000514 *DestroyImage(Image *),
515 *GetImageClipMask(const Image *,ExceptionInfo *),
516 *GetImageMask(const Image *,ExceptionInfo *),
cristy0740a982011-10-13 15:01:01 +0000517 *NewMagickImage(const ImageInfo *,const size_t,const size_t,const PixelInfo *,
518 ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000519 *ReferenceImage(Image *),
cristy4285d782011-02-09 20:12:28 +0000520 *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
521 ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000522
523extern MagickExport ImageInfo
524 *AcquireImageInfo(void),
525 *CloneImageInfo(const ImageInfo *),
526 *DestroyImageInfo(ImageInfo *);
527
cristy3ed852e2009-09-05 21:47:34 +0000528extern MagickExport MagickBooleanType
cristy018f07f2011-09-04 21:15:19 +0000529 ClipImage(Image *,ExceptionInfo *),
530 ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000531 IsTaintImage(const Image *),
cristy3ed852e2009-09-05 21:47:34 +0000532 IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
533 IsImageObject(const Image *),
534 ListMagickInfo(FILE *,ExceptionInfo *),
535 ModifyImage(Image **,ExceptionInfo *),
536 ResetImagePage(Image *,const char *),
cristye941a752011-10-15 01:52:48 +0000537 SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000538 SetImageBackgroundColor(Image *,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000539 SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
cristy63240882011-08-05 19:05:27 +0000540 SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
cristyd965a422010-03-03 17:47:35 +0000541 SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
cristy018f07f2011-09-04 21:15:19 +0000542 SetImageMask(Image *,const Image *,ExceptionInfo *),
cristy574cc262011-08-05 01:23:58 +0000543 SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000544 StripImage(Image *,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000545 SyncImage(Image *,ExceptionInfo *),
cristy6fccee12011-10-20 18:43:18 +0000546 SyncImageSettings(const ImageInfo *,Image *,ExceptionInfo *),
547 SyncImagesSettings(ImageInfo *,Image *,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000548
549extern MagickExport size_t
cristy6fccee12011-10-20 18:43:18 +0000550 InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
551 ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000552
cristy5ed838e2010-05-31 00:05:35 +0000553extern MagickExport ssize_t
554 GetImageReferenceCount(Image *);
555
cristy3ed852e2009-09-05 21:47:34 +0000556extern MagickExport VirtualPixelMethod
557 GetImageVirtualPixelMethod(const Image *),
cristy387430f2012-02-07 13:09:46 +0000558 SetImageVirtualPixelMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000559
560extern MagickExport void
cristy9950d572011-10-01 18:22:35 +0000561 AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000562 DestroyImagePixels(Image *),
563 DisassociateImageStream(Image *),
cristy3ed852e2009-09-05 21:47:34 +0000564 GetImageInfo(ImageInfo *),
565 SetImageInfoBlob(ImageInfo *,const void *,const size_t),
566 SetImageInfoFile(ImageInfo *,FILE *);
567
568#if defined(__cplusplus) || defined(c_plusplus)
569}
570#endif
571
572#endif