]> www.fi.muni.cz Git - evince.git/commitdiff
:Annot): Extended Annot object to read several kind of annotations. Some
authorRemi Cohen-Scali <rcoscali@cvs.gnome.org>
Mon, 12 Jan 2004 19:29:45 +0000 (19:29 +0000)
committerRémi Cohen-Scali <rcoscali@src.gnome.org>
Mon, 12 Jan 2004 19:29:45 +0000 (19:29 +0000)
2004-01-12  Remi Cohen-Scali  <rcoscali@cvs.gnome.org>

* xpdf/Annot.cc (Annot::Annot): Extended Annot
object to read several kind of annotations.
Some more work (in coord with xpdf) is needed...
(Annots::Annots): Same extensions on annotations
collection object.

pdf/xpdf/Annot.cc

index 68373f9b17e53bef5e070e656f29c813876ae558..20fe24bb34b8a40edb052c2dd4c3cd91241e36ad 100644 (file)
 // 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);
@@ -49,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);
@@ -109,18 +112,15 @@ Annots::Annots(XRef *xref, Object *annotsObj) {
     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();
       }