summaryrefslogtreecommitdiff
path: root/draw
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2010-12-04 17:31:05 +0000
committerTor Andersson <tor@ghostscript.com>2010-12-04 17:31:05 +0000
commitc8c6acfa08a280e6eabd89eb7a2fedd95b4d2f48 (patch)
treed7a5b2b6e9bab39733e7d12653fc272d68f5435a /draw
parent5e363d8e1a2925290cc626c4d4ab43346294c056 (diff)
downloadmupdf-c8c6acfa08a280e6eabd89eb7a2fedd95b4d2f48.tar.xz
The FZ_COMBINE2 rounding fix doesn't work. Implement it the other way (round then add).
Diffstat (limited to 'draw')
-rw-r--r--draw/porterduff.c36
1 files changed, 17 insertions, 19 deletions
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++;
}
}