]> granicus.if.org Git - imagemagick/blobdiff - MagickCore/image.h
(no commit message)
[imagemagick] / MagickCore / image.h
index 5f770b174137a3a281164fd417ba28fb41630ea5..87df70bc8d3fea23f8cf8bf4012190ad86fe041d 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization
+  Copyright 1999-2014 ImageMagick Studio LLC, a non-profit organization
   dedicated to making software imaging solutions freely available.
 
   You may not use this file except in compliance with the License.
 #ifndef _MAGICKCORE_IMAGE_H
 #define _MAGICKCORE_IMAGE_H
 
+#include "MagickCore/color.h"
+#include "MagickCore/pixel.h"
+
 #if defined(__cplusplus) || defined(c_plusplus)
 extern "C" {
 #endif
 
-#include <MagickCore/color.h>
-
 #define OpaqueAlpha  ((Quantum) QuantumRange)
-#define TransparentAlpha  ((Quantum) 0UL)
+#define TransparentAlpha  ((Quantum) 0)
 
 typedef enum
 {
@@ -36,10 +37,11 @@ typedef enum
   DeactivateAlphaChannel,
   ExtractAlphaChannel,
   OpaqueAlphaChannel,
+  RemoveAlphaChannel,
   SetAlphaChannel,
   ShapeAlphaChannel,
   TransparentAlphaChannel
-} AlphaChannelType;
+} AlphaChannelOption;
 
 typedef enum
 {
@@ -150,32 +152,33 @@ struct _Image
     storage_class;
 
   ColorspaceType
-    colorspace;      /* colorspace of image data */
+    colorspace;         /* colorspace of image data */
 
   CompressionType
-    compression;     /* compression of image when read/write */
+    compression;        /* compression of image when read/write */
 
   size_t
-    quality;         /* compression quality setting, meaning varies */
+    quality;            /* compression quality setting, meaning varies */
 
   OrientationType
-    orientation;     /* photo orientation of image */
+    orientation;        /* photo orientation of image */
 
   MagickBooleanType
-    taint,           /* has image been modified since reading */
-    matte;           /* is transparency channel defined and active */
+    taint;              /* has image been modified since reading */
 
   size_t
-    columns,         /* physical size of image */
+    columns,            /* physical size of image */
     rows,
-    depth,           /* depth of image on read/write */
-    colors;          /* size of color table on read */
+    depth,              /* depth of image on read/write */
+    colors;             /* Size of color table, or actual color count */
+                        /* Only valid if image is not DirectClass */
 
-  PixelPacket
+  PixelInfo
     *colormap,
-    background_color, /* current background color attribute */
-    border_color,     /* current bordercolor attribute */
-    matte_color;      /* current mattecolor attribute */
+    background_color,   /* current background color attribute */
+    border_color,       /* current bordercolor attribute */
+    matte_color,        /* current mattecolor attribute */
+    transparent_color;  /* color for 'transparent' color index in GIF */
 
   double
     gamma;
@@ -198,24 +201,24 @@ struct _Image
     *geometry;
 
   ssize_t
-    offset;
+    offset;         /* ??? */
 
-  double
-    x_resolution,   /* image resolution/density */
-    y_resolution;
+  PointInfo
+    resolution;     /* image resolution/density */
 
   RectangleInfo
     page,           /* virtual canvas size and offset of image */
     extract_info;
 
   double
-    bias,
-    blur,
-    fuzz;           /* current color fuzz attribute */
+    fuzz;           /* current color fuzz attribute - move to image_info */
 
   FilterTypes
     filter;         /* resize/distort filter to apply */
 
+  PixelIntensityMethod
+    intensity;      /* method to generate an intensity value from a pixel */
+
   InterlaceType
     interlace;
 
@@ -231,66 +234,59 @@ struct _Image
   DisposeType
     dispose;        /* GIF animation disposal method */
 
-  struct _Image
-    *clip_mask;
-
   size_t
     scene,          /* index of image in multi-image file */
-    delay;          /* Animation delay time */
+    delay,          /* Animation delay time */
+    duration;       /* Total animation duration sum(delay*iterations) */
 
   ssize_t
     ticks_per_second;  /* units for delay time, default 100 for GIF */
 
   size_t
-    iterations,
+    iterations,        /* number of interations for GIF animations */
     total_colors;
 
   ssize_t
-    start_loop;
+    start_loop;        /* ??? */
 
-  InterpolatePixelMethod
+  PixelInterpolateMethod
     interpolate;       /* Interpolation of color for between pixel lookups */
 
   MagickBooleanType
     black_point_compensation;
 
-  PixelPacket
-    transparent_color; /* color for 'transparent' color index in GIF */
-
-  struct _Image
-    *mask;
-
   RectangleInfo
     tile_offset;
 
-  void
-    *properties,       /* per image properities */
-    *artifacts;        /* per image sequence image artifacts */
-
   ImageType
     type;
 
   MagickBooleanType
-    dither;            /* dithering method during color reduction */
+    dither;            /* dithering on/off */
 
   MagickSizeType
-    extent;
+    extent;            /* Size of image read from disk */
 
   MagickBooleanType
-    ping;
-
-  size_t
-    pixel_components,
-    metacontent_extent;
+    ping;              /* no image data read, just attributes */
 
   MagickBooleanType
-    sync;
+    read_mask,
+    write_mask;
+
+  PixelTrait
+    alpha_trait;       /* is transparency channel defined and active */
 
   size_t
-    map;  
+    number_channels,
+    number_meta_channels,
+    metacontent_extent;
 
-  PixelComponentMap
-    **component_map;
+  ChannelType
+    channel_mask;
+
+  PixelChannelMap
+    *channel_map;
 
   void
     *cache;
@@ -311,106 +307,124 @@ struct _Image
     *ascii85;
 
   ProfileInfo
-    color_profile,
-    iptc_profile,
     *generic_profile;
 
+  void
+    *properties,       /* general settings, to save with image */
+    *artifacts;        /* general operational/coder settings, not saved */
+
   char
-    filename[MaxTextExtent],   /* images input filename */
-    magick_filename[MaxTextExtent],
-    magick[MaxTextExtent];
+    filename[MaxTextExtent],        /* images input filename */
+    magick_filename[MaxTextExtent], /* given image filename (with read mods) */
+    magick[MaxTextExtent];          /* images file format (file magic) */
 
   size_t
-    magick_columns,
+    magick_columns,     /* size of image when read/created */
     magick_rows;
 
   BlobInfo
-    *blob;
+    *blob;             /* image file as in-memory string of 'extent' */
 
-  ExceptionInfo
-    exception;        /* Error handling report */
+  time_t
+    timestamp;
 
   MagickBooleanType
-    debug;            /* debug output attribute */
+    debug;             /* debug output attribute */
 
   volatile ssize_t
-    reference_count;
+    reference_count;   /* image data sharing memory management */
 
   SemaphoreInfo
     *semaphore;
 
+  const struct _ImageInfo
+    *image_info;       /* (Optional) Image belongs to this ImageInfo 'list'
+                        * For access to 'global options' when no per-image
+                        * attribute, properity, or artifact has been set.
+                        * It may be set or unset as needed, but never freed.
+                        */
+
   struct _Image
-    *previous,         /* Image sequence list links */
-    *list,
+    *list,             /* Undo/Redo image processing list (for display) */
+    *previous,         /* Image list links */
     *next;
 
   size_t
     signature;
 };
 
