]> granicus.if.org Git - imagemagick/commitdiff
Added check for pixel order and availability.
authordirk <dirk@git.imagemagick.org>
Sun, 17 Aug 2014 08:33:47 +0000 (08:33 +0000)
committerdirk <dirk@git.imagemagick.org>
Sun, 17 Aug 2014 08:33:47 +0000 (08:33 +0000)
MagickCore/accelerate.c

index 2d4ac35870d876a1542ad484869c367844e6abd5..908478076d56b7c4a88c47538120c2475bbd4f17 100644 (file)
@@ -62,6 +62,7 @@ Include declarations.
 #include "MagickCore/opencl.h"
 #include "MagickCore/opencl-private.h"
 #include "MagickCore/option.h"
+#include "MagickCore/pixel-accessor.h"
 #include "MagickCore/pixel-private.h"
 #include "MagickCore/prepress.h"
 #include "MagickCore/quantize.h"
@@ -152,6 +153,20 @@ static MagickBooleanType checkAccelerateCondition(const Image* image,
   if (image->read_mask != MagickFalse || image->write_mask != MagickFalse)
     return(MagickFalse);
 
+  /* check if pixel order is RGBA */
+  if (GetPixelChannelOffset(image,RedPixelChannel) != 0 ||
+      GetPixelChannelOffset(image,GreenPixelChannel) != 1 ||
+      GetPixelChannelOffset(image,BluePixelChannel) != 2 ||
+      GetPixelChannelOffset(image,AlphaPixelChannel) != 3)
+    return(MagickFalse);
+
+  /* check if all channels are available */
+  if (((GetPixelRedTraits(image) & UpdatePixelTrait) == 0) ||
+      ((GetPixelGreenTraits(image) & UpdatePixelTrait) == 0) ||
+      ((GetPixelBlueTraits(image) & UpdatePixelTrait) == 0) ||
+      ((GetPixelAlphaTraits(image) & UpdatePixelTrait) == 0))
+    return(MagickFalse);
+
   return(MagickTrue);
 }