]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Wed, 7 Apr 2010 01:18:08 +0000 (01:18 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Wed, 7 Apr 2010 01:18:08 +0000 (01:18 +0000)
magick/cache-private.h
magick/cache.c
magick/identify.c

index bc30972d26fad02954c621796b3cee92b85017fc..be587ec60d5c2ff18433e387a6c9a05f4a2bd207 100644 (file)
@@ -140,6 +140,9 @@ typedef struct _CacheInfo
   VirtualPixelMethod
     virtual_pixel_method;
 
+  MagickPixelPacket
+    virtual_pixel_color;
+
   unsigned long
     number_threads;
 
index 182d43d0599a800d9a64125511a9d7b7f312cd99..f4b7602732caf6f9841578c7ea9a1a92747a4ce7 100644 (file)
@@ -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;
         }
     }
   }
index 1004a144fc6acd55d2cd4860caf8de5bb51a5e38..deda2256829b0aeb9ac14a44475fa0cf1c46d904 100644 (file)
@@ -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);