X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2Fxpdf%2FDict.cc;h=dd1517f0ab951b34a28653e6f19e4ec203256a9e;hb=85c46a8011c7fd5e4bda282266006c972ea7606b;hp=94ca386ac044f8e876976ae0f491be06a8493260;hpb=e69624f1874a913c6e0ec289a88a23e731f67be6;p=swftools.git diff --git a/pdf2swf/xpdf/Dict.cc b/pdf2swf/xpdf/Dict.cc index 94ca386..dd1517f 100644 --- a/pdf2swf/xpdf/Dict.cc +++ b/pdf2swf/xpdf/Dict.cc @@ -2,11 +2,13 @@ // // Dict.cc // -// Copyright 1996 Derek B. Noonburg +// Copyright 1996-2003 Glyph & Cog, LLC // //======================================================================== -#ifdef __GNUC__ +#include + +#ifdef USE_GCC_PRAGMAS #pragma implementation #endif @@ -21,7 +23,8 @@ // Dict //------------------------------------------------------------------------ -Dict::Dict() { +Dict::Dict(XRef *xrefA) { + xref = xrefA; entries = NULL; size = length = 0; ref = 1; @@ -38,9 +41,13 @@ Dict::~Dict() { } void Dict::add(char *key, Object *val) { - if (length + 1 > size) { - size += 8; - entries = (DictEntry *)grealloc(entries, size * sizeof(DictEntry)); + if (length == size) { + if (length == 0) { + size = 8; + } else { + size *= 2; + } + entries = (DictEntry *)greallocn(entries, size, sizeof(DictEntry)); } entries[length].key = key; entries[length].val = *val; @@ -66,7 +73,7 @@ GBool Dict::is(char *type) { Object *Dict::lookup(char *key, Object *obj) { DictEntry *e; - return (e = find(key)) ? e->val.fetch(obj) : obj->initNull(); + return (e = find(key)) ? e->val.fetch(xref, obj) : obj->initNull(); } Object *Dict::lookupNF(char *key, Object *obj) { @@ -80,26 +87,9 @@ char *Dict::getKey(int i) { } Object *Dict::getVal(int i, Object *obj) { - return entries[i].val.fetch(obj); + return entries[i].val.fetch(xref, obj); } Object *Dict::getValNF(int i, Object *obj) { return entries[i].val.copy(obj); } - -void Dict::dumpEntries() -{ - int t; - for(t=0;t