summaryrefslogtreecommitdiff
path: root/base/gsicc.c
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2017-10-31 13:07:23 +0000
committerRobin Watts <robin.watts@artifex.com>2017-11-01 13:38:16 +0000
commitf7b61e0cc56206b6811eee85c4cfd6a0963194e0 (patch)
tree91c89f604e5243d7449bb0f35baad9651a5fd4e9 /base/gsicc.c
parent31cb4cf7aa88784219f6fc2be362a66df2f67289 (diff)
downloadghostpdl-f7b61e0cc56206b6811eee85c4cfd6a0963194e0.tar.gz
Pass device_profile into color concretizing functions.
Diffstat (limited to 'base/gsicc.c')
-rw-r--r--base/gsicc.c45
1 files changed, 17 insertions, 28 deletions
diff --git a/base/gsicc.c b/base/gsicc.c
index 30868bb4b..be1466906 100644
--- a/base/gsicc.c
+++ b/base/gsicc.c
@@ -299,16 +299,15 @@ gx_restrict_ICC(gs_client_color * pcc, const gs_color_space * pcs)
}
static int
-gx_remap_concrete_icc_devicen(const frac * pconc, const gs_color_space * pcs,
- gx_device_color * pdc, const gs_gstate * pgs, gx_device * dev,
- gs_color_select_t select)
+gx_remap_concrete_icc_devicen(const gs_color_space * pcs, const frac * pconc,
+ gx_device_color * pdc, const gs_gstate * pgs,
+ gx_device * dev, gs_color_select_t select,
+ const cmm_dev_profile_t *dev_profile)
{
/* Check if this is a device with a DeviceN ICC profile. In this case,
we need to do some special stuff */
- cmm_dev_profile_t *dev_profile;
- int code;
+ int code = 0;
- code = dev_proc(dev, get_profile)(dev, &dev_profile);
if (dev_profile->spotnames != NULL &&
!dev_profile->spotnames->equiv_cmyk_set) {
/* This means that someone has specified a DeviceN (Ncolor)
@@ -329,35 +328,25 @@ gx_remap_concrete_icc_devicen(const frac * pconc, const gs_color_space * pcs,
do any halftoning. The remap is based upon the ICC profile defined
in the device profile entry of the profile manager. */
int
-gx_remap_concrete_ICC(const frac * pconc, const gs_color_space * pcs,
- gx_device_color * pdc, const gs_gstate * pgs, gx_device * dev,
- gs_color_select_t select)
+gx_remap_concrete_ICC(const gs_color_space * pcs, const frac * pconc,
+ gx_device_color * pdc, const gs_gstate * pgs,
+ gx_device * dev, gs_color_select_t select,
+ const cmm_dev_profile_t *dev_profile)
{
- int num_colorants;
- int code;
- cmm_dev_profile_t *dev_profile;
-
- code = dev_proc(dev, get_profile)(dev, &dev_profile);
- num_colorants = gsicc_get_device_profile_comps(dev_profile);
- switch( num_colorants ) {
+ switch (gsicc_get_device_profile_comps(dev_profile)) {
case 1:
- code = gx_remap_concrete_DGray(pconc, pcs, pdc, pgs, dev, select);
- break;
+ return gx_remap_concrete_DGray(pcs, pconc, pdc, pgs, dev, select, dev_profile);
case 3:
- code = gx_remap_concrete_DRGB(pconc, pcs, pdc, pgs, dev, select);
- break;
+ return gx_remap_concrete_DRGB(pcs, pconc, pdc, pgs, dev, select, dev_profile);
case 4:
- code = gx_remap_concrete_DCMYK(pconc, pcs, pdc, pgs, dev, select);
- break;
+ return gx_remap_concrete_DCMYK(pcs, pconc, pdc, pgs, dev, select, dev_profile);
default:
/* This is a special case where we have a source color and our
output profile must be DeviceN. We will need to map our
colorants to the proper planes */
- code = gx_remap_concrete_icc_devicen(pconc, pcs, pdc, pgs, dev, select);
- break;
- }
- return code;
+ return gx_remap_concrete_icc_devicen(pcs, pconc, pdc, pgs, dev, select, dev_profile);
}
+}
/*
* To device space
@@ -453,7 +442,7 @@ gx_remap_ICC(const gs_client_color * pcc, const gs_color_space * pcs,
for ( k = 0; k < num_des_comps; k++){
conc[k] = ushort2frac(psrc_temp[k]);
}
- gx_remap_concrete_ICC(conc, pcs, pdc, pgs, dev, select);
+ gx_remap_concrete_ICC(pcs, conc, pdc, pgs, dev, select, dev_profile);
/* Save original color space and color info into dev color */
i = pcs->cmm_icc_profile_data->num_comps;
@@ -525,7 +514,7 @@ gx_remap_ICC_imagelab(const gs_client_color * pcc, const gs_color_space * pcs,
for ( k = 0; k < num_des_comps; k++){
conc[k] = ushort2frac(psrc_temp[k]);
}
- gx_remap_concrete_ICC(conc, pcs, pdc, pgs, dev, select);
+ gx_remap_concrete_ICC(pcs, conc, pdc, pgs, dev, select, dev_profile);
/* Save original color space and color info into dev color */
i = pcs->cmm_icc_profile_data->num_comps;