2 Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization
3 dedicated to making software imaging solutions freely available.
5 You may not use this file except in compliance with the License.
6 obtain a copy of the License at
8 http://www.imagemagick.org/script/license.php
10 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.
16 MagickCore image methods.
18 #ifndef _MAGICKCORE_IMAGE_H
19 #define _MAGICKCORE_IMAGE_H
21 #if defined(__cplusplus) || defined(c_plusplus)
25 #include <MagickCore/color.h>
27 #define OpaqueAlpha ((Quantum) QuantumRange)
28 #define TransparentAlpha ((Quantum) 0UL)
32 UndefinedAlphaChannel,
34 BackgroundAlphaChannel,
36 DeactivateAlphaChannel,
42 TransparentAlphaChannel
56 ColorSeparationMatteType,
58 PaletteBilevelMatteType
78 BottomRightOrientation,
79 BottomLeftOrientation,
82 RightBottomOrientation,
89 PixelsPerInchResolution,
90 PixelsPerCentimeterResolution
93 typedef struct _PrimaryInfo
101 typedef struct _SegmentInfo
112 UndefinedTransmitType,
119 typedef struct _ChromaticityInfo
128 #include "MagickCore/blob.h"
129 #include "MagickCore/colorspace.h"
130 #include "MagickCore/cache-view.h"
131 #include "MagickCore/color.h"
132 #include "MagickCore/composite.h"
133 #include "MagickCore/compress.h"
134 #include "MagickCore/effect.h"
135 #include "MagickCore/geometry.h"
136 #include "MagickCore/layer.h"
137 #include "MagickCore/locale_.h"
138 #include "MagickCore/monitor.h"
139 #include "MagickCore/pixel.h"
140 #include "MagickCore/profile.h"
141 #include "MagickCore/quantum.h"
142 #include "MagickCore/resample.h"
143 #include "MagickCore/resize.h"
144 #include "MagickCore/semaphore.h"
145 #include "MagickCore/stream.h"
146 #include "MagickCore/timer.h"
154 colorspace; /* colorspace of image data */
157 compression; /* compression of image when read/write */
160 quality; /* compression quality setting, meaning varies */
163 orientation; /* photo orientation of image */
166 taint, /* has image been modified since reading */
167 matte; /* is transparency channel defined and active */
170 columns, /* physical size of image */
172 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 */
178 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 */
196 units; /* resolution/density ppi or ppc */
207 resolution; /* image resolution/density */
210 page, /* virtual canvas size and offset of image */
214 fuzz; /* current color fuzz attribute - make image_info */
217 filter; /* resize/distort filter to apply */
223 endian; /* raw data integer ordering on read/write */
226 gravity; /* Gravity attribute for positioning in image */
229 compose; /* alpha composition method for layered images */
232 dispose; /* GIF animation disposal method */
235 scene, /* index of image in multi-image file */
236 delay; /* Animation delay time */
239 ticks_per_second; /* units for delay time, default 100 for GIF */
242 iterations, /* ??? */
246 start_loop; /* ??? */
248 PixelInterpolateMethod
249 interpolate; /* Interpolation of color for between pixel lookups */
252 black_point_compensation;
258 *properties, /* per image properities */
259 *artifacts; /* per image sequence image artifacts */
265 dither; /* dithering on/off */
268 extent; /* Size of image read from disk */
271 ping; /* no image data read, just attributes */
278 number_meta_channels,
296 MagickProgressMonitor
309 filename[MaxTextExtent], /* images input filename */
310 magick_filename[MaxTextExtent], /* given image filename (with read mods) */
311 magick[MaxTextExtent]; /* images file format (file magic) */
314 magick_columns, /* size of image when read/created */
318 *blob; /* image file as in-memory string of 'extent' */
321 debug; /* debug output attribute */
324 reference_count; /* image data sharing memory management */
330 *previous, /* Image sequence list links */
341 compression; /* compression method when reading/saving image */
344 orientation; /* orientation setting */
347 temporary, /* image file to be deleted after read "empemeral:" */
348 adjoin, /* save images to seperate scene files */
353 *size, /* image generation size */
354 *extract, /* crop/resize string on image read */
356 *scenes; /* scene numbers that is to be read in */
359 scene, /* starting value for image save numbering */
360 number_scenes, /* total number of images in list - for escapes */
361 depth; /* current read/save depth of images */
364 interlace; /* interlace for image write */
367 endian; /* integer endian order for raw image data */
370 units; /* denisty pixels/inch or pixel/cm */
373 quality; /* compression quality */
376 *sampling_factor, /* JPEG write sampling factor */
377 *server_name, /* X windows server name - display/animate */
378 *font, /* DUP for draw_info */
379 *texture, /* montage/display background tile */
380 *density; /* DUP for image and draw_info */
384 fuzz; /* current color fuzz attribute */
387 background_color, /* user set background color */
388 border_color, /* user set border color */
389 matte_color, /* matte (frame) color */
390 transparent_color; /* color for transparent index in color tables */
391 /* NB: fill color is only needed in draw_info! */
392 /* the same for undercolor (for font drawing) */
395 dither, /* dither enable-disable */
396 monochrome; /* read/write pcl,pdf,ps,xps as monocrome image */
414 ping, /* fast read image attributes, not image data */
415 verbose; /* verbose output enable/disable */
424 *options; /* splay tree of use options */
432 MagickProgressMonitor
452 magick[MaxTextExtent], /* image file format (file magick) */
453 unique[MaxTextExtent], /* unique tempory filename - delegates */
454 zero[MaxTextExtent], /* unique filename ? - delegates */
455 filename[MaxTextExtent]; /* filename when reading/writing image */
464 extern MagickExport const char
465 DefaultTileGeometry[],
474 extern MagickExport const double
477 extern MagickExport ExceptionType
478 CatchImageException(Image *);
480 extern MagickExport FILE
481 *GetImageInfoFile(const ImageInfo *);
483 extern MagickExport Image
484 *AcquireImage(const ImageInfo *,ExceptionInfo *),
485 *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
486 *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
488 *DestroyImage(Image *),
489 *GetImageClipMask(const Image *,ExceptionInfo *),
490 *GetImageMask(const Image *,ExceptionInfo *),
491 *NewMagickImage(const ImageInfo *,const size_t,const size_t,const PixelInfo *,
493 *ReferenceImage(Image *),
494 *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
497 extern MagickExport ImageInfo
498 *AcquireImageInfo(void),
499 *CloneImageInfo(const ImageInfo *),
500 *DestroyImageInfo(ImageInfo *);
502 extern MagickExport MagickBooleanType
503 ClipImage(Image *,ExceptionInfo *),
504 ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
505 GetImageAlphaChannel(const Image *),
506 IsTaintImage(const Image *),
507 IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
508 IsImageObject(const Image *),
509 ListMagickInfo(FILE *,ExceptionInfo *),
510 ModifyImage(Image **,ExceptionInfo *),
511 ResetImagePage(Image *,const char *),
512 SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
513 SetImageAlphaChannel(Image *,const AlphaChannelType,ExceptionInfo *),
514 SetImageBackgroundColor(Image *,ExceptionInfo *),
515 SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
516 SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
517 SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
518 SetImageMask(Image *,const Image *,ExceptionInfo *),
519 SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
520 SetImageType(Image *,const ImageType,ExceptionInfo *),
521 StripImage(Image *,ExceptionInfo *),
522 SyncImage(Image *,ExceptionInfo *),
523 SyncImageSettings(const ImageInfo *,Image *,ExceptionInfo *),
524 SyncImagesSettings(ImageInfo *,Image *,ExceptionInfo *);
526 extern MagickExport size_t
527 InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
530 extern MagickExport ssize_t
531 GetImageReferenceCount(Image *);
533 extern MagickExport VirtualPixelMethod
534 GetImageVirtualPixelMethod(const Image *),
535 SetImageVirtualPixelMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
537 extern MagickExport void
538 AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *),
539 DestroyImagePixels(Image *),
540 DisassociateImageStream(Image *),
541 GetImageInfo(ImageInfo *),
542 SetImageInfoBlob(ImageInfo *,const void *,const size_t),
543 SetImageInfoFile(ImageInfo *,FILE *);
545 #if defined(__cplusplus) || defined(c_plusplus)