blob: e3ec59490ec09b06600a9cfa4ce91c18e162541d [file] [log] [blame]
cristy3ed852e2009-09-05 21:47:34 +00001/*
Cristy7ce65e72015-12-12 18:03:16 -05002 Copyright 1999-2016 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,
cristy7894d4a2014-09-29 12:43:59 +000035 AssociateAlphaChannel,
cristy3ed852e2009-09-05 21:47:34 +000036 BackgroundAlphaChannel,
37 CopyAlphaChannel,
38 DeactivateAlphaChannel,
cristydd00eb32014-10-01 13:11:19 +000039 DiscreteAlphaChannel,
cristy7894d4a2014-09-29 12:43:59 +000040 DisassociateAlphaChannel,
cristy3ed852e2009-09-05 21:47:34 +000041 ExtractAlphaChannel,
cristy17f11b02014-12-20 19:37:04 +000042 OffAlphaChannel,
43 OnAlphaChannel,
cristy3ed852e2009-09-05 21:47:34 +000044 OpaqueAlphaChannel,
cristy61808382012-01-30 01:24:49 +000045 RemoveAlphaChannel,
cristy3ed852e2009-09-05 21:47:34 +000046 SetAlphaChannel,
47 ShapeAlphaChannel,
cristy61808382012-01-30 01:24:49 +000048 TransparentAlphaChannel
cristyb15b06c2012-08-28 11:36:48 +000049} AlphaChannelOption;
cristy3ed852e2009-09-05 21:47:34 +000050
51typedef enum
52{
cristy5f1c1ff2010-12-23 21:38:06 +000053 UndefinedType,
cristy3ed852e2009-09-05 21:47:34 +000054 BilevelType,
55 GrayscaleType,
cristydef23e52015-01-22 11:52:01 +000056 GrayscaleAlphaType,
cristy3ed852e2009-09-05 21:47:34 +000057 PaletteType,
cristydef23e52015-01-22 11:52:01 +000058 PaletteAlphaType,
cristy3ed852e2009-09-05 21:47:34 +000059 TrueColorType,
cristydef23e52015-01-22 11:52:01 +000060 TrueColorAlphaType,
cristy3ed852e2009-09-05 21:47:34 +000061 ColorSeparationType,
cristydef23e52015-01-22 11:52:01 +000062 ColorSeparationAlphaType,
cristy3ed852e2009-09-05 21:47:34 +000063 OptimizeType,
cristydef23e52015-01-22 11:52:01 +000064 PaletteBilevelAlphaType
cristy3ed852e2009-09-05 21:47:34 +000065} ImageType;
66
67typedef enum
68{
69 UndefinedInterlace,
70 NoInterlace,
71 LineInterlace,
72 PlaneInterlace,
73 PartitionInterlace,
74 GIFInterlace,
75 JPEGInterlace,
76 PNGInterlace
77} InterlaceType;
78
79typedef enum
80{
81 UndefinedOrientation,
82 TopLeftOrientation,
83 TopRightOrientation,
84 BottomRightOrientation,
85 BottomLeftOrientation,
86 LeftTopOrientation,
87 RightTopOrientation,
88 RightBottomOrientation,
89 LeftBottomOrientation
90} OrientationType;
91
92typedef enum
93{
94 UndefinedResolution,
95 PixelsPerInchResolution,
96 PixelsPerCentimeterResolution
97} ResolutionType;
98
99typedef struct _PrimaryInfo
100{
101 double
102 x,
103 y,
104 z;
105} PrimaryInfo;
106
107typedef struct _SegmentInfo
108{
109 double
110 x1,
111 y1,
112 x2,
113 y2;
114} SegmentInfo;
115
116typedef enum
117{
118 UndefinedTransmitType,
119 FileTransmitType,
120 BlobTransmitType,
121 StreamTransmitType,
122 ImageTransmitType
123} TransmitType;
124
125typedef struct _ChromaticityInfo
126{
127 PrimaryInfo
128 red_primary,
129 green_primary,
130 blue_primary,
131 white_point;
132} ChromaticityInfo;
133
cristy4c08aed2011-07-01 19:47:50 +0000134#include "MagickCore/blob.h"
135#include "MagickCore/colorspace.h"
136#include "MagickCore/cache-view.h"
137#include "MagickCore/color.h"
138#include "MagickCore/composite.h"
139#include "MagickCore/compress.h"
140#include "MagickCore/effect.h"
141#include "MagickCore/geometry.h"
142#include "MagickCore/layer.h"
143#include "MagickCore/locale_.h"
144#include "MagickCore/monitor.h"
145#include "MagickCore/pixel.h"
146#include "MagickCore/profile.h"
147#include "MagickCore/quantum.h"
148#include "MagickCore/resample.h"
149#include "MagickCore/resize.h"
150#include "MagickCore/semaphore.h"
151#include "MagickCore/stream.h"
152#include "MagickCore/timer.h"
cristy3ed852e2009-09-05 21:47:34 +0000153
154struct _Image
155{
156 ClassType
157 storage_class;
158
159 ColorspaceType
anthonyfd706f92012-01-19 04:22:02 +0000160 colorspace; /* colorspace of image data */
cristy3ed852e2009-09-05 21:47:34 +0000161
162 CompressionType
anthonyfd706f92012-01-19 04:22:02 +0000163 compression; /* compression of image when read/write */
cristy3ed852e2009-09-05 21:47:34 +0000164
cristybb503372010-05-27 20:51:26 +0000165 size_t
anthonyfd706f92012-01-19 04:22:02 +0000166 quality; /* compression quality setting, meaning varies */
cristy3ed852e2009-09-05 21:47:34 +0000167
168 OrientationType
anthonyfd706f92012-01-19 04:22:02 +0000169 orientation; /* photo orientation of image */
cristy3ed852e2009-09-05 21:47:34 +0000170
171 MagickBooleanType
cristy8a46d822012-08-28 23:32:39 +0000172 taint; /* has image been modified since reading */
cristy3ed852e2009-09-05 21:47:34 +0000173
cristybb503372010-05-27 20:51:26 +0000174 size_t
anthonyfd706f92012-01-19 04:22:02 +0000175 columns, /* physical size of image */
cristy3ed852e2009-09-05 21:47:34 +0000176 rows,
anthonyfd706f92012-01-19 04:22:02 +0000177 depth, /* depth of image on read/write */
178 colors; /* Size of color table, or actual color count */
179 /* Only valid if image is not DirectClass */
cristy3ed852e2009-09-05 21:47:34 +0000180
cristy101ab702011-10-13 13:06:32 +0000181 PixelInfo
cristy3ed852e2009-09-05 21:47:34 +0000182 *colormap,
dirkb797b2c2016-02-01 22:20:32 +0100183 alpha_color, /* current alphacolor attribute */
anthonyfd706f92012-01-19 04:22:02 +0000184 background_color, /* current background color attribute */
185 border_color, /* current bordercolor attribute */
anthonyfd706f92012-01-19 04:22:02 +0000186 transparent_color; /* color for 'transparent' color index in GIF */
cristy3ed852e2009-09-05 21:47:34 +0000187
188 double
189 gamma;
190
191 ChromaticityInfo
192 chromaticity;
193
194 RenderingIntent
195 rendering_intent;
196
197 void
198 *profiles;
199
200 ResolutionType
anthony1e4df872011-03-19 14:10:59 +0000201 units; /* resolution/density ppi or ppc */
cristy3ed852e2009-09-05 21:47:34 +0000202
203 char
204 *montage,
205 *directory,
206 *geometry;
207
cristybb503372010-05-27 20:51:26 +0000208 ssize_t
anthony30b912a2012-03-22 01:20:28 +0000209 offset; /* ??? */
cristy3ed852e2009-09-05 21:47:34 +0000210
cristy2a11bef2011-10-28 18:33:11 +0000211 PointInfo
212 resolution; /* image resolution/density */
cristy3ed852e2009-09-05 21:47:34 +0000213
214 RectangleInfo
anthony1e4df872011-03-19 14:10:59 +0000215 page, /* virtual canvas size and offset of image */
cristy4c08aed2011-07-01 19:47:50 +0000216 extract_info;
cristy3ed852e2009-09-05 21:47:34 +0000217
218 double
anthonya322a832013-04-27 06:28:03 +0000219 fuzz; /* current color fuzz attribute - move to image_info */
cristy3ed852e2009-09-05 21:47:34 +0000220
221 FilterTypes
anthony1e4df872011-03-19 14:10:59 +0000222 filter; /* resize/distort filter to apply */
cristy3ed852e2009-09-05 21:47:34 +0000223
cristy70e9f682013-03-12 22:31:22 +0000224 PixelIntensityMethod
225 intensity; /* method to generate an intensity value from a pixel */
226
cristy3ed852e2009-09-05 21:47:34 +0000227 InterlaceType
228 interlace;
229
230 EndianType
anthony1e4df872011-03-19 14:10:59 +0000231 endian; /* raw data integer ordering on read/write */
cristy3ed852e2009-09-05 21:47:34 +0000232
233 GravityType
anthony1e4df872011-03-19 14:10:59 +0000234 gravity; /* Gravity attribute for positioning in image */
cristy3ed852e2009-09-05 21:47:34 +0000235
236 CompositeOperator
anthony1e4df872011-03-19 14:10:59 +0000237 compose; /* alpha composition method for layered images */
cristy3ed852e2009-09-05 21:47:34 +0000238
239 DisposeType
anthony1e4df872011-03-19 14:10:59 +0000240 dispose; /* GIF animation disposal method */
cristy3ed852e2009-09-05 21:47:34 +0000241
cristybb503372010-05-27 20:51:26 +0000242 size_t
anthony1e4df872011-03-19 14:10:59 +0000243 scene, /* index of image in multi-image file */
cristy90895472014-01-27 20:12:07 +0000244 delay, /* Animation delay time */
245 duration; /* Total animation duration sum(delay*iterations) */
cristy3ed852e2009-09-05 21:47:34 +0000246
cristybb503372010-05-27 20:51:26 +0000247 ssize_t
anthony1e4df872011-03-19 14:10:59 +0000248 ticks_per_second; /* units for delay time, default 100 for GIF */
cristy3ed852e2009-09-05 21:47:34 +0000249
cristybb503372010-05-27 20:51:26 +0000250 size_t
anthony5f78bca2012-10-05 06:51:00 +0000251 iterations, /* number of interations for GIF animations */
cristy3ed852e2009-09-05 21:47:34 +0000252 total_colors;
253
cristybb503372010-05-27 20:51:26 +0000254 ssize_t
anthony30b912a2012-03-22 01:20:28 +0000255 start_loop; /* ??? */
cristy3ed852e2009-09-05 21:47:34 +0000256
cristy5c4e2582011-09-11 19:21:03 +0000257 PixelInterpolateMethod
anthony1e4df872011-03-19 14:10:59 +0000258 interpolate; /* Interpolation of color for between pixel lookups */
cristy3ed852e2009-09-05 21:47:34 +0000259
260 MagickBooleanType
261 black_point_compensation;
262
cristy3ed852e2009-09-05 21:47:34 +0000263 RectangleInfo
264 tile_offset;
265
cristy3ed852e2009-09-05 21:47:34 +0000266 ImageType
267 type;
268
269 MagickBooleanType
anthonyad98c292011-09-29 10:43:26 +0000270 dither; /* dithering on/off */
cristy81b8ce52010-02-05 01:53:17 +0000271
272 MagickSizeType
anthony8ea79832011-10-05 10:08:39 +0000273 extent; /* Size of image read from disk */
cristy73724512010-04-12 14:43:14 +0000274
275 MagickBooleanType
anthony30b912a2012-03-22 01:20:28 +0000276 ping; /* no image data read, just attributes */
cristy0d267172011-04-25 20:13:48 +0000277
cristy10a6c612012-01-29 21:41:05 +0000278 MagickBooleanType
cristy883fde12013-04-08 00:50:13 +0000279 read_mask,
280 write_mask;
cristy10a6c612012-01-29 21:41:05 +0000281
cristy24855942012-08-28 11:25:09 +0000282 PixelTrait
cristy8a46d822012-08-28 23:32:39 +0000283 alpha_trait; /* is transparency channel defined and active */
cristy288a3532012-08-28 00:19:44 +0000284
cristy0d267172011-04-25 20:13:48 +0000285 size_t
cristyed231572011-07-14 02:18:59 +0000286 number_channels,
cristyb3a73b52011-07-26 01:34:43 +0000287 number_meta_channels,
cristy4c08aed2011-07-01 19:47:50 +0000288 metacontent_extent;
289
cristybd5a96c2011-08-21 00:04:26 +0000290 ChannelType
anthonyad98c292011-09-29 10:43:26 +0000291 channel_mask;
cristy490408a2011-07-07 14:42:05 +0000292
cristyed231572011-07-14 02:18:59 +0000293 PixelChannelMap
cristybd5a96c2011-08-21 00:04:26 +0000294 *channel_map;
cristy4c08aed2011-07-01 19:47:50 +0000295
296 void
297 *cache;
298
299 ErrorInfo
300 error;
301
302 TimerInfo
303 timer;
304
305 MagickProgressMonitor
306 progress_monitor;
307
308 void
309 *client_data;
310
311 Ascii85Info
312 *ascii85;
313
314 ProfileInfo
cristy4c08aed2011-07-01 19:47:50 +0000315 *generic_profile;
316
cristybd686c62013-02-03 19:01:05 +0000317 void
318 *properties, /* general settings, to save with image */
319 *artifacts; /* general operational/coder settings, not saved */
320
cristy4c08aed2011-07-01 19:47:50 +0000321 char
cristy151b66d2015-04-15 10:50:31 +0000322 filename[MagickPathExtent], /* images input filename */
323 magick_filename[MagickPathExtent], /* given image filename (with read mods) */
324 magick[MagickPathExtent]; /* images file format (file magic) */
cristy4c08aed2011-07-01 19:47:50 +0000325
326 size_t
anthony30b912a2012-03-22 01:20:28 +0000327 magick_columns, /* size of image when read/created */
cristy4c08aed2011-07-01 19:47:50 +0000328 magick_rows;
329
330 BlobInfo
anthony8ea79832011-10-05 10:08:39 +0000331 *blob; /* image file as in-memory string of 'extent' */
cristy4c08aed2011-07-01 19:47:50 +0000332
cristybd686c62013-02-03 19:01:05 +0000333 time_t
334 timestamp;
335
cristy4c08aed2011-07-01 19:47:50 +0000336 MagickBooleanType
anthony8ea79832011-10-05 10:08:39 +0000337 debug; /* debug output attribute */
cristy4c08aed2011-07-01 19:47:50 +0000338
339 volatile ssize_t
anthony8ea79832011-10-05 10:08:39 +0000340 reference_count; /* image data sharing memory management */
cristy4c08aed2011-07-01 19:47:50 +0000341
342 SemaphoreInfo
343 *semaphore;
344
Cristy36421ee2015-08-28 11:58:20 -0400345 struct _ImageInfo
anthony5f78bca2012-10-05 06:51:00 +0000346 *image_info; /* (Optional) Image belongs to this ImageInfo 'list'
347 * For access to 'global options' when no per-image
348 * attribute, properity, or artifact has been set.
anthony5f78bca2012-10-05 06:51:00 +0000349 */
anthony007bad32012-07-28 10:52:03 +0000350
cristy4c08aed2011-07-01 19:47:50 +0000351 struct _Image
anthony007bad32012-07-28 10:52:03 +0000352 *list, /* Undo/Redo image processing list (for display) */
353 *previous, /* Image list links */
cristy4c08aed2011-07-01 19:47:50 +0000354 *next;
355
356 size_t
357 signature;
cristy3ed852e2009-09-05 21:47:34 +0000358};
359
cristy939d92b2015-06-17 11:14:12 +0000360/*
361 ImageInfo structure:
362 Stores an image list, as well as all global settings used by all images
363 held, -- unless overridden for that specific image. See SyncImagesettings()
364 which maps any global setting that always overrides specific image settings.
365*/
cristy3ed852e2009-09-05 21:47:34 +0000366struct _ImageInfo
367{
368 CompressionType
anthonyfd706f92012-01-19 04:22:02 +0000369 compression; /* compression method when reading/saving image */
cristy3ed852e2009-09-05 21:47:34 +0000370
371 OrientationType
anthonyfd706f92012-01-19 04:22:02 +0000372 orientation; /* orientation setting */
cristy3ed852e2009-09-05 21:47:34 +0000373
374 MagickBooleanType
anthonyd5daafa2012-03-28 12:49:10 +0000375 temporary, /* image file to be deleted after read "empemeral:" */
dirk288e9572015-06-05 16:11:55 +0000376 adjoin, /* save images to separate scene files */
cristy3ed852e2009-09-05 21:47:34 +0000377 affirm,
378 antialias;
379
380 char
anthony72feaa62012-01-17 06:46:23 +0000381 *size, /* image generation size */
382 *extract, /* crop/resize string on image read */
cristy3ed852e2009-09-05 21:47:34 +0000383 *page,
anthony72feaa62012-01-17 06:46:23 +0000384 *scenes; /* scene numbers that is to be read in */
cristy3ed852e2009-09-05 21:47:34 +0000385
cristybb503372010-05-27 20:51:26 +0000386 size_t
anthony72feaa62012-01-17 06:46:23 +0000387 scene, /* starting value for image save numbering */
388 number_scenes, /* total number of images in list - for escapes */
anthonyfd706f92012-01-19 04:22:02 +0000389 depth; /* current read/save depth of images */
cristy3ed852e2009-09-05 21:47:34 +0000390
391 InterlaceType
anthony8ea79832011-10-05 10:08:39 +0000392 interlace; /* interlace for image write */
cristy3ed852e2009-09-05 21:47:34 +0000393
394 EndianType
anthony8ea79832011-10-05 10:08:39 +0000395 endian; /* integer endian order for raw image data */
cristy3ed852e2009-09-05 21:47:34 +0000396
397 ResolutionType
anthony8ea79832011-10-05 10:08:39 +0000398 units; /* denisty pixels/inch or pixel/cm */
cristy3ed852e2009-09-05 21:47:34 +0000399
cristybb503372010-05-27 20:51:26 +0000400 size_t
anthony8ea79832011-10-05 10:08:39 +0000401 quality; /* compression quality */
cristy3ed852e2009-09-05 21:47:34 +0000402
403 char
anthony8ea79832011-10-05 10:08:39 +0000404 *sampling_factor, /* JPEG write sampling factor */
405 *server_name, /* X windows server name - display/animate */
anthony72feaa62012-01-17 06:46:23 +0000406 *font, /* DUP for draw_info */
anthony8ea79832011-10-05 10:08:39 +0000407 *texture, /* montage/display background tile */
anthony72feaa62012-01-17 06:46:23 +0000408 *density; /* DUP for image and draw_info */
cristy3ed852e2009-09-05 21:47:34 +0000409
410 double
cristy947cb4c2011-10-20 18:41:46 +0000411 pointsize,
anthonye95d3f02011-10-12 10:58:48 +0000412 fuzz; /* current color fuzz attribute */
cristy3ed852e2009-09-05 21:47:34 +0000413
cristy101ab702011-10-13 13:06:32 +0000414 PixelInfo
dirkb797b2c2016-02-01 22:20:32 +0100415 alpha_color, /* alpha (frame) color */
anthony72feaa62012-01-17 06:46:23 +0000416 background_color, /* user set background color */
417 border_color, /* user set border color */
anthony72feaa62012-01-17 06:46:23 +0000418 transparent_color; /* color for transparent index in color tables */
419 /* NB: fill color is only needed in draw_info! */
420 /* the same for undercolor (for font drawing) */
cristy3ed852e2009-09-05 21:47:34 +0000421
422 MagickBooleanType
anthonyfd706f92012-01-19 04:22:02 +0000423 dither, /* dither enable-disable */
424 monochrome; /* read/write pcl,pdf,ps,xps as monocrome image */
cristy3ed852e2009-09-05 21:47:34 +0000425
cristy3ed852e2009-09-05 21:47:34 +0000426 ColorspaceType
427 colorspace;
428
anthony72feaa62012-01-17 06:46:23 +0000429 CompositeOperator
430 compose;
431
cristy3ed852e2009-09-05 21:47:34 +0000432 ImageType
433 type;
434
435 PreviewType
436 preview_type;
437
cristybb503372010-05-27 20:51:26 +0000438 ssize_t
cristy3ed852e2009-09-05 21:47:34 +0000439 group;
440
441 MagickBooleanType
anthony8ea79832011-10-05 10:08:39 +0000442 ping, /* fast read image attributes, not image data */
443 verbose; /* verbose output enable/disable */
cristy3ed852e2009-09-05 21:47:34 +0000444
cristy3ed852e2009-09-05 21:47:34 +0000445 ChannelType
446 channel;
447
cristy3ed852e2009-09-05 21:47:34 +0000448 void
anthony5f78bca2012-10-05 06:51:00 +0000449 *options; /* splay tree of global options */
cristy3ed852e2009-09-05 21:47:34 +0000450
cristy4c08aed2011-07-01 19:47:50 +0000451 void
452 *profile;
453
454 MagickBooleanType
455 synchronize;
456
cristy3ed852e2009-09-05 21:47:34 +0000457 MagickProgressMonitor
458 progress_monitor;
459
460 void
461 *client_data,
462 *cache;
463
464 StreamHandler
465 stream;
466
467 FILE
468 *file;
469
470 void
471 *blob;
472
473 size_t
474 length;
475
476 char
cristy151b66d2015-04-15 10:50:31 +0000477 magick[MagickPathExtent], /* image file format (file magick) */
478 unique[MagickPathExtent], /* unique tempory filename - delegates */
479 zero[MagickPathExtent], /* unique filename ? - delegates */
480 filename[MagickPathExtent]; /* filename when reading/writing image */
cristy3ed852e2009-09-05 21:47:34 +0000481
482 MagickBooleanType
483 debug;
484
cristybb503372010-05-27 20:51:26 +0000485 size_t
cristy3ed852e2009-09-05 21:47:34 +0000486 signature;
cristy3ed852e2009-09-05 21:47:34 +0000487};
488
cristycf1296e2012-08-26 23:40:49 +0000489extern MagickExport ChannelType
490 SetImageChannelMask(Image *,const ChannelType);
491
cristy8ea81222011-09-04 10:33:32 +0000492extern MagickExport const char
cristy8ea81222011-09-04 10:33:32 +0000493 DefaultTileGeometry[],
494 DefaultTileLabel[],
495 LoadImageTag[],
496 LoadImagesTag[],
497 PSDensityGeometry[],
498 PSPageGeometry[],
499 SaveImageTag[],
500 SaveImagesTag[];
501
502extern MagickExport const double
503 DefaultResolution;
504
cristy3ed852e2009-09-05 21:47:34 +0000505extern MagickExport ExceptionType
506 CatchImageException(Image *);
507
cristy15781e52009-12-05 23:05:27 +0000508extern MagickExport FILE
509 *GetImageInfoFile(const ImageInfo *);
510
cristy3ed852e2009-09-05 21:47:34 +0000511extern MagickExport Image
cristy9950d572011-10-01 18:22:35 +0000512 *AcquireImage(const ImageInfo *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000513 *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
cristy5ed838e2010-05-31 00:05:35 +0000514 *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
515 ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000516 *DestroyImage(Image *),
dirkaf131f12016-01-10 01:29:22 +0100517 *GetImageMask(const Image *,const PixelMask,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 *),
cristy957f2612015-06-21 23:51:58 +0000532 CopyImagePixels(Image *,const Image *,const RectangleInfo *,
cristy17fbd722015-06-22 00:46:58 +0000533 const OffsetInfo *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000534 IsTaintImage(const Image *),
cristy3ed852e2009-09-05 21:47:34 +0000535 IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
536 IsImageObject(const Image *),
537 ListMagickInfo(FILE *,ExceptionInfo *),
538 ModifyImage(Image **,ExceptionInfo *),
539 ResetImagePage(Image *,const char *),
cristye941a752011-10-15 01:52:48 +0000540 SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000541 SetImageBackgroundColor(Image *,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000542 SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
cristy63240882011-08-05 19:05:27 +0000543 SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
cristyd965a422010-03-03 17:47:35 +0000544 SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
cristyacd0d4c2015-07-25 16:12:33 +0000545 SetImageMask(Image *,const PixelMask type,const Image *,ExceptionInfo *),
cristy574cc262011-08-05 01:23:58 +0000546 SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000547 StripImage(Image *,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000548 SyncImage(Image *,ExceptionInfo *),
cristy6fccee12011-10-20 18:43:18 +0000549 SyncImageSettings(const ImageInfo *,Image *,ExceptionInfo *),
550 SyncImagesSettings(ImageInfo *,Image *,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000551
552extern MagickExport size_t
cristy6fccee12011-10-20 18:43:18 +0000553 InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
554 ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000555
cristy5ed838e2010-05-31 00:05:35 +0000556extern MagickExport ssize_t
557 GetImageReferenceCount(Image *);
558
cristy3ed852e2009-09-05 21:47:34 +0000559extern MagickExport VirtualPixelMethod
560 GetImageVirtualPixelMethod(const Image *),
cristy387430f2012-02-07 13:09:46 +0000561 SetImageVirtualPixelMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000562
563extern MagickExport void
cristy9950d572011-10-01 18:22:35 +0000564 AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000565 DestroyImagePixels(Image *),
566 DisassociateImageStream(Image *),
cristy3ed852e2009-09-05 21:47:34 +0000567 GetImageInfo(ImageInfo *),
568 SetImageInfoBlob(ImageInfo *,const void *,const size_t),
569 SetImageInfoFile(ImageInfo *,FILE *);
570
571#if defined(__cplusplus) || defined(c_plusplus)
572}
573#endif
574
575#endif