]> www.fi.muni.cz Git - evince.git/blobdiff - pdf/xpdf/Annot.cc
Add warnings about unimplemented/unknown link types.
[evince.git] / pdf / xpdf / Annot.cc
index b9c606f4d47c305aee429846167dbee438073daf..42bf8499e0989fb1ff37f12b485c0d74d9a26a66 100644 (file)
@@ -2,15 +2,16 @@
 //
 // Annot.cc
 //
-// Copyright 2000-2002 Glyph & Cog, LLC
+// Copyright 2000-2003 Glyph & Cog, LLC
 //
 //========================================================================
 
-#ifdef __GNUC__
+#include <aconf.h>
+
+#ifdef USE_GCC_PRAGMAS
 #pragma implementation
 #endif
 
-#include <aconf.h>
 #include "gmem.h"
 #include "Object.h"
 #include "Gfx.h"
 // Annot
 //------------------------------------------------------------------------
 
-Annot::Annot(XRef *xrefA, Dict *dict) {
+Annot::Annot(XRef *xrefA, Dict *dictA) {
   Object apObj, asObj, obj1, obj2;
   double t;
 
   ok = gFalse;
   xref = xrefA;
+  dict = dictA;
+  dict->incRef(); 
 
-  if (dict->lookup("AP", &apObj)->isDict()) {
-    if (dict->lookup("AS", &asObj)->isName()) {
+  dictA->lookup("Subtype", &subtype); 
+  if (dictA->lookup("AP", &apObj)->isDict()) {
+    if (dictA->lookup("AS", &asObj)->isName()) {
       if (apObj.dictLookup("N", &obj1)->isDict()) {
        if (obj1.dictLookupNF(asObj.getName(), &obj2)->isRef()) {
          obj2.copy(&appearance);
@@ -48,7 +52,7 @@ Annot::Annot(XRef *xrefA, Dict *dict) {
   }
   apObj.free();
 
-  if (dict->lookup("Rect", &obj1)->isArray() &&
+  if (dictA->lookup("Rect", &obj1)->isArray() &&
       obj1.arrayGetLength() == 4) {
     //~ should check object types here
     obj1.arrayGet(0, &obj2);
@@ -96,7 +100,7 @@ void Annot::draw(Gfx *gfx) {
 
 Annots::Annots(XRef *xref, Object *annotsObj) {
   Annot *annot;
-  Object obj1, obj2;
+  Object obj1;
   int size;
   int i;
 
@@ -107,21 +111,16 @@ Annots::Annots(XRef *xref, Object *annotsObj) {
   if (annotsObj->isArray()) {
     for (i = 0; i < annotsObj->arrayGetLength(); ++i) {
       if (annotsObj->arrayGet(i, &obj1)->isDict()) {
-       obj1.dictLookup("Subtype", &obj2);
-       if (obj2.isName("Widget") ||
-           obj2.isName("Stamp")) {
-         annot = new Annot(xref, obj1.getDict());
-         if (annot->isOk()) {
-           if (nAnnots >= size) {
-             size += 16;
-             annots = (Annot **)grealloc(annots, size * sizeof(Annot *));
-           }
-           annots[nAnnots++] = annot;
-         } else {
-           delete annot;
+       annot = new Annot(xref, obj1.getDict());
+       if (annot->isOk()) {
+         if (nAnnots >= size) {
+           size += 16;
+           annots = (Annot **)grealloc(annots, size * sizeof(Annot *));
          }
+         annots[nAnnots++] = annot;
+       } else {
+         delete annot;
        }
-       obj2.free();
       }
       obj1.free();
     }