Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemi Cohen-Scali <rcoscali@cvs.gnome.org>2004-01-13 01:21:07 (GMT)
committer RĂ©mi Cohen-Scali <rcoscali@src.gnome.org>2004-01-13 01:21:07 (GMT)
commit23458988d0884fdf80de9f01e6c467eac0f96b95 (patch)
tree1b385ab173f752cb59a51d82793972b868813226
parent69ad906d9eb8623a3d280532662a0255056e4669 (diff)
:Page): Added thumb object parsing. (Page::display) (Page::displaySlice):
2004-01-13 Remi Cohen-Scali <rcoscali@cvs.gnome.org> * xpdf/Page.cc (Page::Page): Added thumb object parsing. (Page::display) (Page::displaySlice): Add CB for annotations in Page display. (displaySlice): Added conditional display of annotation in order to avoid them when USE_ANNOTS_VIEW is not defined.
-rw-r--r--pdf/xpdf/Page.cc28
1 files changed, 24 insertions, 4 deletions
diff --git a/pdf/xpdf/Page.cc b/pdf/xpdf/Page.cc
index 3f6bc09..fb7abc0 100644
--- a/pdf/xpdf/Page.cc
+++ b/pdf/xpdf/Page.cc
@@ -199,6 +199,14 @@ Page::Page(XRef *xrefA, int numA, Dict *pageDict, PageAttrs *attrsA) {
goto err1;
}
+ // thumb
+ pageDict->lookupNF("Thumb", &thumb);
+ if (!(thumb.isStream() || thumb.isNull() || thumb.isRef())) {
+ error(-1, "Page thumb object (page %d) is wrong type (%s)",
+ num, thumb.getTypeName());
+ thumb.initNull();
+ }
+
return;
err2:
@@ -217,16 +225,21 @@ Page::~Page() {
void Page::display(OutputDev *out, double dpi, int rotate,
Links *links, Catalog *catalog,
GBool (*abortCheckCbk)(void *data),
- void *abortCheckCbkData) {
+ void *abortCheckCbkData,
+ GBool (*annotDisplayDecideCbk)(Annot *annot, void *user_data),
+ void *annotDisplayDecideCbkData) {
displaySlice(out, dpi, rotate, -1, -1, -1, -1, links, catalog,
- abortCheckCbk, abortCheckCbkData);
+ abortCheckCbk, abortCheckCbkData,
+ annotDisplayDecideCbk, annotDisplayDecideCbkData);
}
void Page::displaySlice(OutputDev *out, double dpi, int rotate,
int sliceX, int sliceY, int sliceW, int sliceH,
Links *links, Catalog *catalog,
GBool (*abortCheckCbk)(void *data),
- void *abortCheckCbkData) {
+ void *abortCheckCbkData,
+ GBool (*annotDisplayDecideCbk)(Annot *annot, void *user_data),
+ void *annotDisplayDecideCbkData) {
#ifndef PDF_PARSER_ONLY
PDFRectangle *mediaBox, *cropBox;
PDFRectangle box;
@@ -330,7 +343,14 @@ void Page::displaySlice(OutputDev *out, double dpi, int rotate,
printf("***** Annotations\n");
}
for (i = 0; i < annotList->getNumAnnots(); ++i) {
- annotList->getAnnot(i)->draw(gfx);
+ Annot *annot = annotList->getAnnot(i);
+ if ((annotDisplayDecideCbk && (*annotDisplayDecideCbk)(annot, annotDisplayDecideCbkData))
+#ifdef USE_ANNOTS_VIEW
+ || !annotDisplayDecideCbk
+#endif
+ )
+ annot->draw(gfx);
+
}
out->dump();
}