[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