]> www.fi.muni.cz Git - evince.git/commitdiff
:Page): Added thumb object parsing. (Page::display) (Page::displaySlice):
authorRemi Cohen-Scali <rcoscali@cvs.gnome.org>
Tue, 13 Jan 2004 01:21:07 +0000 (01:21 +0000)
committerRémi Cohen-Scali <rcoscali@src.gnome.org>
Tue, 13 Jan 2004 01:21:07 +0000 (01:21 +0000)
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.

pdf/xpdf/Page.cc

index 3f6bc09a68aceb92f3b89b0afbb9162baef39d19..fb7abc026779ad6aecb6987bb3b25e3b1eef08cf 100644 (file)
@@ -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();
   }