diff options
author | Tor Andersson <tor@ghostscript.com> | 2010-09-23 12:06:48 +0000 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2010-09-23 12:06:48 +0000 |
commit | 56e923d0efb8d1975715ed83fee44557eb5ea80f (patch) | |
tree | b35ce98309d71f1980b30485ed3ced5dda6d5bf6 | |
parent | 6c7eea10da1ef029d10c0db52b360d7dce506310 (diff) | |
download | mupdf-56e923d0efb8d1975715ed83fee44557eb5ea80f.tar.xz |
Respect Invisible, Hidden, NoView annotation flags.
-rw-r--r-- | mupdf/pdf_interpret.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mupdf/pdf_interpret.c b/mupdf/pdf_interpret.c index 77aa7465..03e18bcf 100644 --- a/mupdf/pdf_interpret.c +++ b/mupdf/pdf_interpret.c @@ -1492,6 +1492,7 @@ pdf_runpage(pdf_xref *xref, pdf_page *page, fz_device *dev, fz_matrix ctm) fz_error error; pdf_annot *annot; fz_matrix atm; + int flags; if (page->transparency) dev->begingroup(dev->user, @@ -1509,6 +1510,16 @@ pdf_runpage(pdf_xref *xref, pdf_page *page, fz_device *dev, fz_matrix ctm) for (annot = page->annots; annot; annot = annot->next) { + flags = fz_toint(fz_dictgets(annot->obj, "F")); + + /* TODO: NoZoom and NoRotate */ + if (flags & (1 << 0)) /* Invisible */ + continue; + if (flags & (1 << 1)) /* Hidden */ + continue; + if (flags & (1 << 5)) /* NoView */ + continue; + atm = fz_concat(ctm, fz_translate(annot->rect.x0, annot->rect.y0)); csi = pdf_newcsi(xref, dev, atm); error = pdf_runxobject(csi, page->resources, annot->ap); |