diff options
author | Simon Bünzli <zeniko@gmail.com> | 2014-07-18 15:50:17 +0200 |
---|---|---|
committer | Simon Bünzli <zeniko@gmail.com> | 2014-07-18 15:50:17 +0200 |
commit | 146ad732d5cf8f35876d1600115cbcb210fb7d99 (patch) | |
tree | ea863afbfa3e1e5ce927b81e4c22b71c09e30f37 /source | |
parent | 17c748e6b7ec0426344476efd2945eb7b5d6ca02 (diff) | |
download | mupdf-146ad732d5cf8f35876d1600115cbcb210fb7d99.tar.xz |
report more cases of blending use for pdf_page
pdf_page::transparency is supposed to indicate whether a page uses PDF
transparency features. The checks aren't complete, though, which is
relevant for devices which require additional handling for transparency
(such as SumatraPDF's gdiplus_device).
See https://code.google.com/p/sumatrapdf/issues/detail?id=2107 and
https://code.google.com/p/sumatrapdf/issues/detail?id=2540 for
example documents.
Diffstat (limited to 'source')
-rw-r--r-- | source/pdf/pdf-page.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/source/pdf/pdf-page.c b/source/pdf/pdf-page.c index fe77830f..a6a5699a 100644 --- a/source/pdf/pdf-page.c +++ b/source/pdf/pdf-page.c @@ -273,6 +273,8 @@ static int pdf_xobject_uses_blending(pdf_document *doc, pdf_obj *dict) { pdf_obj *obj = pdf_dict_gets(dict, "Resources"); + if (!strcmp(pdf_to_name(pdf_dict_getp(dict, "Group/S")), "Transparency")) + return 1; return pdf_resources_use_blending(doc, obj); } @@ -497,6 +499,8 @@ pdf_load_page(pdf_document *doc, int number) if (pdf_resources_use_blending(doc, page->resources)) page->transparency = 1; + else if (!strcmp(pdf_to_name(pdf_dict_getp(pageobj, "Group/S")), "Transparency")) + page->transparency = 1; for (annot = page->annots; annot && !page->transparency; annot = annot->next) if (annot->ap && pdf_resources_use_blending(doc, annot->ap->resources)) |