diff options
author | Glenn Kennard <glenn.kennard@gmail.com> | 2008-06-30 23:23:21 +0200 |
---|---|---|
committer | Glenn Kennard <glenn.kennard@gmail.com> | 2008-06-30 23:23:21 +0200 |
commit | d4028cf9448d7e7b85b2c41442edbd9ab8c721cc (patch) | |
tree | 1407c6bbeb43792b76cca3acb798badaec7079ef /raster | |
parent | 903bea53592ae7ae72bc6cdb3c8f624dca66aa79 (diff) | |
download | mupdf-d4028cf9448d7e7b85b2c41442edbd9ab8c721cc.tar.xz |
Correct rounding in image scale.
Diffstat (limited to 'raster')
-rw-r--r-- | raster/imagescale.c | 14 |
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; } } |