+/* ImageInfo structure
+ * Stores an image list, as well as all global settings used by
+ * all images held, -- unless overridden for that specific image.
+ * See SyncImagesettings() which maps any global setting that always
+ * overrides specific image settings.
+ */
 struct _ImageInfo
 {
   CompressionType
-    compression;
+    compression;        /* compression method when reading/saving image */
 
   OrientationType
-    orientation;
+    orientation;        /* orientation setting */
 
   MagickBooleanType
-    temporary,
-    adjoin,
+    temporary,          /* image file to be deleted after read "empemeral:" */
+    adjoin,             /* save images to seperate scene files */
     affirm,
     antialias;
 
   char
-    *size,
-    *extract,
+    *size,              /* image generation size */
+    *extract,           /* crop/resize string on image read */
     *page,
-    *scenes;
+    *scenes;            /* scene numbers that is to be read in */
 
   size_t
-    scene,
-    number_scenes,
-    depth;
+    scene,              /* starting value for image save numbering */
+    number_scenes,      /* total number of images in list - for escapes */
+    depth;              /* current read/save depth of images */
 
   InterlaceType
-    interlace;
+    interlace;          /* interlace for image write */
 
   EndianType
-    endian;
+    endian;             /* integer endian order for raw image data */
 
   ResolutionType
-    units;
+    units;              /* denisty pixels/inch or pixel/cm */
 
   size_t
-    quality;
+    quality;            /* compression quality */
 
   char
-    *sampling_factor,
-    *server_name,
-    *font,
-    *texture,
-    *density;
+    *sampling_factor,   /* JPEG write sampling factor */
+    *server_name,       /* X windows server name - display/animate */
+    *font,              /* DUP for draw_info */
+    *texture,           /* montage/display background tile */
+    *density;           /* DUP for image and draw_info */
 
   double
     pointsize,
-    fuzz;
+    fuzz;               /* current color fuzz attribute */
 
-  PixelPacket
-    background_color,
-    border_color,
-    matte_color;
+  PixelInfo
+    background_color,   /* user set background color */
+    border_color,       /* user set border color */
+    matte_color,        /* matte (frame) color */
+    transparent_color;  /* color for transparent index in color tables */
+                        /* NB: fill color is only needed in draw_info! */
+                        /* the same for undercolor (for font drawing) */
 
   MagickBooleanType
-    dither,
-    monochrome;
-
-  size_t
-    colors;
+    dither,             /* dither enable-disable */
+    monochrome;         /* read/write pcl,pdf,ps,xps as monocrome image */
 
   ColorspaceType
     colorspace;
 
+  CompositeOperator
+    compose;
+
   ImageType
     type;
 
@@ -421,24 +435,17 @@ struct _ImageInfo
     group;
 
   MagickBooleanType
-    ping,
-    verbose;
+    ping,                    /* fast read image attributes, not image data */
+    verbose;                 /* verbose output enable/disable */
 
   char
-    *view,
-    *authenticate;
+    *view;
 
   ChannelType
     channel;
 
   void
-    *options;
-
-  VirtualPixelMethod
-    virtual_pixel_method;
-
-  PixelPacket
-    transparent_color;
+    *options;                /* splay tree of global options */
 
   void
     *profile;
@@ -466,10 +473,10 @@ struct _ImageInfo
     length;
 
   char
-    magick[MaxTextExtent],
-    unique[MaxTextExtent],
-    zero[MaxTextExtent],
-    filename[MaxTextExtent];
+    magick[MaxTextExtent],    /* image file format (file magick) */
+    unique[MaxTextExtent],    /* unique tempory filename - delegates */
+    zero[MaxTextExtent],      /* unique filename ? - delegates */
+    filename[MaxTextExtent];  /* filename when reading/writing image */
 
   MagickBooleanType
     debug;
@@ -478,6 +485,22 @@ struct _ImageInfo
     signature;
 };
 
