From bdecccc80762c4bd28cd68cfd0c8279f45624c69 Mon Sep 17 00:00:00 2001 From: cristy Date: Sat, 24 Dec 2011 22:52:16 +0000 Subject: [PATCH] --- MagickCore/composite.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/MagickCore/composite.c b/MagickCore/composite.c index 29f3dd7ba..561b7303b 100644 --- a/MagickCore/composite.c +++ b/MagickCore/composite.c @@ -665,12 +665,26 @@ MagickExport MagickBooleanType CompositeImage(Image *image, } for (x=0; x < (ssize_t) composite_image->columns; x++) { - SetPixelRed(image,GetPixelRed(composite_image,p),q); - SetPixelGreen(image,GetPixelGreen(composite_image,p),q); - SetPixelBlue(image,GetPixelBlue(composite_image,p),q); - SetPixelAlpha(image,GetPixelAlpha(composite_image,p),q); - if (image->colorspace == CMYKColorspace) - SetPixelBlack(image,GetPixelBlack(composite_image,p),q); + register ssize_t + i; + + for (i=0; i < (ssize_t) GetPixelChannels(composite_image); i++) + { + PixelChannel + channel; + + PixelTrait + composite_traits, + traits; + + channel=GetPixelChannelMapChannel(composite_image,i); + composite_traits=GetPixelChannelMapTraits(composite_image,channel); + traits=GetPixelChannelMapTraits(image,channel); + if ((traits == UndefinedPixelTrait) || + (composite_traits == UndefinedPixelTrait)) + continue; + SetPixelChannel(image,channel,p[i],q); + } p+=GetPixelChannels(composite_image); q+=GetPixelChannels(image); } -- 2.40.0