#define BE_ROW3_24 BE_ROW1_24(0) BE_ROW1_24(1) BE_ROW1_24(2)
#define BE_ROW3_32 BE_ROW1_32(0) BE_ROW1_32(1) BE_ROW1_32(2)
-#define ROW3_8 if (view->x->big_endian) { BE_ROW3_8 } else { LE_ROW3_8 }
-#define ROW3_16 if (view->x->big_endian) { BE_ROW3_16 } else { LE_ROW3_16 }
-#define ROW3_24 if (view->x->big_endian) { BE_ROW3_24 } else { LE_ROW3_24 }
-#define ROW3_32 if (view->x->big_endian) { BE_ROW3_32 } else { LE_ROW3_32 }
+#define ROW3_8 if (view->x->needs_swap) { BE_ROW3_8 } else { LE_ROW3_8 }
+#define ROW3_16 LE_ROW3_16
+#define ROW3_24 LE_ROW3_24
+#define ROW3_32 LE_ROW3_32
#define ROW3 \
switch (view->x->depth) { \
case 16:
{
unsigned short *p;
- p = (short *)image;
- p[0] = p[1] = p[2] = pix;
+ p = (unsigned short *)image;
+ if (view->x->x_big_endian) {
+ p[0] = p[1] = p[2] = ((pix & 0xff) << 8) | ((pix & 0xff00) >> 8);
+ } else {
+ p[0] = p[1] = p[2] = pix;
+ }
image += lineBytes;
- p = (short *)image;
- p[0] = p[1] = p[2] = pix;
+ p = (unsigned short *)image;
+ if (view->x->x_big_endian) {
+ p[0] = p[1] = p[2] = ((pix & 0xff) << 8) | ((pix & 0xff00) >> 8);
+ } else {
+ p[0] = p[1] = p[2] = pix;
+ }
image += lineBytes;
- p = (short *)image;
- p[0] = p[1] = p[2] = pix;
+ p = (unsigned short *)image;
+ if (view->x->x_big_endian) {
+ p[0] = p[1] = p[2] = ((pix & 0xff) << 8) | ((pix & 0xff00) >> 8);
+ } else {
+ p[0] = p[1] = p[2] = pix;
+ }
image += lineBytes;
}
break;
unsigned char *img =
image;
for (x = 0; x < 4; x++) {
- *(img++) = (pix >> 0) & 0xff;
- *(img++) = (pix >> 8) & 0xff;
- *(img++) = (pix >> 16) & 0xff;
- if (pixelBytes == 4) {
- img++;
- } // if
+ if (view->x->x_big_endian) {
+ if (pixelBytes == 4) {
+ img++;
+ } // if
+ *(img++) = (pix >> 16) & 0xff;
+ *(img++) = (pix >> 8) & 0xff;
+ *(img++) = (pix >> 0) & 0xff;
+ } else {
+ *(img++) = (pix >> 0) & 0xff;
+ *(img++) = (pix >> 8) & 0xff;
+ *(img++) = (pix >> 16) & 0xff;
+ if (pixelBytes == 4) {
+ img++;
+ } // if
+ }
} // for x
image += lineBytes;
} // for y