| Index: source/row_common.cc
|
| diff --git a/source/row_common.cc b/source/row_common.cc
|
| index 3f003aa10205c3360606c93f9e151a1f95c246ba..058e21d916978abf6197c0c32664021a2ef34aea 100644
|
| --- a/source/row_common.cc
|
| +++ b/source/row_common.cc
|
| @@ -2017,16 +2017,23 @@ void ARGBBlendRow_C(const uint8* src_argb0, const uint8* src_argb1,
|
| }
|
| #undef BLEND
|
|
|
| +#define UBLEND(f, b, a) (((a) * f) + ((255 - a) * b) + 255) >> 8
|
| void BlendPlaneRow_C(const uint8* src0, const uint8* src1,
|
| const uint8* alpha, uint8* dst, int width) {
|
| int x;
|
| - for (x = 0; x < width; ++x) {
|
| - uint32 f = *src0++;
|
| - uint32 b = *src1++;
|
| - uint32 a = *alpha++;
|
| - *dst++ = (((a) * f) + ((255 - a) * b) + 255) >> 8;
|
| + for (x = 0; x < width - 1; x += 2) {
|
| + dst[0] = UBLEND(src0[0], src1[0], alpha[0]);
|
| + dst[1] = UBLEND(src0[1], src1[1], alpha[1]);
|
| + src0 += 2;
|
| + src1 += 2;
|
| + alpha += 2;
|
| + dst += 2;
|
| + }
|
| + if (width & 1) {
|
| + dst[0] = UBLEND(src0[0], src1[0], alpha[0]);
|
| }
|
| }
|
| +#undef UBLEND
|
|
|
| #define ATTENUATE(f, a) (a | (a << 8)) * (f | (f << 8)) >> 24
|
|
|
|
|