summaryrefslogtreecommitdiff
path: root/base/gstparam.h
diff options
context:
space:
mode:
authorMichael Vrhel <michael.vrhel@artifex.com>2017-01-25 21:42:53 -0800
committerMichael Vrhel <michael.vrhel@artifex.com>2017-02-01 07:47:45 -0800
commit3a9d6ebe560689930eaf3aca00652b22cef26423 (patch)
tree7447c36c6ffec24d50e9d5eab05767e786b7aa39 /base/gstparam.h
parent04c75cebae5912610526c997604f8d15fb933682 (diff)
downloadghostpdl-3a9d6ebe560689930eaf3aca00652b22cef26423.tar.gz
Bug 626295 Text Knockout Transparency
When we have transparency, text knockout set, with either a non-normal blend mode or an opacity less than 1.0, we need to push a non-isolated knockout group. Graphic state changes can occur between the BT and ET commands. As such, we will need to handling the push operation in pdf14_text_begin (and the clist version) when the conditions are right. This is a special group that indicates its uniqueness with a text_group flag. This flag is included through the clist, the group as well as the device. Once set, subsequent calls to pdf14_text_begin will not push another group. The group is popped with ET is encountered through the zendtransparencytextgroup command from the interpreter. If the pdf14 device is not currently in a text group, this group pop is ignored (and not even placed in the clist). The pdfwrite compositor logic, ignores and group pushes that occur with the text_group set as well as all PDF14_END_TRANS_TEXT_GROUP types. Due to confusion of with the annotation text writing methods, I had to add a PDF14_BEGIN_TRANS_TEXT_GROUP to denote when we encounter a BT in the source file to ensure that we are only going to push groups if our conditions are right and we are in a BT/ET pair and not drawing a text annotation. One optimization we may want to look at doing later, is determining the bbox for the area between BT and ET. Currently the group push is the same size as the parent group which is likely much to large.
Diffstat (limited to 'base/gstparam.h')
-rw-r--r--base/gstparam.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/base/gstparam.h b/base/gstparam.h
index 9b2cea70b..183a28da0 100644
--- a/base/gstparam.h
+++ b/base/gstparam.h
@@ -70,6 +70,7 @@ typedef struct gs_transparency_group_params_s {
bool Isolated;
bool Knockout;
bool image_with_SMask;
+ int text_group;
bool idle;
uint mask_id;
int group_color_numcomps;