diff options
Diffstat (limited to 'Build/source/libs/xpdf/xpdf-src/xpdf/Catalog.h')
-rw-r--r-- | Build/source/libs/xpdf/xpdf-src/xpdf/Catalog.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/Build/source/libs/xpdf/xpdf-src/xpdf/Catalog.h b/Build/source/libs/xpdf/xpdf-src/xpdf/Catalog.h index 803550d7f96..b775ae9b9b8 100644 --- a/Build/source/libs/xpdf/xpdf-src/xpdf/Catalog.h +++ b/Build/source/libs/xpdf/xpdf-src/xpdf/Catalog.h @@ -29,6 +29,7 @@ class PageAttrs; struct Ref; class LinkDest; class PageTreeNode; +class PageLabelNode; class Form; class TextString; @@ -103,10 +104,20 @@ public: Object *getEmbeddedFileStreamRef(int idx); Object *getEmbeddedFileStreamObj(int idx, Object *strObj); + // Return true if the document has page labels. + GBool hasPageLabels() { return pageLabels != NULL; } + // Get the page label for page number [pageNum]. Returns NULL if // the PDF file doesn't have page labels. TextString *getPageLabel(int pageNum); + // Returns the page number corresponding to [pageLabel]. Returns -1 + // if there is no matching page label, or if the document doesn't + // have page labels. + int getPageNumFromPageLabel(TextString *pageLabel); + + Object *getViewerPreferences() { return &viewerPrefs; } + private: PDFDoc *doc; @@ -129,6 +140,8 @@ private: Form *form; // parsed form Object ocProperties; // OCProperties dictionary GList *embeddedFiles; // embedded file list [EmbeddedFile] + GList *pageLabels; // page labels [PageLabelNode] + Object viewerPrefs; // ViewerPreferences object GBool ok; // true if catalog is valid Object *findDestInTree(Object *tree, GString *name, Object *obj); @@ -141,10 +154,13 @@ private: void readFileAttachmentAnnots(Object *pageNodeRef, char *touchedObjs); void readEmbeddedFile(Object *fileSpec, Object *name1); - GBool findPageLabel(Object *node, int pageIndex, - Object *pageLabelObj, int *firstPageIndex); + void readPageLabelTree(Object *root); + void readPageLabelTree2(Object *node); + PageLabelNode *findPageLabel(int pageNum); GString *makeRomanNumeral(int num, GBool uppercase); GString *makeLetterLabel(int num, GBool uppercase); + GBool convertPageLabelToInt(TextString *pageLabel, int prefixLength, + char style, int *n); }; #endif |