[poppler] 3 commits - CMakeLists.txt poppler/Catalog.cc poppler/Catalog.h poppler/Makefile.am poppler/ViewerPreferences.cc poppler/ViewerPreferences.h

Carlos Garcia Campos carlosgc at gnome.org
Tue Mar 29 09:41:02 PDT 2011


Excerpts from Pino Toscano's message of mar mar 29 10:04:05 +0200 2011:
> Alle martedì 29 marzo 2011, Carlos Garcia Campos ha scritto:
> > Excerpts from pino's message of lun mar 28 23:21:07 +0200 2011:
> > >  CMakeLists.txt               |    2
> > >  poppler/Catalog.cc           |   23 ++++++++++
> > >  poppler/Catalog.h            |    4 +
> > >  poppler/Makefile.am          |    2
> > >  poppler/ViewerPreferences.cc |   97
> > >  +++++++++++++++++++++++++++++++++++++++++++
> > >  poppler/ViewerPreferences.h  |   62 +++++++++++++++++++++++++++ 6
> > >  files changed, 190 insertions(+)
> > 
> > I think there should be a way to know whether the key is present in
> > the ViewerPreferences preferences dictionary, so that viewers could
> > follow the prefs only when they are present, and use their own,
> > instead of the default values, when not present.
> > [...]
> > I think we could do someting similar to what we do for annots in
> > Page. In Catalog constructor get the ViewerPreferences object and
> > check it's valid (it's a dict object at
> > least). This way Catalog::getViewerPreferences() already has the
> > viewer prefs dict to create ViewerPreferences object. I think we
> > shouldn't accept a NULL dict in ViewerPreferences() and return NULL
> > in Catalog::getViewerPreferences() when there are no preferences at
> > all, so that viewers know the document doesn't contain any prefs.
> 
> PDF specs say that "If no such dictionary is specified, conforming 
> readers should behave in accordance with their own current user
> preference settings.".
> IMHO that should be read as "if there is no dictionary, follow the user 
> preferences; if there is, read the keys from there, defaulting to the 
> values specified here", which is what I just did now.

Ok. It might be very annoying, though.

> > > +ViewerPreferences *Catalog::getViewerPreferences()
> > > +{
> > > +  if (!viewerPreferences) {
> > > +    Object catDict;
> > > +    Dict *d = NULL;
> > > +
> > > +    xref->getCatalog(&catDict);
> > > +    if (catDict.isDict()) {
> > > +      d = catDict.getDict();
> > > +    } else {
> > > +      error(-1, "Catalog object is wrong type (%s)",
> > > catDict.getTypeName()); +    }
> > > +    viewerPreferences = new ViewerPreferences(d);
> > 
> > It seems you are passing the catalog dict, instead of the
> > ViewerPreferences dict.
> 
> Fixed.
> 

Thanks!
-- 
Carlos Garcia Campos
PGP key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x523E6462
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/poppler/attachments/20110329/acc5468c/attachment-0001.pgp>


More information about the poppler mailing list