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)
{
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:
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)
{
}
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;