From: cristy Date: Wed, 7 Apr 2010 01:18:08 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~9686 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c3ec0d492d67fb2e45f079bf3da49d0448322d57;p=imagemagick --- diff --git a/magick/cache-private.h b/magick/cache-private.h index bc30972d2..be587ec60 100644 --- a/magick/cache-private.h +++ b/magick/cache-private.h @@ -140,6 +140,9 @@ typedef struct _CacheInfo VirtualPixelMethod virtual_pixel_method; + MagickPixelPacket + virtual_pixel_color; + unsigned long number_threads; diff --git a/magick/cache.c b/magick/cache.c index 182d43d05..f4b760273 100644 --- a/magick/cache.c +++ b/magick/cache.c @@ -3248,6 +3248,9 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, CacheInfo *cache_info; + IndexPacket + virtual_index; + MagickOffsetType offset; @@ -3266,7 +3269,7 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, region; register const IndexPacket - *restrict nexus_indexes; + *restrict virtual_indexes; register const PixelPacket *restrict p; @@ -3378,6 +3381,7 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, break; } } + virtual_index=0; for (v=0; v < (long) rows; v++) { for (u=0; u < (long) columns; u+=length) @@ -3405,6 +3409,7 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, case WhiteVirtualPixelMethod: { p=(&virtual_pixel); + virtual_indexes=(&virtual_index); break; } case EdgeVirtualPixelMethod: @@ -3413,6 +3418,8 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, p=GetVirtualPixelsFromNexus(image,virtual_pixel_method, EdgeX(x+u,cache_info->columns),EdgeY(y+v,cache_info->rows), 1UL,1UL,virtual_nexus[0],exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } case RandomVirtualPixelMethod: @@ -3423,6 +3430,8 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, RandomX(cache_info->random_info,cache_info->columns), RandomY(cache_info->random_info,cache_info->rows),1UL,1UL, virtual_nexus[0],exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } case DitherVirtualPixelMethod: @@ -3430,6 +3439,8 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, p=GetVirtualPixelsFromNexus(image,virtual_pixel_method, DitherX(x+u,cache_info->columns),DitherY(y+v,cache_info->rows), 1UL,1UL,virtual_nexus[0],exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } case TileVirtualPixelMethod: @@ -3439,6 +3450,8 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, p=GetVirtualPixelsFromNexus(image,virtual_pixel_method, x_modulo.remainder,y_modulo.remainder,1UL,1UL,virtual_nexus[0], exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } case MirrorVirtualPixelMethod: @@ -3454,6 +3467,8 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, p=GetVirtualPixelsFromNexus(image,virtual_pixel_method, x_modulo.remainder,y_modulo.remainder,1UL,1UL,virtual_nexus[0], exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } case CheckerTileVirtualPixelMethod: @@ -3463,11 +3478,14 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, if (((x_modulo.quotient ^ y_modulo.quotient) & 0x01) != 0L) { p=(&virtual_pixel); + virtual_indexes=(&virtual_index); break; } p=GetVirtualPixelsFromNexus(image,virtual_pixel_method, x_modulo.remainder,y_modulo.remainder,1UL,1UL,virtual_nexus[0], exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } case HorizontalTileVirtualPixelMethod: @@ -3475,6 +3493,7 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, if (((y+v) < 0) || ((y+v) >= (long) cache_info->rows)) { p=(&virtual_pixel); + virtual_indexes=(&virtual_index); break; } x_modulo=VirtualPixelModulo(x+u,cache_info->columns); @@ -3482,6 +3501,8 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, p=GetVirtualPixelsFromNexus(image,virtual_pixel_method, x_modulo.remainder,y_modulo.remainder,1UL,1UL,virtual_nexus[0], exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } case VerticalTileVirtualPixelMethod: @@ -3489,6 +3510,7 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, if (((x+u) < 0) || ((x+u) >= (long) cache_info->columns)) { p=(&virtual_pixel); + virtual_indexes=(&virtual_index); break; } x_modulo=VirtualPixelModulo(x+u,cache_info->columns); @@ -3496,6 +3518,8 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, p=GetVirtualPixelsFromNexus(image,virtual_pixel_method, x_modulo.remainder,y_modulo.remainder,1UL,1UL,virtual_nexus[0], exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } case HorizontalTileEdgeVirtualPixelMethod: @@ -3504,6 +3528,8 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, p=GetVirtualPixelsFromNexus(image,virtual_pixel_method, x_modulo.remainder,EdgeY(y+v,cache_info->rows),1UL,1UL, virtual_nexus[0],exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } case VerticalTileEdgeVirtualPixelMethod: @@ -3512,19 +3538,17 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, p=GetVirtualPixelsFromNexus(image,virtual_pixel_method, EdgeX(x+u,cache_info->columns),y_modulo.remainder,1UL,1UL, virtual_nexus[0],exception); + virtual_indexes=GetVirtualIndexesFromNexus(cache_info, + virtual_nexus[0]); break; } } if (p == (const PixelPacket *) NULL) break; *q++=(*p); - if (indexes != (IndexPacket *) NULL) - { - nexus_indexes=GetVirtualIndexesFromNexus(cache_info, - virtual_nexus[0]); - if (nexus_indexes != (const IndexPacket *) NULL) - *indexes++=(*nexus_indexes); - } + if ((indexes != (IndexPacket *) NULL) && + (virtual_indexes != (const IndexPacket *) NULL)) + *indexes++=(*virtual_indexes); continue; } /* @@ -3534,17 +3558,15 @@ MagickExport const PixelPacket *GetVirtualPixelsFromNexus(const Image *image, (unsigned long) length,1UL,virtual_nexus[0],exception); if (p == (const PixelPacket *) NULL) break; + virtual_indexes=GetVirtualIndexesFromNexus(cache_info,virtual_nexus[0]); (void) CopyMagickMemory(q,p,(size_t) length*sizeof(*p)); q+=length; - if (indexes != (IndexPacket *) NULL) + if ((indexes != (IndexPacket *) NULL) && + (virtual_indexes != (const IndexPacket *) NULL)) { - nexus_indexes=GetVirtualIndexesFromNexus(cache_info,virtual_nexus[0]); - if (nexus_indexes != (const IndexPacket *) NULL) - { - (void) CopyMagickMemory(indexes,nexus_indexes,(size_t) length* - sizeof(*nexus_indexes)); - indexes+=length; - } + (void) CopyMagickMemory(indexes,virtual_indexes,(size_t) length* + sizeof(*virtual_indexes)); + indexes+=length; } } } diff --git a/magick/identify.c b/magick/identify.c index 1004a144f..deda22568 100644 --- a/magick/identify.c +++ b/magick/identify.c @@ -182,7 +182,7 @@ static int PrintChannelFeatures(FILE *file,const ChannelType channel, " Information Measure of Correlation 2:\n" \ " %.*g, %.*g, %.*g, %.*g, %.*g\n" \ " Maximum Correlation Coefficient:\n" \ - " %.*g, %.*g, %.*g, %.*g, %.*g\n" + " %.*g, %.*g, %.*g, %.*g, %.*g\n" int status; @@ -217,6 +217,20 @@ static int PrintChannelStatistics(FILE *file,const ChannelType channel, int status; + if (channel == AlphaChannel) + { + status=fprintf(file,StatisticsFormat,name,ClampToQuantum(scale* + (QuantumRange-channel_statistics[channel].minima)), + (QuantumRange-channel_statistics[channel].minima)/(double) QuantumRange, + ClampToQuantum(scale*(QuantumRange-channel_statistics[channel].maxima)), + (QuantumRange-channel_statistics[channel].maxima)/(double) QuantumRange, scale*(QuantumRange-channel_statistics[channel].mean), + (QuantumRange-channel_statistics[channel].mean)/(double) QuantumRange, + scale*channel_statistics[channel].standard_deviation, + channel_statistics[channel].standard_deviation/(double) QuantumRange, + channel_statistics[channel].kurtosis, + channel_statistics[channel].skewness); + return(status); + } status=fprintf(file,StatisticsFormat,name,ClampToQuantum(scale* channel_statistics[channel].minima),channel_statistics[channel].minima/ (double) QuantumRange,ClampToQuantum(scale* @@ -658,7 +672,7 @@ MagickExport MagickBooleanType IdentifyImage(Image *image,FILE *file, if (pixel.matte != MagickFalse) { (void) ConcatenateMagickString(tuple,",",MaxTextExtent); - ConcatenateColorComponent(&pixel,OpacityChannel,X11Compliance, + ConcatenateColorComponent(&pixel,AlphaChannel,X11Compliance, tuple); } (void) ConcatenateMagickString(tuple,")",MaxTextExtent);