diff options
Diffstat (limited to 'base/gstrans.c')
-rw-r--r-- | base/gstrans.c | 16 |
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 |