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>
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, /* ??? */
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 */
277 alpha_trait; /* is transparency channel defined and active */
281 number_meta_channels,
299 MagickProgressMonitor
312 filename[MaxTextExtent], /* images input filename */
313 magick_filename[MaxTextExtent], /* given image filename (with read mods) */
314 magick[MaxTextExtent]; /* images file format (file magic) */
317 magick_columns, /* size of image when read/created */
321 *blob; /* image file as in-memory string of 'extent' */
324 debug; /* debug output attribute */
327 reference_count; /* image data sharing memory management */
334 *list, /* Undo/Redo image processing list (for display) */
335 *previous, /* Image list links */
345 compression; /* compression method when reading/saving image */
348 orientation; /* orientation setting */
351 temporary, /* image file to be deleted after read "empemeral:" */
352 adjoin, /* save images to seperate scene files */
357 *size, /* image generation size */
358 *extract, /* crop/resize string on image read */
360 *scenes; /* scene numbers that is to be read in */
363 scene, /* starting value for image save numbering */
364 number_scenes, /* total number of images in list - for escapes */
365 depth; /* current read/save depth of images */
368 interlace; /* interlace for image write */
371 endian; /* integer endian order for raw image data */
374 units; /* denisty pixels/inch or pixel/cm */
377 quality; /* compression quality */
380 *sampling_factor, /* JPEG write sampling factor */
381 *server_name, /* X windows server name - display/animate */
382 *font, /* DUP for draw_info */
383 *texture, /* montage/display background tile */
384 *density; /* DUP for image and draw_info */
388 fuzz; /* current color fuzz attribute */
391 background_color, /* user set background color */
392 border_color, /* user set border color */
393 matte_color, /* matte (frame) color */
394 transparent_color; /* color for transparent index in color tables */
395 /* NB: fill color is only needed in draw_info! */
396 /* the same for undercolor (for font drawing) */
399 dither, /* dither enable-disable */
400 monochrome; /* read/write pcl,pdf,ps,xps as monocrome image */
418 ping, /* fast read image attributes, not image data */
419 verbose; /* verbose output enable/disable */
428 *options; /* splay tree of use options */
436 MagickProgressMonitor
456 magick[MaxTextExtent], /* image file format (file magick) */
457 unique[MaxTextExtent], /* unique tempory filename - delegates */
458 zero[MaxTextExtent], /* unique filename ? - delegates */
459 filename[MaxTextExtent]; /* filename when reading/writing image */
468 extern MagickExport ChannelType
469 SetImageChannelMask(Image *,const ChannelType);
471 extern MagickExport const char
472 DefaultTileGeometry[],
481 extern MagickExport const double
484 extern MagickExport ExceptionType
485 CatchImageException(Image *);
487 extern MagickExport FILE
488 *GetImageInfoFile(const ImageInfo *);
490 extern MagickExport Image
491 *AcquireImage(const ImageInfo *,ExceptionInfo *),
492 *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
493 *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
495 *DestroyImage(Image *),
496 *GetImageClipMask(const Image *,ExceptionInfo *),
497 *GetImageMask(const Image *,ExceptionInfo *),
498 *NewMagickImage(const ImageInfo *,const size_t,const size_t,const PixelInfo *,
500 *ReferenceImage(Image *),
501 *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
504 extern MagickExport ImageInfo
505 *AcquireImageInfo(void),
506 *CloneImageInfo(const ImageInfo *),
507 *DestroyImageInfo(ImageInfo *);
509 extern MagickExport MagickBooleanType
510 ClipImage(Image *,ExceptionInfo *),
511 ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
512 GetImageAlphaChannel(const Image *),
513 IsTaintImage(const Image *),
514 IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
515 IsImageObject(const Image *),
516 ListMagickInfo(FILE *,ExceptionInfo *),
517 ModifyImage(Image **,ExceptionInfo *),
518 ResetImagePage(Image *,const char *),
519 SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
520 SetImageAlphaChannel(Image *,const AlphaChannelOption,ExceptionInfo *),
521 SetImageBackgroundColor(Image *,ExceptionInfo *),
522 SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
523 SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
524 SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
525 SetImageMask(Image *,const Image *,ExceptionInfo *),
526 SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
527 StripImage(Image *,ExceptionInfo *),
528 SyncImage(Image *,ExceptionInfo *),
529 SyncImageSettings(const ImageInfo *,Image *,ExceptionInfo *),
530 SyncImagesSettings(ImageInfo *,Image *,ExceptionInfo *);
532 extern MagickExport size_t
533 InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
536 extern MagickExport ssize_t
537 GetImageReferenceCount(Image *);
539 extern MagickExport VirtualPixelMethod
540 GetImageVirtualPixelMethod(const Image *),
541 SetImageVirtualPixelMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
543 extern MagickExport void
544 AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *),
545 DestroyImagePixels(Image *),
546 DisassociateImageStream(Image *),
547 GetImageInfo(ImageInfo *),
548 SetImageInfoBlob(ImageInfo *,const void *,const size_t),
549 SetImageInfoFile(ImageInfo *,FILE *);
551 #if defined(__cplusplus) || defined(c_plusplus)