summaryrefslogtreecommitdiff
path: root/source/fitz/separation.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2017-10-16 13:44:52 +0100
committerRobin Watts <robin.watts@artifex.com>2017-10-24 15:16:36 +0100
commitc413f4db6a54846ae85393a87fa1b53b93a966ee (patch)
tree3a06363e8f0570cc139e8cf486f2d9b00c0c52cd /source/fitz/separation.c
parentc7c407b57a6e1aa5b1a11034ec7cb308cf4ad3c4 (diff)
downloadmupdf-c413f4db6a54846ae85393a87fa1b53b93a966ee.tar.xz
Add support for use of proofing profile.
This is a first cut to get us to demo-ability. There will likely be a few changes as we do a bit more testing with different scenarios with Gray, RGB, CMYK combos of destination, proof and output intent ICC profiles.
Diffstat (limited to 'source/fitz/separation.c')
-rw-r--r--source/fitz/separation.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/source/fitz/separation.c b/source/fitz/separation.c
index ba3ab96e..5f8fee41 100644
--- a/source/fitz/separation.c
+++ b/source/fitz/separation.c
@@ -242,10 +242,6 @@ fz_clone_pixmap_area_with_different_seps(fz_context *ctx, fz_pixmap *src, const
{
fz_irect local_bbox;
fz_pixmap *dst;
- fz_colorspace *oi = fz_default_output_intent(ctx, default_cs);
-
- if (fz_colorspace_n(ctx, dcs) == fz_colorspace_n(ctx, oi))
- dcs = oi;
if (bbox == NULL)
{
@@ -291,6 +287,7 @@ fz_copy_pixmap_area_converting_seps(fz_context *ctx, fz_pixmap *dst, fz_pixmap *
unsigned char mapped[FZ_MAX_COLORS];
int unmapped = sseps_n;
int device_n = 0;
+ fz_colorspace *proof_cs = (prf == src->colorspace ? NULL : prf);
assert(da == sa);
assert(ss == fz_count_active_separations(ctx, sseps));
@@ -300,7 +297,7 @@ fz_copy_pixmap_area_converting_seps(fz_context *ctx, fz_pixmap *dst, fz_pixmap *
sstride -= sn * dw;
/* Process colorants first */
- if (dst->colorspace == src->colorspace)
+ if (dst->colorspace == src->colorspace && proof_cs == NULL)
{
/* Simple copy */
unsigned char *dd = ddata;
@@ -327,7 +324,7 @@ fz_copy_pixmap_area_converting_seps(fz_context *ctx, fz_pixmap *dst, fz_pixmap *
{
fz_pixmap_converter *pc = fz_lookup_pixmap_converter(ctx, dst->colorspace, src->colorspace);
- pc(ctx, dst, src, prf, default_cs, NULL, 0);
+ pc(ctx, dst, src, proof_cs, default_cs, NULL, 0);
}
}
@@ -398,7 +395,7 @@ fz_copy_pixmap_area_converting_seps(fz_context *ctx, fz_pixmap *dst, fz_pixmap *
if (mapped[i])
continue;
/* Src spot i is not mapped. We need to convert that down. */
- fz_separation_equivalent(ctx, sseps, i, color_params, dst->colorspace, prf, convert);
+ fz_separation_equivalent(ctx, sseps, i, color_params, dst->colorspace, proof_cs, convert);
if (fz_colorspace_is_subtractive(ctx, dst->colorspace))
{
@@ -491,7 +488,7 @@ fz_copy_pixmap_area_converting_seps(fz_context *ctx, fz_pixmap *dst, fz_pixmap *
int n = fz_colorspace_n(ctx, src->colorspace);
fz_color_converter cc;
- fz_find_color_converter(ctx, &cc, prf, dst->colorspace, src->colorspace, color_params);
+ fz_find_color_converter(ctx, &cc, proof_cs, dst->colorspace, src->colorspace, color_params);
fz_try(ctx)
{