From: cristy Date: Tue, 26 Jul 2011 01:34:43 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~7269 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b3a73b5f087803c313d32133d19972bad6b26843;p=imagemagick --- diff --git a/MagickCore/cache.c b/MagickCore/cache.c index f12de0efd..339282af6 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -2077,8 +2077,6 @@ static Cache GetImagePixelCache(Image *image,const MagickBooleanType clone, */ image->taint=MagickTrue; image->type=UndefinedType; - if (image->colorspace == GRAYColorspace) - image->colorspace=RGBColorspace; if (ValidatePixelCacheMorphology(image) == MagickFalse) status=OpenPixelCache(image,IOMode,exception); } diff --git a/MagickCore/fx.c b/MagickCore/fx.c index 6e225f86f..9812d2b99 100644 --- a/MagickCore/fx.c +++ b/MagickCore/fx.c @@ -340,7 +340,7 @@ MagickExport Image *AddNoiseImage(const Image *image,const NoiseType noise_type, (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); - noise_image=CloneImage(image,image->columns,image->rows,MagickTrue,exception); + noise_image=CloneImage(image,0,0,MagickTrue,exception); if (noise_image == (Image *) NULL) return((Image *) NULL); if (SetImageStorageClass(noise_image,DirectClass) == MagickFalse) @@ -393,33 +393,22 @@ MagickExport Image *AddNoiseImage(const Image *image,const NoiseType noise_type, } for (x=0; x < (ssize_t) image->columns; x++) { - register ssize_t - i; - - for (i=0; i < (ssize_t) GetPixelChannels(image); i++) - { - PixelChannel - channel; - - PixelTrait - noise_traits, - traits; - - traits=GetPixelChannelMapTraits(image,(PixelChannel) i); - if (traits == UndefinedPixelTrait) - continue; - channel=GetPixelChannelMapChannel(image,(PixelChannel) i); - noise_traits=GetPixelChannelMapTraits(noise_image,channel); - if (noise_traits == UndefinedPixelTrait) - continue; - if ((noise_traits & CopyPixelTrait) != 0) - { - q[channel]=p[i]; - continue; - } - q[channel]=ClampToQuantum(GenerateDifferentialNoise(random_info[id], - p[i],noise_type,attenuate)); - } + if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0) + SetPixelRed(noise_image,ClampToQuantum(GenerateDifferentialNoise( + random_info[id],GetPixelRed(image,p),noise_type,attenuate)),q); + if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0) + SetPixelGreen(noise_image,ClampToQuantum(GenerateDifferentialNoise( + random_info[id],GetPixelGreen(image,p),noise_type,attenuate)),q); + if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0) + SetPixelBlue(noise_image,ClampToQuantum(GenerateDifferentialNoise( + random_info[id],GetPixelBlue(image,p),noise_type,attenuate)),q); + if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) && + (image->colorspace == CMYKColorspace)) + SetPixelBlack(noise_image,ClampToQuantum(GenerateDifferentialNoise( + random_info[id],GetPixelBlack(image,p),noise_type,attenuate)),q); + if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) + SetPixelAlpha(noise_image,ClampToQuantum(GenerateDifferentialNoise( + random_info[id],GetPixelAlpha(image,p),noise_type,attenuate)),q); p+=GetPixelChannels(image); q+=GetPixelChannels(noise_image); } @@ -1523,7 +1512,7 @@ static MagickRealType FxGetSymbol(FxInfo *fx_info,const PixelChannel channel, alpha=(MagickRealType) (QuantumScale*pixel.alpha); return(alpha); } - case DefaultPixelChannels: + case IntensityPixelChannel: { return(QuantumScale*GetPixelInfoIntensity(&pixel)); } @@ -3022,7 +3011,7 @@ MagickExport Image *FxImage(const Image *image,const char *expression, alpha=0.0; (void) FxEvaluateChannelExpression(fx_info[id],(PixelChannel) i,x,y, &alpha,exception); - q[channel]=ClampToQuantum((MagickRealType) QuantumRange*alpha); + q[i]=ClampToQuantum((MagickRealType) QuantumRange*alpha); } p+=GetPixelChannels(image); q+=GetPixelChannels(fx_image); @@ -5192,8 +5181,7 @@ MagickExport Image *TintImage(const Image *image,const char *opacity, % The format of the VignetteImage method is: % % Image *VignetteImage(const Image *image,const double radius, -% const double sigma,const ssize_t x,const ssize_t y, -% ExceptionInfo *exception) +% const double sigma,const ssize_t x,const ssize_t y,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -5239,8 +5227,8 @@ MagickExport Image *VignetteImage(const Image *image,const double radius, return((Image *) NULL); } canvas_image->matte=MagickTrue; - oval_image=CloneImage(canvas_image,canvas_image->columns,canvas_image->rows, - MagickTrue,exception); + oval_image=CloneImage(canvas_image,canvas_image->columns, + canvas_image->rows,MagickTrue,exception); if (oval_image == (Image *) NULL) { canvas_image=DestroyImage(canvas_image); diff --git a/MagickCore/image.c b/MagickCore/image.c index 1a2fcb017..56a17bf1d 100644 --- a/MagickCore/image.c +++ b/MagickCore/image.c @@ -774,6 +774,7 @@ MagickExport Image *CloneImage(const Image *image,const size_t columns, clone_image->signature=MagickSignature; clone_image->storage_class=image->storage_class; clone_image->number_channels=image->number_channels; + clone_image->number_meta_channels=image->number_meta_channels; clone_image->metacontent_extent=image->metacontent_extent; clone_image->colorspace=image->colorspace; clone_image->matte=image->matte; diff --git a/MagickCore/image.h b/MagickCore/image.h index 021867348..fc22d6adb 100644 --- a/MagickCore/image.h +++ b/MagickCore/image.h @@ -281,6 +281,7 @@ struct _Image size_t number_channels, + number_meta_channels, metacontent_extent; MagickBooleanType diff --git a/MagickCore/pixel-accessor.h b/MagickCore/pixel-accessor.h index c6f96ab4e..478a12d8e 100644 --- a/MagickCore/pixel-accessor.h +++ b/MagickCore/pixel-accessor.h @@ -176,6 +176,11 @@ static inline PixelTrait GetPixelMagentaTraits(const Image *image) return(image->channel_map[image->map][MagentaPixelChannel].traits); } +static inline size_t GetPixelMetaChannels(const Image *image) +{ + return(image->number_meta_channels); +} + static inline size_t GetPixelMetacontentExtent(const Image *image) { return(image->metacontent_extent); @@ -594,6 +599,12 @@ static inline void SetPixelMagentaTraits(Image *image,const PixelTrait traits) image->channel_map[image->map][MagentaPixelChannel].traits=traits; } +static inline void SetPixelMetaChannels(Image *image, + const size_t number_meta_channels) +{ + image->number_meta_channels=number_meta_channels; +} + static inline void SetPixelMetacontentExtent(Image *image,const size_t extent) { image->metacontent_extent=extent; diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c index d4fc27032..c982273f3 100644 --- a/MagickCore/pixel.c +++ b/MagickCore/pixel.c @@ -4581,6 +4581,12 @@ MagickExport void StandardPixelChannelMap(Image *image) (UpdatePixelTrait | BlendPixelTrait)); SetPixelChannelMapComponent(image,AlphaPixelChannel,AlphaPixelChannel); SetPixelChannelMapTraits(image,AlphaPixelChannel,UpdatePixelTrait); + if (image->colorspace == GRAYColorspace) + { + image->number_channels=2; + SetPixelChannelMapComponent(image,GreenPixelChannel,RedPixelChannel); + SetPixelChannelMapComponent(image,BluePixelChannel,RedPixelChannel); + } if (image->colorspace == CMYKColorspace) { image->number_channels++; @@ -4594,4 +4600,5 @@ MagickExport void StandardPixelChannelMap(Image *image) SetPixelChannelMapComponent(image,IndexPixelChannel,IndexPixelChannel); SetPixelChannelMapTraits(image,IndexPixelChannel,CopyPixelTrait); } + image->number_channels+=image->number_meta_channels; } diff --git a/MagickCore/version.h b/MagickCore/version.h index 4f955e944..037000add 100644 --- a/MagickCore/version.h +++ b/MagickCore/version.h @@ -34,7 +34,7 @@ extern "C" { #define MagickLibAddendum "-0" #define MagickLibInterface 5 #define MagickLibMinInterface 5 -#define MagickReleaseDate "2011-07-24" +#define MagickReleaseDate "2011-07-25" #define MagickChangeDate "20110721" #define MagickAuthoritativeURL "http://www.imagemagick.org" #if defined(MAGICKCORE_OPENMP_SUPPORT) diff --git a/coders/pnm.c b/coders/pnm.c index f82ba75ae..1f3e764c0 100644 --- a/coders/pnm.c +++ b/coders/pnm.c @@ -375,11 +375,15 @@ static Image *ReadPNMImage(const ImageInfo *image_info,ExceptionInfo *exception) image->matte=MagickTrue; } if (LocaleCompare(value,"GRAYSCALE") == 0) - quantum_type=GrayQuantum; + { + image->colorspace=GRAYColorspace; + quantum_type=GrayQuantum; + } if (LocaleCompare(value,"GRAYSCALE_ALPHA") == 0) { - quantum_type=GrayAlphaQuantum; + image->colorspace=GRAYColorspace; image->matte=MagickTrue; + quantum_type=GrayAlphaQuantum; } if (LocaleCompare(value,"RGB_ALPHA") == 0) { @@ -423,6 +427,7 @@ static Image *ReadPNMImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Convert PBM image to pixel packets. */ + image->colorspace=GRAYColorspace; for (y=0; y < (ssize_t) image->rows; y++) { register ssize_t @@ -462,6 +467,7 @@ static Image *ReadPNMImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Convert PGM image to pixel packets. */ + image->colorspace=GRAYColorspace; scale=(Quantum *) NULL; if (max_value != (1U*QuantumRange)) { @@ -484,7 +490,7 @@ static Image *ReadPNMImage(const ImageInfo *image_info,ExceptionInfo *exception) *restrict q; q=QueueAuthenticPixels(image,0,y,image->columns,1,exception); - if (q == (const Quantum *) NULL) + if (q == (Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { @@ -582,6 +588,7 @@ static Image *ReadPNMImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Convert PBM raw image to pixel packets. */ + image->colorspace=GRAYColorspace; quantum_type=GrayQuantum; if (image->storage_class == PseudoClass) quantum_type=IndexQuantum; @@ -656,6 +663,7 @@ static Image *ReadPNMImage(const ImageInfo *image_info,ExceptionInfo *exception) /* Convert PGM raw image to pixel packets. */ + image->colorspace=GRAYColorspace; range=GetQuantumRange(image->depth); quantum_type=GrayQuantum; extent=(image->depth <= 8 ? 1 : 2)*image->columns;