[poppler] 3 commits - poppler/Catalog.cc poppler/Catalog.h
Carlos Garcia Campos
carlosgc at kemper.freedesktop.org
Sat Sep 17 09:39:33 UTC 2016
poppler/Catalog.cc | 75 ++++++++++++++++++++++++++++++++++++++++++++++++-----
poppler/Catalog.h | 20 ++++++++++++++
2 files changed, 88 insertions(+), 7 deletions(-)
New commits:
commit 151715976509075e9b95e0ab86d1fcacb2c1580a
Author: Masamichi Hosoda <trueroad at trueroad.jp>
Date: Sat Aug 20 23:16:33 2016 +0900
Add functions for named destination name in name-dict
Get the number of named destinations in name-dict
int numDests();
Get the i'th named destination name in name-dict
char *getDestsName(int i);
Get the i'th named destination link destination in name-dict
LinkDest *getDestsDest(int i);
diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc
index 312d179..0e37c84 100644
--- a/poppler/Catalog.cc
+++ b/poppler/Catalog.cc
@@ -504,6 +504,44 @@ LinkDest *Catalog::createLinkDest(Object *obj)
return dest;
}
+int Catalog::numDests()
+{
+ Object *obj;
+
+ obj= getDests();
+ if (!obj->isDict()) {
+ return 0;
+ }
+ return obj->dictGetLength();
+}
+
+char *Catalog::getDestsName(int i)
+{
+ Object *obj;
+
+ obj= getDests();
+ if (!obj->isDict()) {
+ return NULL;
+ }
+ return obj->dictGetKey(i);
+}
+
+LinkDest *Catalog::getDestsDest(int i)
+{
+ LinkDest *dest;
+ Object *obj, obj1;
+
+ obj= getDests();
+ if (!obj->isDict()) {
+ return NULL;
+ }
+ obj->dictGetVal(i, &obj1);
+ dest = createLinkDest(&obj1);
+ obj1.free();
+
+ return dest;
+}
+
LinkDest *Catalog::getDestNameTreeDest(int i)
{
LinkDest *dest;
diff --git a/poppler/Catalog.h b/poppler/Catalog.h
index 3236487..81b0e12 100644
--- a/poppler/Catalog.h
+++ b/poppler/Catalog.h
@@ -151,6 +151,15 @@ public:
Object *getDests();
+ // Get the number of named destinations in name-dict
+ int numDests();
+
+ // Get the i'th named destination name in name-dict
+ char *getDestsName(int i);
+
+ // Get the i'th named destination link destination in name-dict
+ LinkDest *getDestsDest(int i);
+
// Get the number of named destinations in name-tree
int numDestNameTree() { return getDestNameTree()->numEntries(); }
commit 99267c0b3f3aed520247dc0a5eb70df04b00df46
Author: Masamichi Hosoda <trueroad at trueroad.jp>
Date: Sat Aug 20 20:40:18 2016 +0900
Add functions for named destination name in name-tree
Get the number of named destinations in name-tree
int Catalog::numDestNameTree();
Get the i'th named destination name in name-tree
GooString *Catalog::getDestNameTreeName(int i);
Get the i'th named destination link destination in name-tree
LinkDest *Catalog::getDestNameTreeDest(int i);
diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc
index 7754e47..312d179 100644
--- a/poppler/Catalog.cc
+++ b/poppler/Catalog.cc
@@ -504,6 +504,19 @@ LinkDest *Catalog::createLinkDest(Object *obj)
return dest;
}
+LinkDest *Catalog::getDestNameTreeDest(int i)
+{
+ LinkDest *dest;
+ Object obj;
+
+ catalogLocker();
+ getDestNameTree()->getValue(i).fetch(xref, &obj);
+ dest = createLinkDest(&obj);
+ obj.free();
+
+ return dest;
+}
+
FileSpec *Catalog::embeddedFile(int i)
{
Object efDict;
diff --git a/poppler/Catalog.h b/poppler/Catalog.h
index c7cce92..3236487 100644
--- a/poppler/Catalog.h
+++ b/poppler/Catalog.h
@@ -151,6 +151,15 @@ public:
Object *getDests();
+ // Get the number of named destinations in name-tree
+ int numDestNameTree() { return getDestNameTree()->numEntries(); }
+
+ // Get the i'th named destination name in name-tree
+ GooString *getDestNameTreeName(int i) { return getDestNameTree()->getName(i); }
+
+ // Get the i'th named destination link destination in name-tree
+ LinkDest *getDestNameTreeDest(int i);
+
// Get the number of embedded files
int numEmbeddedFiles() { return getEmbeddedFileNameTree()->numEntries(); }
commit 09ab87a9faf552b28eb7fe3e8ffd137390be5535
Author: Masamichi Hosoda <trueroad at trueroad.jp>
Date: Sat Aug 20 19:35:27 2016 +0900
Divide Catalog::findDest()
In order to use constructing LinkDest from other functions,
this commit divides Catalog::findDest().
diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc
index a8c96ac..7754e47 100644
--- a/poppler/Catalog.cc
+++ b/poppler/Catalog.cc
@@ -32,6 +32,7 @@
// Copyright (C) 2013 José Aliste <jaliste at src.gnome.org>
// Copyright (C) 2014 Ed Porras <ed at moto-research.com>
// Copyright (C) 2015 Even Rouault <even.rouault at spatialys.com>
+// Copyright (C) 2016 Masamichi Hosoda <trueroad at trueroad.jp>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
@@ -451,7 +452,7 @@ int Catalog::findPage(int num, int gen) {
LinkDest *Catalog::findDest(GooString *name) {
LinkDest *dest;
- Object obj1, obj2;
+ Object obj1;
GBool found;
// try named destination dictionary then name tree
@@ -472,12 +473,22 @@ LinkDest *Catalog::findDest(GooString *name) {
if (!found)
return NULL;
- // construct LinkDest
+ dest = createLinkDest(&obj1);
+ obj1.free();
+
+ return dest;
+}
+
+LinkDest *Catalog::createLinkDest(Object *obj)
+{
+ LinkDest *dest;
+ Object obj2;
+
dest = NULL;
- if (obj1.isArray()) {
- dest = new LinkDest(obj1.getArray());
- } else if (obj1.isDict()) {
- if (obj1.dictLookup("D", &obj2)->isArray())
+ if (obj->isArray()) {
+ dest = new LinkDest(obj->getArray());
+ } else if (obj->isDict()) {
+ if (obj->dictLookup("D", &obj2)->isArray())
dest = new LinkDest(obj2.getArray());
else
error(errSyntaxWarning, -1, "Bad named destination value");
@@ -485,7 +496,6 @@ LinkDest *Catalog::findDest(GooString *name) {
} else {
error(errSyntaxWarning, -1, "Bad named destination value");
}
- obj1.free();
if (dest && !dest->isOk()) {
delete dest;
dest = NULL;
diff --git a/poppler/Catalog.h b/poppler/Catalog.h
index bc9ce20..c7cce92 100644
--- a/poppler/Catalog.h
+++ b/poppler/Catalog.h
@@ -25,6 +25,7 @@
// Copyright (C) 2013 Adrian Perez de Castro <aperez at igalia.com>
// Copyright (C) 2013 Adrian Johnson <ajohnson at redneon.com>
// Copyright (C) 2013 José Aliste <jaliste at src.gnome.org>
+// Copyright (C) 2016 Masamichi Hosoda <trueroad at trueroad.jp>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
@@ -263,6 +264,7 @@ private:
NameTree *getDestNameTree();
NameTree *getEmbeddedFileNameTree();
NameTree *getJSNameTree();
+ LinkDest *createLinkDest(Object *obj);
#if MULTITHREADED
GooMutex mutex;
#endif
More information about the poppler
mailing list