summaryrefslogtreecommitdiff
path: root/base/gdevp14.h
diff options
context:
space:
mode:
authorMichael Vrhel <michael.vrhel@artifex.com>2020-01-11 12:14:48 -0800
committerMichael Vrhel <michael.vrhel@artifex.com>2020-01-11 12:14:48 -0800
commit05c41c0dedaa512419f15798cbc3da92b6a90bbc (patch)
treeb021f4d5219d5f6762770e430339ffad06f9a86d /base/gdevp14.h
parent5faf010d8e043d77ff10f3deee466e9fb2dc7b7e (diff)
downloadghostpdl-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.h15
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;