From 6324164812f0952e9352fb24f8d8f1d103f52707 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 20 Oct 2010 23:28:28 +0000 Subject: Special case the component scaling for Lab image data when color converting. --- fitz/res_colorspace.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/fitz/res_colorspace.c b/fitz/res_colorspace.c index f770bbcb..9d4d7bc6 100644 --- a/fitz/res_colorspace.c +++ b/fitz/res_colorspace.c @@ -347,10 +347,29 @@ fz_stdconvpixmap(fz_pixmap *src, fz_pixmap *dst) srcn = ss->n; dstn = ds->n; - /* TODO: special case Lab colorspace (scaling of components to float) */ + /* Special case for Lab colorspace (scaling of components to float) */ + if (!strcmp(ss->name, "Lab") && srcn == 3) + { + for (y = 0; y < src->h; y++) + { + for (x = 0; x < src->w; x++) + { + srcv[0] = *s++ / 255.0f * 100; + srcv[1] = *s++ - 128; + srcv[2] = *s++ - 128; + + fz_convertcolor(ss, srcv, ds, dstv); + + for (k = 0; k < dstn; k++) + *d++ = dstv[k] * 255; + + *d++ = *s++; + } + } + } /* Brute-force for small images */ - if (src->w * src->h < 256) + else if (src->w * src->h < 256) { for (y = 0; y < src->h; y++) { -- cgit v1.2.3