summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2018-11-07 16:37:52 +0100
committerTor Andersson <tor.andersson@artifex.com>2018-11-07 17:09:57 +0100
commit5df675cf0886e88fdc2dfc07cf127c3e0065dedf (patch)
tree37670f65565960ffee08451705e9204f54752d9d
parent11c3e6e574f74981459a6401b7d8cd4773f67cc4 (diff)
downloadmupdf-5df675cf0886e88fdc2dfc07cf127c3e0065dedf.tar.xz
Fix 700140: Ask LCMS transform to copy alpha channels.
-rw-r--r--source/fitz/colorspace.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/source/fitz/colorspace.c b/source/fitz/colorspace.c
index f2b5dad7..418b044f 100644
--- a/source/fitz/colorspace.c
+++ b/source/fitz/colorspace.c
@@ -1945,7 +1945,7 @@ static void fast_rgb_to_bgr(fz_context *ctx, fz_pixmap *dst, fz_pixmap *src, fz_
}
static void
-icc_conv_pixmap(fz_context *ctx, fz_pixmap *dst, fz_pixmap *src, fz_colorspace *prf, const fz_default_colorspaces *default_cs, const fz_color_params *color_params, int copy_spots)
+icc_conv_pixmap(fz_context *ctx, fz_pixmap *dst, fz_pixmap *src, fz_colorspace *prf, const fz_default_colorspaces *default_cs, const fz_color_params *color_params, int copy_extras)
{
fz_colorspace *srcs = src->colorspace;
fz_colorspace *dsts = dst->colorspace;
@@ -1957,7 +1957,7 @@ icc_conv_pixmap(fz_context *ctx, fz_pixmap *dst, fz_pixmap *src, fz_colorspace *
/* Handle DeviceGray to CMYK as K only. See note in Section 6.3 of PDF spec 1.7. */
if (fz_colorspace_is_device_gray(ctx, srcs) && fz_colorspace_is_cmyk(ctx, dsts))
{
- fast_gray_to_cmyk(ctx, dst, src, prf, default_cs, color_params, copy_spots);
+ fast_gray_to_cmyk(ctx, dst, src, prf, default_cs, color_params, copy_extras);
return;
}
@@ -1986,7 +1986,11 @@ icc_conv_pixmap(fz_context *ctx, fz_pixmap *dst, fz_pixmap *src, fz_colorspace *
inputpos = src->samples;
outputpos = dst->samples;
- link = fz_get_icc_link(ctx, dsts, dst->s + dst->alpha, srcs, src->s + src->alpha, prf, color_params, 1, copy_spots, &src_n);
+ /* If we have alpha channels, set copy_extras so that the LCMS transform also copies the alpha channels. */
+ if (src->alpha || dst->alpha)
+ copy_extras = 1;
+
+ link = fz_get_icc_link(ctx, dsts, dst->s + dst->alpha, srcs, src->s + src->alpha, prf, color_params, 1, copy_extras, &src_n);
if (link->is_identity)
{