+extern MagickExport ChannelType
+  SetImageChannelMask(Image *,const ChannelType);
+
+extern MagickExport const char
+  DefaultTileGeometry[],
+  DefaultTileLabel[],
+  LoadImageTag[],
+  LoadImagesTag[],
+  PSDensityGeometry[],
+  PSPageGeometry[],
+  SaveImageTag[],
+  SaveImagesTag[];
+
+extern MagickExport const double
+  DefaultResolution;
+
 extern MagickExport ExceptionType
   CatchImageException(Image *);
 
@@ -485,18 +508,16 @@ extern MagickExport FILE
   *GetImageInfoFile(const ImageInfo *);
 
 extern MagickExport Image
-  *AcquireImage(const ImageInfo *),
+  *AcquireImage(const ImageInfo *,ExceptionInfo *),
   *AppendImages(const Image *,const MagickBooleanType,ExceptionInfo *),
   *CloneImage(const Image *,const size_t,const size_t,const MagickBooleanType,
     ExceptionInfo *),
-  *CombineImages(const Image *,ExceptionInfo *),
   *DestroyImage(Image *),
   *GetImageClipMask(const Image *,ExceptionInfo *),
   *GetImageMask(const Image *,ExceptionInfo *),
-  *NewMagickImage(const ImageInfo *,const size_t,const size_t,
-    const PixelInfo *),
+  *NewMagickImage(const ImageInfo *,const size_t,const size_t,const PixelInfo *,
+    ExceptionInfo *),
   *ReferenceImage(Image *),
