diff options
author | Michael Vrhel <michael.vrhel@artifex.com> | 2020-01-11 12:14:48 -0800 |
---|---|---|
committer | Michael Vrhel <michael.vrhel@artifex.com> | 2020-01-11 12:14:48 -0800 |
commit | 05c41c0dedaa512419f15798cbc3da92b6a90bbc (patch) | |
tree | b021f4d5219d5f6762770e430339ffad06f9a86d /base/gdevp14.h | |
parent | 5faf010d8e043d77ff10f3deee466e9fb2dc7b7e (diff) | |
download | ghostpdl-05c41c0dedaa512419f15798cbc3da92b6a90bbc.tar.gz |
Squashed commit fill-stroke3 branch
This branch had several contributors including Robin Watts,
Ken Sharp and Ray Johnston.
The intent was to add a "fill and stroke" path device method
to ensure we get proper rendering when doing fill/stroke
methods with overprint and transparency. In addition,
adding the method made it possible for pdfwrite to match
the original pdf source file if it also had fill/stroke methods.
The interaction with overprint and transparency led to significant
changes in parts of the code related to those sections. In particular,
overprint was reworked to ensure that the overprint compositor and
the transparency compositor were aware if it was to be using
the overprint drawn_comps for stroke or for fill. The code was
rewritten so that the overprint compositor actions only occurred when
an actual operation occurred (e.g. fill, stroke, image, text) as opposed
to every time that the overprint graphic state values changed.
When there is a fill-stroke operation with transparency, depending upon the
graphic state values, a non-isolated knockout group may be pushed. From this,
an issue with knockout groups within knockout groups was revealed, which was
related to the backdrop selection. The backdrop selection code was simplified.
Diffstat (limited to 'base/gdevp14.h')
-rw-r--r-- | base/gdevp14.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/base/gdevp14.h b/base/gdevp14.h index 349919395..5c20ba57a 100644 --- a/base/gdevp14.h +++ b/base/gdevp14.h @@ -34,6 +34,12 @@ typedef enum { PDF14_DeviceCustom = 4 } pdf14_default_colorspace_t; +typedef enum { + PDF14_OP_STATE_NONE = 0, + PDF14_OP_STATE_FILL = 1, + PDF14_OP_STATE_STROKE = 2, +} PDF14_OP_FS_STATE; + /* * This structure contains procedures for processing routine which differ * between the different blending color spaces. @@ -205,12 +211,19 @@ typedef struct pdf14_device_s { float opacity; float shape; float alpha; /* alpha = opacity * shape */ + float fillconstantalpha; + float strokeconstantalpha; gs_blend_mode_t blend_mode; bool text_knockout; bool overprint; - bool effective_overprint_mode; + bool effective_overprint_mode; + bool stroke_effective_op_mode; + bool stroke_overprint; int text_group; gx_color_index drawn_comps; /* Used for overprinting. Passed from overprint compositor */ + gx_color_index drawn_comps_fill; /* selected by color_is_fill */ + gx_color_index drawn_comps_stroke; + PDF14_OP_FS_STATE op_state; gx_device * pclist_device; bool free_devicen; /* Used to avoid freeing a deviceN parameter from target clist device */ bool sep_device; |