summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-run.c
diff options
context:
space:
mode:
authorMichael Vrhel <michael.vrhel@artifex.com>2017-06-23 12:23:36 -0700
committerRobin Watts <robin.watts@artifex.com>2017-07-17 19:32:06 +0100
commit63713f22ae830142dfe0d3896948ec53c4705ace (patch)
treefe8334e262f4507dc2cd2a3ee6d6239bb2c44b40 /source/pdf/pdf-run.c
parent28bfd69eb4101a2197920da6cbc21f491d8cb288 (diff)
downloadmupdf-63713f22ae830142dfe0d3896948ec53c4705ace.tar.xz
Add colorspace handling to transparency groups
Also force softmasks to be isolated groups.
Diffstat (limited to 'source/pdf/pdf-run.c')
-rw-r--r--source/pdf/pdf-run.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/source/pdf/pdf-run.c b/source/pdf/pdf-run.c
index 14dc4ed0..1d823277 100644
--- a/source/pdf/pdf-run.c
+++ b/source/pdf/pdf-run.c
@@ -51,7 +51,27 @@ pdf_run_page_contents_with_usage(fz_context *ctx, pdf_document *doc, pdf_page *p
contents = pdf_page_contents(ctx, page);
if (page->transparency)
- fz_begin_group(ctx, dev, fz_transform_rect(&mediabox, &local_ctm), 1, 0, 0, 1);
+ {
+ fz_colorspace *colorspace = NULL;
+ pdf_obj *group = pdf_page_group(ctx, page);
+
+ if (group)
+ {
+ pdf_obj *cs = pdf_dict_get(ctx, group, PDF_NAME_CS);
+ if (cs)
+ {
+ fz_try(ctx)
+ {
+ colorspace = pdf_load_colorspace(ctx, cs);
+ }
+ fz_catch(ctx)
+ {
+ colorspace = NULL;
+ }
+ }
+ }
+ fz_begin_group(ctx, dev, fz_transform_rect(&mediabox, &local_ctm), colorspace, 1, 0, 0, 1);
+ }
proc = pdf_new_run_processor(ctx, dev, &local_ctm, usage, NULL, 0);
fz_try(ctx)