diff options
Diffstat (limited to 'fitzdraw/imagescale.c')
-rw-r--r-- | fitzdraw/imagescale.c | 99 |
1 files changed, 1 insertions, 98 deletions
diff --git a/fitzdraw/imagescale.c b/fitzdraw/imagescale.c index 970b3468..b2a499b0 100644 --- a/fitzdraw/imagescale.c +++ b/fitzdraw/imagescale.c @@ -178,103 +178,6 @@ void (*fz_scol4)(byte *src, byte *dst, int w, int denom) = scol4; void (*fz_scol5)(byte *src, byte *dst, int w, int denom) = scol5; fz_pixmap * -fz_newscaledpixmap(int w, int h, int n, int xdenom, int ydenom) -{ - int ow = (w + xdenom - 1) / xdenom; - int oh = (h + ydenom - 1) / ydenom; - return fz_newpixmap(0, 0, ow, oh, n); -} - -/* TODO: refactor */ -void -fz_scalepixmaptile(fz_pixmap *dst, int xoffs, int yoffs, fz_pixmap *src, int xdenom, int ydenom) -{ - unsigned char *buf; - unsigned char *dstsamples; - int y, iy, oy; - int ow, oh, n; - int remaining; - - void (*srowx)(byte *src, byte *dst, int w, int denom) = nil; - void (*scolx)(byte *src, byte *dst, int w, int denom) = nil; - - ow = (src->w + xdenom - 1) / xdenom; - oh = (src->h + ydenom - 1) / ydenom; - xoffs /= xdenom; - yoffs /= ydenom; - n = src->n; - - assert(xoffs == 0); /* don't handle stride properly yet */ - assert(dst->n == n); - assert(dst->w >= xoffs + ow && dst->h >= yoffs + oh); - - buf = fz_malloc(ow * n * ydenom); - - switch (n) - { - case 1: srowx = fz_srow1; scolx = fz_scol1; break; - case 2: srowx = fz_srow2; scolx = fz_scol2; break; - case 4: srowx = fz_srow4; scolx = fz_scol4; break; - case 5: srowx = fz_srow5; scolx = fz_scol5; break; - } - - dstsamples = dst->samples + (yoffs * dst->w + xoffs)*dst->n; - if (srowx && scolx) - { - for (y = 0, oy = 0; y < (src->h / ydenom) * ydenom; y += ydenom, oy++) - { - for (iy = 0; iy < ydenom; iy++) - { - srowx(src->samples + (y + iy) * src->w * n, - buf + iy * ow * n, - src->w, xdenom); - } - scolx(buf, dstsamples + oy * dst->w * n, ow, ydenom); - } - - remaining = src->h - y; - if (remaining) - { - for (iy = 0; iy < remaining; iy++) - { - srowx(src->samples + (y + iy) * src->w * n, - buf + iy * ow * n, - src->w, xdenom); - } - scolx(buf, dstsamples + oy * dst->w * n, ow, remaining); - } - } - - else - { - for (y = 0, oy = 0; y < (src->h / ydenom) * ydenom; y += ydenom, oy++) - { - for (iy = 0; iy < ydenom; iy++) - { - fz_srown(src->samples + (y + iy) * src->w * n, - buf + iy * ow * n, - src->w, xdenom, n); - } - fz_scoln(buf, dstsamples + oy * dst->w * n, ow, ydenom, n); - } - - remaining = src->h - y; - if (remaining) - { - for (iy = 0; iy < remaining; iy++) - { - fz_srown(src->samples + (y + iy) * src->w * n, - buf + iy * ow * n, - src->w, xdenom, n); - } - fz_scoln(buf, dstsamples + oy * dst->w * n, ow, remaining, n); - } - } - - fz_free(buf); -} - -fz_pixmap * fz_scalepixmap(fz_pixmap *src, int xdenom, int ydenom) { fz_pixmap *dst; @@ -292,7 +195,7 @@ fz_scalepixmap(fz_pixmap *src, int xdenom, int ydenom) buf = fz_malloc(ow * n * ydenom); - dst = fz_newpixmap(0, 0, ow, oh, src->n); + dst = fz_newpixmap(src->colorspace, 0, 0, ow, oh); switch (n) { |