]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <urban-warrior@imagemagick.org>
Sun, 14 Jan 2018 19:14:19 +0000 (14:14 -0500)
committerCristy <urban-warrior@imagemagick.org>
Sun, 14 Jan 2018 19:14:19 +0000 (14:14 -0500)
MagickCore/pixel-accessor.h
MagickCore/pixel.c

index a1e6424b77f80964947f146f5fcea391f664efcf..cd16fd07b15062b5b8a13458e3c95514c9f25689 100644 (file)
@@ -377,33 +377,47 @@ static inline PixelTrait GetPixelRedTraits(const Image *magick_restrict image)
 static inline void GetPixelInfoPixel(const Image *magick_restrict image,
   const Quantum *magick_restrict pixel,PixelInfo *magick_restrict pixel_info)
 {
-  pixel_info->storage_class=image->storage_class;
-  pixel_info->colorspace=image->colorspace;
-  pixel_info->fuzz=image->fuzz;
-  pixel_info->depth=image->depth;
-  pixel_info->red=(MagickRealType)
-    pixel[image->channel_map[RedPixelChannel].offset];
-  pixel_info->green=(MagickRealType)
-    pixel[image->channel_map[GreenPixelChannel].offset];
-  pixel_info->blue=(MagickRealType)
-    pixel[image->channel_map[BluePixelChannel].offset];
+  pixel_info->storage_class=DirectClass;
+  pixel_info->colorspace=sRGBColorspace;
+  pixel_info->fuzz=0.0f;
+  pixel_info->depth=MAGICKCORE_QUANTUM_DEPTH;
+  pixel_info->red=0.0f;
+  pixel_info->green=0.0f;
+  pixel_info->blue=0.0f;
   pixel_info->black=0.0f;
-  if (image->channel_map[BlackPixelChannel].traits != UndefinedPixelTrait)
-    pixel_info->black=(MagickRealType)
-      pixel[image->channel_map[BlackPixelChannel].offset];
-  pixel_info->alpha=(MagickRealType) OpaqueAlpha;
+  pixel_info->index=0.0f;
   pixel_info->alpha_trait=UndefinedPixelTrait;
-  if (image->channel_map[AlphaPixelChannel].traits != UndefinedPixelTrait)
+  pixel_info->alpha=(MagickRealType) OpaqueAlpha;
+  pixel_info->count=0;
+  if (image != (Image *) NULL)
     {
-      pixel_info->alpha=(MagickRealType)
-        pixel[image->channel_map[AlphaPixelChannel].offset];
-      pixel_info->alpha_trait=BlendPixelTrait;
+      pixel_info->storage_class=image->storage_class;
+      pixel_info->colorspace=image->colorspace;
+      pixel_info->fuzz=image->fuzz;
+      pixel_info->depth=image->depth;
+      pixel_info->alpha_trait=image->alpha_trait;
     }
-  pixel_info->index=0.0f;
-  if (image->channel_map[IndexPixelChannel].traits != UndefinedPixelTrait)
-    pixel_info->index=(MagickRealType)
+  if (pixel != (Quantum *) NULL)
+    {
+      pixel_info->red=(MagickRealType)
+        pixel[image->channel_map[RedPixelChannel].offset];
+      pixel_info->green=(MagickRealType)
+        pixel[image->channel_map[GreenPixelChannel].offset];
+      pixel_info->blue=(MagickRealType)
+        pixel[image->channel_map[BluePixelChannel].offset];
+      if (image->channel_map[BlackPixelChannel].traits != UndefinedPixelTrait)
+        pixel_info->black=(MagickRealType)
+          pixel[image->channel_map[BlackPixelChannel].offset];
+      if (image->channel_map[AlphaPixelChannel].traits != UndefinedPixelTrait)
+        {
+          pixel_info->alpha=(MagickRealType)
+            pixel[image->channel_map[AlphaPixelChannel].offset];
+          pixel_info->alpha_trait=BlendPixelTrait;
+        }
+      if (image->channel_map[IndexPixelChannel].traits != UndefinedPixelTrait)
+        pixel_info->index=(MagickRealType)
       pixel[image->channel_map[IndexPixelChannel].offset];
-  pixel_info->count=0;
+    }
 }
 
 static inline PixelTrait GetPixelTraits(const Image *magick_restrict image,
index ada5d38a7802ddb4b6eb592f201cd22d099d497b..de90ffa51ae449ca426f848693dd1882e90c4518 100644 (file)
@@ -5512,6 +5512,7 @@ MagickExport MagickBooleanType InterpolatePixelInfo(const Image *image,
   interpolate=method;
   if (interpolate == UndefinedInterpolatePixel)
     interpolate=image->interpolate;
+  GetPixelInfoPixel(image,(const Quantum *) NULL,pixel);
   (void) ResetMagickMemory(&pixels,0,sizeof(pixels));
   switch (interpolate)
   {
@@ -5542,11 +5543,6 @@ MagickExport MagickBooleanType InterpolatePixelInfo(const Image *image,
           status=MagickFalse;
           break;
         }
-      pixel->red=0.0;
-      pixel->green=0.0;
-      pixel->blue=0.0;
-      pixel->black=0.0;
-      pixel->alpha=0.0;
       count*=count;  /* number of pixels - square of size */
       for (i=0; i < (ssize_t) count; i++)
       {