blocks_high = height / 4;
total_blocks = blocks_wide * blocks_high;
block_inc = 4;
+#ifdef ORIGINAL
row_dec = stride + 4;
+#else
+ row_dec = - (stride - 4); /* such that -row_dec > 0 */
+#endif
for (block_y = blocks_high; block_y > 0; block_y--) {
+#ifdef ORIGINAL
block_ptr = ((block_y * 4) - 1) * stride;
+#else
+ block_ptr = ((blocks_high - block_y) * 4) * stride;
+#endif
for (block_x = blocks_wide; block_x > 0; block_x--) {
/* check if this block should be skipped */
if (skip_blocks) {
for (pixel_y = 0; pixel_y < 4; pixel_y++) {
for (pixel_x = 0; pixel_x < 4; pixel_x++, flags >>= 1)
- {
-#ifdef ORIGINAL
pixels[pixel_ptr++] = colors[(flags & 0x1) ^ 1];
-#else
- pixels[width*(height-(pixel_ptr/width)-1) +
- pixel_ptr%width] =
- colors[(flags & 0x1) ^ 1];
- pixel_ptr++;
-#endif
- }
pixel_ptr -= row_dec;
}
} else if (byte_b >= 0x90) {
for (pixel_y = 0; pixel_y < 4; pixel_y++) {
for (pixel_x = 0; pixel_x < 4; pixel_x++, flags >>= 1)
- {
-#ifdef ORIGINAL
- pixels[pixel_ptr++] =
- colors[((pixel_y & 0x2) << 1) +
- (pixel_x & 0x2) + ((flags & 0x1) ^ 1)];
-#else
- pixels[width*(height-(pixel_ptr/width)-1) +
- pixel_ptr%width] =
- colors[((pixel_y & 0x2) << 1) +
+ pixels[pixel_ptr++] =
+ colors[((pixel_y & 0x2) << 1) +
(pixel_x & 0x2) + ((flags & 0x1) ^ 1)];
- pixel_ptr++;
-#endif
- }
pixel_ptr -= row_dec;
}
} else {
for (pixel_y = 0; pixel_y < 4; pixel_y++) {
for (pixel_x = 0; pixel_x < 4; pixel_x++)
- {
-#ifdef ORIGINAL
pixels[pixel_ptr++] = colors[0];
-#else
- pixels[width*(height-(pixel_ptr/width)-1) +
- pixel_ptr%width] = colors[0];
- pixel_ptr++;
-#endif
- }
pixel_ptr -= row_dec;
}
}
blocks_high = height / 4;
total_blocks = blocks_wide * blocks_high;
block_inc = 4;
+#ifdef ORIGINAL
row_dec = stride + 4;
+#else
+ row_dec = - (stride - 4); /* such that -row_dec > 0 */
+#endif
for (block_y = blocks_high; block_y > 0; block_y--) {
+#ifdef ORIGINAL
block_ptr = ((block_y * 4) - 1) * stride;
+#else
+ block_ptr = ((blocks_high - block_y) * 4) * stride;
+#endif
for (block_x = blocks_wide; block_x > 0; block_x--) {
/* check if this block should be skipped */
if (skip_blocks) {
for (pixel_y = 0; pixel_y < 4; pixel_y++) {
for (pixel_x = 0; pixel_x < 4; pixel_x++, flags >>= 1)
- pixels[pixel_ptr++] =
- colors[((pixel_y & 0x2) << 1) +
+ pixels[pixel_ptr++] =
+ colors[((pixel_y & 0x2) << 1) +
(pixel_x & 0x2) + ((flags & 0x1) ^ 1)];
pixel_ptr -= row_dec;
}
width = icd->lpbiInput->biWidth;
height = icd->lpbiInput->biHeight;
bit_per_pixel = icd->lpbiInput->biBitCount;
- stride = width*bit_per_pixel/8;
+ stride = width; /* in bytes or 16bit words */
sz = icd->lpbiInput->biSizeImage;
if (info->mode_8bit)
width = icd->lpbiSrc->biWidth;
height = icd->lpbiSrc->biHeight;
bit_per_pixel = icd->lpbiSrc->biBitCount;
- stride = width*bit_per_pixel/8;
+ stride = width;
sz = icd->lpbiSrc->biSizeImage;
if (info->mode_8bit)