summaryrefslogtreecommitdiff
path: root/source/fitz/image.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2017-08-02 18:17:41 +0100
committerRobin Watts <robin.watts@artifex.com>2017-10-24 15:16:35 +0100
commitcbdb9dc747ff7e7c9e187e056c4077edae629729 (patch)
tree800d473527ee866b91fe9fcdce8ee6930f1c058b /source/fitz/image.c
parent3e6e2464b32ca6d9fdc9cfc8c80c33aace8ec5e0 (diff)
downloadmupdf-cbdb9dc747ff7e7c9e187e056c4077edae629729.tar.xz
Don't apply default decode array to ICC Lab image data.
Adjust the decode array to allow for the fact that the default decode is done by the ICC code.
Diffstat (limited to 'source/fitz/image.c')
-rw-r--r--source/fitz/image.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/source/fitz/image.c b/source/fitz/image.c
index 2e59e401..b4fd2112 100644
--- a/source/fitz/image.c
+++ b/source/fitz/image.c
@@ -803,9 +803,22 @@ fz_new_image_of_size(fz_context *ctx, int w, int h, int bpc, fz_colorspace *colo
image->decode[2*i+1] = maxval;
}
}
+ /* ICC spaces have the default decode arrays pickled into them.
+ * For most spaces this is fine, because [ 0 1 0 1 0 1 ] is
+ * idempotent. For Lab, however, we need to adjust it. */
+ if (fz_colorspace_is_lab_icc(ctx, colorspace))
+ {
+ /* Undo the default decode array of [0 100 -128 127 -128 127] */
+ image->decode[0] = image->decode[0]/100.0f;
+ image->decode[1] = image->decode[1]/100.0f;
+ image->decode[2] = (image->decode[2]+128)/255.0f;
+ image->decode[3] = (image->decode[3]+128)/255.0f;
+ image->decode[4] = (image->decode[4]+128)/255.0f;
+ image->decode[5] = (image->decode[5]+128)/255.0f;
+ }
for (i = 0; i < image->n; i++)
{
- if (image->decode[i * 2] * 255 != 0 || image->decode[i * 2 + 1] * 255 != 255)
+ if (image->decode[i * 2] != 0 || image->decode[i * 2 + 1] != 1)
break;
}
if (i != image->n)