apply r1491 + modification for BIG_ENDIAN to from mapnik2 - closes #444

This commit is contained in:
Dane Springmeyer 2009-12-15 22:14:09 +00:00
parent 354bdbd15a
commit 3c655b0a0f

View file

@ -369,13 +369,12 @@ namespace mapnik
unsigned g0 = (rgba0 >> 16 ) & 0xff; unsigned g0 = (rgba0 >> 16 ) & 0xff;
unsigned b0 = (rgba0 >> 8) & 0xff; unsigned b0 = (rgba0 >> 8) & 0xff;
unsigned a = (a1 * 255 + (255 - a1) * a0 + 127)/255; r0 = uint8_t(((r1 - r0) * a1 + (r0 << 8)) >> 8);
g0 = uint8_t(((g1 - g0) * a1 + (g0 << 8)) >> 8);
b0 = uint8_t(((b1 - b0) * a1 + (b0 << 8)) >> 8);
a0 = uint8_t((a1 + a0) - ((a1 * a0 + 255) >> 8));
r0 = (r1*a1 + (((255 - a1) * a0 + 127)/255) * r0 + 127)/a; row_to[x] = (a0)| (b0 << 8) | (g0 << 16) | (r0 << 24) ;
g0 = (g1*a1 + (((255 - a1) * a0 + 127)/255) * g0 + 127)/a;
b0 = (b1*a1 + (((255 - a1) * a0 + 127)/255) * b0 + 127)/a;
row_to[x] = (a)| (b0 << 8) | (g0 << 16) | (r0 << 24) ;
#else #else
unsigned a1 = int( ((rgba1 >> 24) & 0xff) * opacity ); unsigned a1 = int( ((rgba1 >> 24) & 0xff) * opacity );
if (a1 == 0) continue; if (a1 == 0) continue;
@ -388,13 +387,12 @@ namespace mapnik
unsigned g0 = (rgba0 >> 8 ) & 0xff; unsigned g0 = (rgba0 >> 8 ) & 0xff;
unsigned b0 = (rgba0 >> 16) & 0xff; unsigned b0 = (rgba0 >> 16) & 0xff;
unsigned a = (a1 * 255 + (255 - a1) * a0 + 127)/255; r0 = uint8_t(((r1 - r0) * a1 + (r0 << 8)) >> 8);
g0 = uint8_t(((g1 - g0) * a1 + (g0 << 8)) >> 8);
b0 = uint8_t(((b1 - b0) * a1 + (b0 << 8)) >> 8);
a0 = uint8_t((a1 + a0) - ((a1 * a0 + 255) >> 8));
r0 = (r1*a1 + (((255 - a1) * a0 + 127)/255) * r0 + 127)/a; row_to[x] = (a0 << 24)| (b0 << 16) | (g0 << 8) | (r0) ;
g0 = (g1*a1 + (((255 - a1) * a0 + 127)/255) * g0 + 127)/a;
b0 = (b1*a1 + (((255 - a1) * a0 + 127)/255) * b0 + 127)/a;
row_to[x] = (a << 24)| (b0 << 16) | (g0 << 8) | (r0) ;
#endif #endif
} }
} }