try some better default offsets for big endian machines. print what the conversion is so i can see what it should be if im wrong though
Dana Jansens danakj@orodu.net
2 files changed,
8 insertions(+),
4 deletions(-)
M
render/color.c
→
render/color.c
@@ -75,6 +75,10 @@ case 32:
if ((RrRedOffset(inst) != RrDefaultRedOffset) || (RrBlueOffset(inst) != RrDefaultBlueOffset) || (RrGreenOffset(inst) != RrDefaultGreenOffset)) { + g_message("CONVERSION %d->%d %d->%d %d->%d", + RrDefaultRedOffset, RrRedOffset(inst), + RrDefaultBlueOffset, RrGreenOffset(inst), + RrDefaultGreenOffset, RrBlueOffset(inst)); for (y = 0; y < im->height; y++) { for (x = 0; x < im->width; x++) { r = (data[x] >> RrDefaultRedOffset) & 0xFF;
M
render/render.h
→
render/render.h
@@ -128,10 +128,10 @@ gint w, h;
}; #if (G_BYTE_ORDER == G_BIG_ENDIAN) -#define RrDefaultRedOffset 0 -#define RrDefaultGreenOffset 8 -#define RrDefaultBlueOffset 16 -#define RrDefaultAlphaOffset 24 +#define RrDefaultAlphaOffset 0 +#define RrDefaultRedOffset 8 +#define RrDefaultGreenOffset 16 +#define RrDefaultBlueOffset 24 #define RrEndian MSBFirst #else #define RrDefaultAlphaOffset 24