]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 25 Apr 2011 20:13:48 +0000 (20:13 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 25 Apr 2011 20:13:48 +0000 (20:13 +0000)
magick/cache-private.h
magick/cache-view.c
magick/cache-view.h
magick/cache.c
magick/image.c
magick/image.h

index d5bd26bee4f748e55045b5060ede6dd2cf24b3a4..bd75d7d2e2f1b3c02cc55e412e5a3745f795bc09 100644 (file)
@@ -118,6 +118,9 @@ typedef struct _CacheInfo
   ColorspaceType
     colorspace;
 
+  ssize_t
+    channels;
+
   CacheType
     type;
 
@@ -235,6 +238,9 @@ extern MagickExport PixelPacket
   *QueueAuthenticNexus(Image *,const ssize_t,const ssize_t,const size_t,
     const size_t,NexusInfo *,ExceptionInfo *);
 
+extern MagickExport size_t
+  GetPixelCacheChannels(const Cache);
+
 extern MagickExport void
   ClonePixelCacheMethods(Cache,const Cache),
   GetPixelCacheTileSize(const Image *,size_t *,size_t *),
index 31bd86f86ae515dda08052c7c749fec9d2706340..83e843e9896a505a0069f575d29a515c6491a94a 100644 (file)
@@ -216,6 +216,39 @@ MagickExport CacheView *DestroyCacheView(CacheView *cache_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   G e t C a c h e V i e w C h a n n e l s                                   %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetCacheViewChannels() returns the image pixel channels associated with
+%  the specified view.
+%
+%  The format of the GetCacheViewChannels method is:
+%
+%      size_t GetCacheViewChannels(const CacheView *cache_view)
+%
+%  A description of each parameter follows:
+%
+%    o cache_view: the cache view.
+%
+*/
+MagickExport size_t GetCacheViewChannels(const CacheView *cache_view)
+{
+  assert(cache_view != (CacheView *) NULL);
+  assert(cache_view->signature == MagickSignature);
+  if (cache_view->debug != MagickFalse)
+    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
+      cache_view->image->filename);
+  return(GetPixelCacheChannels(cache_view->image->cache));
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   G e t C a c h e V i e w C o l o r s p a c e                               %
 %                                                                             %
 %                                                                             %
@@ -241,7 +274,7 @@ MagickExport ColorspaceType GetCacheViewColorspace(const CacheView *cache_view)
   if (cache_view->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
       cache_view->image->filename);
-  return(cache_view->image->colorspace);
+  return(GetPixelCacheColorspace(cache_view->image->cache));
 }
 \f
 /*
@@ -347,7 +380,7 @@ MagickExport ClassType GetCacheViewStorageClass(const CacheView *cache_view)
   if (cache_view->debug != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
       cache_view->image->filename);
-  return(cache_view->image->storage_class);
+  return(GetPixelCacheStorageClass(cache_view->image->cache));
 }
 \f
 /*
index aa743660e8d4024c67e11262c24e1c58e90e358f..c720cd738a9a3d788b898a8869b98c739b6fafe0 100644 (file)
@@ -49,6 +49,11 @@ typedef enum
 typedef struct _CacheView
   CacheView;
 
+extern MagickExport CacheView
+  *AcquireCacheView(const Image *),
+  *CloneCacheView(const CacheView *),
+  *DestroyCacheView(CacheView *);
+
 extern MagickExport ClassType
   GetCacheViewStorageClass(const CacheView *);
 
@@ -84,6 +89,9 @@ extern MagickExport MagickBooleanType
 extern MagickExport MagickSizeType
   GetCacheViewExtent(const CacheView *);
 
+extern MagickExport size_t
+  GetCacheViewChannels(const CacheView *);
+
 extern MagickExport PixelPacket
   *GetCacheViewAuthenticPixelQueue(CacheView *),
   *GetCacheViewAuthenticPixels(CacheView *,const ssize_t,const ssize_t,
@@ -91,11 +99,6 @@ extern MagickExport PixelPacket
   *QueueCacheViewAuthenticPixels(CacheView *,const ssize_t,const ssize_t,
     const size_t,const size_t,ExceptionInfo *);
 
-extern MagickExport CacheView
-  *AcquireCacheView(const Image *),
-  *CloneCacheView(const CacheView *),
-  *DestroyCacheView(CacheView *);
-
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif
index 73021e6c4c2af021f3dadb12cbdd39b4716f04fb..306426303f09cbcfb5933c840919ad19f491bd39 100644 (file)
@@ -192,6 +192,7 @@ MagickExport Cache AcquirePixelCache(const size_t number_threads)
   cache_info->type=UndefinedCache;
   cache_info->mode=IOMode;
   cache_info->colorspace=RGBColorspace;
+  cache_info->channels=4;
   cache_info->file=(-1);
   cache_info->id=GetMagickThreadId();
   cache_info->number_threads=number_threads;
@@ -2034,6 +2035,7 @@ static inline MagickBooleanType ValidatePixelCacheMorphology(const Image *image)
   cache_info=(CacheInfo *) image->cache;
   if ((image->storage_class != cache_info->storage_class) ||
       (image->colorspace != cache_info->colorspace) ||
+      (image->channels != cache_info->channels) ||
       (image->columns != cache_info->columns) ||
       (image->rows != cache_info->rows) ||
       (cache_info->nexus_info == (NexusInfo **) NULL) ||
@@ -2525,6 +2527,45 @@ static MagickBooleanType GetOneVirtualPixelFromCache(const Image *image,
 %                                                                             %
 %                                                                             %
 %                                                                             %
++   G e t P i x e l C a c h e C h a n n e l s                                 %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetPixelCacheChannels() returns the number of pixel channels associated
+%  with this instance of the pixel cache.
+%
+%  The format of the GetPixelCacheChannels() method is:
+%
+%      size_t GetPixelCacheChannels(Cache cache)
+%
+%  A description of each parameter follows:
+%
+%    o type: GetPixelCacheChannels returns DirectClass or PseudoClass.
+%
+%    o cache: the pixel cache.
+%
+*/
+MagickExport size_t GetPixelCacheChannels(const Cache cache)
+{
+  CacheInfo
+    *cache_info;
+
+  assert(cache != (Cache) NULL);
+  cache_info=(CacheInfo *) cache;
+  assert(cache_info->signature == MagickSignature);
+  if (cache_info->debug != MagickFalse)
+    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
+      cache_info->filename);
+  return(cache_info->channels);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 +   G e t P i x e l C a c h e C o l o r s p a c e                             %
 %                                                                             %
 %                                                                             %
@@ -4010,6 +4051,7 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode,
     {
       cache_info->storage_class=image->storage_class;
       cache_info->colorspace=image->colorspace;
+      cache_info->channels=image->channels;
       cache_info->type=PingCache;
       cache_info->pixels=(PixelPacket *) NULL;
       cache_info->indexes=(IndexPacket *) NULL;
index 96b21d97b6b4820d8a08d6609f882cea645ff3a9..a28c98b00971de2e9f04072ecc0415dd173d2c52 100644 (file)
@@ -1598,6 +1598,38 @@ MagickExport Image *GetImageMask(const Image *image,ExceptionInfo *exception)
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   G e t I m a g e C h a n n e l s                                           %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageChannels() returns the number of pixel channels associated
+%  with the specified image.
+%
+%  The format of the GetChannels method is:
+%
+%      size_t GetImageChannels(Image *image)
+%
+%  A description of each parameter follows:
+%
+%    o image: the image.
+%
+*/
+MagickExport size_t GetImageChannels(Image *image)
+{
+  assert(image != (Image *) NULL);
+  assert(image->signature == MagickSignature);
+  if (image->debug != MagickFalse)
+    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
+  return(image->channels);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 +   G e t I m a g e R e f e r e n c e C o u n t                               %
 %                                                                             %
 %                                                                             %
@@ -2847,6 +2879,38 @@ MagickExport MagickBooleanType SetImageBackgroundColor(Image *image)
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   S e t I m a g e C h a n n e l s                                           %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  SetImageChannels() sets the number of pixels channels associated with the
+%  image.
+%
+%  The format of the SetImageChannels method is:
+%
+%      MagickBooleanType SetImageChannels(Image *image,const size_t channels)
+%
+%  A description of each parameter follows:
+%
+%    o image: the image.
+%
+%    o channels:  The number of pixel channels.
+%
+*/
+MagickExport MagickBooleanType SetImageChannels(Image *image,
+  const size_t channels)
+{
+  image->channels=channels;
+  return(MagickTrue);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   S e t I m a g e C o l o r                                                 %
 %                                                                             %
 %                                                                             %
index 96a4822e95e57bbb13c8e866adeecdb9130e2e94..6ce4a432bad3672212f8ed5536ee3a2128de1fe7 100644 (file)
@@ -336,6 +336,9 @@ struct _Image
 
   MagickBooleanType
     ping;
+
+  size_t
+    channels;
 };
 
 struct _ImageInfo
@@ -528,6 +531,7 @@ extern MagickExport MagickBooleanType
   SetImageInfo(ImageInfo *,const unsigned int,ExceptionInfo *),
   SetImageMask(Image *,const Image *),
   SetImageOpacity(Image *,const Quantum),
+  SetImageChannels(Image *,const size_t),
   SetImageStorageClass(Image *,const ClassType),
   SetImageType(Image *,const ImageType),
   StripImage(Image *),
@@ -541,6 +545,9 @@ extern MagickExport size_t
 extern MagickExport ssize_t
   GetImageReferenceCount(Image *);
 
+extern MagickExport ssize_t
+  GetImageChannels(Image *);
+
 extern MagickExport VirtualPixelMethod
   GetImageVirtualPixelMethod(const Image *),
   SetImageVirtualPixelMethod(const Image *,const VirtualPixelMethod);