summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'base/gstrans.c')
-rw-r--r--base/gstrans.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/base/gstrans.c b/base/gstrans.c
index cb201eba..d810524a 100644
--- a/base/gstrans.c
+++ b/base/gstrans.c
@@ -124,7 +124,7 @@ check_for_nontrans_pattern(gs_gstate *pgs, unsigned char *comp_name)
/*
* Push a PDF 1.4 transparency compositor onto the current device. Note that
* if the current device already is a PDF 1.4 transparency compositor, the
- * create_compositor will update its parameters but not create a new
+ * composite will update its parameters but not create a new
* compositor device.
*/
static int
@@ -207,7 +207,7 @@ gs_begin_transparency_group(gs_gstate *pgs,
}
/*
* Put parameters into a compositor parameter and then call the
- * create_compositor. This will pass the data to the PDF 1.4
+ * composite. This will pass the data to the PDF 1.4
* transparency device.
*/
params.pdf14_op = group_type;
@@ -810,6 +810,18 @@ gs_push_pdf14trans_device(gs_gstate * pgs, bool is_pattern, bool retain,
if (depth < 0)
params.overprint_sim_push = true;
+ /* If we have an NCLR ICC profile, the extra spot colorants do not
+ get included in the transparency buffers. This is also true
+ for any extra colorant names listed, which go beyond the profile.
+ Finally, we could have a CMYK profile with colorants listed, that
+ go beyond CMYK. To detect, simply look at dev_profile->spotnames */
+ if (dev_profile->spotnames != NULL && dev_profile->spotnames->count > 4) {
+ /* Making an assumption here, that list is CMYK + extra. */
+ int delta = dev_profile->spotnames->count - 4;
+ params.num_spot_colors_int -= delta;
+ params.num_spot_colors -= delta;
+ }
+
/* If we happen to be in a situation where we are going out to a device
whose profile is CIELAB then we will need to make sure that we
do our blending in RGB and convert to CIELAB when we do the put_image