blob: 6fa5b13bf5eea0cb04b442279fdf9b0332f7d9db [file] [log] [blame]
cristy3ed852e2009-09-05 21:47:34 +00001/*
Cristyf6ff9ea2016-12-05 09:53:35 -05002 Copyright 1999-2017 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*/
Cristy83bceaa2016-06-03 20:39:35 -040018#ifndef MAGICKCORE_IMAGE_H
19#define MAGICKCORE_IMAGE_H
cristy3ed852e2009-09-05 21:47:34 +000020
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
dirk8b9f21c2016-02-01 22:30:19 +0100221 FilterType
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
cristy3ed852e2009-09-05 21:47:34 +0000435 MagickBooleanType
anthony8ea79832011-10-05 10:08:39 +0000436 ping, /* fast read image attributes, not image data */
437 verbose; /* verbose output enable/disable */
cristy3ed852e2009-09-05 21:47:34 +0000438
cristy3ed852e2009-09-05 21:47:34 +0000439 ChannelType
440 channel;
441
cristy3ed852e2009-09-05 21:47:34 +0000442 void
anthony5f78bca2012-10-05 06:51:00 +0000443 *options; /* splay tree of global options */
cristy3ed852e2009-09-05 21:47:34 +0000444
cristy4c08aed2011-07-01 19:47:50 +0000445 void
446 *profile;
447
448 MagickBooleanType
449 synchronize;
450
cristy3ed852e2009-09-05 21:47:34 +0000451 MagickProgressMonitor
452 progress_monitor;
453
454 void
455 *client_data,
456 *cache;
457
458 StreamHandler
459 stream;
460
461 FILE
462 *file;
463
464 void
465 *blob;
466
467 size_t
468 length;
469
470 char
cristy151b66d2015-04-15 10:50:31 +0000471 magick[MagickPathExtent], /* image file format (file magick) */
472 unique[MagickPathExtent], /* unique tempory filename - delegates */
cristy151b66d2015-04-15 10:50:31 +0000473 filename[MagickPathExtent]; /* filename when reading/writing image */
cristy3ed852e2009-09-05 21:47:34 +0000474
475 MagickBooleanType
476 debug;
477
cristybb503372010-05-27 20:51:26 +0000478 size_t
cristy3ed852e2009-09-05 21:47:34 +0000479 signature;
cristy3ed852e2009-09-05 21:47:34 +0000480};
481
cristycf1296e2012-08-26 23:40:49 +0000482extern MagickExport ChannelType
483 SetImageChannelMask(Image *,const ChannelType);
484
cristy8ea81222011-09-04 10:33:32 +0000485extern MagickExport const char
cristy8ea81222011-09-04 10:33:32 +0000486 DefaultTileGeometry[],
487 DefaultTileLabel[],
488 LoadImageTag[],
489 LoadImagesTag[],
490 PSDensityGeometry[],
491 PSPageGeometry[],
492 SaveImageTag[],
493 SaveImagesTag[];
494
495extern MagickExport const double
496 DefaultResolution;
497
cristy3ed852e2009-09-05 21:47:34 +0000498extern MagickExport ExceptionType
499 CatchImageException(Image *);
500
cristy15781e52009-12-05 23:05:27 +0000501extern MagickExport FILE
502 *GetImageInfoFile(const ImageInfo *);
503
cristy3ed852e2009-09-05 21:47:34 +0000504extern MagickExport Image
cristy9950d572011-10-01 18:22:35 +0000505 *AcquireImage(const ImageInfo *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000506 *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
cristy5ed838e2010-05-31 00:05:35 +0000507 *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
508 ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000509 *DestroyImage(Image *),
dirkaf131f12016-01-10 01:29:22 +0100510 *GetImageMask(const Image *,const PixelMask,ExceptionInfo *),
cristy0740a982011-10-13 15:01:01 +0000511 *NewMagickImage(const ImageInfo *,const size_t,const size_t,const PixelInfo *,
512 ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000513 *ReferenceImage(Image *),
cristy4285d782011-02-09 20:12:28 +0000514 *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
515 ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000516
517extern MagickExport ImageInfo
518 *AcquireImageInfo(void),
519 *CloneImageInfo(const ImageInfo *),
520 *DestroyImageInfo(ImageInfo *);
521
cristy3ed852e2009-09-05 21:47:34 +0000522extern MagickExport MagickBooleanType
cristy018f07f2011-09-04 21:15:19 +0000523 ClipImage(Image *,ExceptionInfo *),
524 ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
cristy957f2612015-06-21 23:51:58 +0000525 CopyImagePixels(Image *,const Image *,const RectangleInfo *,
cristy17fbd722015-06-22 00:46:58 +0000526 const OffsetInfo *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000527 IsTaintImage(const Image *),
cristy3ed852e2009-09-05 21:47:34 +0000528 IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
529 IsImageObject(const Image *),
530 ListMagickInfo(FILE *,ExceptionInfo *),
531 ModifyImage(Image **,ExceptionInfo *),
532 ResetImagePage(Image *,const char *),
cristye941a752011-10-15 01:52:48 +0000533 SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000534 SetImageBackgroundColor(Image *,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000535 SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
cristy63240882011-08-05 19:05:27 +0000536 SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
cristyd965a422010-03-03 17:47:35 +0000537 SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
cristyacd0d4c2015-07-25 16:12:33 +0000538 SetImageMask(Image *,const PixelMask type,const Image *,ExceptionInfo *),
Cristy03811ea2016-07-27 20:32:47 -0400539 SetImageRegionMask(Image *,const PixelMask type,const RectangleInfo *,
540 ExceptionInfo *),
cristy574cc262011-08-05 01:23:58 +0000541 SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000542 StripImage(Image *,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000543 SyncImage(Image *,ExceptionInfo *),
cristy6fccee12011-10-20 18:43:18 +0000544 SyncImageSettings(const ImageInfo *,Image *,ExceptionInfo *),
545 SyncImagesSettings(ImageInfo *,Image *,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000546
547extern MagickExport size_t
cristy6fccee12011-10-20 18:43:18 +0000548 InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
549 ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000550
cristy5ed838e2010-05-31 00:05:35 +0000551extern MagickExport ssize_t
552 GetImageReferenceCount(Image *);
553
cristy3ed852e2009-09-05 21:47:34 +0000554extern MagickExport VirtualPixelMethod
555 GetImageVirtualPixelMethod(const Image *),
cristy387430f2012-02-07 13:09:46 +0000556 SetImageVirtualPixelMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000557
558extern MagickExport void
cristy9950d572011-10-01 18:22:35 +0000559 AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000560 DestroyImagePixels(Image *),
561 DisassociateImageStream(Image *),
cristy3ed852e2009-09-05 21:47:34 +0000562 GetImageInfo(ImageInfo *),
563 SetImageInfoBlob(ImageInfo *,const void *,const size_t),
564 SetImageInfoFile(ImageInfo *,FILE *);
565
566#if defined(__cplusplus) || defined(c_plusplus)
567}
568#endif
569
570#endif