summaryrefslogtreecommitdiff
path: root/base/gxpcolor.h
diff options
context:
space:
mode:
authorRay Johnston <ray.johnston@artifex.com>2017-03-28 09:22:23 -0700
committerRay Johnston <ray.johnston@artifex.com>2017-04-21 08:10:46 -0700
commit5fa7596d8d467e98fbc069d11b7a3769f7d024f0 (patch)
tree141fd9b89b6951b4e04511fe139ef30d5a6b9eea /base/gxpcolor.h
parent35a5977484afecae01afc92f5018709feba6bc91 (diff)
downloadghostpdl-5fa7596d8d467e98fbc069d11b7a3769f7d024f0.tar.gz
More fixes for tag plane problems.
tests_private/comparefiles/Altona_Technical_v20_x4.pdf Page 7 had a problem in blending when nos_knockout was true that ignored the tag. This also showed up cases where the alt_dev_color was not updated with the tag (e.g. tests_private/comparefiles/0000728-simpleNG.pdf). Another difference that tests_private/comparefiles/Bug689761.pdf shows is that "gsave fill grestore stroke" reverts the dev_color with grestore, but doesn't change the dev->graphics_type_tag. Keep the tag in the dev_color structure so that we know if the dev_color needs unset. Fix the ensure_tag_is_set inline function to make sure BOTH the device's graphics_type_tag AND the dev_color.tag are set correctly. We need to write and read the pattern tag plane for raster patterns with transparency. Seen with tests_private/comparefiles/Bug689422.pdf Lastly, the ensure_tag_is_set in gs_shfill needs to happen before the remap_color (since it may unset the dev_color if the tag was different).
Diffstat (limited to 'base/gxpcolor.h')
-rw-r--r--base/gxpcolor.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/base/gxpcolor.h b/base/gxpcolor.h
index 8e4b2077f..248e70383 100644
--- a/base/gxpcolor.h
+++ b/base/gxpcolor.h
@@ -168,6 +168,7 @@ struct gx_pattern_trans_s {
int planestride;
int n_chan; /* number of pixel planes including alpha */
bool has_shape; /* extra plane inserted */
+ bool has_tags; /* and yet another plane for the tag */
int width; /* Complete plane width/height; rect may be a subset of this */
int height;
const pdf14_nonseparable_blending_procs_t *blending_procs;