From 84b15742e80dc4342906f89dc26ba06459fb1f44 Mon Sep 17 00:00:00 2001 From: cristy Date: Tue, 6 Sep 2011 01:44:48 +0000 Subject: [PATCH] --- MagickCore/quantum-import.c | 59 +++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/MagickCore/quantum-import.c b/MagickCore/quantum-import.c index 0da2d489f..a1cbd315c 100644 --- a/MagickCore/quantum-import.c +++ b/MagickCore/quantum-import.c @@ -540,7 +540,7 @@ MagickExport size_t ImportQuantumPixels(Image *image,CacheView *image_view, register unsigned char pixel; - for (x=0; x < ((ssize_t) number_pixels-3); x+=4) + for (x=((ssize_t) number_pixels-3); x > 0; x-=4) { for (bit=0; bit < 8; bit+=2) { @@ -559,22 +559,23 @@ MagickExport size_t ImportQuantumPixels(Image *image,CacheView *image_view, q+=channels; } } - for (bit=0; bit < (ssize_t) (number_pixels % 4); bit+=2) - { - if (quantum_info->min_is_white == MagickFalse) - pixel=(unsigned char) (((*p) & (1 << (7-bit))) == 0 ? - 0x00 : 0x01); - else - pixel=(unsigned char) (((*p) & (1 << (7-bit))) != 0 ? - 0x00 : 0x01); - SetPixelIndex(image,(Quantum) (pixel == 0 ? 0 : 1),q); - SetPixelRed(image,(Quantum) (pixel == 0 ? 0 : QuantumRange),q); - SetPixelGreen(image,GetPixelRed(image,q),q); - SetPixelBlue(image,GetPixelRed(image,q),q); - SetPixelAlpha(image,((*p) & (1UL << (unsigned char) - (6-bit))) == 0 ? TransparentAlpha : OpaqueAlpha,q); - q+=channels; - } + if ((number_pixels % 4) != 0) + for (bit=3; bit >= (ssize_t) (4-(number_pixels % 4)); bit-=2) + { + if (quantum_info->min_is_white == MagickFalse) + pixel=(unsigned char) (((*p) & (1 << (7-bit))) == 0 ? + 0x00 : 0x01); + else + pixel=(unsigned char) (((*p) & (1 << (7-bit))) != 0 ? + 0x00 : 0x01); + SetPixelIndex(image,(Quantum) (pixel == 0 ? 0 : 1),q); + SetPixelRed(image,(Quantum) (pixel == 0 ? 0 : QuantumRange),q); + SetPixelGreen(image,GetPixelRed(image,q),q); + SetPixelBlue(image,GetPixelRed(image,q),q); + SetPixelAlpha(image,((*p) & (1UL << (unsigned char) + (6-bit))) == 0 ? TransparentAlpha : OpaqueAlpha,q); + q+=channels; + } break; } case 4: @@ -1623,7 +1624,7 @@ MagickExport size_t ImportQuantumPixels(Image *image,CacheView *image_view, register unsigned char pixel; - for (x=0; x < ((ssize_t) number_pixels-3); x+=4) + for (x=((ssize_t) number_pixels-3); x > 0; x-=4) { for (bit=0; bit < 8; bit+=2) { @@ -1638,16 +1639,18 @@ MagickExport size_t ImportQuantumPixels(Image *image,CacheView *image_view, } p++; } - for (bit=0; bit <= (ssize_t) (number_pixels % 4); bit+=2) - { - pixel=(unsigned char) (((*p) & (1 << (7-bit))) != 0 ? 0x00 : 0x01); - SetPixelRed(image,(Quantum) (pixel != 0 ? 0 : QuantumRange),q); - SetPixelGreen(image,GetPixelRed(image,q),q); - SetPixelBlue(image,GetPixelRed(image,q),q); - SetPixelAlpha(image,((*p) & (1UL << (unsigned char) - (6-bit))) == 0 ? TransparentAlpha : OpaqueAlpha,q); - q+=channels; - } + if ((number_pixels % 4) != 0) + for (bit=3; bit >= (ssize_t) (4-(number_pixels % 4)); bit-=2) + { + pixel=(unsigned char) (((*p) & (1 << (7-bit))) != 0 ? 0x00 : + 0x01); + SetPixelRed(image,(Quantum) (pixel != 0 ? 0 : QuantumRange),q); + SetPixelGreen(image,GetPixelRed(image,q),q); + SetPixelBlue(image,GetPixelRed(image,q),q); + SetPixelAlpha(image,((*p) & (1UL << (unsigned char) + (6-bit))) == 0 ? TransparentAlpha : OpaqueAlpha,q); + q+=channels; + } if (bit != 0) p++; break; -- 2.40.0