summaryrefslogtreecommitdiff
path: root/xps/xpsanalyze.c
diff options
context:
space:
mode:
authorMichael Vrhel <michael.vrhel@artifex.com>2017-01-19 11:44:18 -0800
committerMichael Vrhel <michael.vrhel@artifex.com>2017-01-19 11:44:18 -0800
commit79d6e96a8db2956c8317fd8bdeb8d8db5fd0e212 (patch)
tree9989e41b645d3662dbb8c0dacb99b7afe41e26f2 /xps/xpsanalyze.c
parenta9bd0b6d95b16d594983682ae387922507e70b98 (diff)
downloadghostpdl-79d6e96a8db2956c8317fd8bdeb8d8db5fd0e212.tar.gz
Bug 697489 xps transparency issue
The xps interpreter was pushing transparency groups without pushing the pdf14 device. The problem was that the interpreter was not checking the glyphs in the resource dictionaries. I also optimized the code to stop checking for transparency once it finds transparency.
Diffstat (limited to 'xps/xpsanalyze.c')
-rw-r--r--xps/xpsanalyze.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/xps/xpsanalyze.c b/xps/xpsanalyze.c
index e9d6794ab..f91a8cb3e 100644
--- a/xps/xpsanalyze.c
+++ b/xps/xpsanalyze.c
@@ -22,6 +22,7 @@
#include "ghostxps.h"
static int xps_brush_has_transparency(xps_context_t *ctx, char *base_uri, xps_item_t *root);
+static int xps_glyphs_has_transparency(xps_context_t *ctx, char *base_uri, xps_item_t *root);
static int
xps_remote_resource_dictionary_has_transparency(xps_context_t *ctx, char *base_uri, char *source_att)
@@ -49,6 +50,9 @@ xps_resource_dictionary_has_transparency(xps_context_t *ctx, char *base_uri, xps
!strcmp(xps_tag(node), "ImageBrush"))
if (xps_brush_has_transparency(ctx, base_uri, node))
return 1;
+ if (!strcmp(xps_tag(node), "Glyphs"))
+ if (xps_glyphs_has_transparency(ctx, base_uri, node))
+ return 1;
}
return 0;