From: dirk Date: Sun, 17 Aug 2014 08:33:47 +0000 (+0000) Subject: Added check for pixel order and availability. X-Git-Tag: 7.0.1-0~2088 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=434ce8a41602615a955839cec5cc3d1b0665806c;p=imagemagick Added check for pixel order and availability. --- diff --git a/MagickCore/accelerate.c b/MagickCore/accelerate.c index 2d4ac3587..908478076 100644 --- a/MagickCore/accelerate.c +++ b/MagickCore/accelerate.c @@ -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); }