summaryrefslogtreecommitdiff
path: root/raster
diff options
context:
space:
mode:
authorGlenn Kennard <glenn.kennard@gmail.com>2008-06-30 23:23:21 +0200
committerGlenn Kennard <glenn.kennard@gmail.com>2008-06-30 23:23:21 +0200
commitd4028cf9448d7e7b85b2c41442edbd9ab8c721cc (patch)
tree1407c6bbeb43792b76cca3acb798badaec7079ef /raster
parent903bea53592ae7ae72bc6cdb3c8f624dca66aa79 (diff)
downloadmupdf-d4028cf9448d7e7b85b2c41442edbd9ab8c721cc.tar.xz
Correct rounding in image scale.
Diffstat (limited to 'raster')
-rw-r--r--raster/imagescale.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/raster/imagescale.c b/raster/imagescale.c
index f7eedeef..7ce942fb 100644
--- a/raster/imagescale.c
+++ b/raster/imagescale.c
@@ -23,7 +23,7 @@ static inline void srown(byte * restrict src, byte * restrict dst, int w, int de
left = 0;
for (k = 0; k < n; k++)
{
- dst[k] = (sum[k] * invdenom) >> 16;
+ dst[k] = (sum[k] * invdenom + (1<<15)) >> 16;
sum[k] = 0;
}
dst += n;
@@ -68,22 +68,22 @@ static inline void srowc(byte * restrict src, byte * restrict dst, int w, int de
{
left = 0;
- dst[0] = (sum1 * invdenom) >> 16;
+ dst[0] = (sum1 * invdenom + (1<<15)) >> 16;
sum1 = 0;
if (n >= 2) {
- dst[1] = (sum2 * invdenom) >> 16;
+ dst[1] = (sum2 * invdenom + (1<<15)) >> 16;
sum2 = 0;
}
if (n >= 3) {
- dst[2] = (sum3 * invdenom) >> 16;
+ dst[2] = (sum3 * invdenom + (1<<15)) >> 16;
sum3 = 0;
}
if (n >= 4) {
- dst[3] = (sum4 * invdenom) >> 16;
+ dst[3] = (sum4 * invdenom + (1<<15)) >> 16;
sum4 = 0;
}
if (n >= 5) {
- dst[4] = (sum5 * invdenom) >> 16;
+ dst[4] = (sum5 * invdenom + (1<<15)) >> 16;
sum5 = 0;
}
@@ -142,7 +142,7 @@ static inline void scoln(byte * restrict src, byte * restrict dst, int w, int de
for (k = 0; k < n; k++)
sum[k] += s[y * w * n + k];
for (k = 0; k < n; k++)
- dst[k] = (sum[k] * invdenom) >> 16;
+ dst[k] = (sum[k] * invdenom + (1<<15)) >> 16;
dst += n;
}
}