From c8c6acfa08a280e6eabd89eb7a2fedd95b4d2f48 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Sat, 4 Dec 2010 17:31:05 +0000 Subject: The FZ_COMBINE2 rounding fix doesn't work. Implement it the other way (round then add). --- draw/porterduff.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) (limited to 'draw') diff --git a/draw/porterduff.c b/draw/porterduff.c index e9d6d12d..c3699f0c 100644 --- a/draw/porterduff.c +++ b/draw/porterduff.c @@ -143,15 +143,15 @@ fz_paintspanmask2(byte * restrict dp, byte * restrict sp, byte * restrict mp, in { while (w--) { - int masa, imasa; + int masa; int ma = *mp++; ma = FZ_EXPAND(ma); masa = FZ_COMBINE(sp[1], ma); - imasa = 255 - masa; - imasa = FZ_EXPAND(imasa); - *dp = FZ_COMBINE2(*sp, ma, *dp, imasa); + masa = 255 - masa; + masa = FZ_EXPAND(masa); + *dp = FZ_COMBINE2(*sp, ma, *dp, masa); sp++; dp++; - *dp = masa + FZ_COMBINE(*dp, imasa); + *dp = FZ_COMBINE2(*sp, ma, *dp, masa); sp++; dp++; } } @@ -161,19 +161,19 @@ fz_paintspanmask4(byte * restrict dp, byte * restrict sp, byte * restrict mp, in { while (w--) { - int masa, imasa; + int masa; int ma = *mp++; ma = FZ_EXPAND(ma); masa = FZ_COMBINE(sp[3], ma); - imasa = 255 - masa; - imasa = FZ_EXPAND(imasa); - *dp = FZ_COMBINE2(*sp, ma, *dp, imasa); + masa = 255 - masa; + masa = FZ_EXPAND(masa); + *dp = FZ_COMBINE2(*sp, ma, *dp, masa); sp++; dp++; - *dp = FZ_COMBINE2(*sp, ma, *dp, imasa); + *dp = FZ_COMBINE2(*sp, ma, *dp, masa); sp++; dp++; - *dp = FZ_COMBINE2(*sp, ma, *dp, imasa); + *dp = FZ_COMBINE2(*sp, ma, *dp, masa); sp++; dp++; - *dp = masa + FZ_COMBINE(*dp, imasa); + *dp = FZ_COMBINE2(*sp, ma, *dp, masa); sp++; dp++; } } @@ -185,19 +185,17 @@ fz_paintspanmaskN(byte * restrict dp, byte * restrict sp, byte * restrict mp, in while (w--) { int k = n; - int masa, imasa; + int masa; int ma = *mp++; ma = FZ_EXPAND(ma); - masa = FZ_COMBINE(sp[n], ma); - imasa = 255-masa; - imasa = FZ_EXPAND(imasa); + masa = FZ_COMBINE(sp[n-1], ma); + masa = 255-masa; + masa = FZ_EXPAND(masa); while (k--) { - *dp = FZ_COMBINE2(*sp, ma, *dp, imasa); + *dp = FZ_COMBINE2(*sp, ma, *dp, masa); sp++; dp++; } - *dp = masa + FZ_COMBINE(*dp, imasa); - sp++; dp++; } } -- cgit v1.2.3