diff options
Diffstat (limited to 'fitz/res_colorspace.c')
-rw-r--r-- | fitz/res_colorspace.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/fitz/res_colorspace.c b/fitz/res_colorspace.c index 6cad3f16..3e8660ab 100644 --- a/fitz/res_colorspace.c +++ b/fitz/res_colorspace.c @@ -286,18 +286,21 @@ static void fastrgbtobgr(fz_pixmap *src, fz_pixmap *dst) } static void -fz_stdconvpixmap(fz_colorspace *srcs, fz_pixmap *src, fz_colorspace *dsts, fz_pixmap *dst) +fz_stdconvpixmap(fz_pixmap *src, fz_pixmap *dst) { float srcv[FZ_MAXCOLORS]; float dstv[FZ_MAXCOLORS]; int y, x, k; + fz_colorspace *ss = src->colorspace; + fz_colorspace *ds = dst->colorspace; + unsigned char *s = src->samples; unsigned char *d = dst->samples; assert(src->w == dst->w && src->h == dst->h); - assert(src->n == srcs->n + 1); - assert(dst->n == dsts->n + 1); + assert(src->n == ss->n + 1); + assert(dst->n == ds->n + 1); for (y = 0; y < src->h; y++) { @@ -306,7 +309,7 @@ fz_stdconvpixmap(fz_colorspace *srcs, fz_pixmap *src, fz_colorspace *dsts, fz_pi for (k = 0; k < src->n - 1; k++) srcv[k] = *s++ / 255.0f; - fz_convertcolor(srcs, srcv, dsts, dstv); + fz_convertcolor(ss, srcv, ds, dstv); for (k = 0; k < dst->n - 1; k++) *d++ = dstv[k] * 255; @@ -317,14 +320,19 @@ fz_stdconvpixmap(fz_colorspace *srcs, fz_pixmap *src, fz_colorspace *dsts, fz_pi } void -fz_convertpixmap(fz_colorspace *ss, fz_pixmap *sp, fz_colorspace *ds, fz_pixmap *dp) +fz_convertpixmap(fz_pixmap *sp, fz_pixmap *dp) { + fz_colorspace *ss = sp->colorspace; + fz_colorspace *ds = dp->colorspace; + + assert(ss && ds); + if (ss == pdf_devicegray) { if (ds == pdf_devicergb) fastgraytorgb(sp, dp); else if (ds == pdf_devicebgr) fastgraytorgb(sp, dp); /* bgr == rgb here */ else if (ds == pdf_devicecmyk) fastgraytocmyk(sp, dp); - else fz_stdconvpixmap(ss, sp, ds, dp); + else fz_stdconvpixmap(sp, dp); } else if (ss == pdf_devicergb) @@ -332,8 +340,7 @@ fz_convertpixmap(fz_colorspace *ss, fz_pixmap *sp, fz_colorspace *ds, fz_pixmap if (ds == pdf_devicegray) fastrgbtogray(sp, dp); else if (ds == pdf_devicebgr) fastrgbtobgr(sp, dp); else if (ds == pdf_devicecmyk) fastrgbtocmyk(sp, dp); - else fz_stdconvpixmap(ss, sp, ds, dp); - + else fz_stdconvpixmap(sp, dp); } else if (ss == pdf_devicebgr) @@ -341,8 +348,7 @@ fz_convertpixmap(fz_colorspace *ss, fz_pixmap *sp, fz_colorspace *ds, fz_pixmap if (ds == pdf_devicegray) fastbgrtogray(sp, dp); else if (ds == pdf_devicergb) fastrgbtobgr(sp, dp); /* bgr = rgb here */ else if (ds == pdf_devicecmyk) fastbgrtocmyk(sp, dp); - else fz_stdconvpixmap(ss, sp, ds, dp); - + else fz_stdconvpixmap(sp, dp); } else if (ss == pdf_devicecmyk) @@ -350,10 +356,10 @@ fz_convertpixmap(fz_colorspace *ss, fz_pixmap *sp, fz_colorspace *ds, fz_pixmap if (ds == pdf_devicegray) fastcmyktogray(sp, dp); else if (ds == pdf_devicebgr) fastcmyktobgr(sp, dp); else if (ds == pdf_devicergb) fastcmyktorgb(sp, dp); - else fz_stdconvpixmap(ss, sp, ds, dp); + else fz_stdconvpixmap(sp, dp); } - else fz_stdconvpixmap(ss, sp, ds, dp); + else fz_stdconvpixmap(sp, dp); } /* |