blob: 1ade6ebb13a63b242fc41466cfaebfcd19c8af86 [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
21#if defined(__cplusplus) || defined(c_plusplus)
22extern "C" {
23#endif
24
cristy288a3532012-08-28 00:19:44 +000025#define OpaqueAlpha ((Quantum) QuantumRange)
26#define TransparentAlpha ((Quantum) 0)
cristy3ed852e2009-09-05 21:47:34 +000027
28typedef enum
29{
30 UndefinedAlphaChannel,
31 ActivateAlphaChannel,
cristy7894d4a2014-09-29 12:43:59 +000032 AssociateAlphaChannel,
cristy3ed852e2009-09-05 21:47:34 +000033 BackgroundAlphaChannel,
34 CopyAlphaChannel,
35 DeactivateAlphaChannel,
cristydd00eb32014-10-01 13:11:19 +000036 DiscreteAlphaChannel,
cristy7894d4a2014-09-29 12:43:59 +000037 DisassociateAlphaChannel,
cristy3ed852e2009-09-05 21:47:34 +000038 ExtractAlphaChannel,
cristy17f11b02014-12-20 19:37:04 +000039 OffAlphaChannel,
40 OnAlphaChannel,
cristy3ed852e2009-09-05 21:47:34 +000041 OpaqueAlphaChannel,
cristy61808382012-01-30 01:24:49 +000042 RemoveAlphaChannel,
cristy3ed852e2009-09-05 21:47:34 +000043 SetAlphaChannel,
44 ShapeAlphaChannel,
cristy61808382012-01-30 01:24:49 +000045 TransparentAlphaChannel
cristyb15b06c2012-08-28 11:36:48 +000046} AlphaChannelOption;
cristy3ed852e2009-09-05 21:47:34 +000047
48typedef enum
49{
cristy5f1c1ff2010-12-23 21:38:06 +000050 UndefinedType,
cristy3ed852e2009-09-05 21:47:34 +000051 BilevelType,
52 GrayscaleType,
cristydef23e52015-01-22 11:52:01 +000053 GrayscaleAlphaType,
cristy3ed852e2009-09-05 21:47:34 +000054 PaletteType,
cristydef23e52015-01-22 11:52:01 +000055 PaletteAlphaType,
cristy3ed852e2009-09-05 21:47:34 +000056 TrueColorType,
cristydef23e52015-01-22 11:52:01 +000057 TrueColorAlphaType,
cristy3ed852e2009-09-05 21:47:34 +000058 ColorSeparationType,
cristydef23e52015-01-22 11:52:01 +000059 ColorSeparationAlphaType,
cristy3ed852e2009-09-05 21:47:34 +000060 OptimizeType,
cristydef23e52015-01-22 11:52:01 +000061 PaletteBilevelAlphaType
cristy3ed852e2009-09-05 21:47:34 +000062} ImageType;
63
64typedef enum
65{
66 UndefinedInterlace,
67 NoInterlace,
68 LineInterlace,
69 PlaneInterlace,
70 PartitionInterlace,
71 GIFInterlace,
72 JPEGInterlace,
73 PNGInterlace
74} InterlaceType;
75
76typedef enum
77{
78 UndefinedOrientation,
79 TopLeftOrientation,
80 TopRightOrientation,
81 BottomRightOrientation,
82 BottomLeftOrientation,
83 LeftTopOrientation,
84 RightTopOrientation,
85 RightBottomOrientation,
86 LeftBottomOrientation
87} OrientationType;
88
89typedef enum
90{
91 UndefinedResolution,
92 PixelsPerInchResolution,
93 PixelsPerCentimeterResolution
94} ResolutionType;
95
96typedef struct _PrimaryInfo
97{
98 double
99 x,
100 y,
101 z;
102} PrimaryInfo;
103
104typedef struct _SegmentInfo
105{
106 double
107 x1,
108 y1,
109 x2,
110 y2;
111} SegmentInfo;
112
113typedef enum
114{
115 UndefinedTransmitType,
116 FileTransmitType,
117 BlobTransmitType,
118 StreamTransmitType,
119 ImageTransmitType
120} TransmitType;
121
122typedef struct _ChromaticityInfo
123{
124 PrimaryInfo
125 red_primary,
126 green_primary,
127 blue_primary,
128 white_point;
129} ChromaticityInfo;
130
cristy4c08aed2011-07-01 19:47:50 +0000131#include "MagickCore/blob.h"
132#include "MagickCore/colorspace.h"
133#include "MagickCore/cache-view.h"
134#include "MagickCore/color.h"
135#include "MagickCore/composite.h"
136#include "MagickCore/compress.h"
137#include "MagickCore/effect.h"
138#include "MagickCore/geometry.h"
139#include "MagickCore/layer.h"
140#include "MagickCore/locale_.h"
141#include "MagickCore/monitor.h"
142#include "MagickCore/pixel.h"
143#include "MagickCore/profile.h"
144#include "MagickCore/quantum.h"
145#include "MagickCore/resample.h"
146#include "MagickCore/resize.h"
147#include "MagickCore/semaphore.h"
148#include "MagickCore/stream.h"
149#include "MagickCore/timer.h"
cristy3ed852e2009-09-05 21:47:34 +0000150
151struct _Image
152{
153 ClassType
154 storage_class;
155
156 ColorspaceType
anthonyfd706f92012-01-19 04:22:02 +0000157 colorspace; /* colorspace of image data */
cristy3ed852e2009-09-05 21:47:34 +0000158
159 CompressionType
anthonyfd706f92012-01-19 04:22:02 +0000160 compression; /* compression of image when read/write */
cristy3ed852e2009-09-05 21:47:34 +0000161
cristybb503372010-05-27 20:51:26 +0000162 size_t
anthonyfd706f92012-01-19 04:22:02 +0000163 quality; /* compression quality setting, meaning varies */
cristy3ed852e2009-09-05 21:47:34 +0000164
165 OrientationType
anthonyfd706f92012-01-19 04:22:02 +0000166 orientation; /* photo orientation of image */
cristy3ed852e2009-09-05 21:47:34 +0000167
168 MagickBooleanType
cristy8a46d822012-08-28 23:32:39 +0000169 taint; /* has image been modified since reading */
cristy3ed852e2009-09-05 21:47:34 +0000170
cristybb503372010-05-27 20:51:26 +0000171 size_t
anthonyfd706f92012-01-19 04:22:02 +0000172 columns, /* physical size of image */
cristy3ed852e2009-09-05 21:47:34 +0000173 rows,
anthonyfd706f92012-01-19 04:22:02 +0000174 depth, /* depth of image on read/write */
175 colors; /* Size of color table, or actual color count */
176 /* Only valid if image is not DirectClass */
cristy3ed852e2009-09-05 21:47:34 +0000177
cristy101ab702011-10-13 13:06:32 +0000178 PixelInfo
cristy3ed852e2009-09-05 21:47:34 +0000179 *colormap,
Cristy18b27502017-02-16 07:29:19 -0500180 alpha_color, /* deprecated */
anthonyfd706f92012-01-19 04:22:02 +0000181 background_color, /* current background color attribute */
182 border_color, /* current bordercolor attribute */
anthonyfd706f92012-01-19 04:22:02 +0000183 transparent_color; /* color for 'transparent' color index in GIF */
cristy3ed852e2009-09-05 21:47:34 +0000184
185 double
186 gamma;
187
188 ChromaticityInfo
189 chromaticity;
190
191 RenderingIntent
192 rendering_intent;
193
194 void
195 *profiles;
196
197 ResolutionType
anthony1e4df872011-03-19 14:10:59 +0000198 units; /* resolution/density ppi or ppc */
cristy3ed852e2009-09-05 21:47:34 +0000199
200 char
201 *montage,
202 *directory,
203 *geometry;
204
cristybb503372010-05-27 20:51:26 +0000205 ssize_t
anthony30b912a2012-03-22 01:20:28 +0000206 offset; /* ??? */
cristy3ed852e2009-09-05 21:47:34 +0000207
cristy2a11bef2011-10-28 18:33:11 +0000208 PointInfo
209 resolution; /* image resolution/density */
cristy3ed852e2009-09-05 21:47:34 +0000210
211 RectangleInfo
anthony1e4df872011-03-19 14:10:59 +0000212 page, /* virtual canvas size and offset of image */
cristy4c08aed2011-07-01 19:47:50 +0000213 extract_info;
cristy3ed852e2009-09-05 21:47:34 +0000214
215 double
anthonya322a832013-04-27 06:28:03 +0000216 fuzz; /* current color fuzz attribute - move to image_info */
cristy3ed852e2009-09-05 21:47:34 +0000217
dirk8b9f21c2016-02-01 22:30:19 +0100218 FilterType
anthony1e4df872011-03-19 14:10:59 +0000219 filter; /* resize/distort filter to apply */
cristy3ed852e2009-09-05 21:47:34 +0000220
cristy70e9f682013-03-12 22:31:22 +0000221 PixelIntensityMethod
222 intensity; /* method to generate an intensity value from a pixel */
223
cristy3ed852e2009-09-05 21:47:34 +0000224 InterlaceType
225 interlace;
226
227 EndianType
anthony1e4df872011-03-19 14:10:59 +0000228 endian; /* raw data integer ordering on read/write */
cristy3ed852e2009-09-05 21:47:34 +0000229
230 GravityType
anthony1e4df872011-03-19 14:10:59 +0000231 gravity; /* Gravity attribute for positioning in image */
cristy3ed852e2009-09-05 21:47:34 +0000232
233 CompositeOperator
anthony1e4df872011-03-19 14:10:59 +0000234 compose; /* alpha composition method for layered images */
cristy3ed852e2009-09-05 21:47:34 +0000235
236 DisposeType
anthony1e4df872011-03-19 14:10:59 +0000237 dispose; /* GIF animation disposal method */
cristy3ed852e2009-09-05 21:47:34 +0000238
cristybb503372010-05-27 20:51:26 +0000239 size_t
anthony1e4df872011-03-19 14:10:59 +0000240 scene, /* index of image in multi-image file */
cristy90895472014-01-27 20:12:07 +0000241 delay, /* Animation delay time */
242 duration; /* Total animation duration sum(delay*iterations) */
cristy3ed852e2009-09-05 21:47:34 +0000243
cristybb503372010-05-27 20:51:26 +0000244 ssize_t
anthony1e4df872011-03-19 14:10:59 +0000245 ticks_per_second; /* units for delay time, default 100 for GIF */
cristy3ed852e2009-09-05 21:47:34 +0000246
cristybb503372010-05-27 20:51:26 +0000247 size_t
anthony5f78bca2012-10-05 06:51:00 +0000248 iterations, /* number of interations for GIF animations */
cristy3ed852e2009-09-05 21:47:34 +0000249 total_colors;
250
cristybb503372010-05-27 20:51:26 +0000251 ssize_t
anthony30b912a2012-03-22 01:20:28 +0000252 start_loop; /* ??? */
cristy3ed852e2009-09-05 21:47:34 +0000253
cristy5c4e2582011-09-11 19:21:03 +0000254 PixelInterpolateMethod
anthony1e4df872011-03-19 14:10:59 +0000255 interpolate; /* Interpolation of color for between pixel lookups */
cristy3ed852e2009-09-05 21:47:34 +0000256
257 MagickBooleanType
258 black_point_compensation;
259
cristy3ed852e2009-09-05 21:47:34 +0000260 RectangleInfo
261 tile_offset;
262
cristy3ed852e2009-09-05 21:47:34 +0000263 ImageType
264 type;
265
266 MagickBooleanType
anthonyad98c292011-09-29 10:43:26 +0000267 dither; /* dithering on/off */
cristy81b8ce52010-02-05 01:53:17 +0000268
269 MagickSizeType
anthony8ea79832011-10-05 10:08:39 +0000270 extent; /* Size of image read from disk */
cristy73724512010-04-12 14:43:14 +0000271
272 MagickBooleanType
anthony30b912a2012-03-22 01:20:28 +0000273 ping; /* no image data read, just attributes */
cristy0d267172011-04-25 20:13:48 +0000274
cristy10a6c612012-01-29 21:41:05 +0000275 MagickBooleanType
cristy883fde12013-04-08 00:50:13 +0000276 read_mask,
277 write_mask;
cristy10a6c612012-01-29 21:41:05 +0000278
cristy24855942012-08-28 11:25:09 +0000279 PixelTrait
cristy8a46d822012-08-28 23:32:39 +0000280 alpha_trait; /* is transparency channel defined and active */
cristy288a3532012-08-28 00:19:44 +0000281
cristy0d267172011-04-25 20:13:48 +0000282 size_t
cristyed231572011-07-14 02:18:59 +0000283 number_channels,
cristyb3a73b52011-07-26 01:34:43 +0000284 number_meta_channels,
cristy4c08aed2011-07-01 19:47:50 +0000285 metacontent_extent;
286
cristybd5a96c2011-08-21 00:04:26 +0000287 ChannelType
anthonyad98c292011-09-29 10:43:26 +0000288 channel_mask;
cristy490408a2011-07-07 14:42:05 +0000289
cristyed231572011-07-14 02:18:59 +0000290 PixelChannelMap
cristybd5a96c2011-08-21 00:04:26 +0000291 *channel_map;
cristy4c08aed2011-07-01 19:47:50 +0000292
293 void
294 *cache;
295
296 ErrorInfo
297 error;
298
299 TimerInfo
300 timer;
301
302 MagickProgressMonitor
303 progress_monitor;
304
305 void
306 *client_data;
307
308 Ascii85Info
309 *ascii85;
310
311 ProfileInfo
cristy4c08aed2011-07-01 19:47:50 +0000312 *generic_profile;
313
cristybd686c62013-02-03 19:01:05 +0000314 void
315 *properties, /* general settings, to save with image */
316 *artifacts; /* general operational/coder settings, not saved */
317
cristy4c08aed2011-07-01 19:47:50 +0000318 char
cristy151b66d2015-04-15 10:50:31 +0000319 filename[MagickPathExtent], /* images input filename */
320 magick_filename[MagickPathExtent], /* given image filename (with read mods) */
321 magick[MagickPathExtent]; /* images file format (file magic) */
cristy4c08aed2011-07-01 19:47:50 +0000322
323 size_t
anthony30b912a2012-03-22 01:20:28 +0000324 magick_columns, /* size of image when read/created */
cristy4c08aed2011-07-01 19:47:50 +0000325 magick_rows;
326
327 BlobInfo
anthony8ea79832011-10-05 10:08:39 +0000328 *blob; /* image file as in-memory string of 'extent' */
cristy4c08aed2011-07-01 19:47:50 +0000329
cristybd686c62013-02-03 19:01:05 +0000330 time_t
331 timestamp;
332
cristy4c08aed2011-07-01 19:47:50 +0000333 MagickBooleanType
anthony8ea79832011-10-05 10:08:39 +0000334 debug; /* debug output attribute */
cristy4c08aed2011-07-01 19:47:50 +0000335
336 volatile ssize_t
anthony8ea79832011-10-05 10:08:39 +0000337 reference_count; /* image data sharing memory management */
cristy4c08aed2011-07-01 19:47:50 +0000338
339 SemaphoreInfo
340 *semaphore;
341
Cristy36421ee2015-08-28 11:58:20 -0400342 struct _ImageInfo
anthony5f78bca2012-10-05 06:51:00 +0000343 *image_info; /* (Optional) Image belongs to this ImageInfo 'list'
344 * For access to 'global options' when no per-image
345 * attribute, properity, or artifact has been set.
anthony5f78bca2012-10-05 06:51:00 +0000346 */
anthony007bad32012-07-28 10:52:03 +0000347
cristy4c08aed2011-07-01 19:47:50 +0000348 struct _Image
anthony007bad32012-07-28 10:52:03 +0000349 *list, /* Undo/Redo image processing list (for display) */
350 *previous, /* Image list links */
cristy4c08aed2011-07-01 19:47:50 +0000351 *next;
352
353 size_t
354 signature;
Cristy18b27502017-02-16 07:29:19 -0500355
356 PixelInfo
357 matte_color; /* current mattecolor attribute */
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
Cristy18b27502017-02-16 07:29:19 -0500415 alpha_color, /* deprecated */
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;
Dirk Lemstra65cffae2017-01-27 23:01:24 +0100480
Dirk Lemstrad1ab4802017-02-02 22:57:15 +0100481 CustomStreamInfo
Cristy93452f02017-02-01 09:23:15 -0500482 *custom_stream;
Cristy18b27502017-02-16 07:29:19 -0500483
484 PixelInfo
485 matte_color; /* matte (frame) color */
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 *),
dirkaf131f12016-01-10 01:29:22 +0100516 *GetImageMask(const Image *,const PixelMask,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 *),
cristy957f2612015-06-21 23:51:58 +0000531 CopyImagePixels(Image *,const Image *,const RectangleInfo *,
cristy17fbd722015-06-22 00:46:58 +0000532 const OffsetInfo *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000533 IsTaintImage(const Image *),
cristy3ed852e2009-09-05 21:47:34 +0000534 IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
535 IsImageObject(const Image *),
536 ListMagickInfo(FILE *,ExceptionInfo *),
537 ModifyImage(Image **,ExceptionInfo *),
538 ResetImagePage(Image *,const char *),
cristye941a752011-10-15 01:52:48 +0000539 SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000540 SetImageBackgroundColor(Image *,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000541 SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
cristy63240882011-08-05 19:05:27 +0000542 SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
cristyd965a422010-03-03 17:47:35 +0000543 SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
cristyacd0d4c2015-07-25 16:12:33 +0000544 SetImageMask(Image *,const PixelMask type,const Image *,ExceptionInfo *),
Cristy03811ea2016-07-27 20:32:47 -0400545 SetImageRegionMask(Image *,const PixelMask type,const RectangleInfo *,
546 ExceptionInfo *),
cristy574cc262011-08-05 01:23:58 +0000547 SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
cristye941a752011-10-15 01:52:48 +0000548 StripImage(Image *,ExceptionInfo *),
cristyea1a8aa2011-10-20 13:24:06 +0000549 SyncImage(Image *,ExceptionInfo *),
cristy6fccee12011-10-20 18:43:18 +0000550 SyncImageSettings(const ImageInfo *,Image *,ExceptionInfo *),
551 SyncImagesSettings(ImageInfo *,Image *,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000552
553extern MagickExport size_t
cristy6fccee12011-10-20 18:43:18 +0000554 InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
555 ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000556
cristy5ed838e2010-05-31 00:05:35 +0000557extern MagickExport ssize_t
558 GetImageReferenceCount(Image *);
559
cristy3ed852e2009-09-05 21:47:34 +0000560extern MagickExport VirtualPixelMethod
561 GetImageVirtualPixelMethod(const Image *),
cristy387430f2012-02-07 13:09:46 +0000562 SetImageVirtualPixelMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000563
564extern MagickExport void
cristy9950d572011-10-01 18:22:35 +0000565 AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000566 DestroyImagePixels(Image *),
567 DisassociateImageStream(Image *),
cristy3ed852e2009-09-05 21:47:34 +0000568 GetImageInfo(ImageInfo *),
569 SetImageInfoBlob(ImageInfo *,const void *,const size_t),
Cristy93452f02017-02-01 09:23:15 -0500570 SetImageInfoFile(ImageInfo *,FILE *),
Cristy797ac1c2017-02-01 12:04:28 -0500571 SetImageInfoCustomStream(ImageInfo *,CustomStreamInfo *);
cristy3ed852e2009-09-05 21:47:34 +0000572
573#if defined(__cplusplus) || defined(c_plusplus)
574}
575#endif
576
577#endif