From 23458988d0884fdf80de9f01e6c467eac0f96b95 Mon Sep 17 00:00:00 2001 From: Remi Cohen-Scali Date: Tue, 13 Jan 2004 01:21:07 +0000 Subject: :Page): Added thumb object parsing. (Page::display) (Page::displaySlice): 2004-01-13 Remi Cohen-Scali * 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. --- 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(); } -- cgit v0.9.1