[gs-commits] ghostpdl branch, master, updated. ghostpdl-9.02-562-g2b898bd
Robin Watts
robin at ghostscript.com
Tue Aug 30 19:27:33 UTC 2011
The ghostpdl branch, master has been updated
via 2b898bdf0ba77853f4af9da4e39141189a1580a1 (commit)
from 605557a6e3741abe837445da32f378a7bb751e8f (commit)
----------------------------------------------------------------------
commit 2b898bdf0ba77853f4af9da4e39141189a1580a1
Author: Robin Watts <Robin.Watts at artifex.com>
Date: Tue Aug 30 19:22:35 2011 +0100
Change planar devices to use encode/decode_color only.
Simplify the code by removing deprecated color mapping functions. In
particular this fixes a problem whereby encode_color for the plank
device was returning a color index encoded as rgb, and hence confusing
the overprint device.
CLUSTER_UNTESTED as the plan* and plib* devices are not tested at the moment.
diff --git a/gs/base/gdevplan.c b/gs/base/gdevplan.c
index e02db6a..7bbf81e 100644
--- a/gs/base/gdevplan.c
+++ b/gs/base/gdevplan.c
@@ -52,12 +52,11 @@
#define Y_DPI 600
/* For all but mono, we need our own color mapping and alpha procedures. */
-static dev_proc_map_color_rgb(plan_map_color_rgb);
-static dev_proc_map_rgb_color(plang_map_rgb_color);
-static dev_proc_map_color_rgb(plang_map_color_rgb);
-static dev_proc_map_rgb_color(planc_map_rgb_color);
-static dev_proc_map_color_rgb(planc_map_color_cmyk);
-static dev_proc_map_cmyk_color(planc_map_cmyk_color);
+static dev_proc_decode_color(plan_decode_color);
+static dev_proc_encode_color(plang_encode_color);
+static dev_proc_decode_color(plang_decode_color);
+static dev_proc_encode_color(planc_encode_color);
+static dev_proc_decode_color(planc_decode_color);
static dev_proc_open_device(plan_open);
static dev_proc_close_device(plan_close);
@@ -74,14 +73,14 @@ static int plank_print_page(gx_device_printer * pdev, FILE * pstream);
/* The device procedures */
/* See gdevprn.h for the template for the following. */
-#define pgpm_procs(p_map_rgb_color, p_map_color_rgb) {\
+#define pgpm_procs(encode_color, decode_color) {\
plan_open,\
NULL, /* get_initial_matrix */ \
NULL, /* sync output */ \
gdev_prn_output_page, \
plan_close,\
- p_map_rgb_color, /* map_rgb_color */ \
- p_map_color_rgb, /* map_color_rgb */ \
+ NULL, /* map_rgb_color */ \
+ NULL, /* map_color_rgb */ \
NULL, /* fill_rectangle */ \
NULL, /* tile_rectangle */ \
NULL, /* copy_mono */ \
@@ -90,7 +89,7 @@ static int plank_print_page(gx_device_printer * pdev, FILE * pstream);
NULL, /* get_bits */ \
gdev_prn_get_params, \
gdev_prn_put_params,\
- p_map_rgb_color, /* map_cmyk_color */ \
+ NULL, /* map_cmyk_color */ \
NULL, /* get_xfont_procs */ \
NULL, /* get_xfont_device */ \
NULL, /* map_rgb_alpha_color */ \
@@ -126,8 +125,8 @@ static int plank_print_page(gx_device_printer * pdev, FILE * pstream);
NULL, /* discard_transparency_layer */\
NULL, /* get_color_mapping_procs */\
NULL, /* get_color_comp_index */\
- p_map_rgb_color, /* encode_color */\
- p_map_color_rgb, /* decode_color */\
+ encode_color, /* encode_color */\
+ decode_color, /* decode_color */\
NULL, /* pattern_manage */\
NULL, /* fill_rectangle_hl_color */\
NULL, /* include_color_space */\
@@ -146,13 +145,13 @@ static int plank_print_page(gx_device_printer * pdev, FILE * pstream);
static const gx_device_procs planm_procs =
pgpm_procs(gdev_prn_map_rgb_color, gdev_prn_map_color_rgb);
static const gx_device_procs plang_procs =
- pgpm_procs(plang_map_rgb_color, plang_map_color_rgb);
+ pgpm_procs(plang_encode_color, plang_decode_color);
static const gx_device_procs plan_procs =
- pgpm_procs(gx_default_rgb_map_rgb_color, plan_map_color_rgb);
+ pgpm_procs(gx_default_rgb_map_rgb_color, plan_decode_color);
static const gx_device_procs planc_procs =
- pgpm_procs(planc_map_cmyk_color, planc_map_color_cmyk);
+ pgpm_procs(planc_encode_color, planc_decode_color);
static const gx_device_procs plank_procs =
- pgpm_procs(planc_map_cmyk_color, planc_map_color_cmyk);
+ pgpm_procs(planc_encode_color, planc_decode_color);
/* Macro for generating device descriptors. */
#define plan_prn_device(procs, dev_name, num_comp, depth, max_gray, max_rgb, print_page) \
@@ -334,7 +333,7 @@ plan_close(gx_device *pdev)
/* Map an RGB color to a gray value. */
static gx_color_index
-plang_map_rgb_color(gx_device * pdev, const gx_color_value cv[])
+plang_encode_color(gx_device * pdev, const gx_color_value cv[])
{ /* We round the value rather than truncating it. */
gx_color_value gray;
gx_color_value r, g, b;
@@ -351,8 +350,8 @@ plang_map_rgb_color(gx_device * pdev, const gx_color_value cv[])
/* Map a gray value back to an RGB color. */
static int
-plang_map_color_rgb(gx_device * dev, gx_color_index color,
- gx_color_value prgb[3])
+plang_decode_color(gx_device * dev, gx_color_index color,
+ gx_color_value prgb[3])
{
gx_color_value gray =
color * gx_max_color_value / dev->color_info.max_gray;
@@ -365,7 +364,7 @@ plang_map_color_rgb(gx_device * dev, gx_color_index color,
/* Map an rgb color tuple back to an RGB color. */
static int
-plan_map_color_rgb(gx_device * dev, gx_color_index color,
+plan_decode_color(gx_device * dev, gx_color_index color,
gx_color_value prgb[3])
{
uint bitspercolor = dev->color_info.depth / 3;
@@ -383,12 +382,11 @@ plan_map_color_rgb(gx_device * dev, gx_color_index color,
/* Map a cmyk color tuple back to an RGB color. */
static int
-planc_map_color_cmyk(gx_device * dev, gx_color_index color,
- gx_color_value prgb[4])
+planc_decode_color(gx_device * dev, gx_color_index color,
+ gx_color_value prgb[4])
{
uint bitspercolor = dev->color_info.depth / 4;
uint colormask = (1 << bitspercolor) - 1;
- uint max_cmyk = dev->color_info.max_color;
uint c, m, y, k;
#define cvalue(c) ((gx_color_value)((ulong)(c) * gx_max_color_value / colormask))
@@ -399,16 +397,16 @@ planc_map_color_cmyk(gx_device * dev, gx_color_index color,
color >>= bitspercolor;
m = color & colormask;
c = color >> bitspercolor;
- k = colormask-k;
- prgb[0] = cvalue((colormask - c) * k / colormask);
- prgb[1] = cvalue((colormask - m) * k / colormask);
- prgb[2] = cvalue((colormask - y) * k / colormask);
+ prgb[0] = cvalue(c);
+ prgb[1] = cvalue(m);
+ prgb[2] = cvalue(y);
+ prgb[3] = cvalue(k);
return 0;
}
/* Map CMYK to color. */
static gx_color_index
-planc_map_cmyk_color(gx_device * dev, const gx_color_value cv[])
+planc_encode_color(gx_device * dev, const gx_color_value cv[])
{
int bpc = dev->color_info.depth / 4;
int drop = sizeof(gx_color_value) * 8 - bpc;
diff --git a/gs/base/gdevplib.c b/gs/base/gdevplib.c
index 5bad522..cc636bc 100644
--- a/gs/base/gdevplib.c
+++ b/gs/base/gdevplib.c
@@ -239,12 +239,11 @@ typedef struct gx_device_plib_s gx_device_plib;
#define Y_DPI 600
/* For all but mono, we need our own color mapping and alpha procedures. */
-static dev_proc_map_color_rgb(plib_map_color_rgb);
-static dev_proc_map_rgb_color(plibg_map_rgb_color);
-static dev_proc_map_color_rgb(plibg_map_color_rgb);
-static dev_proc_map_rgb_color(plibc_map_rgb_color);
-static dev_proc_map_color_rgb(plibc_map_color_cmyk);
-static dev_proc_map_cmyk_color(plibc_map_cmyk_color);
+static dev_proc_decode_color(plib_decode_color);
+static dev_proc_encode_color(plibg_encode_color);
+static dev_proc_decode_color(plibg_decode_color);
+static dev_proc_decode_color(plibc_decode_color);
+static dev_proc_encode_color(plibc_encode_color);
static dev_proc_open_device(plib_open);
static dev_proc_close_device(plib_close);
@@ -266,14 +265,14 @@ static int plibk_print_page(gx_device_printer * pdev, FILE * pstream);
/* The device procedures */
/* See gdevprn.h for the template for the following. */
-#define pgpm_procs(p_map_rgb_color, p_map_color_rgb) {\
+#define pgpm_procs(p_encode_color, p_decode_color) {\
plib_open,\
NULL, /* get_initial_matrix */ \
NULL, /* sync output */ \
gdev_prn_output_page, \
plib_close,\
- p_map_rgb_color, /* map_rgb_color */ \
- p_map_color_rgb, /* map_color_rgb */ \
+ NULL, /* map_rgb_color */ \
+ NULL, /* map_color_rgb */ \
NULL, /* fill_rectangle */ \
NULL, /* tile_rectangle */ \
NULL, /* copy_mono */ \
@@ -282,7 +281,7 @@ static int plibk_print_page(gx_device_printer * pdev, FILE * pstream);
NULL, /* get_bits */ \
gdev_prn_get_params, \
plib_put_params,\
- p_map_rgb_color, /* map_cmyk_color */ \
+ NULL, /* map_cmyk_color */ \
NULL, /* get_xfont_procs */ \
NULL, /* get_xfont_device */ \
NULL, /* map_rgb_alpha_color */ \
@@ -318,8 +317,8 @@ static int plibk_print_page(gx_device_printer * pdev, FILE * pstream);
NULL, /* discard_transparency_layer */\
NULL, /* get_color_mapping_procs */\
NULL, /* get_color_comp_index */\
- p_map_rgb_color, /* encode_color */\
- p_map_color_rgb, /* decode_color */\
+ p_encode_color, /* encode_color */\
+ p_decode_color, /* decode_color */\
NULL, /* pattern_manage */\
NULL, /* fill_rectangle_hl_color */\
NULL, /* include_color_space */\
@@ -338,13 +337,13 @@ static int plibk_print_page(gx_device_printer * pdev, FILE * pstream);
static const gx_device_procs plibm_procs =
pgpm_procs(gdev_prn_map_rgb_color, gdev_prn_map_color_rgb);
static const gx_device_procs plibg_procs =
- pgpm_procs(plibg_map_rgb_color, plibg_map_color_rgb);
+ pgpm_procs(plibg_encode_color, plibg_decode_color);
static const gx_device_procs plib_procs =
- pgpm_procs(gx_default_rgb_map_rgb_color, plib_map_color_rgb);
+ pgpm_procs(gx_default_rgb_map_rgb_color, plib_decode_color);
static const gx_device_procs plibc_procs =
- pgpm_procs(plibc_map_cmyk_color, plibc_map_color_cmyk);
+ pgpm_procs(plibc_encode_color, plibc_decode_color);
static const gx_device_procs plibk_procs =
- pgpm_procs(plibc_map_cmyk_color, plibc_map_color_cmyk);
+ pgpm_procs(plibc_encode_color, plibc_decode_color);
/* Macro for generating device descriptors. */
/* Ideally we'd use something like:
@@ -761,7 +760,7 @@ plib_close(gx_device *pdev)
/* Map an RGB color to a gray value. */
static gx_color_index
-plibg_map_rgb_color(gx_device * pdev, const gx_color_value cv[])
+plibg_encode_color(gx_device * pdev, const gx_color_value cv[])
{ /* We round the value rather than truncating it. */
gx_color_value gray;
gx_color_value r, g, b;
@@ -778,8 +777,8 @@ plibg_map_rgb_color(gx_device * pdev, const gx_color_value cv[])
/* Map a gray value back to an RGB color. */
static int
-plibg_map_color_rgb(gx_device * dev, gx_color_index color,
- gx_color_value prgb[3])
+plibg_decode_color(gx_device * dev, gx_color_index color,
+ gx_color_value prgb[3])
{
gx_color_value gray =
color * gx_max_color_value / dev->color_info.max_gray;
@@ -792,7 +791,7 @@ plibg_map_color_rgb(gx_device * dev, gx_color_index color,
/* Map an rgb color tuple back to an RGB color. */
static int
-plib_map_color_rgb(gx_device * dev, gx_color_index color,
+plib_decode_color(gx_device * dev, gx_color_index color,
gx_color_value prgb[3])
{
uint bitspercolor = dev->color_info.depth / 3;
@@ -808,10 +807,10 @@ plib_map_color_rgb(gx_device * dev, gx_color_index color,
return 0;
}
-/* Map a cmyk color tuple back to an RGB color. */
+/* Map a cmyk color tuple back to CMYK colorants. */
static int
-plibc_map_color_cmyk(gx_device * dev, gx_color_index color,
- gx_color_value prgb[4])
+plibc_decode_color(gx_device * dev, gx_color_index color,
+ gx_color_value prgb[4])
{
uint bitspercolor = dev->color_info.depth / 4;
uint colormask = (1 << bitspercolor) - 1;
@@ -826,16 +825,16 @@ plibc_map_color_cmyk(gx_device * dev, gx_color_index color,
color >>= bitspercolor;
m = color & colormask;
c = color >> bitspercolor;
- k = colormask-k;
- prgb[0] = cvalue((colormask - c) * k / colormask);
- prgb[1] = cvalue((colormask - m) * k / colormask);
- prgb[2] = cvalue((colormask - y) * k / colormask);
+ prgb[0] = cvalue(c);
+ prgb[1] = cvalue(m);
+ prgb[2] = cvalue(y);
+ prgb[3] = cvalue(k);
return 0;
}
/* Map CMYK to color. */
static gx_color_index
-plibc_map_cmyk_color(gx_device * dev, const gx_color_value cv[])
+plibc_encode_color(gx_device * dev, const gx_color_value cv[])
{
int bpc = dev->color_info.depth / 4;
int drop = sizeof(gx_color_value) * 8 - bpc;
Summary of changes:
gs/base/gdevplan.c | 54 ++++++++++++++++++++++++--------------------------
gs/base/gdevplib.c | 55 +++++++++++++++++++++++++--------------------------
2 files changed, 53 insertions(+), 56 deletions(-)
More information about the gs-commits
mailing list