From bef7e1dce8a47f3136b5b9d94d6e821aa2d7a0d0 Mon Sep 17 00:00:00 2001 From: homm Date: Wed, 8 Oct 2014 17:40:33 +0400 Subject: [PATCH] cache hasAlpha for ImagingUnsharpMask --- libImaging/UnsharpMask.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libImaging/UnsharpMask.c b/libImaging/UnsharpMask.c index 0e0eb66e4..76d630a8f 100644 --- a/libImaging/UnsharpMask.c +++ b/libImaging/UnsharpMask.c @@ -293,6 +293,7 @@ ImagingUnsharpMask(Imaging im, Imaging imOut, float radius, int percent, int channel = 0; int channels = 0; int padding = 0; + int hasAlpha = 0; int x = 0; int y = 0; @@ -337,6 +338,10 @@ ImagingUnsharpMask(Imaging im, Imaging imOut, float radius, int percent, ImagingSectionEnter(&cookie); + if (strcmp(im->mode, "RGBX") == 0 || strcmp(im->mode, "RGBA") == 0) { + hasAlpha = 1; + } + for (y = 0; y < im->ysize; y++) { if (channels == 1) { lineIn8 = im->image8[y]; @@ -385,8 +390,7 @@ ImagingUnsharpMask(Imaging im, Imaging imOut, float radius, int percent, (channel * 8); } } - if (strcmp(im->mode, "RGBX") == 0 - || strcmp(im->mode, "RGBA") == 0) { + if (hasAlpha) { /* preserve the alpha channel this may not work for little-endian systems, fix it! */ newPixel =