-  *SeparateImages(const Image *,ExceptionInfo *),
   *SmushImages(const Image *,const MagickBooleanType,const ssize_t,
     ExceptionInfo *);
 
@@ -506,47 +527,41 @@ extern MagickExport ImageInfo
   *DestroyImageInfo(ImageInfo *);
 
 extern MagickExport MagickBooleanType
-  ClipImage(Image *),
-  ClipImagePath(Image *,const char *,const MagickBooleanType),
-  GetImageAlphaChannel(const Image *),
+  ClipImage(Image *,ExceptionInfo *),
+  ClipImagePath(Image *,const char *,const MagickBooleanType,ExceptionInfo *),
   IsTaintImage(const Image *),
-  IsMagickConflict(const char *),
   IsHighDynamicRangeImage(const Image *,ExceptionInfo *),
   IsImageObject(const Image *),
   ListMagickInfo(FILE *,ExceptionInfo *),
   ModifyImage(Image **,ExceptionInfo *),
   ResetImagePage(Image *,const char *),
-  SeparateImage(Image *),
-  SetImageAlphaChannel(Image *,const AlphaChannelType),
-  SetImageBackgroundColor(Image *),
-  SetImageClipMask(Image *,const Image *),
-  SetImageColor(Image *,const PixelInfo *),
-  SetImageExtent(Image *,const size_t,const size_t),
+  SetImageAlpha(Image *,const Quantum,ExceptionInfo *),
+  SetImageBackgroundColor(Image *,ExceptionInfo *),
+  SetImageColor(Image *,const PixelInfo *,ExceptionInfo *),
+  SetImageExtent(Image *,const size_t,const size_t,ExceptionInfo *),
   SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
-  SetImageMask(Image *,const Image *),
-  SetImageOpacity(Image *,const Quantum),
-  SetImageStorageClass(Image *,const ClassType),
-  SetImageType(Image *,const ImageType),
-  StripImage(Image *),
-  SyncImage(Image *),
-  SyncImageSettings(const ImageInfo *,Image *),
-  SyncImagesSettings(ImageInfo *,Image *);
+  SetImageMask(Image *,const Image *,ExceptionInfo *),
+  SetImageStorageClass(Image *,const ClassType,ExceptionInfo *),
+  StripImage(Image *,ExceptionInfo *),
+  SyncImage(Image *,ExceptionInfo *),
+  SyncImageSettings(const ImageInfo *,Image *,ExceptionInfo *),
+  SyncImagesSettings(ImageInfo *,Image *,ExceptionInfo *);
 
 extern MagickExport size_t
-  InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *);
+  InterpretImageFilename(const ImageInfo *,Image *,const char *,int,char *,
+    ExceptionInfo *);
 
 extern MagickExport ssize_t
   GetImageReferenceCount(Image *);
 
 extern MagickExport VirtualPixelMethod
   GetImageVirtualPixelMethod(const Image *),
-  SetImageVirtualPixelMethod(const Image *,const VirtualPixelMethod);
+  SetImageVirtualPixelMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
 
 extern MagickExport void
-  AcquireNextImage(const ImageInfo *,Image *),
+  AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *),
   DestroyImagePixels(Image *),
   DisassociateImageStream(Image *),
-  GetImageException(Image *,ExceptionInfo *),
   GetImageInfo(ImageInfo *),
   SetImageInfoBlob(ImageInfo *,const void *,const size_t),
   SetImageInfoFile(ImageInfo *,FILE *);