diff options
author | Robin Watts <Robin.Watts@artifex.com> | 2021-06-18 18:16:10 +0100 |
---|---|---|
committer | Robin Watts <Robin.Watts@artifex.com> | 2021-06-21 20:10:53 +0100 |
commit | 160687dbf18e9fe84ad453e33284eca7b906fffb (patch) | |
tree | 47b12b90d69af5f4bde8cba76ceef21e5805a316 /base | |
parent | 3406eb17fb001f76eeca6c08dce72f25175f10fe (diff) | |
download | ghostpdl-160687dbf18e9fe84ad453e33284eca7b906fffb.tar.gz |
Move pXm devices to use encode/decode_color.
This seems to fix pbmraw, pamcmyk32 and pnmcmyk.
Diffstat (limited to 'base')
-rw-r--r-- | base/gdevdgbr.c | 2 | ||||
-rw-r--r-- | base/gdevdrop.c | 2 | ||||
-rw-r--r-- | base/gxcmap.c | 30 | ||||
-rw-r--r-- | base/gxdevice.h | 4 |
4 files changed, 36 insertions, 2 deletions
diff --git a/base/gdevdgbr.c b/base/gdevdgbr.c index 3ea656417..52fba8794 100644 --- a/base/gdevdgbr.c +++ b/base/gdevdgbr.c @@ -448,7 +448,7 @@ gx_get_bits_native_to_std(gx_device * dev, int x, int w, int h, } mapped[pixel] = dest; } - (*dev_proc(dev, map_color_rgb)) (dev, pixel, rgba); + (*dev_proc(dev, decode_color)) (dev, pixel, rgba); if (options & GB_ALPHA_FIRST) *dest++ = 0xff; /* Convert to the requested color space. */ diff --git a/base/gdevdrop.c b/base/gdevdrop.c index b2c1234f8..bf9ab5b44 100644 --- a/base/gdevdrop.c +++ b/base/gdevdrop.c @@ -241,7 +241,7 @@ unpack_colors_to_standard(gx_device * dev, gx_color_index real_colors[2], gx_color_value rgb[3]; gx_color_index pixel; - (*dev_proc(dev, map_color_rgb)) (dev, colors[i], rgb); + (*dev_proc(dev, decode_color)) (dev, colors[i], rgb); pixel = gx_color_value_to_byte(rgb[0]); if (depth > 8) { pixel = (pixel << 16) + diff --git a/base/gxcmap.c b/base/gxcmap.c index 7d7ea8bd4..eec838fba 100644 --- a/base/gxcmap.c +++ b/base/gxcmap.c @@ -1753,6 +1753,21 @@ gx_default_w_b_map_color_rgb(gx_device * dev, gx_color_index color, return 0; } +gx_color_index +gx_default_w_b_gray_encode_color(gx_device *dev, const gx_color_value cv[]) +{ + return cv[0] > gx_max_color_value / 2 ? (gx_color_index)1 + : (gx_color_index)0; +} + +int +gx_default_w_b_gray_decode_color(gx_device * dev, gx_color_index color, + gx_color_value pgray[1]) +{ /* Map 0 to max_value, 1 to 0. */ + pgray[0] = -(gx_color_value) color; + return 0; +} + /* Black-on-white */ gx_color_index gx_default_b_w_map_rgb_color(gx_device * dev, const gx_color_value cv[]) @@ -1774,6 +1789,21 @@ gx_default_b_w_map_color_rgb(gx_device * dev, gx_color_index color, return 0; } +gx_color_index +gx_default_b_w_gray_encode_color(gx_device *dev, const gx_color_value cv[]) +{ + return cv[0] > gx_max_color_value / 2 ? (gx_color_index)0 + : (gx_color_index)1; +} + +int +gx_default_b_w_gray_decode_color(gx_device * dev, gx_color_index color, + gx_color_value pgray[1]) +{ /* Map 0 to max_value, 1 to 0. */ + pgray[0] = -((gx_color_value) color ^ 1); + return 0; +} + /* RGB mapping for gray-scale devices */ gx_color_index diff --git a/base/gxdevice.h b/base/gxdevice.h index 9a389af38..452255e9a 100644 --- a/base/gxdevice.h +++ b/base/gxdevice.h @@ -250,6 +250,8 @@ dev_proc_output_page(gx_default_output_page); dev_proc_close_device(gx_default_close_device); dev_proc_map_rgb_color(gx_default_w_b_map_rgb_color); dev_proc_map_color_rgb(gx_default_w_b_map_color_rgb); +dev_proc_encode_color(gx_default_w_b_gray_encode_color); +dev_proc_decode_color(gx_default_w_b_gray_decode_color); #define gx_default_map_rgb_color gx_default_w_b_map_rgb_color #define gx_default_map_color_rgb gx_default_w_b_map_color_rgb dev_proc_copy_mono(gx_default_copy_mono); @@ -321,6 +323,8 @@ int gx_default_initialize_device(gx_device *dev); /* true CMYK, and 1-bit CMYK color. */ dev_proc_map_rgb_color(gx_default_b_w_map_rgb_color); dev_proc_map_color_rgb(gx_default_b_w_map_color_rgb); +dev_proc_encode_color(gx_default_b_w_gray_encode_color); +dev_proc_decode_color(gx_default_b_w_gray_decode_color); dev_proc_map_rgb_color(gx_default_gray_map_rgb_color); dev_proc_map_color_rgb(gx_default_gray_map_color_rgb); dev_proc_map_color_rgb(gx_default_rgb_map_color_rgb); |