2 Copyright 1999-2013 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>
26 #include <MagickCore/pixel.h>
28 #define OpaqueAlpha ((Quantum) QuantumRange)
29 #define TransparentAlpha ((Quantum) 0)
33 UndefinedAlphaChannel,
35 BackgroundAlphaChannel,
37 DeactivateAlphaChannel,
43 TransparentAlphaChannel
57 ColorSeparationMatteType,
59 PaletteBilevelMatteType
79 BottomRightOrientation,
80 BottomLeftOrientation,
83 RightBottomOrientation,
90 PixelsPerInchResolution,
91 PixelsPerCentimeterResolution
94 typedef struct _PrimaryInfo
102 typedef struct _SegmentInfo
113 UndefinedTransmitType,
120 typedef struct _ChromaticityInfo
129 #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"
155 colorspace; /* colorspace of image data */
158 compression; /* compression of image when read/write */
161 quality; /* compression quality setting, meaning varies */
164 orientation; /* photo orientation of image */
167 taint; /* has image been modified since reading */
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, /* number of interations for GIF animations */
246 start_loop; /* ??? */
248 PixelInterpolateMethod
249 interpolate; /* Interpolation of color for between pixel lookups */
252 black_point_compensation;
261 dither; /* dithering on/off */
264 extent; /* Size of image read from disk */
267 ping; /* no image data read, just attributes */
273 alpha_trait; /* is transparency channel defined and active */
277 number_meta_channels,
295 MagickProgressMonitor
308 filename[MaxTextExtent], /* images input filename */
309 magick_filename[MaxTextExtent], /* given image filename (with read mods) */
310 magick[MaxTextExtent]; /* images file format (file magic) */
313 magick_columns, /* size of image when read/created */
317 *blob; /* image file as in-memory string of 'extent' */
320 debug; /* debug output attribute */
323 reference_count; /* image data sharing memory management */
329 *properties, /* general settings, to save with iamge */
330 *artifacts; /* general operational/coder settings, not saved */
332 const struct _ImageInfo
333 *image_info; /* (Optional) Image belongs to this ImageInfo 'list'
334 * For access to 'global options' when no per-image
335 * attribute, properity, or artifact has been set.
336 * It may be set or unset as needed, but never freed.
340 *list, /* Undo/Redo image processing list (for display) */
341 *previous, /* Image list links */
348 /* ImageInfo structure
349 * Stores an image list, as well as all global settings used by
350 * all images held, -- unless overridden for that specific image.
351 * See SyncImagesettings() which maps any global setting that always
352 * overrides specific image settings.
357 compression; /* compression method when reading/saving image */
360 orientation; /* orientation setting */
363 temporary, /* image file to be deleted after read "empemeral:" */
364 adjoin, /* save images to seperate scene files */
369 *size, /* image generation size */
370 *extract, /* crop/resize string on image read */
372 *scenes; /* scene numbers that is to be read in */
375 scene, /* starting value for image save numbering */
376 number_scenes, /* total number of images in list - for escapes */
377 depth; /* current read/save depth of images */
380 interlace; /* interlace for image write */
383 endian; /* integer endian order for raw image data */
386 units; /* denisty pixels/inch or pixel/cm */
389 quality; /* compression quality */
392 *sampling_factor, /* JPEG write sampling factor */
393 *server_name, /* X windows server name - display/animate */
394 *font, /* DUP for draw_info */
395 *texture, /* montage/display background tile */
396 *density; /* DUP for image and draw_info */
400 fuzz; /* current color fuzz attribute */
403 background_color, /* user set background color */
404 border_color, /* user set border color */
405 matte_color, /* matte (frame) color */
406 transparent_color; /* color for transparent index in color tables */
407 /* NB: fill color is only needed in draw_info! */
408 /* the same for undercolor (for font drawing) */
411 dither, /* dither enable-disable */
412 monochrome; /* read/write pcl,pdf,ps,xps as monocrome image */
430 ping, /* fast read image attributes, not image data */
431 verbose; /* verbose output enable/disable */
440 *options; /* splay tree of global options */
448 MagickProgressMonitor
468 magick[MaxTextExtent], /* image file format (file magick) */
469 unique[MaxTextExtent], /* unique tempory filename - delegates */
470 zero[MaxTextExtent], /* unique filename ? - delegates */
471 filename[MaxTextExtent]; /* filename when reading/writing image */
480 extern MagickExport ChannelType
481 SetImageChannelMask(Image *,const ChannelType);
483 extern MagickExport const char
484 DefaultTileGeometry[],
493 extern MagickExport const double
496 extern MagickExport ExceptionType
497 CatchImageException(Image *);
499 extern MagickExport FILE
500 *GetImageInfoFile(const ImageInfo *);
502 extern MagickExport Image
503 *AcquireImage(const ImageInfo *,ExceptionInfo *),
504 *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
505 *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
507 *DestroyImage(Image *),
508 *GetImageClipMask(const Image *,ExceptionInfo *),
509 *GetImageMask(const Image *,ExceptionInfo *),
510 *NewMagickImage(const ImageInfo *,const size_t,const size_t,const PixelInfo *,
512 *ReferenceImage(Image *),
513 *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
516 extern MagickExport ImageInfo
517 *AcquireImageInfo(void),
518 *CloneImageInfo(const ImageInfo *),
519 *DestroyImageInfo(ImageInfo *);
521 extern MagickExport MagickBooleanType
522 ClipImage(Image *,ExceptionInfo *),
523 ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
524 GetImageAlphaChannel(const Image *),
525 IsTaintImage(const Image *),
526 IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
527 IsImageObject(const Image *),
528 ListMagickInfo(FILE *,ExceptionInfo *),
529 ModifyImage(Image **,ExceptionInfo *),
530 ResetImagePage(Image *,const char *),
531 SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
532 SetImageAlphaChannel(Image *,const AlphaChannelOption,ExceptionInfo *),
533 SetImageBackgroundColor(Image *,ExceptionInfo *),
534 SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
535 SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
536 SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
537 SetImageMask(Image *,const Image *,ExceptionInfo *),
538 SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
539 StripImage(Image *,ExceptionInfo *),
540 SyncImage(Image *,ExceptionInfo *),
541 SyncImageSettings(const ImageInfo *,Image *,ExceptionInfo *),
542 SyncImagesSettings(ImageInfo *,Image *,ExceptionInfo *);
544 extern MagickExport size_t
545 InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
548 extern MagickExport ssize_t
549 GetImageReferenceCount(Image *);
551 extern MagickExport VirtualPixelMethod
552 GetImageVirtualPixelMethod(const Image *),
553 SetImageVirtualPixelMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
555 extern MagickExport void
556 AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *),
557 DestroyImagePixels(Image *),
558 DisassociateImageStream(Image *),
559 GetImageInfo(ImageInfo *),
560 SetImageInfoBlob(ImageInfo *,const void *,const size_t),
561 SetImageInfoFile(ImageInfo *,FILE *);
563 #if defined(__cplusplus) || defined(c_plusplus)