diff options
author | Martin Kretzschmar <mkretzschmar@src.gnome.org> | 2004-05-17 19:37:57 (GMT) |
---|---|---|
committer | Martin Kretzschmar <mkretzschmar@src.gnome.org> | 2004-05-17 19:37:57 (GMT) |
commit | 6c85243ff859071be4fd2a3847b0fc2086206d31 (patch) | |
tree | 68b85384564a33061b32d5668c0eff7067a39ffc /pdf/xpdf/Outline.cc | |
parent | af15b57b30fcf442262f3a797d169d6bc3c1a44a (diff) |
Imported Xpdf 3.00 and fixed build.
* ANNOUNCE:
* CHANGES:
* Makefile.am:
* README:
* aconf-win32.h:
* configure.in:
* dj_make.bat:
* doc/pdffonts.1:
* doc/pdffonts.cat:
* doc/pdffonts.hlp:
* doc/pdfimages.1:
* doc/pdfimages.cat:
* doc/pdfimages.hlp:
* doc/pdfinfo.1:
* doc/pdfinfo.cat:
* doc/pdfinfo.hlp:
* doc/pdftopbm.1:
* doc/pdftopbm.cat:
* doc/pdftopbm.hlp:
* doc/pdftops.1:
* doc/pdftops.cat:
* doc/pdftops.hlp:
* doc/pdftotext.1:
* doc/pdftotext.cat:
* doc/pdftotext.hlp:
* doc/xpdf.1:
* doc/xpdf.cat:
* doc/xpdf.hlp:
* doc/xpdfrc.5:
* doc/xpdfrc.cat:
* doc/xpdfrc.hlp:
* fofi/Makefile.in:
* goo/GHash.cc:
* goo/GHash.h:
* ms_make.bat:
* splash/Makefile.in:
* xpdf/DisplayFontTable.h:
* xpdf/ErrorCodes.h:
* xpdf/FTFont.cc:
* xpdf/FTFont.h:
* xpdf/FontFile.cc:
* xpdf/FontFile.h:
* xpdf/Function.h:
* xpdf/GPOutputDev.cc:
* xpdf/Gfx.cc:
* xpdf/Gfx.h:
* xpdf/GfxFont.cc:
* xpdf/GfxFont.h:
* xpdf/GfxState.cc:
* xpdf/GfxState.h:
* xpdf/GlobalParams.cc:
* xpdf/GlobalParams.h:
* xpdf/Makefile.am:
* xpdf/Object.cc:
* xpdf/Object.h:
* xpdf/Outline.cc:
* xpdf/OutputDev.cc:
* xpdf/OutputDev.h:
* xpdf/PBMOutputDev.cc:
* xpdf/PBMOutputDev.h:
* xpdf/PDFDoc.cc:
* xpdf/PDFDoc.h:
* xpdf/PSOutputDev.cc:
* xpdf/PSOutputDev.h:
* xpdf/Page.cc:
* xpdf/Page.h:
* xpdf/Parser.cc:
* xpdf/SFont.cc:
* xpdf/SFont.h:
* xpdf/Stream.cc:
* xpdf/Stream.h:
* xpdf/T1Font.cc:
* xpdf/T1Font.h:
* xpdf/TTFont.cc:
* xpdf/TTFont.h:
* xpdf/TextOutputDev.cc:
* xpdf/TextOutputDev.h:
* xpdf/XOutputDev.cc:
* xpdf/XOutputDev.h:
* xpdf/XPixmapOutputDev.cc:
* xpdf/XPixmapOutputDev.h:
* xpdf/XRef.cc:
* xpdf/XRef.h:
* xpdf/config.h:
* xpdf/gpdf-control.cc:
* xpdf/pdffonts.cc:
* xpdf/pdfimages.cc:
* xpdf/pdfinfo.cc:
* xpdf/pdftopbm.cc:
* xpdf/pdftops.cc:
* xpdf/pdftotext.cc:
* xpdf/tests/Makefile.am:
* xpdf/vms_make.com:
* xpdf/xpdf.cc: Imported Xpdf 3.00 and fixed build.
Diffstat (limited to 'pdf/xpdf/Outline.cc')
-rw-r--r-- | pdf/xpdf/Outline.cc | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/pdf/xpdf/Outline.cc b/pdf/xpdf/Outline.cc index 23efed1..b7e0645 100644 --- a/pdf/xpdf/Outline.cc +++ b/pdf/xpdf/Outline.cc @@ -22,15 +22,17 @@ //------------------------------------------------------------------------ Outline::Outline(Object *outlineObj, XRef *xref) { - Object first; + Object first, last; items = NULL; if (!outlineObj->isDict()) { return; } items = OutlineItem::readItemList(outlineObj->dictLookupNF("First", &first), + outlineObj->dictLookupNF("Last", &last), xref); first.free(); + last.free(); } Outline::~Outline() { @@ -68,6 +70,8 @@ OutlineItem::OutlineItem(Dict *dict, XRef *xrefA) { title[i] = pdfDocEncoding[s->getChar(i) & 0xff]; } } + } else { + titleLen = 0; } obj1.free(); @@ -82,6 +86,7 @@ OutlineItem::OutlineItem(Dict *dict, XRef *xrefA) { obj1.free(); dict->lookupNF("First", &firstRef); + dict->lookupNF("Last", &lastRef); dict->lookupNF("Next", &nextRef); startsOpen = gFalse; @@ -102,17 +107,19 @@ OutlineItem::~OutlineItem() { delete action; } firstRef.free(); + lastRef.free(); nextRef.free(); } -GList *OutlineItem::readItemList(Object *itemRef, XRef *xrefA) { +GList *OutlineItem::readItemList(Object *firstItemRef, Object *lastItemRef, + XRef *xrefA) { GList *items; OutlineItem *item; Object obj; Object *p; items = new GList(); - p = itemRef; + p = firstItemRef; while (p->isRef()) { if (!p->fetch(xrefA, &obj)->isDict()) { obj.free(); @@ -121,6 +128,10 @@ GList *OutlineItem::readItemList(Object *itemRef, XRef *xrefA) { item = new OutlineItem(obj.getDict(), xrefA); obj.free(); items->append(item); + if (p->getRef().num == lastItemRef->getRef().num && + p->getRef().gen == lastItemRef->getRef().gen) { + break; + } p = &item->nextRef; } return items; @@ -128,7 +139,7 @@ GList *OutlineItem::readItemList(Object *itemRef, XRef *xrefA) { void OutlineItem::open() { if (!kids) { - kids = readItemList(&firstRef, xref); + kids = readItemList(&firstRef, &lastRef, xref); } } |