diff options
author | Michael Vrhel <michael.vrhel@artifex.com> | 2017-01-25 21:42:53 -0800 |
---|---|---|
committer | Michael Vrhel <michael.vrhel@artifex.com> | 2017-02-01 07:47:45 -0800 |
commit | 3a9d6ebe560689930eaf3aca00652b22cef26423 (patch) | |
tree | 7447c36c6ffec24d50e9d5eab05767e786b7aa39 /base/gstparam.h | |
parent | 04c75cebae5912610526c997604f8d15fb933682 (diff) | |
download | ghostpdl-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.h | 1 |
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; |