From: cristy Date: Mon, 25 Apr 2011 20:13:48 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~7650 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d267170b2904c695cdfb443b3500f77b507d43e;p=imagemagick --- diff --git a/magick/cache-private.h b/magick/cache-private.h index d5bd26bee..bd75d7d2e 100644 --- a/magick/cache-private.h +++ b/magick/cache-private.h @@ -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 *), diff --git a/magick/cache-view.c b/magick/cache-view.c index 31bd86f86..83e843e98 100644 --- a/magick/cache-view.c +++ b/magick/cache-view.c @@ -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)); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % % 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)); } /* @@ -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)); } /* diff --git a/magick/cache-view.h b/magick/cache-view.h index aa743660e..c720cd738 100644 --- a/magick/cache-view.h +++ b/magick/cache-view.h @@ -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 diff --git a/magick/cache.c b/magick/cache.c index 73021e6c4..306426303 100644 --- a/magick/cache.c +++ b/magick/cache.c @@ -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); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % + 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; diff --git a/magick/image.c b/magick/image.c index 96b21d97b..a28c98b00 100644 --- a/magick/image.c +++ b/magick/image.c @@ -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); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % + 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); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % % S e t I m a g e C o l o r % % % % % diff --git a/magick/image.h b/magick/image.h index 96a4822e9..6ce4a432b 100644 --- a/magick/image.h +++ b/magick/image.h @@ -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);