]> git.pld-linux.org Git - packages/poppler.git/commitdiff
- obsolete
authorJakub Bogusz <qboosh@pld-linux.org>
Wed, 1 Mar 2006 11:29:03 +0000 (11:29 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    poppler-cvs.patch -> 1.2

poppler-cvs.patch [deleted file]

diff --git a/poppler-cvs.patch b/poppler-cvs.patch
deleted file mode 100644 (file)
index 90219e4..0000000
+++ /dev/null
@@ -1,7095 +0,0 @@
-diff -Nur poppler.0_5_0/ChangeLog poppler.HEAD/ChangeLog
---- poppler.0_5_0/ChangeLog    2006-01-11 17:52:58.000000000 +0100
-+++ poppler.HEAD/ChangeLog     2006-02-23 23:26:05.000000000 +0100
-@@ -1,3 +1,240 @@
-+2006-02-23  Albert Astals Cid  <aacid@kde.org>
-+
-+      * utils/Makefile.am: Do not build pdftoppm when SplashOutputDev is
-+      disabled as that does not work
-+
-+2006-02-18  Jeff Muizelaar  <jeff@infidigm.net>
-+
-+      * poppler/CairoOutputDev.cc:
-+      * poppler/CairoOutputDev.h:
-+      * poppler/GfxState.cc:
-+      * poppler/GfxState.h: Add support for drawSoftMaskedImage to
-+      CairoOutputDev. Ugly but works.
-+
-+2006-02-16  Jeff Muizelaar  <jeff@infidigm.net>
-+
-+      * poppler/CairoOutputDev.cc: Work around cairo bug when scaling
-+      1x1 bitmaps. Fixes #3387. Also gives a performance improvement.
-+
-+2006-02-16  Albert Astals Cid  <aacid@kde.org>
-+
-+      * qt4/src/Makefile.am:
-+      * qt/Makefile.am:
-+      * poppler/Makefile.am:
-+      * glib/Makefile.am: Update soname as we are not really compatible
-+      anymore with previous releases that had soname 0.0.0
-+
-+2006-02-13  Albert Astals Cid  <aacid@kde.org>
-+
-+      * poppler/ArthurOutputDev.cc: Make it compile after changing code so
-+      we did not pass files to freetype but buffers
-+
-+2006-02-13  Albert Astals Cid  <aacid@kde.org>
-+
-+      * poppler/PSOutputDev.cc: Commit setupExternalCIDTrueTypeFont patch
-+      kpdf got from Takashi Iwai (SuSe) a long time ago
-+
-+2006-02-06  Albert Astals Cid  <aacid@kde.org>
-+
-+      * configure.ac:
-+      * goo/FixedPoint.h:
-+      * splash/Splash.cc:
-+      * splash/SplashTypes.h: Various fixes from Frank Meerkötter to enable
-+      fixedpoint arithmetic
-+
-+2006-02-06  Albert Astals Cid  <aacid@kde.org>
-+      
-+      * poppler/Annot.cc: Fix small leaks
-+      * poppler/JBIG2Stream.cc: Remove check improving as really did not
-+      improve anything
-+      
-+2006-02-05  Albert Astals Cid  <aacid@kde.org>
-+
-+      * poppler/Gfx.cc: Fix small leak
-+      * poppler/GfxFont.cc: I needed that guard in kpdf to fix a crash and
-+      it surely does not hurt
-+      * poppler/JBIG2Stream.cc: Improve check (comes from kpdf)
-+      * poppler/SplashOutputDev.cc: Unneeded var--
-+
-+2006-02-04  Jeff Muizelaar  <jeff@infidigm.net>
-+
-+      * poppler/Gfx.cc:
-+      * poppler/OutputDev.cc:
-+      * poppler/OutputDev.h: Let output devices know about pdf grouping
-+      operators.
-+      Patch by Thorkild Stray.
-+
-+2006-02-04  Jeff Muizelaar  <jeff@infidigm.net>
-+
-+      * poppler/GlobalParams.cc: Check all fonts returned by fontconfig.
-+      Discard the ones that are not truetype or type1. Fixes #5758.
-+      Patch by Ed Catmur.
-+
-+2006-02-04  Albert Astals Cid  <aacid@kde.org>
-+
-+      * utils/Makefile.am:
-+      * utils/pdftoppm.cc: Actually create pdftoppm patch by Stefan
-+      Schweizer
-+      * utils/pdf2xml.dtd: Added a DTD of the xml pdftohtml creates patch by
-+      Stefan Schweizer
-+      * poppler/SplashOutputDev.cc: Remove bug from "do not use an external
-+      file to pass fonts to Freetype" patch, patch by Stefan Schweizer
-+              
-+
-+2006-02-02  Albert Astals Cid  <aacid@kde.org>
-+
-+      * splash/SplashXPathScanner.cc: CVE-2006-0301 fix by Derek (xpdf man
-+      itslef) got though Dirk Mueller of KDE security team
-+
-+2006-02-02  Albert Astals Cid  <aacid@kde.org>
-+
-+      * fofi/FoFiTrueType.cc:
-+      * fofi/FoFiTrueType.h:
-+      * fofi/FoFiType1C.h:
-+      * goo/gfile.cc:
-+      * poppler/GfxFont.cc:
-+      * poppler/GfxFont.h:
-+      * poppler/GlobalParams.cc:
-+      * poppler/GlobalParams.h:
-+      * poppler/SplashOutputDev.cc:
-+      * splash/SplashFTFontEngine.cc:
-+      * splash/SplashFTFontEngine.h:
-+      * splash/SplashFTFontFile.cc:
-+      * splash/SplashFTFontFile.h:
-+      * splash/SplashFontEngine.cc:
-+      * splash/SplashFontEngine.h:
-+      * splash/SplashFontFile.cc:
-+      * splash/SplashFontFile.h:
-+      * splash/SplashT1FontEngine.cc:
-+      * splash/SplashT1FontFile.cc:
-+      * splash/SplashT1FontFile.h: Merge patch to not use external file
-+        when passing the font to Freetype, original patch by Takashi Iwai
-+        adapted by me to kpdf rediffed by Stefan Schweizer against poppler
-+        cvs
-+
-+2006-01-31  Jeff Muizelaar  <jeff@infidigm.net>
-+
-+      * poppler/GlobalParams.cc (GlobalParams::getDisplayFont):
-+      Allow ttc fonts to be used.
-+
-+2006-01-28  Jeff Muizelaar  <jeff@infidigm.net>
-+
-+      * glib/poppler-attachment.h: fix compile by adding <time.h> include.
-+      Acked-by: Jonathan Blanford <jrb@redhat.com>
-+
-+2006-01-26  Kristian Høgsberg  <krh@redhat.com>
-+
-+      * poppler/CairoOutputDev.cc: Patch from Christian Krause; handle
-+      0-width lines (#5545).
-+
-+Tue Jan 24 01:19:40 2006  Jonathan Blandford  <jrb@redhat.com>
-+
-+      * glib/Makefile.am:
-+      * glib/poppler-attachment.cc:
-+      * glib/poppler-attachment.h:
-+      * glib/poppler-document.cc:
-+      * glib/poppler-document.h:
-+      * glib/poppler-page.cc:
-+      * glib/poppler-private.h:
-+      * glib/poppler.h:
-+      * glib/test-poppler-glib.c:
-+      * glib/reference/tmpl/poppler-enums.sgml:
-+      * glib/reference/tmpl/poppler-unused.sgml: glib bindings for the
-+      embedded file support.  It doesn't support mtime and ctime yet,
-+      but the rest works.
-+
-+2006-01-23  Kristian Høgsberg  <krh@redhat.com>
-+
-+      * configure.ac:
-+      * poppler/GlobalParams.cc:
-+      * poppler/poppler-config.h.in:
-+      * utils/pdftohtml.cc:
-+      * utils/pdftops.cc: Respect command line paper size settings (#5641).
-+      Drop the built-in paper sizes.
-+
-+2006-01-23  Kristian Høgsberg  <krh@redhat.com>
-+
-+      * glib/test-poppler-glib.c (print_document_info, print_index):
-+      Move variable declarations to top (#5692).
-+
-+      * utils/*.cc: Move config.h #include to top of #include's (#5693).
-+
-+      * splash/SplashFTFont.cc: Don't use deprecated freetype include
-+      files.
-+
-+2006-01-21  Jeff Muizelaar  <jeff@infidigm.net>
-+
-+      * TODO: Add my todo list.
-+
-+2006-01-18  Albert Astals Cid  <aacid@kde.org>
-+
-+      * glib/poppler-action.cc:
-+      * glib/poppler-document.cc:
-+      * poppler/Annot.cc:
-+      * poppler/Catalog.cc:
-+      * poppler/Catalog.h:
-+      * poppler/Dict.cc:
-+      * poppler/Dict.h:
-+      * poppler/FontInfo.cc:
-+      * poppler/Function.cc:
-+      * poppler/Gfx.cc:
-+      * poppler/GfxFont.cc:
-+      * poppler/GfxState.cc:
-+      * poppler/Link.cc:
-+      * poppler/Link.h:
-+      * poppler/Makefile.am:
-+      * poppler/Object.h:
-+      * poppler/Outline.cc:
-+      * poppler/PDFDoc.cc:
-+      * poppler/PDFDoc.h:
-+      * poppler/PSOutputDev.cc:
-+      * poppler/Page.cc:
-+      * poppler/PageLabelInfo.cc:
-+      * poppler/Parser.cc:
-+      * poppler/SecurityHandler.cc:
-+      * poppler/Stream.cc:
-+      * poppler/XRef.cc:
-+      * qt/poppler-document.cc:
-+      * qt/poppler-page-transition.cc:
-+      * qt4/src/Makefile.am:
-+      * qt4/src/poppler-document.cc:
-+      * qt4/src/poppler-private.h:
-+      * qt4/src/poppler-qt4.h:
-+      * qt4/tests/Makefile.am:
-+      * utils/HtmlOutputDev.cc:
-+      * utils/pdffonts.cc:
-+      * utils/pdfinfo.cc:
-+      * utils/pdftohtml.cc:
-+      * utils/pdftotext.cc: Brad patch for embedded document extraction,
-+      only has Qt4 bindings for now, needs Qt3 and glib work
-+
-+2006-01-18  Albert Astals Cid  <aacid@kde.org>
-+
-+      * qt/poppler-page-transition.h:
-+      * qt4/src/Doxyfile: Add some more documentation to PageTransition,
-+      patch by Stefan Kebekus
-+
-+2006-01-18  Albert Astals Cid  <aacid@kde.org>
-+
-+      * poppler/CharCodeToUnicode.cc: Fix check for length that was not
-+      having into account that there could be \n or \r in tokens an that
-+      those do not have to be took into account. Fixes
-+      http://bugs.kde.org/show_bug.cgi?id=120310
-+
-+2006-01-17  Albert Astals Cid  <aacid@kde.org>
-+
-+      * poppler/Lexer.cc:
-+      * poppler/Lexer.h:
-+      * poppler/Parser.cc:
-+      * poppler/Parser.h:
-+      * poppler/XRef.cc:
-+      * poppler/XRef.h: When doing the parsing check with XREF we did not
-+      grow too much. Fixes serialata10a.pdf
-+
-+2006-01-12  Jeff Muizelaar  <jeff@infidigm.net>
-+
-+      * poppler/GlobalParams.cc: Make buildFcPattern() static.
-+
- 2006-01-11  Kristian Høgsberg  <krh@redhat.com>
-       * poppler/JBIG2Stream.cc:
-diff -Nur poppler.0_5_0/configure.ac poppler.HEAD/configure.ac
---- poppler.0_5_0/configure.ac 2006-01-06 11:05:58.000000000 +0100
-+++ poppler.HEAD/configure.ac  2006-02-06 21:49:21.000000000 +0100
-@@ -17,7 +17,6 @@
- AC_CHECK_FUNC(gettimeofday, AC_DEFINE(HAVE_GETTIMEOFDAY, 1, [Defines if gettimeofday is available on your system]))
- dnl Enable these unconditionally.
--AC_DEFINE([A4_PAPER], [1], [Default to A4 paper.])
- AC_DEFINE([OPI_SUPPORT], [1], [Generate OPI comments in PS output.])
- AC_DEFINE([MULTITHREADED], [1], [Enable multithreading support.])
- AC_DEFINE([TEXTOUT_WORD_LIST], [1], [Enable word list support.])
-@@ -32,7 +31,7 @@
- AC_ARG_ENABLE(fixedpoint,
- [  --enable-fixedpoint     use fixed point (instead of floating point) arithmetic],
--AC_DEFINE(USE_FIXEDPOINT, [], [Use fixed point arithmetic]))
-+AC_DEFINE(USE_FIXEDPOINT, [1], [Use fixed point arithmetic]))
- dnl ##### Path to xpdfrc.
- dnl This ugly kludge to get the sysconfdir path is needed because
-@@ -243,19 +242,13 @@
- AM_CONDITIONAL(BUILD_POPPLER_QT4, test x$enable_poppler_qt4 = xyes)
- if test x$enable_poppler_qt4 = xyes; then
--  POPPLER_FIND_QT4TEST(POPPLER_QTTEST)
-+  POPPLER_FIND_QT4TEST(POPPLER_QTTEST,
-+                      [enable_poppler_qt4testlib="yes"],
-+                      [enable_poppler_qt4testlib="no"])
-   AC_SUBST(POPPLER_QTTEST_CXXFLAGS)
-   AC_SUBST(POPPLER_QTTEST_LIBS)
--fi
--
--if test x$have_qt4testlib = xno ; then
--    AC_MSG_WARN([QtTestLib libraries not found])
--fi
--
--if test x$have_qt4testlib = xyes; then
--    enable_poppler_qt4testlib="yes"
- else
--    enable_poppler_qt4testlib="no"
-+  enable_poppler_qt4testlib="no"
- fi
- AM_CONDITIONAL(BUILD_POPPLER_QT4TESTS, test x$enable_poppler_qt4testlib = xyes)
-diff -Nur poppler.0_5_0/fofi/FoFiTrueType.cc poppler.HEAD/fofi/FoFiTrueType.cc
---- poppler.0_5_0/fofi/FoFiTrueType.cc 2005-09-14 23:20:36.000000000 +0200
-+++ poppler.HEAD/fofi/FoFiTrueType.cc  2006-02-02 23:50:01.000000000 +0100
-@@ -241,10 +241,10 @@
- // FoFiTrueType
- //------------------------------------------------------------------------
--FoFiTrueType *FoFiTrueType::make(char *fileA, int lenA) {
-+FoFiTrueType *FoFiTrueType::make(char *fileA, int lenA, int faceIndexA) {
-   FoFiTrueType *ff;
--  ff = new FoFiTrueType(fileA, lenA, gFalse);
-+  ff = new FoFiTrueType(fileA, lenA, gFalse, faceIndexA);
-   if (!ff->parsedOk) {
-     delete ff;
-     return NULL;
-@@ -252,7 +252,7 @@
-   return ff;
- }
--FoFiTrueType *FoFiTrueType::load(char *fileName) {
-+FoFiTrueType *FoFiTrueType::load(char *fileName, int faceIndexA) {
-   FoFiTrueType *ff;
-   char *fileA;
-   int lenA;
-@@ -260,7 +260,7 @@
-   if (!(fileA = FoFiBase::readFile(fileName, &lenA))) {
-     return NULL;
-   }
--  ff = new FoFiTrueType(fileA, lenA, gTrue);
-+  ff = new FoFiTrueType(fileA, lenA, gTrue, faceIndexA);
-   if (!ff->parsedOk) {
-     delete ff;
-     return NULL;
-@@ -268,7 +268,7 @@
-   return ff;
- }
--FoFiTrueType::FoFiTrueType(char *fileA, int lenA, GBool freeFileDataA):
-+FoFiTrueType::FoFiTrueType(char *fileA, int lenA, GBool freeFileDataA, int faceIndexA):
-   FoFiBase(fileA, lenA, freeFileDataA)
- {
-   tables = NULL;
-@@ -277,6 +277,7 @@
-   nCmaps = 0;
-   nameToGID = NULL;
-   parsedOk = gFalse;
-+  faceIndex = faceIndexA;
-   parse();
- }
-@@ -1535,9 +1536,12 @@
-   return checksum;
- }
-+#define toTag(a,b,c,d) (((unsigned int)(a)<<24) | ((unsigned int)(b)<<16) | ((unsigned int)(c)<<8) | (d))
-+
- void FoFiTrueType::parse() {
-   Guint topTag;
-   int pos, i, j;
-+  unsigned int head;
-   parsedOk = gTrue;
-@@ -1556,12 +1560,37 @@
-   }
-   // read the table directory
--  nTables = getU16BE(pos + 4, &parsedOk);
-+  head = getU32BE(pos, &parsedOk);
-+  if (! parsedOk)
-+    return;
-+  if (head == toTag('t','t','c','f')) {
-+    /* TTC font */
-+    unsigned int tableDir;
-+    int dircount;
-+
-+    dircount = getU32BE(8, &parsedOk);
-+    if (!parsedOk)
-+      return;
-+    if (! dircount) {
-+      parsedOk = gFalse;
-+      return;
-+    }
-+
-+    if (faceIndex >= dircount)
-+      faceIndex = 0;
-+    pos = getU32BE(12 + faceIndex * 4, &parsedOk);
-+    if (! parsedOk)
-+      return;
-+  }
-+
-+  pos += 4;
-+  nTables = getU16BE(pos, &parsedOk);
-   if (!parsedOk) {
-     return;
-   }
-+
-+  pos += 8;
-   tables = (TrueTypeTable *)gmallocn(nTables, sizeof(TrueTypeTable));
--  pos += 12;
-   for (i = 0; i < nTables; ++i) {
-     tables[i].tag = getU32BE(pos, &parsedOk);
-     tables[i].checksum = getU32BE(pos + 4, &parsedOk);
-diff -Nur poppler.0_5_0/fofi/FoFiTrueType.h poppler.HEAD/fofi/FoFiTrueType.h
---- poppler.0_5_0/fofi/FoFiTrueType.h  2005-09-14 23:20:36.000000000 +0200
-+++ poppler.HEAD/fofi/FoFiTrueType.h   2006-02-02 23:50:01.000000000 +0100
-@@ -29,11 +29,12 @@
- public:
-   // Create a FoFiTrueType object from a memory buffer.
--  static FoFiTrueType *make(char *fileA, int lenA);
-+  static FoFiTrueType *make(char *fileA, int lenA, int faceIndexA=0);
-   // Create a FoFiTrueType object from a file on disk.
--  static FoFiTrueType *load(char *fileName);
-+  static FoFiTrueType *load(char *fileName, int faceIndexA=0);
-+  FoFiTrueType(char *fileA, int lenA, GBool freeFileDataA, int faceIndexA=0);
-   virtual ~FoFiTrueType();
-   // Return the number of cmaps defined by this font.
-@@ -104,7 +105,6 @@
- private:
--  FoFiTrueType(char *fileA, int lenA, GBool freeFileDataA);
-   void cvtEncoding(char **encoding,
-                  FoFiOutputFunc outputFunc,
-                  void *outputStream);
-@@ -133,6 +133,7 @@
-   GooHash *nameToGID;
-   GBool parsedOk;
-+  int faceIndex;
- };
- #endif
-diff -Nur poppler.0_5_0/fofi/FoFiType1C.h poppler.HEAD/fofi/FoFiType1C.h
---- poppler.0_5_0/fofi/FoFiType1C.h    2005-09-14 23:20:36.000000000 +0200
-+++ poppler.HEAD/fofi/FoFiType1C.h     2006-02-02 23:50:01.000000000 +0100
-@@ -138,6 +138,7 @@
-   // Create a FoFiType1C object from a file on disk.
-   static FoFiType1C *load(char *fileName);
-+  FoFiType1C(char *fileA, int lenA, GBool freeFileDataA);
-   virtual ~FoFiType1C();
-   // Return the font name.
-@@ -173,7 +174,6 @@
- private:
--  FoFiType1C(char *fileA, int lenA, GBool freeFileDataA);
-   void eexecCvtGlyph(Type1CEexecBuf *eb, char *glyphName,
-                    int offset, int nBytes,
-                    Type1CIndex *subrIdx,
-diff -Nur poppler.0_5_0/glib/Makefile.am poppler.HEAD/glib/Makefile.am
---- poppler.0_5_0/glib/Makefile.am     2006-01-02 01:06:46.000000000 +0100
-+++ poppler.HEAD/glib/Makefile.am      2006-02-16 20:28:54.000000000 +0100
-@@ -58,6 +58,7 @@
-       poppler-action.h                        \
-       poppler-document.h                      \
-       poppler-page.h                          \
-+      poppler-attachment.h                    \
-       poppler.h
- poppler_glib_includedir = $(includedir)/poppler/glib
-@@ -72,6 +73,7 @@
-       poppler-action.cc                       \
-       poppler-document.cc                     \
-       poppler-page.cc                         \
-+      poppler-attachment.cc                   \
-       poppler.cc                              \
-       poppler-private.h
-@@ -81,6 +83,8 @@
-       $(FREETYPE_LIBS)                        \
-       $(cairo_libs)
-+libpoppler_glib_la_LDFLAGS = -version-info 1:0:0
-+
- noinst_PROGRAMS = test-poppler-glib
- test_poppler_glib_SOURCES =                   \
-diff -Nur poppler.0_5_0/glib/poppler-action.cc poppler.HEAD/glib/poppler-action.cc
---- poppler.0_5_0/glib/poppler-action.cc       2005-12-31 03:10:33.000000000 +0100
-+++ poppler.HEAD/glib/poppler-action.cc        2006-01-18 23:32:13.000000000 +0100
-@@ -182,7 +182,7 @@
-                LinkGoTo        *link)
- {
-       LinkDest *link_dest;
--      GooString *named_dest;
-+      UGooString *named_dest;
-       /* Return if it isn't OK */
-       if (! link->isOk ()) {
-diff -Nur poppler.0_5_0/glib/poppler-attachment.cc poppler.HEAD/glib/poppler-attachment.cc
---- poppler.0_5_0/glib/poppler-attachment.cc   1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/glib/poppler-attachment.cc    2006-01-24 07:21:39.000000000 +0100
-@@ -0,0 +1,223 @@
-+/* poppler-attachment.cc: glib wrapper for poppler
-+ * Copyright (C) 2006, Red Hat, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+#include "config.h"
-+#include <errno.h>
-+#include <glib/gstdio.h>
-+
-+#include "poppler.h"
-+#include "poppler-private.h"
-+#include "poppler-attachment.h"
-+
-+/* FIXME: We need to add gettext support sometime */
-+#define _(x) (x)
-+
-+typedef struct _PopplerAttachmentPrivate PopplerAttachmentPrivate;
-+struct _PopplerAttachmentPrivate
-+{
-+  Object obj_stream;
-+};
-+
-+#define POPPLER_ATTACHMENT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), POPPLER_TYPE_ATTACHMENT, PopplerAttachmentPrivate))
-+
-+static void poppler_attachment_finalize (GObject *obj);
-+
-+G_DEFINE_TYPE (PopplerAttachment, poppler_attachment, G_TYPE_OBJECT);
-+
-+static void
-+poppler_attachment_init (PopplerAttachment *attachment)
-+{
-+
-+}
-+
-+static void
-+poppler_attachment_class_init (PopplerAttachmentClass *klass)
-+{
-+  G_OBJECT_CLASS (klass)->finalize = poppler_attachment_finalize;
-+  g_type_class_add_private (klass, sizeof (PopplerAttachmentPrivate));
-+}
-+
-+static void
-+poppler_attachment_finalize (GObject *obj)
-+{
-+  PopplerAttachment *attachment;
-+
-+  attachment = (PopplerAttachment *) obj;
-+  POPPLER_ATTACHMENT_GET_PRIVATE (attachment)->obj_stream.free();
-+}
-+
-+/* Public functions */
-+
-+PopplerAttachment *
-+_poppler_attachment_new (PopplerDocument *document,
-+                       EmbFile         *emb_file)
-+{
-+  PopplerAttachment *attachment;
-+
-+  g_assert (document != NULL);
-+  g_assert (emb_file != NULL);
-+
-+  attachment = (PopplerAttachment *) g_object_new (POPPLER_TYPE_ATTACHMENT, NULL);
-+  
-+  if (emb_file->name ())
-+    attachment->name = g_strdup (emb_file->name ()->getCString ());
-+  if (emb_file->description ())
-+    attachment->description = g_strdup (emb_file->description ()->getCString ());
-+
-+  emb_file->streamObject().copy(&POPPLER_ATTACHMENT_GET_PRIVATE (attachment)->obj_stream);
-+
-+  return attachment;
-+}
-+
-+static gboolean
-+save_helper (const gchar  *buf,
-+           gsize         count,
-+           gpointer      data,
-+           GError      **error)
-+{
-+  FILE *f = (FILE *) data;
-+  gsize n;
-+
-+  n = fwrite (buf, 1, count, f);
-+  if (n != count)
-+    {
-+      g_set_error (error,
-+                 G_FILE_ERROR,
-+                 g_file_error_from_errno (errno),
-+                 _("Error writing to image file: %s"),
-+                 g_strerror (errno));
-+      return FALSE;
-+    }
-+
-+  return TRUE;
-+}
-+
-+/**
-+ * poppler_attachment_save:
-+ * @attachment: A #PopplerAttachment.
-+ * @filename: name of file to save
-+ * @error: return location for error, or %NULL.
-+ * 
-+ * Saves @attachment to a file indicated by @filename.  If @error is set, %FALSE
-+ * will be returned. Possible errors include those in the #G_FILE_ERROR domain
-+ * and whatever the save function generates.
-+ * 
-+ * Return value: %TRUE, if the file successfully saved
-+ **/
-+gboolean
-+poppler_attachment_save (PopplerAttachment  *attachment,
-+                       const char         *filename,
-+                       GError            **error)
-+{
-+  gboolean result;
-+  FILE *f;
-+  
-+  g_return_val_if_fail (POPPLER_IS_ATTACHMENT (attachment), FALSE);
-+
-+  f = g_fopen (filename, "wb");
-+
-+  if (f == NULL)
-+    {
-+      gchar *display_name = g_filename_display_name (filename);
-+      g_set_error (error,
-+                 G_FILE_ERROR,
-+                 g_file_error_from_errno (errno),
-+                 _("Failed to open '%s' for writing: %s"),
-+                 display_name,
-+                 g_strerror (errno));
-+      g_free (display_name);
-+      return FALSE;
-+    }
-+
-+  result = poppler_attachment_save_to_callback (attachment, save_helper, f, error);
-+
-+  if (fclose (f) < 0)
-+    {
-+      gchar *display_name = g_filename_display_name (filename);
-+      g_set_error (error,
-+                 G_FILE_ERROR,
-+                 g_file_error_from_errno (errno),
-+                 _("Failed to close '%s', all data may not have been saved: %s"),
-+                 display_name,
-+                 g_strerror (errno));
-+      g_free (display_name);
-+      return FALSE;
-+    }
-+
-+  return TRUE;
-+}
-+
-+#define BUF_SIZE 1024
-+
-+/**
-+ * poppler_attachment_save_to_callback:
-+ * @attachment: A #GdkPixbuf.
-+ * @save_func: a function that is called to save each block of data that the save routine generates.
-+ * @user_data: user data to pass to the save function.
-+ * @error: return location for error, or %NULL.
-+ * 
-+ * Saves @attachment by feeding the produced data to @save_func. Can be used
-+ * when you want to store the attachment to something other than a file, such as
-+ * an in-memory buffer or a socket. If @error is set, %FALSE will be
-+ * returned. Possible errors include those in the #G_FILE_ERROR domain and
-+ * whatever the save function generates.
-+ * 
-+ * Return value: %TRUE, if the save successfully completed
-+ **/
-+gboolean
-+poppler_attachment_save_to_callback (PopplerAttachment          *attachment,
-+                                   PopplerAttachmentSaveFunc   save_func,
-+                                   gpointer                    user_data,
-+                                   GError                    **error)
-+{
-+  Stream *stream;
-+  gchar buf[BUF_SIZE]; 
-+  int i;
-+  gboolean eof_reached = FALSE;
-+
-+  g_return_val_if_fail (POPPLER_IS_ATTACHMENT (attachment), FALSE);
-+
-+  stream = POPPLER_ATTACHMENT_GET_PRIVATE (attachment)->obj_stream.getStream();
-+  stream->reset();
-+
-+  do
-+    {
-+      int data;
-+
-+      for (i = 0; i < BUF_SIZE; i++)
-+      {
-+        data = stream->getChar ();
-+        if (data == EOF)
-+          {
-+            eof_reached = TRUE;
-+            break;
-+          }
-+        buf[i] = data;
-+      }
-+
-+      if (i > 0)
-+      {
-+        if (! (save_func) (buf, i, user_data, error))
-+          return FALSE;
-+      }
-+    }
-+  while (! eof_reached);
-+
-+
-+  return TRUE;
-+}
-diff -Nur poppler.0_5_0/glib/poppler-attachment.h poppler.HEAD/glib/poppler-attachment.h
---- poppler.0_5_0/glib/poppler-attachment.h    1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/glib/poppler-attachment.h     2006-01-29 06:16:31.000000000 +0100
-@@ -0,0 +1,68 @@
-+/* poppler-attachment.h: glib interface to poppler
-+ * Copyright (C) 2004, Red Hat, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+#ifndef __POPPLER_ATTACHMENT_H__
-+#define __POPPLER_ATTACHMENT_H__
-+
-+#include <time.h>
-+#include <glib-object.h>
-+
-+#include "poppler.h"
-+
-+G_BEGIN_DECLS
-+
-+
-+#define POPPLER_TYPE_ATTACHMENT             (poppler_attachment_get_type ())
-+#define POPPLER_ATTACHMENT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), POPPLER_TYPE_ATTACHMENT, PopplerAttachment))
-+#define POPPLER_IS_ATTACHMENT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), POPPLER_TYPE_ATTACHMENT))
-+
-+
-+typedef gboolean (*PopplerAttachmentSaveFunc) (const gchar  *buf,
-+                                             gsize         count,
-+                                             gpointer      data,
-+                                             GError      **error);
-+
-+typedef struct _PopplerAttachment
-+{
-+  GObject parent;
-+
-+  const char *name;
-+  const char *description;
-+  time_t mtime;
-+  time_t ctime;
-+} PopplerAttachment;
-+
-+typedef struct _PopplerAttachmentClass
-+{
-+  GObjectClass parent_class;
-+} PopplerAttachmentClass;
-+
-+
-+GType     poppler_attachment_get_type         (void) G_GNUC_CONST;
-+gboolean  poppler_attachment_save             (PopplerAttachment          *attachment,
-+                                             const char                 *filename,
-+                                             GError                    **error);
-+gboolean  poppler_attachment_save_to_callback (PopplerAttachment          *attachment,
-+                                             PopplerAttachmentSaveFunc   save_func,
-+                                             gpointer                    user_data,
-+                                             GError                    **error);
-+
-+
-+G_END_DECLS
-+
-+#endif /* __POPPLER_ATTACHMENT_H__ */
-diff -Nur poppler.0_5_0/glib/poppler-document.cc poppler.HEAD/glib/poppler-document.cc
---- poppler.0_5_0/glib/poppler-document.cc     2005-12-31 03:10:33.000000000 +0100
-+++ poppler.HEAD/glib/poppler-document.cc      2006-01-24 07:21:39.000000000 +0100
-@@ -28,9 +28,11 @@
- #include <Stream.h>
- #include <FontInfo.h>
- #include <PDFDocEncoding.h>
-+#include <UGooString.h>
- #include "poppler.h"
- #include "poppler-private.h"
-+#include "poppler-attachment.h"
- #include "poppler-enums.h"
- enum {
-@@ -251,6 +253,68 @@
-   return poppler_document_get_page (document, index);
- }
-+/**
-+ * poppler_document_has_attachments:
-+ * @document: A #PopplerDocument
-+ * 
-+ * Returns %TRUE of @document has any attachments.
-+ * 
-+ * Return value: %TRUE, if @document has attachments.
-+ **/
-+gboolean
-+poppler_document_has_attachments (PopplerDocument *document)
-+{
-+  Catalog *catalog;
-+  int n_files = 0;
-+
-+  g_return_val_if_fail (POPPLER_IS_DOCUMENT (document), FALSE);
-+
-+  catalog = document->doc->getCatalog ();
-+  if (catalog && catalog->isOk ())
-+    {
-+      n_files = catalog->numEmbeddedFiles ();
-+    }
-+
-+  return (n_files != 0);
-+}
-+
-+/**
-+ * poppler_document_get_attachments:
-+ * @document: A #PopplerDocument
-+ * 
-+ * Returns a #GList containing #PopplerAttachment<!-- -->s.  These attachments
-+ * are unowned, and must be unreffed, and the list must be freed with
-+ * g_list_free().
-+ * 
-+ * Return value: a list of available attachments.
-+ **/
-+GList *
-+poppler_document_get_attachments (PopplerDocument *document)
-+{
-+  Catalog *catalog;
-+  int n_files, i;
-+  GList *retval = NULL;
-+
-+  g_return_val_if_fail (POPPLER_IS_DOCUMENT (document), NULL);
-+
-+  catalog = document->doc->getCatalog ();
-+  if (catalog == NULL || ! catalog->isOk ())
-+    return NULL;
-+
-+  n_files = catalog->numEmbeddedFiles ();
-+  for (i = 0; i < n_files; i++)
-+    {
-+      PopplerAttachment *attachment;
-+      EmbFile *emb_file;
-+
-+      emb_file = catalog->embeddedFile (i);
-+      attachment = _poppler_attachment_new (document, emb_file);
-+
-+      retval = g_list_prepend (retval, attachment);
-+    }
-+  return g_list_reverse (retval);
-+}
-+
- static gboolean
- has_unicode_marker (GooString *string)
- {
-diff -Nur poppler.0_5_0/glib/poppler-document.h poppler.HEAD/glib/poppler-document.h
---- poppler.0_5_0/glib/poppler-document.h      2005-12-31 03:10:33.000000000 +0100
-+++ poppler.HEAD/glib/poppler-document.h       2006-01-24 07:21:39.000000000 +0100
-@@ -100,6 +100,10 @@
-                                                    int               index);
- PopplerPage     *poppler_document_get_page_by_label (PopplerDocument  *document,
-                                                    const char       *label);
-+/* Attachments */
-+gboolean         poppler_document_has_attachments   (PopplerDocument  *document);
-+GList           *poppler_document_get_attachments   (PopplerDocument  *document);
-+
- /* Interface for getting the Index of a poppler_document */
-@@ -142,6 +146,8 @@
-                                                gboolean         duplex);
- void           poppler_ps_file_free           (PopplerPSFile   *ps_file);
-+
-+
- G_END_DECLS
- #endif /* __POPPLER_DOCUMENT_H__ */
-diff -Nur poppler.0_5_0/glib/poppler.h poppler.HEAD/glib/poppler.h
---- poppler.0_5_0/glib/poppler.h       2005-06-20 19:58:38.000000000 +0200
-+++ poppler.HEAD/glib/poppler.h        2006-01-24 07:21:39.000000000 +0100
-@@ -69,5 +69,6 @@
- #include "poppler-page.h"
- #include "poppler-action.h"
- #include "poppler-enums.h"
-+#include "poppler-attachment.h"
- #endif /* __POPPLER_GLIB_H__ */
-diff -Nur poppler.0_5_0/glib/poppler-page.cc poppler.HEAD/glib/poppler-page.cc
---- poppler.0_5_0/glib/poppler-page.cc 2005-12-31 03:10:33.000000000 +0100
-+++ poppler.HEAD/glib/poppler-page.cc  2006-01-24 07:21:39.000000000 +0100
-@@ -1,4 +1,4 @@
--/* poppler.h: glib wrapper for poppler
-+/* poppler-page.cc: glib wrapper for poppler
-  * Copyright (C) 2005, Red Hat, Inc.
-  *
-  * This program is free software; you can redistribute it and/or modify
-diff -Nur poppler.0_5_0/glib/poppler-private.h poppler.HEAD/glib/poppler-private.h
---- poppler.0_5_0/glib/poppler-private.h       2005-08-22 20:20:12.000000000 +0200
-+++ poppler.HEAD/glib/poppler-private.h        2006-01-24 07:21:39.000000000 +0100
-@@ -8,6 +8,9 @@
- #include <Gfx.h>
- #include <FontInfo.h>
- #include <TextOutputDev.h>
-+#include <Catalog.h>
-+
-+#include "poppler-attachment.h"
- #if defined (HAVE_CAIRO)
- #include <CairoOutputDev.h>
-@@ -62,5 +65,6 @@
-                                   LinkAction      *link,
-                                   const gchar     *title);
--
-+PopplerAttachment *_poppler_attachment_new (PopplerDocument *document,
-+                                          EmbFile         *file);
- #endif
-diff -Nur poppler.0_5_0/glib/reference/tmpl/poppler-enums.sgml poppler.HEAD/glib/reference/tmpl/poppler-enums.sgml
---- poppler.0_5_0/glib/reference/tmpl/poppler-enums.sgml       2006-01-06 11:05:58.000000000 +0100
-+++ poppler.HEAD/glib/reference/tmpl/poppler-enums.sgml        2006-01-24 07:21:39.000000000 +0100
-@@ -17,3 +17,153 @@
- <!-- ##### SECTION Stability_Level ##### -->
-+<!-- ##### MACRO POPPLER_TYPE_ACTION_TYPE ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_action_type_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-+<!-- ##### MACRO POPPLER_TYPE_DEST_TYPE ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_dest_type_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-+<!-- ##### MACRO POPPLER_TYPE_PAGE_LAYOUT ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_page_layout_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-+<!-- ##### MACRO POPPLER_TYPE_PAGE_MODE ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_page_mode_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-+<!-- ##### MACRO POPPLER_TYPE_FONT_TYPE ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_font_type_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-+<!-- ##### MACRO POPPLER_TYPE_VIEWER_PREFERENCES ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_viewer_preferences_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-+<!-- ##### MACRO POPPLER_TYPE_PERMISSIONS ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_permissions_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-+<!-- ##### MACRO POPPLER_TYPE_ERROR ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_error_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-+<!-- ##### MACRO POPPLER_TYPE_ORIENTATION ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_orientation_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-+<!-- ##### MACRO POPPLER_TYPE_BACKEND ##### -->
-+<para>
-+
-+</para>
-+
-+
-+
-+<!-- ##### FUNCTION poppler_backend_get_type ##### -->
-+<para>
-+
-+</para>
-+
-+@Returns: 
-+
-+
-diff -Nur poppler.0_5_0/glib/reference/tmpl/poppler-unused.sgml poppler.HEAD/glib/reference/tmpl/poppler-unused.sgml
---- poppler.0_5_0/glib/reference/tmpl/poppler-unused.sgml      2006-01-06 11:05:58.000000000 +0100
-+++ poppler.HEAD/glib/reference/tmpl/poppler-unused.sgml       2006-01-24 07:21:39.000000000 +0100
-@@ -1,130 +0,0 @@
--<!-- ##### MACRO POPPLER_TYPE_ACTION_TYPE ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### MACRO POPPLER_TYPE_BACKEND ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### MACRO POPPLER_TYPE_DEST_TYPE ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### MACRO POPPLER_TYPE_ERROR ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### MACRO POPPLER_TYPE_FONT_TYPE ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### MACRO POPPLER_TYPE_ORIENTATION ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### MACRO POPPLER_TYPE_PAGE_LAYOUT ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### MACRO POPPLER_TYPE_PAGE_MODE ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### MACRO POPPLER_TYPE_PERMISSIONS ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### MACRO POPPLER_TYPE_VIEWER_PREFERENCES ##### -->
--<para>
--
--</para>
--
--
--<!-- ##### FUNCTION poppler_action_type_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
--<!-- ##### FUNCTION poppler_backend_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
--<!-- ##### FUNCTION poppler_dest_type_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
--<!-- ##### FUNCTION poppler_error_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
--<!-- ##### FUNCTION poppler_font_type_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
--<!-- ##### FUNCTION poppler_orientation_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
--<!-- ##### FUNCTION poppler_page_layout_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
--<!-- ##### FUNCTION poppler_page_mode_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
--<!-- ##### FUNCTION poppler_permissions_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
--<!-- ##### FUNCTION poppler_viewer_preferences_get_type ##### -->
--<para>
--
--</para>
--
--@Returns: 
--
-diff -Nur poppler.0_5_0/glib/test-poppler-glib.c poppler.HEAD/glib/test-poppler-glib.c
---- poppler.0_5_0/glib/test-poppler-glib.c     2005-12-31 03:10:33.000000000 +0100
-+++ poppler.HEAD/glib/test-poppler-glib.c      2006-01-24 07:21:39.000000000 +0100
-@@ -13,11 +13,12 @@
-   do
-     {
-       PopplerAction *action;
-+      PopplerIndexIter *child;
-       action = poppler_index_iter_get_action (iter);
-       g_print ("Action: %d\n", action->type);
-       poppler_action_free (action);
--      PopplerIndexIter *child = poppler_index_iter_get_child (iter);
-+      child = poppler_index_iter_get_child (iter);
-       if (child)
-       print_index (child);
-       poppler_index_iter_free (child);
-@@ -35,6 +36,7 @@
-   PopplerViewerPreferences view_prefs;
-   PopplerFontInfo *font_info;
-   PopplerFontsIter *fonts_iter;
-+  PopplerIndexIter *index_iter;
-   GEnumValue *enum_value;
-   g_object_get (document,
-@@ -85,7 +87,6 @@
-   }
-   poppler_font_info_free (font_info);
--  PopplerIndexIter *index_iter;
-   index_iter = poppler_index_iter_new (document);
-   if (index_iter)
-     {
-@@ -197,7 +198,31 @@
-       printf ("  (%f,%f)-(%f,%f)\n", rect->x1, rect->y1, rect->x2, rect->y2);
-     }
--    
-+
-+  if (poppler_document_has_attachments (document))
-+    {
-+      int i = 0;
-+
-+      g_print ("Attachments found:\n\n");
-+
-+      list = poppler_document_get_attachments (document);
-+      for (l = list; l; l = l->next)
-+      {
-+        PopplerAttachment *attachment;
-+        char *name;
-+
-+        name = g_strdup_printf ("/tmp/attach%d", i);
-+        attachment = l->data;
-+        g_print ("\tname: %s\n", attachment->name);
-+        g_print ("\tdescription: %s\n\n", attachment->description);
-+        poppler_attachment_save (attachment, name, NULL);
-+        i++;
-+      }
-+      g_list_foreach (list, g_object_unref, NULL);
-+      g_list_free (list);
-+    }
-+  else
-+    g_print ("no attachment\n");
-   g_object_unref (G_OBJECT (page));
-diff -Nur poppler.0_5_0/goo/FixedPoint.h poppler.HEAD/goo/FixedPoint.h
---- poppler.0_5_0/goo/FixedPoint.h     2005-09-16 20:29:18.000000000 +0200
-+++ poppler.HEAD/goo/FixedPoint.h      2006-02-06 21:49:21.000000000 +0100
-@@ -11,7 +11,7 @@
- #ifndef FIXEDPOINT_H
- #define FIXEDPOINT_H
--#include <aconf.h>
-+#include <config.h>
- #if USE_FIXEDPOINT
-diff -Nur poppler.0_5_0/goo/gfile.cc poppler.HEAD/goo/gfile.cc
---- poppler.0_5_0/goo/gfile.cc 2005-03-03 20:45:58.000000000 +0100
-+++ poppler.HEAD/goo/gfile.cc  2006-02-02 23:50:01.000000000 +0100
-@@ -489,6 +489,14 @@
-     }
-     (*name)->append("/XXXXXX")->append(ext);
-     fd = mkstemps((*name)->getCString(), strlen(ext));
-+#elif defined(HAVE_MKSTEMP)
-+    if ((s = getenv("TMPDIR"))) {
-+      *name = new GooString(s);
-+    } else {
-+      *name = new GooString("/tmp");
-+    }
-+    (*name)->append("/XXXXXX")->append(ext);
-+    fd = mkstemp((*name)->getCString());
- #else
-     if (!(s = tmpnam(NULL))) {
-       return gFalse;
-diff -Nur poppler.0_5_0/m4/qt.m4 poppler.HEAD/m4/qt.m4
---- poppler.0_5_0/m4/qt.m4     2006-01-06 11:05:58.000000000 +0100
-+++ poppler.HEAD/m4/qt.m4      2006-01-10 22:57:28.000000000 +0100
-@@ -156,6 +156,11 @@
- qt4_incdirs="/usr/local/qt/include /usr/include/qt4 /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/lib/qt/include"
- qt4_libdirs="/usr/local/qt/lib /usr/lib/qt /usr/lib /usr/X11R6/lib/X11/qt /usr/X11R6/lib/qt /usr/lib/qt/lib"
-+if test -n "$QTDIR" ; then
-+    qt4_incdirs="$QTDIR/include $qt4_incdirs"
-+    qt4_libdirs="$QTDIR/lib $qt4_libdirs"
-+fi
-+
- dnl What to test
- qt4test_test_include="QtTest/QtTest"
- qt4test_test_la_library="libQtTest.la"
-diff -Nur poppler.0_5_0/poppler/Annot.cc poppler.HEAD/poppler/Annot.cc
---- poppler.0_5_0/poppler/Annot.cc     2005-10-16 16:54:17.000000000 +0200
-+++ poppler.HEAD/poppler/Annot.cc      2006-02-06 19:50:11.000000000 +0100
-@@ -18,6 +18,7 @@
- #include "Catalog.h"
- #include "Gfx.h"
- #include "Lexer.h"
-+#include "UGooString.h"
- #include "Annot.h"
- //------------------------------------------------------------------------
-@@ -210,15 +211,14 @@
-     // build the appearance stream dictionary
-     appearDict.initDict(xref);
--    appearDict.dictAdd(copyString("Length"),
--                     obj1.initInt(appearBuf->getLength()));
--    appearDict.dictAdd(copyString("Subtype"), obj1.initName("Form"));
-+    appearDict.dictAdd("Length", obj1.initInt(appearBuf->getLength()));
-+    appearDict.dictAdd("Subtype", obj1.initName("Form"));
-     obj1.initArray(xref);
-     obj1.arrayAdd(obj2.initReal(0));
-     obj1.arrayAdd(obj2.initReal(0));
-     obj1.arrayAdd(obj2.initReal(xMax - xMin));
-     obj1.arrayAdd(obj2.initReal(yMax - yMin));
--    appearDict.dictAdd(copyString("BBox"), &obj1);
-+    appearDict.dictAdd("BBox", &obj1);
-     // find the resource dictionary
-     dict->lookup("DR", &drObj);
-@@ -243,7 +243,7 @@
-       }
-     }
-     if (drObj.isDict()) {
--      appearDict.dictAdd(copyString("Resources"), drObj.copy(&obj1));
-+      appearDict.dictAdd("Resources", drObj.copy(&obj1));
-     }
-     drObj.free();
-diff -Nur poppler.0_5_0/poppler/ArthurOutputDev.cc poppler.HEAD/poppler/ArthurOutputDev.cc
---- poppler.0_5_0/poppler/ArthurOutputDev.cc   2005-10-30 21:29:05.000000000 +0100
-+++ poppler.HEAD/poppler/ArthurOutputDev.cc    2006-02-14 00:04:54.000000000 +0100
-@@ -245,11 +245,13 @@
-   GfxFontType fontType;
-   SplashOutFontFileID *id;
-   SplashFontFile *fontFile;
-+  SplashFontSrc *fontsrc;
-   FoFiTrueType *ff;
-   Ref embRef;
-   Object refObj, strObj;
--  GooString *tmpFileName, *fileName, *substName;
--  FILE *tmpFile;
-+  GooString *fileName, *substName;
-+  char *tmpBuf;
-+  int tmpBufLen;
-   Gushort *codeToGID;
-   DisplayFontParam *dfp;
-   double m11, m12, m21, m22, w1, w2;
-@@ -259,7 +261,8 @@
-   m_needFontUpdate = false;
-   m_font = NULL;
--  tmpFileName = NULL;
-+  fileName = NULL;
-+  tmpBuf = NULL;
-   substIdx = -1;
-   if (!(gfxFont = state->getFont())) {
-@@ -279,22 +282,9 @@
-     // if there is an embedded font, write it to disk
-     if (gfxFont->getEmbeddedFontID(&embRef)) {
--      if (!openTempFile(&tmpFileName, &tmpFile, "wb", NULL)) {
--      error(-1, "Couldn't create temporary font file");
-+      tmpBuf = gfxFont->readEmbFontFile(xref, &tmpBufLen);
-+      if (! tmpBuf)
-       goto err2;
--      }
--      refObj.initRef(embRef.num, embRef.gen);
--      refObj.fetch(xref, &strObj);
--      refObj.free();
--      strObj.streamReset();
--      while ((c = strObj.streamGetChar()) != EOF) {
--      fputc(c, tmpFile);
--      }
--      strObj.streamClose();
--      strObj.free();
--      fclose(tmpFile);
--      fileName = tmpFileName;
--
-     // if there is an external font file, use it
-     } else if (!(fileName = gfxFont->getExtFontFile())) {
-@@ -321,13 +311,18 @@
-       }
-     }
-+    fontsrc = new SplashFontSrc;
-+    if (fileName)
-+      fontsrc->setFile(fileName, gFalse);
-+    else
-+      fontsrc->setBuf(tmpBuf, tmpBufLen, gFalse);
-+
-     // load the font file
-     switch (fontType) {
-     case fontType1:
-       if (!(fontFile = m_fontEngine->loadType1Font(
-                          id,
--                         fileName->getCString(),
--                         fileName == tmpFileName,
-+                         fontsrc,
-                          ((Gfx8BitFont *)gfxFont)->getEncoding()))) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-@@ -338,8 +333,7 @@
-     case fontType1C:
-       if (!(fontFile = m_fontEngine->loadType1CFont(
-                          id,
--                         fileName->getCString(),
--                         fileName == tmpFileName,
-+                         fontsrc,
-                          ((Gfx8BitFont *)gfxFont)->getEncoding()))) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-@@ -355,8 +349,7 @@
-       delete ff;
-       if (!(fontFile = m_fontEngine->loadTrueTypeFont(
-                          id,
--                         fileName->getCString(),
--                         fileName == tmpFileName,
-+                         fontsrc,
-                          codeToGID, 256))) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-@@ -368,8 +361,7 @@
-     case fontCIDType0C:
-       if (!(fontFile = m_fontEngine->loadCIDFont(
-                          id,
--                         fileName->getCString(),
--                         fileName == tmpFileName))) {
-+                         fontsrc))) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-                                : "(unnamed)");
-@@ -383,8 +375,7 @@
-            n * sizeof(Gushort));
-       if (!(fontFile = m_fontEngine->loadTrueTypeFont(
-                          id,
--                         fileName->getCString(),
--                         fileName == tmpFileName,
-+                         fontsrc,
-                          codeToGID, n))) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-@@ -408,17 +399,11 @@
-   mat[2] = m21;  mat[3] = -m22;
-   m_font = m_fontEngine->getFont(fontFile, mat);
--  if (tmpFileName) {
--    delete tmpFileName;
--  }
-   return;
-  err2:
-   delete id;
-  err1:
--  if (tmpFileName) {
--    delete tmpFileName;
--  }
-   return;
- }
-diff -Nur poppler.0_5_0/poppler/CairoOutputDev.cc poppler.HEAD/poppler/CairoOutputDev.cc
---- poppler.0_5_0/poppler/CairoOutputDev.cc    2006-01-10 18:55:59.000000000 +0100
-+++ poppler.HEAD/poppler/CairoOutputDev.cc     2006-02-18 21:17:00.000000000 +0100
-@@ -194,7 +194,11 @@
- void CairoOutputDev::updateLineWidth(GfxState *state) {
-   LOG(printf ("line width: %f\n", state->getTransformedLineWidth()));
--  cairo_set_line_width (cairo, state->getTransformedLineWidth());
-+  if (state->getTransformedLineWidth() == 0.0) {
-+      cairo_set_line_width (cairo, 72.0/300.0);
-+  } else {
-+      cairo_set_line_width (cairo, state->getTransformedLineWidth());
-+  }
- }
- void CairoOutputDev::updateFillColor(GfxState *state) {
-@@ -477,6 +481,26 @@
-   int invert_bit;
-   int row_stride;
-+  ctm = state->getCTM();
-+  LOG (printf ("drawImageMask %dx%d, matrix: %f, %f, %f, %f, %f, %f\n",
-+             width, height, ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]));
-+  matrix.xx = ctm[0] / width;
-+  matrix.xy = -ctm[2] / height;
-+  matrix.yx = ctm[1] / width;
-+  matrix.yy = -ctm[3] / height;
-+  matrix.x0 = ctm[2] + ctm[4];
-+  matrix.y0 = ctm[3] + ctm[5];
-+
-+  /* work around a cairo bug when scaling 1x1 surfaces */
-+  if (width == 1 && height == 1) {
-+    cairo_save (cairo);
-+    cairo_set_matrix (cairo, &matrix);
-+    cairo_rectangle (cairo, 0., 0., 1., 1.);
-+    cairo_fill (cairo);
-+    cairo_restore (cairo);
-+    return;
-+  }
-+
-   row_stride = (width + 3) & ~3;
-   buffer = (unsigned char *) malloc (height * row_stride);
-   if (buffer == NULL) {
-@@ -510,6 +534,98 @@
-   if (pattern == NULL)
-     return;
-+  cairo_matrix_invert (&matrix);
-+  cairo_pattern_set_matrix (pattern, &matrix);
-+
-+  /* we should actually be using CAIRO_FILTER_NEAREST here. However,
-+   * cairo doesn't yet do minifaction filtering causing scaled down
-+   * images with CAIRO_FILTER_NEAREST to look really bad */
-+  cairo_pattern_set_filter (pattern, CAIRO_FILTER_BEST);
-+
-+  /* FIXME: Doesn't the image mask support any colorspace? */
-+  cairo_set_source (cairo, fill_pattern);
-+  cairo_mask (cairo, pattern);
-+
-+  cairo_pattern_destroy (pattern);
-+  cairo_surface_destroy (image);
-+  free (buffer);
-+  delete imgStr;
-+}
-+
-+void CairoOutputDev::drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str,
-+                              int width, int height,
-+                              GfxImageColorMap *colorMap,
-+                              Stream *maskStr,
-+                              int maskWidth, int maskHeight,
-+                              GfxImageColorMap *maskColorMap)
-+{
-+  ImageStream *maskImgStr;
-+  maskImgStr = new ImageStream(maskStr, maskWidth,
-+                                     maskColorMap->getNumPixelComps(),
-+                                     maskColorMap->getBits());
-+  maskImgStr->reset();
-+
-+  int row_stride = (maskWidth + 3) & ~3;
-+  unsigned char *maskBuffer;
-+  maskBuffer = (unsigned char *)gmalloc (row_stride * maskHeight);
-+  unsigned char *maskDest;
-+  cairo_surface_t *maskImage;
-+  cairo_pattern_t *maskPattern;
-+  Guchar *pix;
-+  int x, y;
-+  for (y = 0; y < maskHeight; y++) {
-+    maskDest = (unsigned char *) (maskBuffer + y * row_stride);
-+    pix = maskImgStr->getLine();
-+    maskColorMap->getGrayLine (pix, maskDest, maskWidth);
-+  }
-+
-+  maskImage = cairo_image_surface_create_for_data (maskBuffer, CAIRO_FORMAT_A8,
-+                                               maskWidth, maskHeight, row_stride);
-+
-+  delete maskImgStr;
-+  maskStr->close();
-+
-+  unsigned char *buffer;
-+  unsigned int *dest;
-+  cairo_surface_t *image;
-+  cairo_pattern_t *pattern;
-+  ImageStream *imgStr;
-+  GfxRGB rgb;
-+  int alpha, i;
-+  double *ctm;
-+  cairo_matrix_t matrix;
-+  int is_identity_transform;
-+
-+  buffer = (unsigned char *)gmalloc (width * height * 4);
-+
-+  /* TODO: Do we want to cache these? */
-+  imgStr = new ImageStream(str, width,
-+                         colorMap->getNumPixelComps(),
-+                         colorMap->getBits());
-+  imgStr->reset();
-+  
-+  /* ICCBased color space doesn't do any color correction
-+   * so check its underlying color space as well */
-+  is_identity_transform = colorMap->getColorSpace()->getMode() == csDeviceRGB ||
-+                colorMap->getColorSpace()->getMode() == csICCBased && 
-+                ((GfxICCBasedColorSpace*)colorMap->getColorSpace())->getAlt()->getMode() == csDeviceRGB;
-+
-+  for (y = 0; y < height; y++) {
-+    dest = (unsigned int *) (buffer + y * 4 * width);
-+    pix = imgStr->getLine();
-+    colorMap->getRGBLine (pix, dest, width);
-+  }
-+
-+  image = cairo_image_surface_create_for_data (buffer, CAIRO_FORMAT_RGB24,
-+                                               width, height, width * 4);
-+
-+  if (image == NULL)
-+    return;
-+  pattern = cairo_pattern_create_for_surface (image);
-+  maskPattern = cairo_pattern_create_for_surface (maskImage);
-+  if (pattern == NULL)
-+    return;
-+
-   ctm = state->getCTM();
-   LOG (printf ("drawImageMask %dx%d, matrix: %f, %f, %f, %f, %f, %f\n",
-              width, height, ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]));
-@@ -519,20 +635,24 @@
-   matrix.yy = -ctm[3] / height;
-   matrix.x0 = ctm[2] + ctm[4];
-   matrix.y0 = ctm[3] + ctm[5];
-+
-   cairo_matrix_invert (&matrix);
-+
-   cairo_pattern_set_matrix (pattern, &matrix);
-+  cairo_pattern_set_matrix (maskPattern, &matrix);
--  cairo_pattern_set_filter (pattern, CAIRO_FILTER_BEST);
--  /* FIXME: Doesn't the image mask support any colorspace? */
--  cairo_set_source (cairo, fill_pattern);
--  cairo_mask (cairo, pattern);
-+  cairo_pattern_set_filter (pattern, CAIRO_FILTER_BILINEAR);
-+  cairo_set_source (cairo, pattern);
-+  cairo_mask (cairo, maskPattern);
-+  cairo_pattern_destroy (maskPattern);
-+  cairo_surface_destroy (maskImage);
-   cairo_pattern_destroy (pattern);
-   cairo_surface_destroy (image);
-   free (buffer);
-+  free (maskBuffer);
-   delete imgStr;
- }
--
- void CairoOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
-                               int width, int height,
-                               GfxImageColorMap *colorMap,
-diff -Nur poppler.0_5_0/poppler/CairoOutputDev.h poppler.HEAD/poppler/CairoOutputDev.h
---- poppler.0_5_0/poppler/CairoOutputDev.h     2006-01-10 18:55:59.000000000 +0100
-+++ poppler.HEAD/poppler/CairoOutputDev.h      2006-02-18 21:17:00.000000000 +0100
-@@ -117,6 +117,12 @@
-   virtual void drawImage(GfxState *state, Object *ref, Stream *str,
-                        int width, int height, GfxImageColorMap *colorMap,
-                        int *maskColors, GBool inlineImg);
-+  virtual void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str,
-+                              int width, int height,
-+                              GfxImageColorMap *colorMap,
-+                              Stream *maskStr,
-+                              int maskWidth, int maskHeight,
-+                              GfxImageColorMap *maskColorMap);
-   //----- Type 3 font operators
-   virtual void type3D0(GfxState *state, double wx, double wy);
-diff -Nur poppler.0_5_0/poppler/Catalog.cc poppler.HEAD/poppler/Catalog.cc
---- poppler.0_5_0/poppler/Catalog.cc   2005-09-15 14:52:36.000000000 +0200
-+++ poppler.HEAD/poppler/Catalog.cc    2006-01-18 23:32:13.000000000 +0100
-@@ -23,6 +23,7 @@
- #include "Error.h"
- #include "Link.h"
- #include "PageLabelInfo.h"
-+#include "UGooString.h"
- #include "Catalog.h"
- //------------------------------------------------------------------------
-@@ -83,11 +84,14 @@
-   // read named destination dictionary
-   catDict.dictLookup("Dests", &dests);
--  // read root of named destination tree
-+  // read root of named destination tree - PDF1.6 table 3.28
-   if (catDict.dictLookup("Names", &obj)->isDict()) {
-     obj.dictLookup("Dests", &obj2);
-     destNameTree.init(xref, &obj2);
-     obj2.free();
-+    obj.dictLookup("EmbeddedFiles", &obj2);
-+    embeddedFileNameTree.init(xref, &obj2);
-+    obj2.free();
-   }
-   obj.free();
-@@ -178,6 +182,7 @@
-   }
-   dests.free();
-   destNameTree.free();
-+  embeddedFileNameTree.free();
-   if (baseURI) {
-     delete baseURI;
-   }
-@@ -291,7 +296,7 @@
-   return 0;
- }
--LinkDest *Catalog::findDest(GooString *name) {
-+LinkDest *Catalog::findDest(UGooString *name) {
-   LinkDest *dest;
-   Object obj1, obj2;
-   GBool found;
-@@ -299,7 +304,7 @@
-   // try named destination dictionary then name tree
-   found = gFalse;
-   if (dests.isDict()) {
--    if (!dests.dictLookup(name->getCString(), &obj1)->isNull())
-+    if (!dests.dictLookup(*name, &obj1)->isNull())
-       found = gTrue;
-     else
-       obj1.free();
-@@ -335,6 +340,97 @@
-   return dest;
- }
-+EmbFile *Catalog::embeddedFile(int i)
-+{
-+    Object efDict;
-+    Object fileSpec;
-+    Object fileDesc;
-+    Object paramDict;
-+    Object paramObj;
-+    Object strObj;
-+    Object obj, obj2;
-+    obj = embeddedFileNameTree.getValue(i);
-+    GooString *fileName = new GooString();
-+    char *descString = embeddedFileNameTree.getName(i)->getCString();
-+    GooString *desc = new GooString(descString);
-+    delete[] descString;
-+    GooString *createDate = new GooString();
-+    GooString *modDate = new GooString();
-+    Stream *efStream;
-+    if (obj.isRef()) {
-+      if (obj.fetch(xref, &efDict)->isDict()) {
-+          // efDict matches Table 3.40 in the PDF1.6 spec
-+          efDict.dictLookup("F", &fileSpec);
-+          if (fileSpec.isString()) {
-+              delete fileName;
-+              fileName = new GooString(fileSpec.getString());
-+          }
-+          fileSpec.free();
-+
-+          // the logic here is that the description from the name
-+          // dictionary is used if we don't have a more specific
-+          // description - see the Note: on page 157 of the PDF1.6 spec
-+          efDict.dictLookup("Desc", &fileDesc);
-+          if (fileDesc.isString()) {
-+              delete desc;
-+              desc = new GooString(fileDesc.getString());
-+          } else {
-+              efDict.dictLookup("Description", &fileDesc);
-+              if (fileDesc.isString()) {
-+                  delete desc;
-+                  desc = new GooString(fileDesc.getString());
-+              }
-+          }
-+          fileDesc.free();
-+          
-+          efDict.dictLookup("EF", &obj2);
-+          if (obj2.isDict()) {
-+              // This gives us the raw data stream bytes
-+
-+              obj2.dictLookup("F", &strObj);
-+              if (strObj.isStream()) {
-+                  efStream = strObj.getStream();
-+              }
-+
-+              // dataDict corresponds to Table 3.41 in the PDF1.6 spec.
-+              Dict *dataDict = efStream->getDict();
-+
-+              // subtype is normally mimetype. You can extract it with code like this:
-+              // Object subtypeName;
-+              // dataDict->lookup( "Subtype", &subtypeName );
-+              // It is optional, so this will sometimes return a null object
-+              // if (subtypeName.isName()) {
-+              //        std::cout << "got subtype name: " << subtypeName.getName() << std::endl;
-+              // }
-+
-+              // paramDict corresponds to Table 3.42 in the PDF1.6 spec
-+              Object paramDict;
-+              dataDict->lookup( "Params", &paramDict );
-+              if (paramDict.isDict()) {
-+                  paramDict.dictLookup("ModDate", &paramObj);
-+                  if (paramObj.isString()) {
-+                      delete modDate;
-+                      modDate = new GooString(paramObj.getString());
-+                  }
-+                  paramObj.free();
-+                  paramDict.dictLookup("CreationDate", &paramObj);
-+                  if (paramObj.isString()) {
-+                      delete createDate;
-+                      createDate = new GooString(paramObj.getString());
-+                  }
-+                  paramObj.free();
-+              }
-+              paramDict.free();
-+          }
-+          efDict.free();
-+          obj2.free();
-+      }
-+    }
-+    EmbFile *embeddedFile = new EmbFile(fileName, desc, createDate, modDate, strObj);
-+    strObj.free();
-+    return embeddedFile;
-+}
-+
- NameTree::NameTree(void)
- {
-   size = 0;
-@@ -343,12 +439,15 @@
- }
- NameTree::Entry::Entry(Array *array, int index) {
--  if (!array->getString(index, &name) || !array->getNF(index + 1, &value))
--    error(-1, "Invalid page tree");
-+    GooString n;
-+    if (!array->getString(index, &n) || !array->getNF(index + 1, &value))
-+      error(-1, "Invalid page tree");
-+    name = new UGooString(n);
- }
- NameTree::Entry::~Entry() {
-   value.free();
-+  delete name;
- }
- void NameTree::addEntry(Entry *entry)
-@@ -402,13 +501,13 @@
- int NameTree::Entry::cmp(const void *voidKey, const void *voidEntry)
- {
--  GooString *key = (GooString *) voidKey;
-+  UGooString *key = (UGooString *) voidKey;
-   Entry *entry = *(NameTree::Entry **) voidEntry;
--  return key->cmp(&entry->name);
-+  return key->cmp(entry->name);
- }
--GBool NameTree::lookup(GooString *name, Object *obj)
-+GBool NameTree::lookup(UGooString *name, Object *obj)
- {
-   Entry **entry;
-@@ -424,6 +523,24 @@
-   }
- }
-+Object NameTree::getValue(int index)
-+{
-+  if (index < length) {
-+    return entries[index]->value;
-+  } else {
-+    return Object();
-+  }
-+}
-+
-+UGooString *NameTree::getName(int index)
-+{
-+    if (index < length) {
-+      return entries[index]->name;
-+    } else {
-+      return NULL;
-+    }
-+}
-+
- void NameTree::free()
- {
-   int i;
-diff -Nur poppler.0_5_0/poppler/Catalog.h poppler.HEAD/poppler/Catalog.h
---- poppler.0_5_0/poppler/Catalog.h    2005-09-15 14:52:36.000000000 +0200
-+++ poppler.HEAD/poppler/Catalog.h     2006-01-18 23:32:13.000000000 +0100
-@@ -19,6 +19,7 @@
- class PageAttrs;
- struct Ref;
- class LinkDest;
-+class UGooString;
- class PageLabelInfo;
- //------------------------------------------------------------------------
-@@ -30,14 +31,18 @@
-   NameTree();
-   void init(XRef *xref, Object *tree);
-   void parse(Object *tree);
--  GBool lookup(GooString *name, Object *obj);
-+  GBool lookup(UGooString *name, Object *obj);
-   void free();
-+  int numEntries() { return length; };
-+  // iterator accessor
-+  Object getValue(int i);
-+  UGooString *getName(int i);
- private:
-   struct Entry {
-     Entry(Array *array, int index);
-     ~Entry();
--    GooString name;
-+    UGooString *name;
-     Object value;
-     void free();
-     static int cmp(const void *key, const void *entry);
-@@ -48,7 +53,45 @@
-   XRef *xref;
-   Object *root;
-   Entry **entries;
--  int size, length;
-+  int size, length; // size is the number of entries in
-+                    // the array of Entry*
-+                    // length is the number of real Entry
-+};
-+
-+class EmbFile {
-+public:
-+  EmbFile(GooString *name, GooString *description, 
-+        GooString *createDate,
-+        GooString *modDate, Object objStr) :
-+    m_name(name),
-+    m_description(description),
-+    m_createDate(createDate),
-+    m_modDate(modDate)
-+  {
-+    objStr.copy(&m_objStr);
-+  }
-+
-+  ~EmbFile()
-+  {
-+    delete m_name;
-+    delete m_description;
-+    delete m_modDate;
-+    delete m_createDate;
-+    m_objStr.free();
-+  }
-+
-+  GooString *name() { return m_name; }
-+  GooString *description() { return m_description; }
-+  GooString *modDate() { return m_modDate; }
-+  GooString *createDate() { return m_createDate; }
-+  Object &streamObject() { return m_objStr; }
-+
-+private:
-+  GooString *m_name;
-+  GooString *m_description;
-+  GooString *m_createDate;
-+  GooString *m_modDate;
-+  Object m_objStr;
- };
- //------------------------------------------------------------------------
-@@ -92,7 +135,13 @@
-   // Find a named destination.  Returns the link destination, or
-   // NULL if <name> is not a destination.
--  LinkDest *findDest(GooString *name);
-+  LinkDest *findDest(UGooString *name);
-+
-+  // Get the number of embedded files
-+  int numEmbeddedFiles() { return embeddedFileNameTree.numEntries(); }
-+
-+  // Get the i'th file embedded (at the Document level) in the document
-+  EmbFile *embeddedFile(int i);
-   // Convert between page indices and page labels.
-   GBool labelToIndex(GooString *label, int *index);
-@@ -132,7 +181,8 @@
-   int numPages;                       // number of pages
-   int pagesSize;              // size of pages array
-   Object dests;                       // named destination dictionary
--  NameTree destNameTree;      // name tree
-+  NameTree destNameTree;      // named destination name-tree
-+  NameTree embeddedFileNameTree;  // embedded file name-tree
-   GooString *baseURI;         // base URI for URI-type links
-   Object metadata;            // metadata stream
-   Object structTreeRoot;      // structure tree root dictionary
-diff -Nur poppler.0_5_0/poppler/CharCodeToUnicode.cc poppler.HEAD/poppler/CharCodeToUnicode.cc
---- poppler.0_5_0/poppler/CharCodeToUnicode.cc 2005-09-16 20:38:58.000000000 +0200
-+++ poppler.HEAD/poppler/CharCodeToUnicode.cc  2006-01-18 19:54:12.000000000 +0100
-@@ -243,8 +243,18 @@
-       }
-       if (!(n1 == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
-             tok2[0] == '<' && tok2[n2 - 1] == '>')) {
--        error(-1, "Illegal entry in bfchar block in ToUnicode CMap");
--        continue;
-+        
-+        // check there was no line jump inside the token and so the length is 
-+        // longer than it should be
-+        int countAux = 0;
-+        for (int k = 0; k < n1; k++)
-+          if (tok1[k] != '\n' && tok1[k] != '\r') countAux++;
-+      
-+        if (!(countAux == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
-+            tok2[0] == '<' && tok2[n2 - 1] == '>')) {
-+          error(-1, "Illegal entry in bfchar block in ToUnicode CMap");
-+          continue;
-+        }
-       }
-       tok1[n1 - 1] = tok2[n2 - 1] = '\0';
-       if (sscanf(tok1 + 1, "%x", &code1) != 1) {
-@@ -268,8 +278,21 @@
-       }
-       if (!(n1 == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
-             n2 == 2 + nDigits && tok2[0] == '<' && tok2[n2 - 1] == '>')) {
--        error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
--        continue;
-+        // check there was no line jump inside the token and so the length is 
-+        // longer than it should be
-+        int countAux = 0;
-+        for (int k = 0; k < n1; k++)
-+          if (tok1[k] != '\n' && tok1[k] != '\r') countAux++;
-+        
-+        int countAux2 = 0;
-+        for (int k = 0; k < n1; k++)
-+          if (tok2[k] != '\n' && tok2[k] != '\r') countAux++;
-+        
-+        if (!(countAux == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
-+            countAux2 == 2 + nDigits && tok2[0] == '<' && tok2[n2 - 1] == '>')) {
-+          error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
-+          continue;
-+        }
-       }
-       tok1[n1 - 1] = tok2[n2 - 1] = '\0';
-       if (sscanf(tok1 + 1, "%x", &code1) != 1 ||
-diff -Nur poppler.0_5_0/poppler/Dict.cc poppler.HEAD/poppler/Dict.cc
---- poppler.0_5_0/poppler/Dict.cc      2005-08-27 10:43:43.000000000 +0200
-+++ poppler.HEAD/poppler/Dict.cc       2006-01-18 23:32:13.000000000 +0100
-@@ -16,6 +16,7 @@
- #include <string.h>
- #include "goo/gmem.h"
- #include "Object.h"
-+#include "UGooString.h"
- #include "XRef.h"
- #include "Dict.h"
-@@ -34,13 +35,13 @@
-   int i;
-   for (i = 0; i < length; ++i) {
--    gfree(entries[i].key);
-+    delete entries[i].key;
-     entries[i].val.free();
-   }
-   gfree(entries);
- }
--void Dict::add(char *key, Object *val) {
-+void Dict::add(const UGooString &key, Object *val) {
-   if (length == size) {
-     if (length == 0) {
-       size = 8;
-@@ -49,16 +50,16 @@
-     }
-     entries = (DictEntry *)greallocn(entries, size, sizeof(DictEntry));
-   }
--  entries[length].key = key;
-+  entries[length].key = new UGooString(key);
-   entries[length].val = *val;
-   ++length;
- }
--inline DictEntry *Dict::find(char *key) {
-+inline DictEntry *Dict::find(const UGooString &key) {
-   int i;
-   for (i = 0; i < length; ++i) {
--    if (!strcmp(key, entries[i].key))
-+    if (!key.cmp(entries[i].key))
-       return &entries[i];
-   }
-   return NULL;
-@@ -70,13 +71,13 @@
-   return (e = find("Type")) && e->val.isName(type);
- }
--Object *Dict::lookup(char *key, Object *obj) {
-+Object *Dict::lookup(const UGooString &key, Object *obj) {
-   DictEntry *e;
-   return (e = find(key)) ? e->val.fetch(xref, obj) : obj->initNull();
- }
--Object *Dict::lookupNF(char *key, Object *obj) {
-+Object *Dict::lookupNF(const UGooString &key, Object *obj) {
-   DictEntry *e;
-   return (e = find(key)) ? e->val.copy(obj) : obj->initNull();
-@@ -102,7 +103,7 @@
-   return success;
- }
--char *Dict::getKey(int i) {
-+UGooString *Dict::getKey(int i) {
-   return entries[i].key;
- }
-diff -Nur poppler.0_5_0/poppler/Dict.h poppler.HEAD/poppler/Dict.h
---- poppler.0_5_0/poppler/Dict.h       2005-03-28 09:49:55.000000000 +0200
-+++ poppler.HEAD/poppler/Dict.h        2006-01-18 23:32:13.000000000 +0100
-@@ -15,12 +15,13 @@
- #include "Object.h"
-+class UGooString;
- //------------------------------------------------------------------------
- // Dict
- //------------------------------------------------------------------------
- struct DictEntry {
--  char *key;
-+  UGooString *key;
-   Object val;
- };
-@@ -40,20 +41,20 @@
-   // Get number of entries.
-   int getLength() { return length; }
--  // Add an entry.  NB: does not copy key.
--  void add(char *key, Object *val);
-+  // Add an entry
-+  void add(const UGooString &key, Object *val);
-   // Check if dictionary is of specified type.
-   GBool is(char *type);
-   // Look up an entry and return the value.  Returns a null object
-   // if <key> is not in the dictionary.
--  Object *lookup(char *key, Object *obj);
--  Object *lookupNF(char *key, Object *obj);
-+  Object *lookup(const UGooString &key, Object *obj);
-+  Object *lookupNF(const UGooString &key, Object *obj);
-   GBool lookupInt(const char *key, const char *alt_key, int *value);
-   // Iterative accessors.
--  char *getKey(int i);
-+  UGooString *getKey(int i);
-   Object *getVal(int i, Object *obj);
-   Object *getValNF(int i, Object *obj);
-@@ -70,7 +71,7 @@
-   int length;                 // number of entries in dictionary
-   int ref;                    // reference count
--  DictEntry *find(char *key);
-+  DictEntry *find(const UGooString &key);
- };
- #endif
-diff -Nur poppler.0_5_0/poppler/FontInfo.cc poppler.HEAD/poppler/FontInfo.cc
---- poppler.0_5_0/poppler/FontInfo.cc  2005-10-16 16:54:17.000000000 +0200
-+++ poppler.HEAD/poppler/FontInfo.cc   2006-01-23 16:40:54.000000000 +0100
-@@ -1,3 +1,4 @@
-+#include "config.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <stddef.h>
-@@ -10,8 +11,8 @@
- #include "GfxFont.h"
- #include "Annot.h"
- #include "PDFDoc.h"
--#include "config.h"
- #include "FontInfo.h"
-+#include "UGooString.h"
- FontInfoScanner::FontInfoScanner(PDFDoc *docA) {
-   doc = docA;
-diff -Nur poppler.0_5_0/poppler/Function.cc poppler.HEAD/poppler/Function.cc
---- poppler.0_5_0/poppler/Function.cc  2005-10-16 16:58:14.000000000 +0200
-+++ poppler.HEAD/poppler/Function.cc   2006-01-18 23:32:13.000000000 +0100
-@@ -22,6 +22,7 @@
- #include "Stream.h"
- #include "Error.h"
- #include "Function.h"
-+#include "UGooString.h"
- //------------------------------------------------------------------------
- // Function
-diff -Nur poppler.0_5_0/poppler/Gfx.cc poppler.HEAD/poppler/Gfx.cc
---- poppler.0_5_0/poppler/Gfx.cc       2005-12-08 19:17:42.000000000 +0100
-+++ poppler.HEAD/poppler/Gfx.cc        2006-02-05 16:46:10.000000000 +0100
-@@ -35,6 +35,7 @@
- #include "Error.h"
- #include "Gfx.h"
- #include "ProfileData.h"
-+#include "UGooString.h"
- // the MSVC math.h doesn't define this
- #ifndef M_PI
-@@ -3525,6 +3526,7 @@
-       break;
-       }
-       dict.dictAdd(key, &obj);
-+      gfree(key);
-     }
-     parser->getObj(&obj);
-   }
-@@ -3590,9 +3592,16 @@
-     printf("\n");
-     fflush(stdout);
-   }
-+
-+  if(numArgs == 2) {
-+    out->beginMarkedContent(args[0].getName(),args[1].getDict());
-+  } else {
-+    out->beginMarkedContent(args[0].getName());
-+  }
- }
- void Gfx::opEndMarkedContent(Object args[], int numArgs) {
-+  out->endMarkedContent();
- }
- void Gfx::opMarkPoint(Object args[], int numArgs) {
-@@ -3603,6 +3612,13 @@
-     printf("\n");
-     fflush(stdout);
-   }
-+
-+  if(numArgs == 2) {
-+    out->markPoint(args[0].getName(),args[1].getDict());
-+  } else {
-+    out->markPoint(args[0].getName());
-+  }
-+
- }
- //------------------------------------------------------------------------
-diff -Nur poppler.0_5_0/poppler/GfxFont.cc poppler.HEAD/poppler/GfxFont.cc
---- poppler.0_5_0/poppler/GfxFont.cc   2005-10-16 17:11:32.000000000 +0200
-+++ poppler.HEAD/poppler/GfxFont.cc    2006-02-05 16:46:10.000000000 +0100
-@@ -28,6 +28,7 @@
- #include <fofi/FoFiType1.h>
- #include <fofi/FoFiType1C.h>
- #include <fofi/FoFiTrueType.h>
-+#include "UGooString.h"
- #include "GfxFont.h"
- //------------------------------------------------------------------------
-@@ -360,7 +361,7 @@
- void GfxFont::findExtFontFile() {
-   static char *type1Exts[] = { ".pfa", ".pfb", ".ps", "", NULL };
--  static char *ttExts[] = { ".ttf", NULL };
-+  static char *ttExts[] = { ".ttf", ".ttc", NULL };
-   if (name) {
-     if (type == fontType1) {
-@@ -1521,6 +1522,54 @@
-   return cMap ? cMap->getCollection() : (GooString *)NULL;
- }
-+Gushort *GfxCIDFont::getCodeToGIDMap(FoFiTrueType *ff, int *mapsizep) {
-+  Gushort *map;
-+  int cmapPlatform, cmapEncoding;
-+  int unicodeCmap, macRomanCmap, msSymbolCmap, cmap;
-+  GBool useMacRoman, useUnicode;
-+  char *charName;
-+  Unicode u;
-+  int code, i;
-+  int mapsize;
-+  int cidlen;
-+
-+  *mapsizep = 0;
-+  if (!ctu) return NULL;
-+
-+  /* we use only unicode cmap */
-+  cmap = -1;
-+  for (i = 0; i < ff->getNumCmaps(); ++i) {
-+    cmapPlatform = ff->getCmapPlatform(i);
-+    cmapEncoding = ff->getCmapEncoding(i);
-+    if ((cmapPlatform == 3 && cmapEncoding == 1) || cmapPlatform == 0)
-+      cmap = i;
-+  }
-+  if (cmap < 0)
-+    return NULL;
-+
-+  cidlen = 0;
-+  mapsize = 64;
-+  map = (Gushort *)gmalloc(mapsize * sizeof(Gushort));
-+
-+  while (cidlen < ctu->getLength()) {
-+    int n;
-+    if ((n = ctu->mapToUnicode((CharCode)cidlen, &u, 1)) == 0) {
-+      cidlen++;
-+      continue;
-+    }
-+    if (cidlen >= mapsize) {
-+      while (cidlen >= mapsize)
-+      mapsize *= 2;
-+      map = (Gushort *)grealloc(map, mapsize * sizeof(Gushort));
-+    }
-+    map[cidlen] = ff->mapCodeToGID(cmap, u);
-+    cidlen++;
-+  }
-+
-+  *mapsizep = cidlen;
-+  return map;
-+}
-+
- //------------------------------------------------------------------------
- // GfxFontDict
- //------------------------------------------------------------------------
-@@ -1549,8 +1598,10 @@
-         r.gen = 999999;
-       }
-       }
--      fonts[i] = GfxFont::makeFont(xref, fontDict->getKey(i),
-+      char *aux = fontDict->getKey(i)->getCString();
-+      fonts[i] = GfxFont::makeFont(xref, aux,
-                                  r, obj2.getDict());
-+      delete[] aux;
-       if (fonts[i] && !fonts[i]->isOk()) {
-       delete fonts[i];
-       fonts[i] = NULL;
-diff -Nur poppler.0_5_0/poppler/GfxFont.h poppler.HEAD/poppler/GfxFont.h
---- poppler.0_5_0/poppler/GfxFont.h    2005-07-06 19:12:36.000000000 +0200
-+++ poppler.HEAD/poppler/GfxFont.h     2006-02-02 23:50:01.000000000 +0100
-@@ -310,6 +310,8 @@
-   Gushort *getCIDToGID() { return cidToGID; }
-   int getCIDToGIDLen() { return cidToGIDLen; }
-+  Gushort *getCodeToGIDMap(FoFiTrueType *ff, int *length);
-+
- private:
-   CMap *cMap;                 // char code --> CID
-diff -Nur poppler.0_5_0/poppler/GfxState.cc poppler.HEAD/poppler/GfxState.cc
---- poppler.0_5_0/poppler/GfxState.cc  2005-12-09 21:49:59.000000000 +0100
-+++ poppler.HEAD/poppler/GfxState.cc   2006-02-18 21:17:00.000000000 +0100
-@@ -21,6 +21,7 @@
- #include "Array.h"
- #include "Page.h"
- #include "GfxState.h"
-+#include "UGooString.h"
- //------------------------------------------------------------------------
-@@ -204,6 +205,23 @@
-   }
- }
-+void GfxColorSpace::getGrayLine(Guchar *in, unsigned char *out, int length) {
-+  int i, j, n;
-+  GfxColor color;
-+  GfxGray gray;
-+
-+  n = getNComps();
-+  for (i = 0; i < length; i++) {
-+    
-+    for (j = 0; j < n; j++)
-+      color.c[j] = in[i * n + j] * 256;
-+
-+    getGray (&color, &gray);
-+    out[i] = colToByte(gray);
-+  }
-+}
-+
-+
- //------------------------------------------------------------------------
- // GfxDeviceGrayColorSpace
- //------------------------------------------------------------------------
-@@ -3433,6 +3451,39 @@
-   }
- }
-+void GfxImageColorMap::getGrayLine(Guchar *in, Guchar *out, int length) {
-+  GfxColor color;
-+  double *p;
-+  int i, j;
-+  Guchar *inp, *outp, *tmp_line;
-+  GfxColorSpace *base;
-+
-+  switch (colorSpace->getMode()) {
-+  case csIndexed:
-+  case csSeparation:
-+    tmp_line = (Guchar *) gmalloc (length * nComps2);
-+    for (i = 0; i < length; i++) {
-+      for (j = 0; j < nComps2; j++) {
-+      tmp_line[i * nComps2 + j] = byte_lookup[in[i] * nComps2 + j];
-+      }
-+    }
-+    colorSpace2->getGrayLine(tmp_line, out, length);
-+    gfree (tmp_line);
-+    break;
-+
-+  default:
-+    inp = in;
-+    for (j = 0; j < length; j++)
-+      for (i = 0; i < nComps; i++) {
-+      *inp = byte_lookup[*inp * nComps + i];
-+      inp++;
-+      }
-+    colorSpace->getGrayLine(in, out, length);
-+    break;
-+  }
-+
-+}
-+
- void GfxImageColorMap::getRGBLine(Guchar *in, unsigned int *out, int length) {
-   GfxColor color;
-   double *p;
-diff -Nur poppler.0_5_0/poppler/GfxState.h poppler.HEAD/poppler/GfxState.h
---- poppler.0_5_0/poppler/GfxState.h   2005-10-30 21:29:05.000000000 +0100
-+++ poppler.HEAD/poppler/GfxState.h    2006-02-18 21:17:00.000000000 +0100
-@@ -151,6 +151,7 @@
-   virtual void getRGB(GfxColor *color, GfxRGB *rgb) = 0;
-   virtual void getCMYK(GfxColor *color, GfxCMYK *cmyk) = 0;
-   virtual void getRGBLine(Guchar *in, unsigned int *out, int length);
-+  virtual void getGrayLine(Guchar *in, Guchar *out, int length);
-   // Return the number of color components.
-   virtual int getNComps() = 0;
-@@ -869,6 +870,7 @@
-   void getGray(Guchar *x, GfxGray *gray);
-   void getRGB(Guchar *x, GfxRGB *rgb);
-   void getRGBLine(Guchar *in, unsigned int *out, int length);
-+  void getGrayLine(Guchar *in, Guchar *out, int length);
-   void getCMYK(Guchar *x, GfxCMYK *cmyk);
-   void getColor(Guchar *x, GfxColor *color);
-diff -Nur poppler.0_5_0/poppler/GlobalParams.cc poppler.HEAD/poppler/GlobalParams.cc
---- poppler.0_5_0/poppler/GlobalParams.cc      2005-12-08 19:17:42.000000000 +0100
-+++ poppler.HEAD/poppler/GlobalParams.cc       2006-02-04 21:48:25.000000000 +0100
-@@ -23,9 +23,6 @@
- #ifdef WIN32
- #  include <shlobj.h>
- #endif
--#if HAVE_PAPER_H
--#include <paper.h>
--#endif
- #include <fontconfig/fontconfig.h>
- #include "goo/gmem.h"
- #include "goo/GooString.h"
-@@ -324,24 +321,8 @@
-   cMapDirs = new GooHash(gTrue);
-   toUnicodeDirs = new GooList();
-   displayFonts = new GooHash();
--#if HAVE_PAPER_H
--  char *paperName;
--  const struct paper *paperType;
--  paperinit();
--  if ((paperName = systempapername())) {
--    paperType = paperinfo(paperName);
--    psPaperWidth = (int)paperpswidth(paperType);
--    psPaperHeight = (int)paperpsheight(paperType);
--  } else {
--    error(-1, "No paper information available - using defaults");
--    psPaperWidth = defPaperWidth;
--    psPaperHeight = defPaperHeight;
--  }
--  paperdone();
--#else
--  psPaperWidth = defPaperWidth;
--  psPaperHeight = defPaperHeight;
--#endif
-+  psPaperWidth = -1;
-+  psPaperHeight = -1;
-   psImageableLLX = psImageableLLY = 0;
-   psImageableURX = psPaperWidth;
-   psImageableURY = psPaperHeight;
-@@ -1122,7 +1103,7 @@
-   }
- }
--FcPattern *buildFcPattern(GfxFont *font)
-+static FcPattern *buildFcPattern(GfxFont *font)
- {
-   int weight = FC_WEIGHT_NORMAL,
-       slant = FC_SLANT_ROMAN,
-@@ -1266,7 +1247,7 @@
- DisplayFontParam *GlobalParams::getDisplayFont(GfxFont *font) {
-   DisplayFontParam *dfp;
--  FcPattern *p=0,*m=0;
-+  FcPattern *p=0;
-   GooString *fontName = font->getName();
-   if (!fontName) return NULL;
-@@ -1278,38 +1259,44 @@
-     FcChar8* s;
-     char * ext;
-     FcResult res;
-+    FcFontSet *set;
-+    int i;
-     p = buildFcPattern(font);
-     if (!p)
-       goto fin;
-     FcConfigSubstitute(FCcfg, p, FcMatchPattern);
-     FcDefaultSubstitute(p);
--    m = FcFontMatch(FCcfg,p,&res);
--    if (!m)
--      goto fin; 
--    res = FcPatternGetString(m, FC_FILE, 0, &s);
--    if (res != FcResultMatch || !s)
--      goto fin; 
--    ext = strrchr((char*)s,'.');
--    if (!ext)
-+    set = FcFontSort(FCcfg, p, FcFalse, NULL, &res);
-+    if (!set)
-       goto fin;
--    if (!strncasecmp(ext,".ttf",4))
--    {
--      dfp = new DisplayFontParam(fontName->copy(), displayFontTT);  
--      dfp->tt.fileName = new GooString((char*)s);
--    }
--    else if (!strncasecmp(ext,".pfa",4) || !strncasecmp(ext,".pfb",4)) 
-+    for (i = 0; i < set->nfont; ++i)
-     {
--      dfp = new DisplayFontParam(fontName->copy(), displayFontT1);  
--      dfp->t1.fileName = new GooString((char*)s);
-+      res = FcPatternGetString(set->fonts[i], FC_FILE, 0, &s);
-+      if (res != FcResultMatch || !s)
-+        continue;
-+      ext = strrchr((char*)s,'.');
-+      if (!ext)
-+        continue;
-+      if (!strncasecmp(ext,".ttf",4) || !strncasecmp(ext, ".ttc", 4))
-+      {
-+        dfp = new DisplayFontParam(fontName->copy(), displayFontTT);  
-+        dfp->tt.fileName = new GooString((char*)s);
-+        FcPatternGetInteger(set->fonts[i], FC_INDEX, 0, &(dfp->tt.faceIndex));
-+      }
-+      else if (!strncasecmp(ext,".pfa",4) || !strncasecmp(ext,".pfb",4)) 
-+      {
-+        dfp = new DisplayFontParam(fontName->copy(), displayFontT1);  
-+        dfp->t1.fileName = new GooString((char*)s);
-+      }
-+      else
-+        continue;
-+      displayFonts->add(dfp->name,dfp);
-+      break;
-     }
--    else
--      goto fin;
--    displayFonts->add(dfp->name,dfp);
-+    FcFontSetDestroy(set);
-   }
- fin:
--  if (m)
--    FcPatternDestroy(m);
-   if (p)
-     FcPatternDestroy(p);
-diff -Nur poppler.0_5_0/poppler/GlobalParams.h poppler.HEAD/poppler/GlobalParams.h
---- poppler.0_5_0/poppler/GlobalParams.h       2005-09-20 16:00:43.000000000 +0200
-+++ poppler.HEAD/poppler/GlobalParams.h        2006-02-02 23:50:01.000000000 +0100
-@@ -55,6 +55,7 @@
- struct DisplayFontParamTT {
-   GooString *fileName;
-+  int faceIndex;
- };
- class DisplayFontParam {
-diff -Nur poppler.0_5_0/poppler/Lexer.cc poppler.HEAD/poppler/Lexer.cc
---- poppler.0_5_0/poppler/Lexer.cc     2005-08-31 17:28:46.000000000 +0200
-+++ poppler.HEAD/poppler/Lexer.cc      2006-01-17 22:35:31.000000000 +0100
-@@ -18,6 +18,7 @@
- #include <ctype.h>
- #include "Lexer.h"
- #include "Error.h"
-+#include "XRef.h"
- //------------------------------------------------------------------------
-@@ -46,9 +47,11 @@
- // Lexer
- //------------------------------------------------------------------------
--Lexer::Lexer(XRef *xref, Stream *str) {
-+Lexer::Lexer(XRef *xrefA, Stream *str) {
-   Object obj;
-+  xref = xrefA;
-+
-   curStr.initStream(str);
-   streams = new Array(xref);
-   streams->add(curStr.copy(&obj));
-@@ -57,9 +60,11 @@
-   curStr.streamReset();
- }
--Lexer::Lexer(XRef *xref, Object *obj) {
-+Lexer::Lexer(XRef *xrefA, Object *obj) {
-   Object obj2;
-+  xref = xrefA;
-+
-   if (obj->isStream()) {
-     streams = new Array(xref);
-     freeArray = gTrue;
-@@ -108,7 +113,7 @@
-   return curStr.streamLookChar();
- }
--Object *Lexer::getObj(Object *obj) {
-+Object *Lexer::getObj(Object *obj, int objNum) {
-   char *p;
-   int c, c2;
-   GBool comment, neg, done;
-@@ -291,6 +296,17 @@
-           s->append(tokBuf, tokBufSize);
-         p = tokBuf;
-         n = 0;
-+        
-+        // we are growing see if the document is not malformed and we are growing too much
-+        if (objNum != -1)
-+        {
-+          int newObjNum = xref->getNumEntry(getPos());
-+          if (newObjNum != objNum)
-+          {
-+            error(getPos(), "Unterminated string");
-+            done = gTrue;
-+          }
-+        }
-       }
-       *p++ = (char)c2;
-       ++n;
-diff -Nur poppler.0_5_0/poppler/Lexer.h poppler.HEAD/poppler/Lexer.h
---- poppler.0_5_0/poppler/Lexer.h      2005-08-31 17:28:46.000000000 +0200
-+++ poppler.HEAD/poppler/Lexer.h       2006-01-17 22:35:31.000000000 +0100
-@@ -29,17 +29,17 @@
-   // Construct a lexer for a single stream.  Deletes the stream when
-   // lexer is deleted.
--  Lexer(XRef *xref, Stream *str);
-+  Lexer(XRef *xrefA, Stream *str);
-   // Construct a lexer for a stream or array of streams (assumes obj
-   // is either a stream or array of streams).
--  Lexer(XRef *xref, Object *obj);
-+  Lexer(XRef *xrefA, Object *obj);
-   // Destructor.
-   ~Lexer();
-   // Get the next object from the input stream.
--  Object *getObj(Object *obj);
-+  Object *getObj(Object *obj, int objNum = -1);
-   // Skip to the beginning of the next line in the input stream.
-   void skipToNextLine();
-@@ -73,6 +73,8 @@
-   Object curStr;              // current stream
-   GBool freeArray;            // should lexer free the streams array?
-   char tokBuf[tokBufSize];    // temporary token buffer
-+
-+  XRef *xref;
- };
- #endif
-diff -Nur poppler.0_5_0/poppler/Link.cc poppler.HEAD/poppler/Link.cc
---- poppler.0_5_0/poppler/Link.cc      2005-09-20 16:34:31.000000000 +0200
-+++ poppler.HEAD/poppler/Link.cc       2006-01-18 23:32:13.000000000 +0100
-@@ -21,6 +21,7 @@
- #include "Array.h"
- #include "Dict.h"
- #include "Link.h"
-+#include "UGooString.h"
- //------------------------------------------------------------------------
- // LinkAction
-@@ -421,9 +422,9 @@
-   // named destination
-   if (destObj->isName()) {
--    namedDest = new GooString(destObj->getName());
-+    namedDest = new UGooString(destObj->getName());
-   } else if (destObj->isString()) {
--    namedDest = destObj->getString()->copy();
-+    namedDest = new UGooString(*destObj->getString());
-   // destination dictionary
-   } else if (destObj->isArray()) {
-@@ -459,9 +460,9 @@
-   // named destination
-   if (destObj->isName()) {
--    namedDest = new GooString(destObj->getName());
-+    namedDest = new UGooString(destObj->getName());
-   } else if (destObj->isString()) {
--    namedDest = destObj->getString()->copy();
-+    namedDest = new UGooString(*destObj->getString());
-   // destination dictionary
-   } else if (destObj->isArray()) {
-diff -Nur poppler.0_5_0/poppler/Link.h poppler.HEAD/poppler/Link.h
---- poppler.0_5_0/poppler/Link.h       2005-03-03 20:46:01.000000000 +0100
-+++ poppler.HEAD/poppler/Link.h        2006-01-18 23:32:13.000000000 +0100
-@@ -16,6 +16,7 @@
- #include "Object.h"
- class GooString;
-+class UGooString;
- class Array;
- class Dict;
-@@ -134,13 +135,13 @@
-   // Accessors.
-   virtual LinkActionKind getKind() { return actionGoTo; }
-   LinkDest *getDest() { return dest; }
--  GooString *getNamedDest() { return namedDest; }
-+  UGooString *getNamedDest() { return namedDest; }
- private:
-   LinkDest *dest;             // regular destination (NULL for remote
-                               //   link with bad destination)
--  GooString *namedDest;               // named destination (only one of dest and
-+  UGooString *namedDest;      // named destination (only one of dest and
-                               //   and namedDest may be non-NULL)
- };
-@@ -165,14 +166,14 @@
-   virtual LinkActionKind getKind() { return actionGoToR; }
-   GooString *getFileName() { return fileName; }
-   LinkDest *getDest() { return dest; }
--  GooString *getNamedDest() { return namedDest; }
-+  UGooString *getNamedDest() { return namedDest; }
- private:
-   GooString *fileName;                // file name
-   LinkDest *dest;             // regular destination (NULL for remote
-                               //   link with bad destination)
--  GooString *namedDest;               // named destination (only one of dest and
-+  UGooString *namedDest;      // named destination (only one of dest and
-                               //   and namedDest may be non-NULL)
- };
-diff -Nur poppler.0_5_0/poppler/Makefile.am poppler.HEAD/poppler/Makefile.am
---- poppler.0_5_0/poppler/Makefile.am  2006-01-06 11:05:58.000000000 +0100
-+++ poppler.HEAD/poppler/Makefile.am   2006-02-16 20:28:54.000000000 +0100
-@@ -92,6 +92,8 @@
-       $(zlib_libs)                            \
-       $(FREETYPE_LIBS)
-+libpoppler_la_LDFLAGS = -version-info 1:0:0
-+
- if ENABLE_XPDF_HEADERS
- poppler_includedir = $(includedir)/poppler
-@@ -146,6 +148,7 @@
-       PSOutputDev.h           \
-       TextOutputDev.h         \
-       SecurityHandler.h       \
-+      UGooString.h            \
-       UTF8.h                  \
-       XpdfPluginAPI.h         \
-       poppler-config.h
-@@ -199,4 +202,5 @@
-       PageLabelInfo.h         \
-       PageLabelInfo.cc        \
-       SecurityHandler.cc      \
-+      UGooString.cc           \
-       XpdfPluginAPI.cc
-diff -Nur poppler.0_5_0/poppler/Object.h poppler.HEAD/poppler/Object.h
---- poppler.0_5_0/poppler/Object.h     2005-03-03 20:46:01.000000000 +0100
-+++ poppler.HEAD/poppler/Object.h      2006-01-18 23:32:13.000000000 +0100
-@@ -23,6 +23,7 @@
- class Array;
- class Dict;
- class Stream;
-+class UGooString;
- //------------------------------------------------------------------------
- // Ref
-@@ -163,11 +164,11 @@
-   // Dict accessors.
-   int dictGetLength();
--  void dictAdd(char *key, Object *val);
-+  void dictAdd(const UGooString &key, Object *val);
-   GBool dictIs(char *dictType);
--  Object *dictLookup(char *key, Object *obj);
--  Object *dictLookupNF(char *key, Object *obj);
--  char *dictGetKey(int i);
-+  Object *dictLookup(const UGooString &key, Object *obj);
-+  Object *dictLookupNF(const UGooString &key, Object *obj);
-+  UGooString *dictGetKey(int i);
-   Object *dictGetVal(int i, Object *obj);
-   Object *dictGetValNF(int i, Object *obj);
-@@ -238,7 +239,7 @@
- inline int Object::dictGetLength()
-   { return dict->getLength(); }
--inline void Object::dictAdd(char *key, Object *val)
-+inline void Object::dictAdd(const UGooString &key, Object *val)
-   { dict->add(key, val); }
- inline GBool Object::dictIs(char *dictType)
-@@ -247,13 +248,13 @@
- inline GBool Object::isDict(char *dictType)
-   { return type == objDict && dictIs(dictType); }
--inline Object *Object::dictLookup(char *key, Object *obj)
-+inline Object *Object::dictLookup(const UGooString &key, Object *obj)
-   { return dict->lookup(key, obj); }
--inline Object *Object::dictLookupNF(char *key, Object *obj)
-+inline Object *Object::dictLookupNF(const UGooString &key, Object *obj)
-   { return dict->lookupNF(key, obj); }
--inline char *Object::dictGetKey(int i)
-+inline UGooString *Object::dictGetKey(int i)
-   { return dict->getKey(i); }
- inline Object *Object::dictGetVal(int i, Object *obj)
-diff -Nur poppler.0_5_0/poppler/Outline.cc poppler.HEAD/poppler/Outline.cc
---- poppler.0_5_0/poppler/Outline.cc   2005-09-15 14:32:25.000000000 +0200
-+++ poppler.HEAD/poppler/Outline.cc    2006-01-18 23:32:13.000000000 +0100
-@@ -18,6 +18,7 @@
- #include "Link.h"
- #include "PDFDocEncoding.h"
- #include "Outline.h"
-+#include "UGooString.h"
- //------------------------------------------------------------------------
-diff -Nur poppler.0_5_0/poppler/OutputDev.cc poppler.HEAD/poppler/OutputDev.cc
---- poppler.0_5_0/poppler/OutputDev.cc 2005-10-30 21:29:05.000000000 +0100
-+++ poppler.HEAD/poppler/OutputDev.cc  2006-02-04 22:10:41.000000000 +0100
-@@ -121,6 +121,22 @@
-   drawImage(state, ref, str, width, height, colorMap, NULL, gFalse);
- }
-+void OutputDev::endMarkedContent() {
-+}
-+
-+void OutputDev::beginMarkedContent(char *name) {
-+}
-+
-+void OutputDev::beginMarkedContent(char *name, Dict *properties) {
-+}
-+
-+void OutputDev::markPoint(char *name) {
-+}
-+
-+void OutputDev::markPoint(char *name, Dict *properties) {
-+}
-+
-+
- #if OPI_SUPPORT
- void OutputDev::opiBegin(GfxState *state, Dict *opiDict) {
- }
-diff -Nur poppler.0_5_0/poppler/OutputDev.h poppler.HEAD/poppler/OutputDev.h
---- poppler.0_5_0/poppler/OutputDev.h  2005-11-01 16:29:32.000000000 +0100
-+++ poppler.HEAD/poppler/OutputDev.h   2006-02-04 22:10:41.000000000 +0100
-@@ -183,6 +183,16 @@
-                                  int maskWidth, int maskHeight,
-                                  GfxImageColorMap *maskColorMap);
-+  //----- grouping operators
-+
-+  virtual void endMarkedContent();
-+  virtual void beginMarkedContent(char *name);
-+  virtual void beginMarkedContent(char *name, Dict *properties);
-+  virtual void markPoint(char *name);
-+  virtual void markPoint(char *name, Dict *properties);
-+  
-+  
-+
- #if OPI_SUPPORT
-   //----- OPI functions
-   virtual void opiBegin(GfxState *state, Dict *opiDict);
-diff -Nur poppler.0_5_0/poppler/Page.cc poppler.HEAD/poppler/Page.cc
---- poppler.0_5_0/poppler/Page.cc      2006-01-08 23:51:17.000000000 +0100
-+++ poppler.HEAD/poppler/Page.cc       2006-01-18 23:32:13.000000000 +0100
-@@ -29,6 +29,7 @@
- #endif
- #include "Error.h"
- #include "Page.h"
-+#include "UGooString.h"
- //------------------------------------------------------------------------
- // PageAttrs
-diff -Nur poppler.0_5_0/poppler/PageLabelInfo.cc poppler.HEAD/poppler/PageLabelInfo.cc
---- poppler.0_5_0/poppler/PageLabelInfo.cc     2005-07-29 00:56:17.000000000 +0200
-+++ poppler.HEAD/poppler/PageLabelInfo.cc      2006-01-18 23:32:13.000000000 +0100
-@@ -2,6 +2,7 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <assert.h>
-+#include "UGooString.h"
- #include "PageLabelInfo.h"
-diff -Nur poppler.0_5_0/poppler/Parser.cc poppler.HEAD/poppler/Parser.cc
---- poppler.0_5_0/poppler/Parser.cc    2005-09-20 17:27:31.000000000 +0200
-+++ poppler.HEAD/poppler/Parser.cc     2006-01-18 23:32:13.000000000 +0100
-@@ -20,6 +20,7 @@
- #include "XRef.h"
- #include "Error.h"
- #include "Decrypt.h"
-+#include "UGooString.h"
- Parser::Parser(XRef *xrefA, Lexer *lexerA) {
-   xref = xrefA;
-@@ -68,7 +69,7 @@
-   // dictionary or stream
-   } else if (buf1.isCmd("<<")) {
--    shift();
-+    shift(objNum);
-     obj->initDict(xref);
-     while (!buf1.isCmd(">>") && !buf1.isEOF()) {
-       if (!buf1.isName()) {
-@@ -82,6 +83,7 @@
-         break;
-       }
-       obj->dictAdd(key, getObj(&obj2, fileKey, keyLength, objNum, objGen));
-+      gfree(key);
-       }
-     }
-     if (buf1.isEOF())
-@@ -192,7 +194,7 @@
-   return str;
- }
--void Parser::shift() {
-+void Parser::shift(int objNum) {
-   if (inlineImg > 0) {
-     if (inlineImg < 2) {
-       ++inlineImg;
-@@ -210,5 +212,5 @@
-   if (inlineImg > 0)          // don't buffer inline image data
-     buf2.initNull();
-   else
--    lexer->getObj(&buf2);
-+    lexer->getObj(&buf2, objNum);
- }
-diff -Nur poppler.0_5_0/poppler/Parser.h poppler.HEAD/poppler/Parser.h
---- poppler.0_5_0/poppler/Parser.h     2005-09-16 20:29:18.000000000 +0200
-+++ poppler.HEAD/poppler/Parser.h      2006-01-17 22:35:31.000000000 +0100
-@@ -47,7 +47,7 @@
-   int inlineImg;              // set when inline image data is encountered
-   Stream *makeStream(Object *dict);
--  void shift();
-+  void shift(int objNum = -1);
- };
- #endif
-diff -Nur poppler.0_5_0/poppler/PDFDoc.cc poppler.HEAD/poppler/PDFDoc.cc
---- poppler.0_5_0/poppler/PDFDoc.cc    2005-12-07 09:42:21.000000000 +0100
-+++ poppler.HEAD/poppler/PDFDoc.cc     2006-01-18 23:32:13.000000000 +0100
-@@ -38,6 +38,7 @@
- #include "Outline.h"
- #endif
- #include "PDFDoc.h"
-+#include "UGooString.h"
- //------------------------------------------------------------------------
-diff -Nur poppler.0_5_0/poppler/PDFDoc.h poppler.HEAD/poppler/PDFDoc.h
---- poppler.0_5_0/poppler/PDFDoc.h     2005-10-30 21:29:05.000000000 +0100
-+++ poppler.HEAD/poppler/PDFDoc.h      2006-01-18 23:32:13.000000000 +0100
-@@ -123,7 +123,7 @@
-   // Find a named destination.  Returns the link destination, or
-   // NULL if <name> is not a destination.
--  LinkDest *findDest(GooString *name)
-+  LinkDest *findDest(UGooString *name)
-     { return catalog->findDest(name); }
- #ifndef DISABLE_OUTLINE
-diff -Nur poppler.0_5_0/poppler/poppler-config.h.in poppler.HEAD/poppler/poppler-config.h.in
---- poppler.0_5_0/poppler/poppler-config.h.in  2005-10-17 04:17:52.000000000 +0200
-+++ poppler.HEAD/poppler/poppler-config.h.in   2006-01-23 19:52:48.000000000 +0100
-@@ -14,11 +14,6 @@
- // around #undef look odd, but it's to silence warnings about
- // redefining those symbols.
--/* Use A4 paper size instead of Letter for PostScript output. */
--#ifndef A4_PAPER
--#undef A4_PAPER
--#endif
--
- /* Enable multithreading support. */
- #ifndef MULTITHREADING
- #undef MULTITHREADED
-diff -Nur poppler.0_5_0/poppler/PSOutputDev.cc poppler.HEAD/poppler/PSOutputDev.cc
---- poppler.0_5_0/poppler/PSOutputDev.cc       2005-10-30 21:29:05.000000000 +0100
-+++ poppler.HEAD/poppler/PSOutputDev.cc        2006-02-13 23:38:44.000000000 +0100
-@@ -35,6 +35,7 @@
- #include "Stream.h"
- #include "Annot.h"
- #include "PSOutputDev.h"
-+#include "UGooString.h"
- #ifdef MACOS
- // needed for setting type/creator of MacOS files
-@@ -1039,6 +1040,7 @@
-   fontFileNameSize = 64;
-   fontFileNameLen = 0;
-   fontFileNames = (GooString **)gmallocn(fontFileNameSize, sizeof(GooString *));
-+  psFileNames = (GooString **)gmallocn(fontFileNameSize, sizeof(GooString *));
-   nextTrueTypeNum = 0;
-   font16EncLen = 0;
-   font16EncSize = 0;
-@@ -1123,6 +1125,13 @@
-     }
-     gfree(fontFileNames);
-   }
-+  if (psFileNames) {
-+    for (i = 0; i < fontFileNameLen; ++i) {
-+      if (psFileNames[i])
-+        delete psFileNames[i];
-+    }
-+    gfree(psFileNames);
-+  }
-   if (font16Enc) {
-     for (i = 0; i < font16EncLen; ++i) {
-       delete font16Enc[i].enc;
-@@ -1490,6 +1499,7 @@
-   double w1, w2;
-   double *fm;
-   int i, j;
-+  DisplayFontParam *dfp;
-   // check if font is already set up
-   for (i = 0; i < fontIDLen; ++i) {
-@@ -1547,8 +1557,7 @@
-   } else if (globalParams->getPSEmbedTrueType() &&
-            font->getType() == fontTrueType &&
-            font->getExtFontFile()) {
--    psName = filterPSName(font->getName());
--    setupExternalTrueTypeFont(font, psName);
-+    psName = setupExternalTrueTypeFont(font);
-   // check for embedded CID PostScript font
-   } else if (globalParams->getPSEmbedCIDPostScript() &&
-@@ -1570,6 +1579,12 @@
-     psName = new GooString(type3Name);
-     setupType3Font(font, psName, parentResDict);
-+  // check for external CID TrueType font file
-+  } else if (globalParams->getPSEmbedCIDTrueType() &&
-+           font->getType() == fontCIDType2 &&
-+           font->getExtFontFile()) {
-+    psName = setupExternalCIDTrueTypeFont(font, font->getExtFontFile());
-+
-   // do 8-bit font substitution
-   } else if (!font->isCIDFont()) {
-     subst = gTrue;
-@@ -1651,6 +1666,14 @@
-           font16Enc[font16EncLen].enc->getCString());
-     }
-+  // try the display font for embedding
-+  } else if (globalParams->getPSEmbedCIDTrueType() &&
-+           ((GfxCIDFont *)font)->getCollection() &&
-+           (dfp = globalParams->
-+            getDisplayFont(font)) &&
-+           dfp->kind == displayFontTT) {
-+    psName = setupExternalCIDTrueTypeFont(font, dfp->tt.fileName, dfp->tt.faceIndex);
-+
-   // give up - can't do anything with this font
-   } else {
-     error(-1, "Couldn't find a font to substitute for '%s' ('%s' character collection)",
-@@ -1860,8 +1883,12 @@
-     fontFileNameSize += 64;
-     fontFileNames = (GooString **)greallocn(fontFileNames,
-                                         fontFileNameSize, sizeof(GooString *));
-+    psFileNames = (GooString **)greallocn(psFileNames,
-+                                     fontFileNameSize, sizeof(GooString *));
-   }
--  fontFileNames[fontFileNameLen++] = fileName->copy();
-+  fontFileNames[fontFileNameLen] = fileName->copy();
-+  psFileNames[fontFileNameLen] = psName->copy();
-+  fontFileNameLen++;
-   // beginning comment
-   writePSFmt("%%%%BeginResource: font %s\n", psName->getCString());
-@@ -1974,25 +2001,24 @@
-   writePS("%%EndResource\n");
- }
--void PSOutputDev::setupExternalTrueTypeFont(GfxFont *font, GooString *psName) {
--  char unique[32];
-+GooString *PSOutputDev::setupExternalTrueTypeFont(GfxFont *font) {
-   GooString *fileName;
-   char *fontBuf;
-   int fontLen;
-   FoFiTrueType *ffTT;
-   Gushort *codeToGID;
-+  GooString *psName;
-   int i;
-   // check if font is already embedded
-   fileName = font->getExtFontFile();
-   for (i = 0; i < fontFileNameLen; ++i) {
-     if (!fontFileNames[i]->cmp(fileName)) {
--      sprintf(unique, "_%d", nextTrueTypeNum++);
--      psName->append(unique);
--      break;
-+      return psFileNames[i]->copy();
-     }
-   }
-+  psName = filterPSName(font->getName());
-   // add entry to fontFileNames list
-   if (i == fontFileNameLen) {
-     if (fontFileNameLen >= fontFileNameSize) {
-@@ -2000,9 +2026,14 @@
-       fontFileNames =
-       (GooString **)greallocn(fontFileNames,
-                             fontFileNameSize, sizeof(GooString *));
-+      psFileNames =
-+      (GooString **)greallocn(psFileNames,
-+                           fontFileNameSize, sizeof(GooString *));
-     }
-   }
--  fontFileNames[fontFileNameLen++] = fileName->copy();
-+  fontFileNames[fontFileNameLen] = fileName->copy();
-+  psFileNames[fontFileNameLen] = psName->copy();
-+  fontFileNameLen++;
-   // beginning comment
-   writePSFmt("%%%%BeginResource: font %s\n", psName->getCString());
-@@ -2025,6 +2056,82 @@
-   // ending comment
-   writePS("%%EndResource\n");
-+  return psName;
-+}
-+
-+GooString *PSOutputDev::setupExternalCIDTrueTypeFont(GfxFont *font, GooString *fileName, int faceIndex) {
-+//   char *fontBuf;
-+//   int fontLen;
-+  FoFiTrueType *ffTT;
-+  Gushort *codeToGID;
-+  GooString *psName;
-+  int i;
-+  GooString *myFileName;
-+
-+  myFileName = fileName->copy();
-+  if (faceIndex > 0) {
-+    char tmp[32];
-+    sprintf(tmp, ",%d", faceIndex);
-+    myFileName->append(tmp);
-+  }
-+  // check if font is already embedded
-+  for (i = 0; i < fontFileNameLen; ++i) {
-+    if (!fontFileNames[i]->cmp(myFileName)) {
-+      delete myFileName;
-+      return psFileNames[i]->copy();
-+    }
-+  }
-+
-+  psName = filterPSName(font->getName());
-+  // add entry to fontFileNames list
-+  if (i == fontFileNameLen) {
-+    if (fontFileNameLen >= fontFileNameSize) {
-+      fontFileNameSize += 64;
-+      fontFileNames =
-+      (GooString **)grealloc(fontFileNames,
-+                           fontFileNameSize * sizeof(GooString *));
-+      psFileNames =
-+      (GooString **)grealloc(psFileNames,
-+                           fontFileNameSize * sizeof(GooString *));
-+    }
-+  }
-+  fontFileNames[fontFileNameLen] = myFileName;
-+  psFileNames[fontFileNameLen] = psName->copy();
-+  fontFileNameLen++;
-+
-+  // beginning comment
-+  writePSFmt("%%%%BeginResource: font %s\n", psName->getCString());
-+  embFontList->append("%%+ font ");
-+  embFontList->append(psName->getCString());
-+  embFontList->append("\n");
-+
-+  // convert it to a CID type2 font
-+  if ((ffTT = FoFiTrueType::load(fileName->getCString(), faceIndex))) {
-+      int n = ((GfxCIDFont *)font)->getCIDToGIDLen();
-+      if (n) {
-+      codeToGID = (Gushort *)gmalloc(n * sizeof(Gushort));
-+      memcpy(codeToGID, ((GfxCIDFont *)font)->getCIDToGID(), n * sizeof(Gushort));
-+      } else {
-+      codeToGID = ((GfxCIDFont *)font)->getCodeToGIDMap(ffTT, &n);
-+      }
-+      if (globalParams->getPSLevel() >= psLevel3) {
-+      // Level 3: use a CID font
-+      ffTT->convertToCIDType2(psName->getCString(),
-+                              codeToGID, n, gTrue,
-+                              outputFunc, outputStream);
-+      } else {
-+      // otherwise: use a non-CID composite font
-+      ffTT->convertToType0(psName->getCString(),
-+                           codeToGID, n, gTrue,
-+                           outputFunc, outputStream);
-+      }
-+      gfree(codeToGID);
-+      delete ffTT;
-+  }
-+
-+  // ending comment
-+  writePS("%%EndResource\n");
-+  return psName;
- }
- void PSOutputDev::setupEmbeddedCIDType0Font(GfxFont *font, Ref *id,
-@@ -2188,7 +2295,9 @@
-     t3Cacheable = gFalse;
-     for (i = 0; i < charProcs->getLength(); ++i) {
-       writePS("/");
--      writePSName(charProcs->getKey(i));
-+      char *aux = charProcs->getKey(i)->getCString();
-+      writePSName(aux);
-+      delete[] aux;
-       writePS(" {\n");
-       gfx->display(charProcs->getVal(i, &charProc));
-       charProc.free();
-diff -Nur poppler.0_5_0/poppler/PSOutputDev.h poppler.HEAD/poppler/PSOutputDev.h
---- poppler.0_5_0/poppler/PSOutputDev.h        2005-10-30 21:29:05.000000000 +0100
-+++ poppler.HEAD/poppler/PSOutputDev.h 2006-02-13 23:38:44.000000000 +0100
-@@ -237,10 +237,11 @@
-   void setupExternalType1Font(GooString *fileName, GooString *psName);
-   void setupEmbeddedType1CFont(GfxFont *font, Ref *id, GooString *psName);
-   void setupEmbeddedTrueTypeFont(GfxFont *font, Ref *id, GooString *psName);
--  void setupExternalTrueTypeFont(GfxFont *font, GooString *psName);
-+  GooString *setupExternalTrueTypeFont(GfxFont *font);
-   void setupEmbeddedCIDType0Font(GfxFont *font, Ref *id, GooString *psName);
-   void setupEmbeddedCIDTrueTypeFont(GfxFont *font, Ref *id, GooString *psName,
-                                   GBool needVerticalMetrics);
-+  GooString *setupExternalCIDTrueTypeFont(GfxFont *font, GooString *fileName, int faceIndex = 0);
-   void setupType3Font(GfxFont *font, GooString *psName, Dict *parentResDict);
-   void setupImages(Dict *resDict);
-   void setupImage(Ref id, Stream *str);
-@@ -301,6 +302,7 @@
-   int fontFileIDLen;          // number of entries in fontFileIDs array
-   int fontFileIDSize;         // size of fontFileIDs array
-   GooString **fontFileNames;  // list of names of all embedded external fonts
-+  GooString **psFileNames;    // list of names of all embedded external fonts
-   int fontFileNameLen;                // number of entries in fontFileNames array
-   int fontFileNameSize;               // size of fontFileNames array
-   int nextTrueTypeNum;                // next unique number to append to a TrueType
-diff -Nur poppler.0_5_0/poppler/SecurityHandler.cc poppler.HEAD/poppler/SecurityHandler.cc
---- poppler.0_5_0/poppler/SecurityHandler.cc   2005-09-16 20:29:18.000000000 +0200
-+++ poppler.HEAD/poppler/SecurityHandler.cc    2006-01-18 23:32:13.000000000 +0100
-@@ -26,6 +26,7 @@
- #  include "XpdfPluginAPI.h"
- #endif
- #include "SecurityHandler.h"
-+#include "UGooString.h"
- //------------------------------------------------------------------------
- // SecurityHandler
-diff -Nur poppler.0_5_0/poppler/SplashOutputDev.cc poppler.HEAD/poppler/SplashOutputDev.cc
---- poppler.0_5_0/poppler/SplashOutputDev.cc   2005-10-30 21:29:05.000000000 +0100
-+++ poppler.HEAD/poppler/SplashOutputDev.cc    2006-02-05 16:46:10.000000000 +0100
-@@ -941,11 +941,13 @@
-   GfxFontType fontType;
-   SplashOutFontFileID *id;
-   SplashFontFile *fontFile;
-+  SplashFontSrc *fontsrc;
-   FoFiTrueType *ff;
-   Ref embRef;
-   Object refObj, strObj;
--  GooString *tmpFileName, *fileName, *substName;
--  FILE *tmpFile;
-+  GooString *fileName, *substName;
-+  char *tmpBuf;
-+  int tmpBufLen;
-   Gushort *codeToGID;
-   DisplayFontParam *dfp;
-   CharCodeToUnicode *ctu;
-@@ -954,10 +956,12 @@
-   char *name;
-   Unicode uBuf[8];
-   int c, substIdx, n, code, cmap;
-+  int faceIndex = 0;
-   needFontUpdate = gFalse;
-   font = NULL;
--  tmpFileName = NULL;
-+  fileName = NULL;
-+  tmpBuf = NULL;
-   substIdx = -1;
-   dfp = NULL;
-@@ -978,22 +982,9 @@
-     // if there is an embedded font, write it to disk
-     if (gfxFont->getEmbeddedFontID(&embRef)) {
--      if (!openTempFile(&tmpFileName, &tmpFile, "wb", NULL)) {
--      error(-1, "Couldn't create temporary font file");
-+      tmpBuf = gfxFont->readEmbFontFile(xref, &tmpBufLen);
-+      if (! tmpBuf)
-       goto err2;
--      }
--      refObj.initRef(embRef.num, embRef.gen);
--      refObj.fetch(xref, &strObj);
--      refObj.free();
--      strObj.streamReset();
--      while ((c = strObj.streamGetChar()) != EOF) {
--      fputc(c, tmpFile);
--      }
--      strObj.streamClose();
--      strObj.free();
--      fclose(tmpFile);
--      fileName = tmpFileName;
--
-     // if there is an external font file, use it
-     } else if (!(fileName = gfxFont->getExtFontFile())) {
-@@ -1016,18 +1007,23 @@
-       case displayFontTT:
-       fileName = dfp->tt.fileName;
-       fontType = gfxFont->isCIDFont() ? fontCIDType2 : fontTrueType;
-+      faceIndex = dfp->tt.faceIndex;
-       break;
-       }
-     }
-+    fontsrc = new SplashFontSrc;
-+    if (fileName)
-+      fontsrc->setFile(fileName, gFalse);
-+    else
-+      fontsrc->setBuf(tmpBuf, tmpBufLen, gFalse);
-+
-     // load the font file
-     switch (fontType) {
-     case fontType1:
--      if (!(fontFile = fontEngine->loadType1Font(
--                         id,
--                         fileName->getCString(),
--                         fileName == tmpFileName,
--                         ((Gfx8BitFont *)gfxFont)->getEncoding()))) {
-+      fontFile = fontEngine->loadType1Font(id, fontsrc, 
-+                                         ((Gfx8BitFont *)gfxFont)->getEncoding());
-+      if (! fontFile) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-                                : "(unnamed)");
-@@ -1035,11 +1031,9 @@
-       }
-       break;
-     case fontType1C:
--      if (!(fontFile = fontEngine->loadType1CFont(
--                         id,
--                         fileName->getCString(),
--                         fileName == tmpFileName,
--                         ((Gfx8BitFont *)gfxFont)->getEncoding()))) {
-+      fontFile = fontEngine->loadType1CFont(id, fontsrc,
-+                                          ((Gfx8BitFont *)gfxFont)->getEncoding());
-+      if (! fontFile) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-                                : "(unnamed)");
-@@ -1047,7 +1041,11 @@
-       }
-       break;
-     case fontTrueType:
--      if ((ff = FoFiTrueType::load(fileName->getCString()))) {
-+      if (fileName)
-+       ff = FoFiTrueType::load(fileName->getCString());
-+      else
-+       ff = new FoFiTrueType(tmpBuf, tmpBufLen, gFalse);
-+      if (ff) {
-       codeToGID = ((Gfx8BitFont *)gfxFont)->getCodeToGIDMap(ff);
-       n = 256;
-       delete ff;
-@@ -1057,8 +1055,7 @@
-       }
-       if (!(fontFile = fontEngine->loadTrueTypeFont(
-                          id,
--                         fileName->getCString(),
--                         fileName == tmpFileName,
-+                         fontsrc,
-                          codeToGID, n))) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-@@ -1068,10 +1065,8 @@
-       break;
-     case fontCIDType0:
-     case fontCIDType0C:
--      if (!(fontFile = fontEngine->loadCIDFont(
--                         id,
--                         fileName->getCString(),
--                         fileName == tmpFileName))) {
-+      fontFile = fontEngine->loadCIDFont(id, fontsrc);
-+      if (! fontFile) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-                                : "(unnamed)");
-@@ -1084,7 +1079,11 @@
-       if (dfp) {
-       // create a CID-to-GID mapping, via Unicode
-       if ((ctu = ((GfxCIDFont *)gfxFont)->getToUnicode())) {
--        if ((ff = FoFiTrueType::load(fileName->getCString()))) {
-+              if (fileName)
-+               ff = FoFiTrueType::load(fileName->getCString());
-+              else
-+               ff = new FoFiTrueType(tmpBuf, tmpBufLen, gFalse);
-+              if (ff) {
-           // look for a Unicode cmap
-           for (cmap = 0; cmap < ff->getNumCmaps(); ++cmap) {
-             if ((ff->getCmapPlatform(cmap) == 3 &&
-@@ -1116,16 +1115,28 @@
-       } else {
-       if (((GfxCIDFont *)gfxFont)->getCIDToGID()) {
-       n = ((GfxCIDFont *)gfxFont)->getCIDToGIDLen();
--        codeToGID = (Gushort *)gmallocn(n, sizeof(Gushort));
--      memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(),
--           n * sizeof(Gushort));
-+      if (n) {
-+              codeToGID = (Gushort *)gmallocn(n, sizeof(Gushort));
-+              memcpy(codeToGID, ((GfxCIDFont *)gfxFont)->getCIDToGID(),
-+                      n * sizeof(Gushort));
-+      } else {
-+              if (fileName)
-+               ff = FoFiTrueType::load(fileName->getCString());
-+              else
-+               ff = new FoFiTrueType(tmpBuf, tmpBufLen, gFalse);
-+              if (! ff)
-+               goto err2;
-+              codeToGID = ((GfxCIDFont *)gfxFont)->getCodeToGIDMap(ff, &n);
-+              delete ff;
-+      }
-       }
-       }
-       if (!(fontFile = fontEngine->loadTrueTypeFont(
-                          id,
--                         fileName->getCString(),
--                         fileName == tmpFileName,
--                         codeToGID, n))) {
-+                         fontsrc,
-+                         codeToGID,
-+                         n,
-+                         faceIndex))) {
-       error(-1, "Couldn't create a font for '%s'",
-             gfxFont->getName() ? gfxFont->getName()->getCString()
-                                : "(unnamed)");
-@@ -1153,17 +1164,11 @@
-   }
-   font = fontEngine->getFont(fontFile, mat);
--  if (tmpFileName) {
--    delete tmpFileName;
--  }
-   return;
-  err2:
-   delete id;
-  err1:
--  if (tmpFileName) {
--    delete tmpFileName;
--  }
-   return;
- }
-diff -Nur poppler.0_5_0/poppler/Stream.cc poppler.HEAD/poppler/Stream.cc
---- poppler.0_5_0/poppler/Stream.cc    2006-01-11 17:52:58.000000000 +0100
-+++ poppler.HEAD/poppler/Stream.cc     2006-01-18 23:32:13.000000000 +0100
-@@ -33,6 +33,7 @@
- #include "JBIG2Stream.h"
- #include "JPXStream.h"
- #include "Stream-CCITT.h"
-+#include "UGooString.h"
- #ifdef ENABLE_LIBJPEG
- #include "DCTStream.h"
-diff -Nur poppler.0_5_0/poppler/UGooString.cc poppler.HEAD/poppler/UGooString.cc
---- poppler.0_5_0/poppler/UGooString.cc        1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/poppler/UGooString.cc 2006-01-18 23:36:01.000000000 +0100
-@@ -0,0 +1,86 @@
-+//========================================================================
-+//
-+// UGooString.cc
-+//
-+// Unicode string
-+//
-+// Copyright 2005 Albert Astals Cid <aacid@kde.org>
-+//
-+//========================================================================
-+
-+#include <string.h>
-+
-+#include "goo/gmem.h"
-+#include "goo/GooString.h"
-+#include "PDFDocEncoding.h"
-+#include "UGooString.h"
-+
-+UGooString::UGooString(Unicode *u, int l)
-+{
-+  s = u;
-+  length = l;
-+}
-+
-+UGooString::UGooString(GooString &str)
-+{
-+  if ((str.getChar(0) & 0xff) == 0xfe && (str.getChar(1) & 0xff) == 0xff)
-+  {
-+    length = (str.getLength() - 2) / 2;
-+    s = (Unicode *)gmallocn(length, sizeof(Unicode));
-+    for (int j = 0; j < length; ++j) {
-+      s[j] = ((str.getChar(2 + 2*j) & 0xff) << 8) | (str.getChar(3 + 2*j) & 0xff);
-+    }
-+  } else
-+    initChar(str);
-+}
-+
-+UGooString::UGooString(const UGooString &str)
-+{
-+  length = str.length;
-+  s = (Unicode *)gmallocn(length, sizeof(Unicode));
-+  memcpy(s, str.s, length * sizeof(Unicode));
-+}
-+
-+UGooString::UGooString(const char *str)
-+{
-+  GooString aux(str);
-+  initChar(aux);
-+}
-+
-+void UGooString::initChar(GooString &str)
-+{
-+  length = str.getLength();
-+  s = (Unicode *)gmallocn(length, sizeof(Unicode));
-+  for (int j = 0; j < length; ++j) {
-+    s[j] = pdfDocEncoding[str.getChar(j) & 0xff];
-+  }
-+}
-+
-+UGooString::~UGooString()
-+{
-+  gfree(s);
-+}
-+
-+int UGooString::cmp(UGooString *str) const
-+{
-+  int n1, n2, i, x;
-+  Unicode *p1, *p2;
-+
-+  n1 = length;
-+  n2 = str->length;
-+  for (i = 0, p1 = s, p2 = str->s; i < n1 && i < n2; ++i, ++p1, ++p2) {
-+    x = *p1 - *p2;
-+    if (x != 0) {
-+      return x;
-+    }
-+  }
-+  return n1 - n2;
-+}
-+
-+char *UGooString::getCString() const
-+{
-+  char *res = new char[length + 1];
-+  for (int i = 0; i < length; i++) res[i] = s[i];
-+  res[length] = '\0';
-+  return res;
-+}
-diff -Nur poppler.0_5_0/poppler/UGooString.h poppler.HEAD/poppler/UGooString.h
---- poppler.0_5_0/poppler/UGooString.h 1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/poppler/UGooString.h  2006-01-18 23:36:01.000000000 +0100
-@@ -0,0 +1,55 @@
-+//========================================================================
-+//
-+// UGooString.h
-+//
-+// Unicode string
-+//
-+// Copyright 2005 Albert Astals Cid <aacid@kde.org>
-+//
-+//========================================================================
-+
-+#ifndef UGooString_H
-+#define UGooString_H
-+
-+#include "CharTypes.h"
-+
-+class GooString;
-+
-+class UGooString
-+{
-+public:
-+  // Create an unicode string
-+  UGooString(Unicode *u, int l);
-+
-+  // Create a unicode string from <str>.
-+  UGooString(GooString &str);
-+
-+  // Copy the unicode string
-+  UGooString(const UGooString &str);
-+
-+  // Create a unicode string from <str>.
-+  UGooString(const char *str);
-+
-+  // Destructor.
-+  ~UGooString();
-+
-+  // Get length.
-+  int getLength() const { return length; }
-+
-+  // Compare two strings:  -1:<  0:=  +1:>
-+  int cmp(UGooString *str) const;
-+
-+  // get the unicode
-+  Unicode *unicode() const { return s; }
-+
-+  // get the const char*
-+  char *getCString() const;
-+
-+private:
-+  void initChar(GooString &str);
-+
-+  int length;
-+  Unicode *s;
-+};
-+
-+#endif
-diff -Nur poppler.0_5_0/poppler/XRef.cc poppler.HEAD/poppler/XRef.cc
---- poppler.0_5_0/poppler/XRef.cc      2005-09-20 16:59:43.000000000 +0200
-+++ poppler.HEAD/poppler/XRef.cc       2006-01-18 23:32:13.000000000 +0100
-@@ -24,6 +24,7 @@
- #include "Dict.h"
- #include "Error.h"
- #include "ErrorCodes.h"
-+#include "UGooString.h"
- #include "XRef.h"
- //------------------------------------------------------------------------
-@@ -934,6 +935,23 @@
-   return gTrue;
- }
-+int XRef::getNumEntry(int offset) const
-+{
-+  int res = -1;
-+  int resOffset = -1;
-+  XRefEntry e;
-+  for (int i = 0; i < size; ++i)
-+  {
-+    e = entries[i];
-+    if (e.offset < offset && e.offset > resOffset)
-+    {
-+      res = i;
-+      resOffset = e.offset;
-+    }
-+  }
-+  return res;
-+}
-+
- Guint XRef::strToUnsigned(char *s) {
-   Guint x;
-   char *p;
-diff -Nur poppler.0_5_0/poppler/XRef.h poppler.HEAD/poppler/XRef.h
---- poppler.0_5_0/poppler/XRef.h       2005-09-20 16:00:43.000000000 +0200
-+++ poppler.HEAD/poppler/XRef.h        2006-01-17 22:35:31.000000000 +0100
-@@ -94,6 +94,9 @@
-   // Returns false if unknown or file is not damaged.
-   GBool getStreamEnd(Guint streamStart, Guint *streamEnd);
-+  // Retuns the entry that belongs to the offset
-+  int getNumEntry(int offset) const;
-+
-   // Direct access.
-   int getSize() { return size; }
-   XRefEntry *getEntry(int i) { return &entries[i]; }
-diff -Nur poppler.0_5_0/qt/Makefile.am poppler.HEAD/qt/Makefile.am
---- poppler.0_5_0/qt/Makefile.am       2006-01-06 11:05:59.000000000 +0100
-+++ poppler.HEAD/qt/Makefile.am        2006-02-16 20:28:54.000000000 +0100
-@@ -25,6 +25,8 @@
-       $(POPPLER_QT_LIBS)                      \
-       $(FREETYPE_LIBS)
-+libpoppler_qt_la_LDFLAGS = -version-info 1:0:0
-+
- if BUILD_SPLASH_OUTPUT
- noinst_PROGRAMS = test-poppler-qt
-diff -Nur poppler.0_5_0/qt/poppler-document.cc poppler.HEAD/qt/poppler-document.cc
---- poppler.0_5_0/qt/poppler-document.cc       2005-12-03 23:20:54.000000000 +0100
-+++ poppler.HEAD/qt/poppler-document.cc        2006-01-18 23:32:13.000000000 +0100
-@@ -24,6 +24,7 @@
- #include <Catalog.h>
- #include <ErrorCodes.h>
- #include <SplashOutputDev.h>
-+#include <UGooString.h>
- #include <splash/SplashBitmap.h>
- #include "poppler-private.h"
-diff -Nur poppler.0_5_0/qt/poppler-page.cc poppler.HEAD/qt/poppler-page.cc
---- poppler.0_5_0/qt/poppler-page.cc   2006-01-06 11:05:59.000000000 +0100
-+++ poppler.HEAD/qt/poppler-page.cc    2006-01-10 22:57:28.000000000 +0100
-@@ -28,6 +28,7 @@
- #include <TextOutputDev.h>
- #include <splash/SplashBitmap.h>
- #include "poppler-private.h"
-+#include "poppler-page-transition-private.h"
- namespace Poppler {
-diff -Nur poppler.0_5_0/qt/poppler-page-transition.cc poppler.HEAD/qt/poppler-page-transition.cc
---- poppler.0_5_0/qt/poppler-page-transition.cc        2006-01-06 11:05:59.000000000 +0100
-+++ poppler.HEAD/qt/poppler-page-transition.cc 2006-01-18 23:32:13.000000000 +0100
-@@ -18,8 +18,9 @@
- #include "Object.h"
- #include "Error.h"
-+#include "UGooString.h"
- #include "poppler-page-transition.h"
--#include "poppler-private.h"
-+#include "poppler-page-transition-private.h"
- namespace Poppler {
-diff -Nur poppler.0_5_0/qt/poppler-page-transition.h poppler.HEAD/qt/poppler-page-transition.h
---- poppler.0_5_0/qt/poppler-page-transition.h 2006-01-06 11:05:59.000000000 +0100
-+++ poppler.HEAD/qt/poppler-page-transition.h  2006-01-18 22:22:12.000000000 +0100
-@@ -25,8 +25,25 @@
- class PageTransitionParams;
- class PageTransitionData;
-+/**
-+   \brief Describes how a PDF file viewer shall perform the transition
-+   from one page to another
-+
-+   In PDF files there is a way to specify if the viewer shall use
-+   certain effects to perform the transition from one page to
-+   another. This feature can be used, e.g., in a PDF-based beamer
-+   presentation.
-+
-+   This utility class represents the transition effect, and can be
-+   used to extract the information from a PDF object.
-+*/
-+
-+
- class PageTransition {
-  public:
-+
-+  /** \brief transition effect that shall be used
-+   */
-   enum Type {
-     Replace,
-     Split,
-@@ -42,11 +59,15 @@
-     Fade
-   };
-   
-+  /** \brief alignment of the transition effect that shall be used
-+   */
-   enum Alignment {
-     Horizontal,
-     Vertical
-   };
-   
-+  /** \brief direction of the transition effect that shall be used
-+   */
-   enum Direction {
-     Inward,
-     Outward
-@@ -54,17 +75,22 @@
-   
-   /** \brief Construct a new PageTransition object from a page dictionary.
--  In case or error, this method will print an error message to stderr,
-+  Users of the library will rarely need to construct a
-+  PageTransition object themselves. Instead, the method
-+  Poppler::Page::transition() can be used to find out if a certain
-+  transition effect is specified.
-+
-+  @warning In case or error, this method will print an error message to stderr,
-   and construct a default object.
--  @param dictObj pointer to an object whose dictionary will be read
--  and parsed. The pointer dictObj must point to a valid object, whose
--  dictionaries are accessed by the constructor. The dictObj is only
--  accessed by this constructor, and may be deleted after the
--  constructor returns.
-+  @param params an object whose dictionary will be read and
-+   parsed. This must be a valid object, whose dictionaries are
-+   accessed by the constructor. The object is only accessed by this
-+   constructor, and may be deleted after the constructor returns.
-   */
-   PageTransition(const PageTransitionParams &params);
--  
-+
-+  /** \brief copy constructor */
-   PageTransition(const PageTransition &pt);
-   
-   /**
-diff -Nur poppler.0_5_0/qt/poppler-page-transition-private.h poppler.HEAD/qt/poppler-page-transition-private.h
---- poppler.0_5_0/qt/poppler-page-transition-private.h 1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/qt/poppler-page-transition-private.h  2006-01-17 21:33:08.000000000 +0100
-@@ -0,0 +1,28 @@
-+/*
-+ * Copyright (C) 2005, Albert Astals Cid
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+class Object;
-+
-+namespace Poppler {
-+
-+class PageTransitionParams {
-+  public:
-+    Object *dictObj;
-+};
-+
-+}
-diff -Nur poppler.0_5_0/qt/poppler-private.h poppler.HEAD/qt/poppler-private.h
---- poppler.0_5_0/qt/poppler-private.h 2006-01-06 11:05:59.000000000 +0100
-+++ poppler.HEAD/qt/poppler-private.h  2006-01-10 22:57:28.000000000 +0100
-@@ -53,9 +53,4 @@
-   SplashOutputDev *m_outputDev;
- };
--class PageTransitionParams {
--  public:
--    Object *dictObj;
--};
--
- }
-diff -Nur poppler.0_5_0/qt4/src/Doxyfile poppler.HEAD/qt4/src/Doxyfile
---- poppler.0_5_0/qt4/src/Doxyfile     1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/qt4/src/Doxyfile      2006-01-18 22:22:12.000000000 +0100
-@@ -0,0 +1,1212 @@
-+# Doxyfile 1.4.1
-+
-+# This file describes the settings to be used by the documentation system
-+# doxygen (www.doxygen.org) for a project
-+#
-+# All text after a hash (#) is considered a comment and will be ignored
-+# The format is:
-+#       TAG = value [value, ...]
-+# For lists items can also be appended using:
-+#       TAG += value [value, ...]
-+# Values that contain spaces should be placed between quotes (" ")
-+
-+#---------------------------------------------------------------------------
-+# Project related configuration options
-+#---------------------------------------------------------------------------
-+
-+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
-+# by quotes) that should identify the project.
-+
-+PROJECT_NAME           = 
-+
-+# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-+# This could be handy for archiving the generated documentation or 
-+# if some version control system is used.
-+
-+PROJECT_NUMBER         = 
-+
-+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-+# base path where the generated documentation will be put. 
-+# If a relative path is entered, it will be relative to the location 
-+# where doxygen was started. If left blank the current directory will be used.
-+
-+OUTPUT_DIRECTORY       = 
-+
-+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-+# 4096 sub-directories (in 2 levels) under the output directory of each output 
-+# format and will distribute the generated files over these directories. 
-+# Enabling this option can be useful when feeding doxygen a huge amount of 
-+# source files, where putting all generated files in the same directory would 
-+# otherwise cause performance problems for the file system.
-+
-+CREATE_SUBDIRS         = NO
-+
-+# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-+# documentation generated by doxygen is written. Doxygen will use this 
-+# information to generate all constant output in the proper language. 
-+# The default language is English, other supported languages are: 
-+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, 
-+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese, 
-+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian, 
-+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, 
-+# Swedish, and Ukrainian.
-+
-+OUTPUT_LANGUAGE        = English
-+
-+# This tag can be used to specify the encoding used in the generated output. 
-+# The encoding is not always determined by the language that is chosen, 
-+# but also whether or not the output is meant for Windows or non-Windows users. 
-+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES 
-+# forces the Windows encoding (this is the default for the Windows binary), 
-+# whereas setting the tag to NO uses a Unix-style encoding (the default for 
-+# all platforms other than Windows).
-+
-+USE_WINDOWS_ENCODING   = NO
-+
-+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-+# include brief member descriptions after the members that are listed in 
-+# the file and class documentation (similar to JavaDoc). 
-+# Set to NO to disable this.
-+
-+BRIEF_MEMBER_DESC      = YES
-+
-+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-+# the brief description of a member or function before the detailed description. 
-+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-+# brief descriptions will be completely suppressed.
-+
-+REPEAT_BRIEF           = YES
-+
-+# This tag implements a quasi-intelligent brief description abbreviator 
-+# that is used to form the text in various listings. Each string 
-+# in this list, if found as the leading text of the brief description, will be 
-+# stripped from the text and the result after processing the whole list, is 
-+# used as the annotated text. Otherwise, the brief description is used as-is. 
-+# If left blank, the following values are used ("$name" is automatically 
-+# replaced with the name of the entity): "The $name class" "The $name widget" 
-+# "The $name file" "is" "provides" "specifies" "contains" 
-+# "represents" "a" "an" "the"
-+
-+ABBREVIATE_BRIEF       = 
-+
-+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-+# Doxygen will generate a detailed section even if there is only a brief 
-+# description.
-+
-+ALWAYS_DETAILED_SEC    = NO
-+
-+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-+# inherited members of a class in the documentation of that class as if those 
-+# members were ordinary class members. Constructors, destructors and assignment 
-+# operators of the base classes will not be shown.
-+
-+INLINE_INHERITED_MEMB  = NO
-+
-+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-+# path before files name in the file list and in the header files. If set 
-+# to NO the shortest path that makes the file name unique will be used.
-+
-+FULL_PATH_NAMES        = YES
-+
-+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-+# can be used to strip a user-defined part of the path. Stripping is 
-+# only done if one of the specified strings matches the left-hand part of 
-+# the path. The tag can be used to show relative paths in the file list. 
-+# If left blank the directory from which doxygen is run is used as the 
-+# path to strip.
-+
-+STRIP_FROM_PATH        = 
-+
-+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-+# the path mentioned in the documentation of a class, which tells 
-+# the reader which header file to include in order to use a class. 
-+# If left blank only the name of the header file containing the class 
-+# definition is used. Otherwise one should specify the include paths that 
-+# are normally passed to the compiler using the -I flag.
-+
-+STRIP_FROM_INC_PATH    = 
-+
-+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-+# (but less readable) file names. This can be useful is your file systems 
-+# doesn't support long names like on DOS, Mac, or CD-ROM.
-+
-+SHORT_NAMES            = NO
-+
-+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-+# will interpret the first line (until the first dot) of a JavaDoc-style 
-+# comment as the brief description. If set to NO, the JavaDoc 
-+# comments will behave just like the Qt-style comments (thus requiring an 
-+# explicit @brief command for a brief description.
-+
-+JAVADOC_AUTOBRIEF      = YES
-+
-+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-+# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-+# comments) as a brief description. This used to be the default behaviour. 
-+# The new default is to treat a multi-line C++ comment block as a detailed 
-+# description. Set this tag to YES if you prefer the old behaviour instead.
-+
-+MULTILINE_CPP_IS_BRIEF = NO
-+
-+# If the DETAILS_AT_TOP tag is set to YES then Doxygen 
-+# will output the detailed description near the top, like JavaDoc.
-+# If set to NO, the detailed description appears after the member 
-+# documentation.
-+
-+DETAILS_AT_TOP         = NO
-+
-+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-+# member inherits the documentation from any documented member that it 
-+# re-implements.
-+
-+INHERIT_DOCS           = YES
-+
-+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-+# tag is set to YES, then doxygen will reuse the documentation of the first 
-+# member in the group (if any) for the other members of the group. By default 
-+# all members of a group must be documented explicitly.
-+
-+DISTRIBUTE_GROUP_DOC   = NO
-+
-+# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-+# Doxygen uses this value to replace tabs by spaces in code fragments.
-+
-+TAB_SIZE               = 8
-+
-+# This tag can be used to specify a number of aliases that acts 
-+# as commands in the documentation. An alias has the form "name=value". 
-+# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-+# put the command \sideeffect (or @sideeffect) in the documentation, which 
-+# will result in a user-defined paragraph with heading "Side Effects:". 
-+# You can put \n's in the value part of an alias to insert newlines.
-+
-+ALIASES                = 
-+
-+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-+# sources only. Doxygen will then generate output that is more tailored for C. 
-+# For instance, some of the names that are used will be different. The list 
-+# of all members will be omitted, etc.
-+
-+OPTIMIZE_OUTPUT_FOR_C  = NO
-+
-+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources 
-+# only. Doxygen will then generate output that is more tailored for Java. 
-+# For instance, namespaces will be presented as packages, qualified scopes 
-+# will look different, etc.
-+
-+OPTIMIZE_OUTPUT_JAVA   = NO
-+
-+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-+# the same type (for instance a group of public functions) to be put as a 
-+# subgroup of that type (e.g. under the Public Functions section). Set it to 
-+# NO to prevent subgrouping. Alternatively, this can be done per class using 
-+# the \nosubgrouping command.
-+
-+SUBGROUPING            = YES
-+
-+#---------------------------------------------------------------------------
-+# Build related configuration options
-+#---------------------------------------------------------------------------
-+
-+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-+# documentation are documented, even if no documentation was available. 
-+# Private class members and static file members will be hidden unless 
-+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-+
-+EXTRACT_ALL            = NO
-+
-+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-+# will be included in the documentation.
-+
-+EXTRACT_PRIVATE        = NO
-+
-+# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-+# will be included in the documentation.
-+
-+EXTRACT_STATIC         = NO
-+
-+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-+# defined locally in source files will be included in the documentation. 
-+# If set to NO only classes defined in header files are included.
-+
-+EXTRACT_LOCAL_CLASSES  = YES
-+
-+# This flag is only useful for Objective-C code. When set to YES local 
-+# methods, which are defined in the implementation section but not in 
-+# the interface are included in the documentation. 
-+# If set to NO (the default) only methods in the interface are included.
-+
-+EXTRACT_LOCAL_METHODS  = NO
-+
-+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-+# undocumented members of documented classes, files or namespaces. 
-+# If set to NO (the default) these members will be included in the 
-+# various overviews, but no documentation section is generated. 
-+# This option has no effect if EXTRACT_ALL is enabled.
-+
-+HIDE_UNDOC_MEMBERS     = NO
-+
-+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-+# undocumented classes that are normally visible in the class hierarchy. 
-+# If set to NO (the default) these classes will be included in the various 
-+# overviews. This option has no effect if EXTRACT_ALL is enabled.
-+
-+HIDE_UNDOC_CLASSES     = NO
-+
-+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-+# friend (class|struct|union) declarations. 
-+# If set to NO (the default) these declarations will be included in the 
-+# documentation.
-+
-+HIDE_FRIEND_COMPOUNDS  = NO
-+
-+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-+# documentation blocks found inside the body of a function. 
-+# If set to NO (the default) these blocks will be appended to the 
-+# function's detailed documentation block.
-+
-+HIDE_IN_BODY_DOCS      = NO
-+
-+# The INTERNAL_DOCS tag determines if documentation 
-+# that is typed after a \internal command is included. If the tag is set 
-+# to NO (the default) then the documentation will be excluded. 
-+# Set it to YES to include the internal documentation.
-+
-+INTERNAL_DOCS          = NO
-+
-+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-+# file names in lower-case letters. If set to YES upper-case letters are also 
-+# allowed. This is useful if you have classes or files whose names only differ 
-+# in case and if your file system supports case sensitive file names. Windows 
-+# and Mac users are advised to set this option to NO.
-+
-+CASE_SENSE_NAMES       = YES
-+
-+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-+# will show members with their full class and namespace scopes in the 
-+# documentation. If set to YES the scope will be hidden.
-+
-+HIDE_SCOPE_NAMES       = NO
-+
-+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-+# will put a list of the files that are included by a file in the documentation 
-+# of that file.
-+
-+SHOW_INCLUDE_FILES     = YES
-+
-+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-+# is inserted in the documentation for inline members.
-+
-+INLINE_INFO            = YES
-+
-+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-+# will sort the (detailed) documentation of file and class members 
-+# alphabetically by member name. If set to NO the members will appear in 
-+# declaration order.
-+
-+SORT_MEMBER_DOCS       = YES
-+
-+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-+# brief documentation of file, namespace and class members alphabetically 
-+# by member name. If set to NO (the default) the members will appear in 
-+# declaration order.
-+
-+SORT_BRIEF_DOCS        = NO
-+
-+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-+# sorted by fully-qualified names, including namespaces. If set to 
-+# NO (the default), the class list will be sorted only by class name, 
-+# not including the namespace part. 
-+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-+# Note: This option applies only to the class list, not to the 
-+# alphabetical list.
-+
-+SORT_BY_SCOPE_NAME     = NO
-+
-+# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-+# disable (NO) the todo list. This list is created by putting \todo 
-+# commands in the documentation.
-+
-+GENERATE_TODOLIST      = YES
-+
-+# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-+# disable (NO) the test list. This list is created by putting \test 
-+# commands in the documentation.
-+
-+GENERATE_TESTLIST      = YES
-+
-+# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-+# disable (NO) the bug list. This list is created by putting \bug 
-+# commands in the documentation.
-+
-+GENERATE_BUGLIST       = YES
-+
-+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-+# disable (NO) the deprecated list. This list is created by putting 
-+# \deprecated commands in the documentation.
-+
-+GENERATE_DEPRECATEDLIST= YES
-+
-+# The ENABLED_SECTIONS tag can be used to enable conditional 
-+# documentation sections, marked by \if sectionname ... \endif.
-+
-+ENABLED_SECTIONS       = 
-+
-+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-+# the initial value of a variable or define consists of for it to appear in 
-+# the documentation. If the initializer consists of more lines than specified 
-+# here it will be hidden. Use a value of 0 to hide initializers completely. 
-+# The appearance of the initializer of individual variables and defines in the 
-+# documentation can be controlled using \showinitializer or \hideinitializer 
-+# command in the documentation regardless of this setting.
-+
-+MAX_INITIALIZER_LINES  = 30
-+
-+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-+# at the bottom of the documentation of classes and structs. If set to YES the 
-+# list will mention the files that were used to generate the documentation.
-+
-+SHOW_USED_FILES        = YES
-+
-+# If the sources in your project are distributed over multiple directories 
-+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-+# in the documentation.
-+
-+SHOW_DIRECTORIES       = YES
-+
-+# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-+# doxygen should invoke to get the current version for each file (typically from the 
-+# version control system). Doxygen will invoke the program by executing (via 
-+# popen()) the command <command> <input-file>, where <command> is the value of 
-+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-+# provided by doxygen. Whatever the progam writes to standard output 
-+# is used as the file version. See the manual for examples.
-+
-+FILE_VERSION_FILTER    = 
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to warning and progress messages
-+#---------------------------------------------------------------------------
-+
-+# The QUIET tag can be used to turn on/off the messages that are generated 
-+# by doxygen. Possible values are YES and NO. If left blank NO is used.
-+
-+QUIET                  = NO
-+
-+# The WARNINGS tag can be used to turn on/off the warning messages that are 
-+# generated by doxygen. Possible values are YES and NO. If left blank 
-+# NO is used.
-+
-+WARNINGS               = YES
-+
-+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-+# automatically be disabled.
-+
-+WARN_IF_UNDOCUMENTED   = YES
-+
-+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-+# potential errors in the documentation, such as not documenting some 
-+# parameters in a documented function, or documenting parameters that 
-+# don't exist or using markup commands wrongly.
-+
-+WARN_IF_DOC_ERROR      = YES
-+
-+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-+# functions that are documented, but have no documentation for their parameters 
-+# or return value. If set to NO (the default) doxygen will only warn about 
-+# wrong or incomplete parameter documentation, but not about the absence of 
-+# documentation.
-+
-+WARN_NO_PARAMDOC       = NO
-+
-+# The WARN_FORMAT tag determines the format of the warning messages that 
-+# doxygen can produce. The string should contain the $file, $line, and $text 
-+# tags, which will be replaced by the file and line number from which the 
-+# warning originated and the warning text. Optionally the format may contain 
-+# $version, which will be replaced by the version of the file (if it could 
-+# be obtained via FILE_VERSION_FILTER)
-+
-+WARN_FORMAT            = "$file:$line: $text"
-+
-+# The WARN_LOGFILE tag can be used to specify a file to which warning 
-+# and error messages should be written. If left blank the output is written 
-+# to stderr.
-+
-+WARN_LOGFILE           = 
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to the input files
-+#---------------------------------------------------------------------------
-+
-+# The INPUT tag can be used to specify the files and/or directories that contain 
-+# documented source files. You may enter file names like "myfile.cpp" or 
-+# directories like "/usr/src/myproject". Separate the files or directories 
-+# with spaces.
-+
-+INPUT                  = . ../../qt/poppler-page-transition.h
-+
-+# If the value of the INPUT tag contains directories, you can use the 
-+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-+# and *.h) to filter out the source-files in the directories. If left 
-+# blank the following patterns are tested: 
-+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx 
-+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
-+
-+FILE_PATTERNS          = 
-+
-+# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-+# should be searched for input files as well. Possible values are YES and NO. 
-+# If left blank NO is used.
-+
-+RECURSIVE              = NO
-+
-+# The EXCLUDE tag can be used to specify files and/or directories that should 
-+# excluded from the INPUT source files. This way you can easily exclude a 
-+# subdirectory from a directory tree whose root is specified with the INPUT tag.
-+
-+EXCLUDE                = 
-+
-+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or 
-+# directories that are symbolic links (a Unix filesystem feature) are excluded 
-+# from the input.
-+
-+EXCLUDE_SYMLINKS       = NO
-+
-+# If the value of the INPUT tag contains directories, you can use the 
-+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-+# certain files from those directories.
-+
-+EXCLUDE_PATTERNS       = 
-+
-+# The EXAMPLE_PATH tag can be used to specify one or more files or 
-+# directories that contain example code fragments that are included (see 
-+# the \include command).
-+
-+EXAMPLE_PATH           = 
-+
-+# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-+# and *.h) to filter out the source-files in the directories. If left 
-+# blank all files are included.
-+
-+EXAMPLE_PATTERNS       = 
-+
-+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-+# searched for input files to be used with the \include or \dontinclude 
-+# commands irrespective of the value of the RECURSIVE tag. 
-+# Possible values are YES and NO. If left blank NO is used.
-+
-+EXAMPLE_RECURSIVE      = NO
-+
-+# The IMAGE_PATH tag can be used to specify one or more files or 
-+# directories that contain image that are included in the documentation (see 
-+# the \image command).
-+
-+IMAGE_PATH             = 
-+
-+# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-+# invoke to filter for each input file. Doxygen will invoke the filter program 
-+# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-+# input file. Doxygen will then use the output that the filter program writes 
-+# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
-+# ignored.
-+
-+INPUT_FILTER           = 
-+
-+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-+# basis.  Doxygen will compare the file name with each pattern and apply the 
-+# filter if there is a match.  The filters are a list of the form: 
-+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
-+# is applied to all files.
-+
-+FILTER_PATTERNS        = 
-+
-+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-+# INPUT_FILTER) will be used to filter the input files when producing source 
-+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-+
-+FILTER_SOURCE_FILES    = NO
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to source browsing
-+#---------------------------------------------------------------------------
-+
-+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-+# be generated. Documented entities will be cross-referenced with these sources. 
-+# Note: To get rid of all source code in the generated output, make sure also 
-+# VERBATIM_HEADERS is set to NO.
-+
-+SOURCE_BROWSER         = NO
-+
-+# Setting the INLINE_SOURCES tag to YES will include the body 
-+# of functions and classes directly in the documentation.
-+
-+INLINE_SOURCES         = NO
-+
-+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-+# doxygen to hide any special comment blocks from generated source code 
-+# fragments. Normal C and C++ comments will always remain visible.
-+
-+STRIP_CODE_COMMENTS    = YES
-+
-+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
-+# then for each documented function all documented 
-+# functions referencing it will be listed.
-+
-+REFERENCED_BY_RELATION = YES
-+
-+# If the REFERENCES_RELATION tag is set to YES (the default) 
-+# then for each documented function all documented entities 
-+# called/used by that function will be listed.
-+
-+REFERENCES_RELATION    = YES
-+
-+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-+# will generate a verbatim copy of the header file for each class for 
-+# which an include is specified. Set to NO to disable this.
-+
-+VERBATIM_HEADERS       = YES
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to the alphabetical class index
-+#---------------------------------------------------------------------------
-+
-+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-+# of all compounds will be generated. Enable this if the project 
-+# contains a lot of classes, structs, unions or interfaces.
-+
-+ALPHABETICAL_INDEX     = NO
-+
-+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-+# in which this list will be split (can be a number in the range [1..20])
-+
-+COLS_IN_ALPHA_INDEX    = 5
-+
-+# In case all classes in a project start with a common prefix, all 
-+# classes will be put under the same header in the alphabetical index. 
-+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-+# should be ignored while generating the index headers.
-+
-+IGNORE_PREFIX          = 
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to the HTML output
-+#---------------------------------------------------------------------------
-+
-+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-+# generate HTML output.
-+
-+GENERATE_HTML          = YES
-+
-+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-+# put in front of it. If left blank `html' will be used as the default path.
-+
-+HTML_OUTPUT            = APIDOCS-html
-+
-+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-+# doxygen will generate files with .html extension.
-+
-+HTML_FILE_EXTENSION    = .html
-+
-+# The HTML_HEADER tag can be used to specify a personal HTML header for 
-+# each generated HTML page. If it is left blank doxygen will generate a 
-+# standard header.
-+
-+HTML_HEADER            = 
-+
-+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-+# each generated HTML page. If it is left blank doxygen will generate a 
-+# standard footer.
-+
-+HTML_FOOTER            = 
-+
-+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-+# style sheet that is used by each HTML page. It can be used to 
-+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-+# will generate a default style sheet. Note that doxygen will try to copy 
-+# the style sheet file to the HTML output directory, so don't put your own 
-+# stylesheet in the HTML output directory as well, or it will be erased!
-+
-+HTML_STYLESHEET        = 
-+
-+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-+# files or namespaces will be aligned in HTML using tables. If set to 
-+# NO a bullet list will be used.
-+
-+HTML_ALIGN_MEMBERS     = YES
-+
-+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-+# will be generated that can be used as input for tools like the 
-+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
-+# of the generated HTML documentation.
-+
-+GENERATE_HTMLHELP      = NO
-+
-+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-+# be used to specify the file name of the resulting .chm file. You 
-+# can add a path in front of the file if the result should not be 
-+# written to the html output directory.
-+
-+CHM_FILE               = 
-+
-+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-+# be used to specify the location (absolute path including file name) of 
-+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-+# the HTML help compiler on the generated index.hhp.
-+
-+HHC_LOCATION           = 
-+
-+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-+# controls if a separate .chi index file is generated (YES) or that 
-+# it should be included in the master .chm file (NO).
-+
-+GENERATE_CHI           = NO
-+
-+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-+# controls whether a binary table of contents is generated (YES) or a 
-+# normal table of contents (NO) in the .chm file.
-+
-+BINARY_TOC             = NO
-+
-+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-+# to the contents of the HTML help documentation and to the tree view.
-+
-+TOC_EXPAND             = NO
-+
-+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
-+# top of each HTML page. The value NO (the default) enables the index and 
-+# the value YES disables it.
-+
-+DISABLE_INDEX          = NO
-+
-+# This tag can be used to set the number of enum values (range [1..20]) 
-+# that doxygen will group on one line in the generated HTML documentation.
-+
-+ENUM_VALUES_PER_LINE   = 4
-+
-+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-+# generated containing a tree-like index structure (just like the one that 
-+# is generated for HTML Help). For this to work a browser that supports 
-+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
-+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
-+# probably better off using the HTML help feature.
-+
-+GENERATE_TREEVIEW      = NO
-+
-+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-+# used to set the initial width (in pixels) of the frame in which the tree 
-+# is shown.
-+
-+TREEVIEW_WIDTH         = 250
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to the LaTeX output
-+#---------------------------------------------------------------------------
-+
-+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-+# generate Latex output.
-+
-+GENERATE_LATEX         = YES
-+
-+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-+# put in front of it. If left blank `latex' will be used as the default path.
-+
-+LATEX_OUTPUT           = APIDOCS-latex
-+
-+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-+# invoked. If left blank `latex' will be used as the default command name.
-+
-+LATEX_CMD_NAME         = latex
-+
-+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-+# generate index for LaTeX. If left blank `makeindex' will be used as the 
-+# default command name.
-+
-+MAKEINDEX_CMD_NAME     = makeindex
-+
-+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-+# LaTeX documents. This may be useful for small projects and may help to 
-+# save some trees in general.
-+
-+COMPACT_LATEX          = NO
-+
-+# The PAPER_TYPE tag can be used to set the paper type that is used 
-+# by the printer. Possible values are: a4, a4wide, letter, legal and 
-+# executive. If left blank a4wide will be used.
-+
-+PAPER_TYPE             = a4wide
-+
-+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-+# packages that should be included in the LaTeX output.
-+
-+EXTRA_PACKAGES         = 
-+
-+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-+# the generated latex document. The header should contain everything until 
-+# the first chapter. If it is left blank doxygen will generate a 
-+# standard header. Notice: only use this tag if you know what you are doing!
-+
-+LATEX_HEADER           = 
-+
-+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-+# contain links (just like the HTML output) instead of page references 
-+# This makes the output suitable for online browsing using a pdf viewer.
-+
-+PDF_HYPERLINKS         = NO
-+
-+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-+# plain latex in the generated Makefile. Set this option to YES to get a 
-+# higher quality PDF documentation.
-+
-+USE_PDFLATEX           = NO
-+
-+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-+# command to the generated LaTeX files. This will instruct LaTeX to keep 
-+# running if errors occur, instead of asking the user for help. 
-+# This option is also used when generating formulas in HTML.
-+
-+LATEX_BATCHMODE        = NO
-+
-+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-+# include the index chapters (such as File Index, Compound Index, etc.) 
-+# in the output.
-+
-+LATEX_HIDE_INDICES     = NO
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to the RTF output
-+#---------------------------------------------------------------------------
-+
-+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-+# The RTF output is optimized for Word 97 and may not look very pretty with 
-+# other RTF readers or editors.
-+
-+GENERATE_RTF           = NO
-+
-+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-+# put in front of it. If left blank `rtf' will be used as the default path.
-+
-+RTF_OUTPUT             = rtf
-+
-+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-+# RTF documents. This may be useful for small projects and may help to 
-+# save some trees in general.
-+
-+COMPACT_RTF            = NO
-+
-+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-+# will contain hyperlink fields. The RTF file will 
-+# contain links (just like the HTML output) instead of page references. 
-+# This makes the output suitable for online browsing using WORD or other 
-+# programs which support those fields. 
-+# Note: wordpad (write) and others do not support links.
-+
-+RTF_HYPERLINKS         = NO
-+
-+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
-+# config file, i.e. a series of assignments. You only have to provide 
-+# replacements, missing definitions are set to their default value.
-+
-+RTF_STYLESHEET_FILE    = 
-+
-+# Set optional variables used in the generation of an rtf document. 
-+# Syntax is similar to doxygen's config file.
-+
-+RTF_EXTENSIONS_FILE    = 
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to the man page output
-+#---------------------------------------------------------------------------
-+
-+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-+# generate man pages
-+
-+GENERATE_MAN           = NO
-+
-+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-+# put in front of it. If left blank `man' will be used as the default path.
-+
-+MAN_OUTPUT             = man
-+
-+# The MAN_EXTENSION tag determines the extension that is added to 
-+# the generated man pages (default is the subroutine's section .3)
-+
-+MAN_EXTENSION          = .3
-+
-+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-+# then it will generate one additional man file for each entity 
-+# documented in the real man page(s). These additional files 
-+# only source the real man page, but without them the man command 
-+# would be unable to find the correct page. The default is NO.
-+
-+MAN_LINKS              = NO
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to the XML output
-+#---------------------------------------------------------------------------
-+
-+# If the GENERATE_XML tag is set to YES Doxygen will 
-+# generate an XML file that captures the structure of 
-+# the code including all documentation.
-+
-+GENERATE_XML           = NO
-+
-+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-+# put in front of it. If left blank `xml' will be used as the default path.
-+
-+XML_OUTPUT             = xml
-+
-+# The XML_SCHEMA tag can be used to specify an XML schema, 
-+# which can be used by a validating XML parser to check the 
-+# syntax of the XML files.
-+
-+XML_SCHEMA             = 
-+
-+# The XML_DTD tag can be used to specify an XML DTD, 
-+# which can be used by a validating XML parser to check the 
-+# syntax of the XML files.
-+
-+XML_DTD                = 
-+
-+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-+# dump the program listings (including syntax highlighting 
-+# and cross-referencing information) to the XML output. Note that 
-+# enabling this will significantly increase the size of the XML output.
-+
-+XML_PROGRAMLISTING     = YES
-+
-+#---------------------------------------------------------------------------
-+# configuration options for the AutoGen Definitions output
-+#---------------------------------------------------------------------------
-+
-+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-+# generate an AutoGen Definitions (see autogen.sf.net) file 
-+# that captures the structure of the code including all 
-+# documentation. Note that this feature is still experimental 
-+# and incomplete at the moment.
-+
-+GENERATE_AUTOGEN_DEF   = NO
-+
-+#---------------------------------------------------------------------------
-+# configuration options related to the Perl module output
-+#---------------------------------------------------------------------------
-+
-+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-+# generate a Perl module file that captures the structure of 
-+# the code including all documentation. Note that this 
-+# feature is still experimental and incomplete at the 
-+# moment.
-+
-+GENERATE_PERLMOD       = NO
-+
-+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-+# to generate PDF and DVI output from the Perl module output.
-+
-+PERLMOD_LATEX          = NO
-+
-+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-+# nicely formatted so it can be parsed by a human reader.  This is useful 
-+# if you want to understand what is going on.  On the other hand, if this 
-+# tag is set to NO the size of the Perl module output will be much smaller 
-+# and Perl will parse it just the same.
-+
-+PERLMOD_PRETTY         = YES
-+
-+# The names of the make variables in the generated doxyrules.make file 
-+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-+# This is useful so different doxyrules.make files included by the same 
-+# Makefile don't overwrite each other's variables.
-+
-+PERLMOD_MAKEVAR_PREFIX = 
-+
-+#---------------------------------------------------------------------------
-+# Configuration options related to the preprocessor   
-+#---------------------------------------------------------------------------
-+
-+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-+# evaluate all C-preprocessor directives found in the sources and include 
-+# files.
-+
-+ENABLE_PREPROCESSING   = YES
-+
-+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-+# names in the source code. If set to NO (the default) only conditional 
-+# compilation will be performed. Macro expansion can be done in a controlled 
-+# way by setting EXPAND_ONLY_PREDEF to YES.
-+
-+MACRO_EXPANSION        = NO
-+
-+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-+# then the macro expansion is limited to the macros specified with the 
-+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
-+
-+EXPAND_ONLY_PREDEF     = NO
-+
-+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-+# in the INCLUDE_PATH (see below) will be search if a #include is found.
-+
-+SEARCH_INCLUDES        = YES
-+
-+# The INCLUDE_PATH tag can be used to specify one or more directories that 
-+# contain include files that are not input files but should be processed by 
-+# the preprocessor.
-+
-+INCLUDE_PATH           = 
-+
-+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-+# patterns (like *.h and *.hpp) to filter out the header-files in the 
-+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-+# be used.
-+
-+INCLUDE_FILE_PATTERNS  = 
-+
-+# The PREDEFINED tag can be used to specify one or more macro names that 
-+# are defined before the preprocessor is started (similar to the -D option of 
-+# gcc). The argument of the tag is a list of macros of the form: name 
-+# or name=definition (no spaces). If the definition and the = are 
-+# omitted =1 is assumed. To prevent a macro definition from being 
-+# undefined via #undef or recursively expanded use the := operator 
-+# instead of the = operator.
-+
-+PREDEFINED             = UNSTABLE_POPPLER_QT4
-+
-+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-+# this tag can be used to specify a list of macro names that should be expanded. 
-+# The macro definition that is found in the sources will be used. 
-+# Use the PREDEFINED tag if you want to use a different macro definition.
-+
-+EXPAND_AS_DEFINED      = 
-+
-+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-+# doxygen's preprocessor will remove all function-like macros that are alone 
-+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
-+# function macros are typically used for boiler-plate code, and will confuse 
-+# the parser if not removed.
-+
-+SKIP_FUNCTION_MACROS   = YES
-+
-+#---------------------------------------------------------------------------
-+# Configuration::additions related to external references   
-+#---------------------------------------------------------------------------
-+
-+# The TAGFILES option can be used to specify one or more tagfiles. 
-+# Optionally an initial location of the external documentation 
-+# can be added for each tagfile. The format of a tag file without 
-+# this location is as follows: 
-+#   TAGFILES = file1 file2 ... 
-+# Adding location for the tag files is done as follows: 
-+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-+# where "loc1" and "loc2" can be relative or absolute paths or 
-+# URLs. If a location is present for each tag, the installdox tool 
-+# does not have to be run to correct the links.
-+# Note that each tag file must have a unique name
-+# (where the name does NOT include the path)
-+# If a tag file is not located in the directory in which doxygen 
-+# is run, you must also specify the path to the tagfile here.
-+
-+TAGFILES               = 
-+
-+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-+# a tag file that is based on the input files it reads.
-+
-+GENERATE_TAGFILE       = 
-+
-+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-+# in the class index. If set to NO only the inherited external classes 
-+# will be listed.
-+
-+ALLEXTERNALS           = NO
-+
-+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-+# in the modules index. If set to NO, only the current project's groups will 
-+# be listed.
-+
-+EXTERNAL_GROUPS        = YES
-+
-+# The PERL_PATH should be the absolute path and name of the perl script 
-+# interpreter (i.e. the result of `which perl').
-+
-+PERL_PATH              = /usr/bin/perl
-+
-+#---------------------------------------------------------------------------
-+# Configuration options related to the dot tool   
-+#---------------------------------------------------------------------------
-+
-+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-+# this option is superseded by the HAVE_DOT option below. This is only a 
-+# fallback. It is recommended to install and use dot, since it yields more 
-+# powerful graphs.
-+
-+CLASS_DIAGRAMS         = YES
-+
-+# If set to YES, the inheritance and collaboration graphs will hide 
-+# inheritance and usage relations if the target is undocumented 
-+# or is not a class.
-+
-+HIDE_UNDOC_RELATIONS   = YES
-+
-+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-+# available from the path. This tool is part of Graphviz, a graph visualization 
-+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-+# have no effect if this option is set to NO (the default)
-+
-+HAVE_DOT               = NO
-+
-+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-+# will generate a graph for each documented class showing the direct and 
-+# indirect inheritance relations. Setting this tag to YES will force the 
-+# the CLASS_DIAGRAMS tag to NO.
-+
-+CLASS_GRAPH            = YES
-+
-+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-+# will generate a graph for each documented class showing the direct and 
-+# indirect implementation dependencies (inheritance, containment, and 
-+# class references variables) of the class with other documented classes.
-+
-+COLLABORATION_GRAPH    = YES
-+
-+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-+# will generate a graph for groups, showing the direct groups dependencies
-+
-+GROUP_GRAPHS           = YES
-+
-+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-+# Language.
-+
-+UML_LOOK               = NO
-+
-+# If set to YES, the inheritance and collaboration graphs will show the 
-+# relations between templates and their instances.
-+
-+TEMPLATE_RELATIONS     = NO
-+
-+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-+# tags are set to YES then doxygen will generate a graph for each documented 
-+# file showing the direct and indirect include dependencies of the file with 
-+# other documented files.
-+
-+INCLUDE_GRAPH          = YES
-+
-+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-+# documented header file showing the documented files that directly or 
-+# indirectly include this file.
-+
-+INCLUDED_BY_GRAPH      = YES
-+
-+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
-+# generate a call dependency graph for every global function or class method. 
-+# Note that enabling this option will significantly increase the time of a run. 
-+# So in most cases it will be better to enable call graphs for selected 
-+# functions only using the \callgraph command.
-+
-+CALL_GRAPH             = NO
-+
-+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-+# will graphical hierarchy of all classes instead of a textual one.
-+
-+GRAPHICAL_HIERARCHY    = YES
-+
-+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-+# then doxygen will show the dependencies a directory has on other directories 
-+# in a graphical way. The dependency relations are determined by the #include
-+# relations between the files in the directories.
-+
-+DIRECTORY_GRAPH        = YES
-+
-+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-+# generated by dot. Possible values are png, jpg, or gif
-+# If left blank png will be used.
-+
-+DOT_IMAGE_FORMAT       = png
-+
-+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-+# found. If left blank, it is assumed the dot tool can be found in the path.
-+
-+DOT_PATH               = 
-+
-+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-+# contain dot files that are included in the documentation (see the 
-+# \dotfile command).
-+
-+DOTFILE_DIRS           = 
-+
-+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width 
-+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-+# this value, doxygen will try to truncate the graph, so that it fits within 
-+# the specified constraint. Beware that most browsers cannot cope with very 
-+# large images.
-+
-+MAX_DOT_GRAPH_WIDTH    = 1024
-+
-+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height 
-+# (in pixels) of the graphs generated by dot. If a graph becomes larger than 
-+# this value, doxygen will try to truncate the graph, so that it fits within 
-+# the specified constraint. Beware that most browsers cannot cope with very 
-+# large images.
-+
-+MAX_DOT_GRAPH_HEIGHT   = 1024
-+
-+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-+# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-+# from the root by following a path via at most 3 edges will be shown. Nodes 
-+# that lay further from the root node will be omitted. Note that setting this 
-+# option to 1 or 2 may greatly reduce the computation time needed for large 
-+# code bases. Also note that a graph may be further truncated if the graph's 
-+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH 
-+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default), 
-+# the graph is not depth-constrained.
-+
-+MAX_DOT_GRAPH_DEPTH    = 0
-+
-+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-+# background. This is disabled by default, which results in a white background. 
-+# Warning: Depending on the platform used, enabling this option may lead to 
-+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
-+# read).
-+
-+DOT_TRANSPARENT        = NO
-+
-+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-+# files in one run (i.e. multiple -o and -T options on the command line). This 
-+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-+# support this, this feature is disabled by default.
-+
-+DOT_MULTI_TARGETS      = NO
-+
-+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-+# generate a legend page explaining the meaning of the various boxes and 
-+# arrows in the dot generated graphs.
-+
-+GENERATE_LEGEND        = YES
-+
-+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-+# remove the intermediate dot files that are used to generate 
-+# the various graphs.
-+
-+DOT_CLEANUP            = YES
-+
-+#---------------------------------------------------------------------------
-+# Configuration::additions related to the search engine   
-+#---------------------------------------------------------------------------
-+
-+# The SEARCHENGINE tag specifies whether or not a search engine should be 
-+# used. If set to NO the values of all tags below this one will be ignored.
-+
-+SEARCHENGINE           = NO
-diff -Nur poppler.0_5_0/qt4/src/Makefile.am poppler.HEAD/qt4/src/Makefile.am
---- poppler.0_5_0/qt4/src/Makefile.am  2006-01-06 11:05:59.000000000 +0100
-+++ poppler.HEAD/qt4/src/Makefile.am   2006-02-16 20:28:54.000000000 +0100
-@@ -1,6 +1,7 @@
- INCLUDES =                                    \
-       -I$(top_srcdir)                         \
-       -I$(top_srcdir)/poppler                 \
-+      -I$(top_srcdir)/qt                      \
-       $(POPPLER_QT4_CXXFLAGS)
-@@ -16,6 +17,7 @@
-       poppler-document.cc                     \
-       poppler-page.cc                         \
-       poppler-fontinfo.cc                     \
-+      poppler-embeddedfile.cc                 \
-       poppler-textbox.cc                      \
-       ../../qt/poppler-page-transition.cc     \
-       poppler-private.h
-@@ -24,3 +26,5 @@
-       $(top_builddir)/poppler/libpoppler.la   \
-       $(POPPLER_QT4_LIBS)
-+libpoppler_qt4_la_LDFLAGS = -version-info 1:0:0
-+
-diff -Nur poppler.0_5_0/qt4/src/poppler-document.cc poppler.HEAD/qt4/src/poppler-document.cc
---- poppler.0_5_0/qt4/src/poppler-document.cc  2006-01-01 23:35:48.000000000 +0100
-+++ poppler.HEAD/qt4/src/poppler-document.cc   2006-01-18 23:32:13.000000000 +0100
-@@ -25,10 +25,13 @@
- #include <GlobalParams.h>
- #include <PDFDoc.h>
- #include <Catalog.h>
-+#include "UGooString.h"
- #include <ErrorCodes.h>
- #include <SplashOutputDev.h>
- #include <splash/SplashBitmap.h>
- #include "poppler-private.h"
-+#include <Stream.h>
-+#include <QtCore/QDebug>
- namespace Poppler {
-@@ -50,6 +53,15 @@
-           else
-               pdoc->m_doc->locked = false;
-           pdoc->m_doc->m_fontInfoScanner = new FontInfoScanner(&(doc->doc));
-+          int numEmb = doc->doc.getCatalog()->numEmbeddedFiles();
-+          if (!(0 == numEmb)) {
-+              // we have some embedded documents, build the list
-+              for (int yalv = 0; yalv < numEmb; ++yalv) {
-+                  EmbFile *ef = doc->doc.getCatalog()->embeddedFile(yalv);
-+                  pdoc->m_doc->m_embeddedFiles.append(new EmbeddedFile(ef));
-+                  delete ef;
-+              }
-+          }
-           return pdoc;
-       }
-       else
-@@ -150,6 +162,11 @@
-       return ourList;
-     }
-+    const QList<EmbeddedFile*> &Document::embeddedFiles() const
-+    {
-+      return m_doc->m_embeddedFiles;
-+    }
-+
-     bool Document::scanForFonts( int numPages, QList<FontInfo> *fontList ) const
-     {
-       GooList *items = m_doc->m_fontInfoScanner->scan( numPages );
-@@ -257,7 +274,7 @@
-       Dict *infoDict = info.getDict();
-       // somehow iterate over keys in infoDict
-       for( int i=0; i < infoDict->getLength(); ++i ) {
--          keys.append( QString::fromAscii(infoDict->getKey(i)) );
-+          keys.append( QString::fromAscii(infoDict->getKey(i)->getCString()) );
-       }
-       info.free();
-@@ -279,8 +296,6 @@
-       }
-       Object obj;
--      char *s;
--      int year, mon, day, hour, min, sec;
-       Dict *infoDict = info.getDict();
-       QDateTime result;
-@@ -364,6 +379,11 @@
-       return page(index);
-     }
-+    bool Document::hasEmbeddedFiles() const
-+    {
-+      return (!(0 == m_doc->doc.getCatalog()->numEmbeddedFiles()));
-+    }
-+
-     QDateTime convertDate( char *dateString )
-     {
-         int year;
-diff -Nur poppler.0_5_0/qt4/src/poppler-embeddedfile.cc poppler.HEAD/qt4/src/poppler-embeddedfile.cc
---- poppler.0_5_0/qt4/src/poppler-embeddedfile.cc      1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/qt4/src/poppler-embeddedfile.cc       2006-01-18 23:38:59.000000000 +0100
-@@ -0,0 +1,106 @@
-+/* poppler-document.cc: qt interface to poppler
-+ * Copyright (C) 2005, Albert Astals Cid <aacid@kde.org>
-+ * Copyright (C) 2005, Brad Hards <bradh@frogmouth.net>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2, or (at your option)
-+ * any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+ */
-+
-+#define UNSTABLE_POPPLER_QT4
-+
-+#include <QtCore/QString>
-+#include <QtCore/QDateTime>
-+
-+#include "Object.h"
-+#include "Stream.h"
-+#include "Catalog.h"
-+
-+#include "poppler-qt4.h"
-+
-+namespace Poppler
-+{
-+
-+class EmbeddedFileData
-+{
-+public:
-+      QString m_label;
-+      QString m_description;
-+      QDateTime m_modDate;
-+      QDateTime m_createDate;
-+      Object m_streamObject;
-+};
-+
-+EmbeddedFile::EmbeddedFile(EmbFile *embfile)
-+{
-+      m_embeddedFile = new EmbeddedFileData();
-+      m_embeddedFile->m_label = QString(embfile->name()->getCString());
-+      m_embeddedFile->m_description = QString(embfile->description()->getCString());
-+      m_embeddedFile->m_modDate = convertDate(embfile->modDate()->getCString());
-+      m_embeddedFile->m_createDate = convertDate(embfile->createDate()->getCString());
-+      embfile->streamObject().copy(&m_embeddedFile->m_streamObject);
-+}
-+
-+EmbeddedFile::EmbeddedFile(const EmbeddedFile &ef)
-+{
-+      m_embeddedFile = new EmbeddedFileData();
-+      m_embeddedFile->m_label = ef.m_embeddedFile->m_label;
-+      m_embeddedFile->m_description = ef.m_embeddedFile->m_description;
-+      m_embeddedFile->m_modDate = ef.m_embeddedFile->m_modDate;
-+      m_embeddedFile->m_createDate = ef.m_embeddedFile->m_createDate;
-+      ef.m_embeddedFile->m_streamObject.copy(&m_embeddedFile->m_streamObject);
-+}
-+
-+EmbeddedFile::~EmbeddedFile()
-+{
-+      m_embeddedFile->m_streamObject.free();
-+      delete m_embeddedFile;
-+}
-+
-+QString EmbeddedFile::name() const
-+{
-+      return m_embeddedFile->m_label;
-+}
-+
-+QString EmbeddedFile::description() const
-+{
-+      return m_embeddedFile->m_description;
-+}
-+
-+QDateTime EmbeddedFile::modDate() const
-+{
-+      return m_embeddedFile->m_modDate;
-+}
-+
-+QDateTime EmbeddedFile::createDate() const
-+{
-+      return m_embeddedFile->m_createDate;
-+}
-+
-+QByteArray EmbeddedFile::data()
-+{
-+      Object obj;
-+      Stream *stream = m_embeddedFile->m_streamObject.getStream();
-+      stream->reset();
-+      int dataLen = 0;
-+      QByteArray fileArray;
-+      int i;
-+      while ( (i = stream->getChar()) != EOF) {
-+              fileArray[dataLen] = (char)i;
-+              ++dataLen;
-+      }
-+      fileArray.resize(dataLen);
-+      return fileArray;
-+};
-+
-+}
-diff -Nur poppler.0_5_0/qt4/src/poppler-page.cc poppler.HEAD/qt4/src/poppler-page.cc
---- poppler.0_5_0/qt4/src/poppler-page.cc      2006-01-05 14:53:58.000000000 +0100
-+++ poppler.HEAD/qt4/src/poppler-page.cc       2006-01-10 22:57:28.000000000 +0100
-@@ -26,12 +26,12 @@
- #include <Catalog.h>
- #include <ErrorCodes.h>
- #include <ArthurOutputDev.h>
--#include <Private.h>
- #include <SplashOutputDev.h>
- #include <TextOutputDev.h>
- #include <splash/SplashBitmap.h>
- #include "poppler-private.h"
-+#include "poppler-page-transition-private.h"
- namespace Poppler {
-diff -Nur poppler.0_5_0/qt4/src/poppler-private.h poppler.HEAD/qt4/src/poppler-private.h
---- poppler.0_5_0/qt4/src/poppler-private.h    2006-01-01 23:35:48.000000000 +0100
-+++ poppler.HEAD/qt4/src/poppler-private.h     2006-01-18 23:32:13.000000000 +0100
-@@ -34,6 +34,7 @@
-       
-       ~DocumentData()
-       {
-+              qDeleteAll(m_embeddedFiles);
-               delete m_splashOutputDev;
-               delete m_fontInfoScanner;
-       }
-@@ -56,6 +57,7 @@
-       bool locked;
-       FontInfoScanner *m_fontInfoScanner;
-       SplashOutputDev *m_splashOutputDev;
-+      QList<EmbeddedFile*> m_embeddedFiles;
-     };
- }
-diff -Nur poppler.0_5_0/qt4/src/poppler-qt4.h poppler.HEAD/qt4/src/poppler-qt4.h
---- poppler.0_5_0/qt4/src/poppler-qt4.h        2006-01-05 14:53:58.000000000 +0100
-+++ poppler.HEAD/qt4/src/poppler-qt4.h 2006-01-18 23:32:13.000000000 +0100
-@@ -26,7 +26,9 @@
- #include <QtCore/QDateTime>
- #include <QtGui/QPixmap>
--#include <PageTransition.h>
-+#include <poppler-page-transition.h>
-+
-+class EmbFile;
- /**
-    The Poppler Qt bindings
-@@ -146,6 +148,58 @@
-     /**
-+       Container class for an embedded file with a PDF document
-+    */
-+    class EmbeddedFileData;
-+    class EmbeddedFile {
-+    public:
-+      /**
-+         Create a new embedded file container
-+      */
-+      EmbeddedFile(EmbFile *embfile);
-+      
-+      EmbeddedFile(const EmbeddedFile &ef);
-+      
-+      ~EmbeddedFile();
-+
-+      /**
-+         The name associated with the file
-+      */
-+      QString name() const;
-+
-+      /**
-+         The description associated with the file, if any.
-+
-+         This will return an empty QString if there is no description element
-+      */
-+      QString description() const;
-+
-+      /**
-+         The modification date for the embedded file, if known.
-+      */
-+      QDateTime modDate() const;
-+
-+      /**
-+         The creation date for the embedded file, if known.
-+      */
-+      QDateTime createDate() const;
-+
-+      /**
-+         The data as an array
-+      */
-+      QByteArray data();
-+
-+      /**
-+         A QDataStream for the actual data?
-+      */
-+      //QDataStream dataStream() const;
-+
-+    private:
-+      EmbeddedFileData *m_embeddedFile;
-+    };
-+
-+
-+    /**
-        Page within a PDF document
-     */
-     class Page {
-@@ -544,6 +598,20 @@
-       */
-       bool scanForFonts( int numPages, QList<FontInfo> *fontList ) const; 
-+
-+      /**
-+         The documents embedded within the PDF document.
-+
-+         \note there are two types of embedded document - this call
-+         only accesses documents that are embedded at the document level.
-+      */
-+      const QList<EmbeddedFile*> &embeddedFiles() const;
-+
-+      /**
-+         Whether there are any documents embedded in this PDF document.
-+      */
-+      bool hasEmbeddedFiles() const;
-+
-       Document::~Document();
-   
-     private:
-diff -Nur poppler.0_5_0/qt4/tests/check_attachments.cpp poppler.HEAD/qt4/tests/check_attachments.cpp
---- poppler.0_5_0/qt4/tests/check_attachments.cpp      1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/qt4/tests/check_attachments.cpp       2006-01-18 23:40:26.000000000 +0100
-@@ -0,0 +1,151 @@
-+#include <QtTest/QtTest>
-+
-+#define UNSTABLE_POPPLER_QT4
-+#include <poppler-qt4.h>
-+
-+#include <QtCore/QFile>
-+
-+class TestAttachments: public QObject
-+{
-+    Q_OBJECT
-+private slots:
-+    void checkNoAttachments();
-+    void checkAttach1();
-+    void checkAttach2();
-+    void checkAttach3();
-+    void checkAttach4();
-+};
-+
-+void TestAttachments::checkNoAttachments()
-+{
-+    Poppler::Document *doc;
-+    doc = Poppler::Document::load("../../../test/unittestcases/truetype.pdf");
-+    QVERIFY( doc );
-+
-+    QCOMPARE( doc->hasEmbeddedFiles(), false );
-+
-+    delete doc;
-+}
-+
-+void TestAttachments::checkAttach1()
-+{
-+
-+    Poppler::Document *doc;
-+    doc = Poppler::Document::load("../../../test/unittestcases/WithAttachments.pdf");
-+    QVERIFY( doc );
-+
-+    QVERIFY( doc->hasEmbeddedFiles() );
-+
-+    QList<Poppler::EmbeddedFile*> fileList = doc->embeddedFiles();
-+    QCOMPARE( fileList.size(), 2 );
-+
-+    Poppler::EmbeddedFile *embfile = fileList.at(0);
-+    QCOMPARE( embfile->name(), QString( "kroller.png" ) );
-+    QCOMPARE( embfile->description(), QString("/home/bradh/coding/svn-vers/KDE/kdeartwork/wallpapers/kroller.png") );
-+    QCOMPARE( embfile->createDate(), QDateTime( QDate(), QTime() ) );
-+    QCOMPARE( embfile->modDate(), QDateTime( QDate(), QTime() ) );
-+
-+    QFile file( "../../../test/unittestcases/kroller.png" );
-+    QVERIFY(  file.open( QIODevice::ReadOnly ) );
-+    QByteArray krollerData = file.readAll();
-+    QByteArray embdata = embfile->data();
-+    QCOMPARE( krollerData, embdata );
-+          
-+
-+    Poppler::EmbeddedFile *embfile2 = fileList.at(1);
-+    QCOMPARE( embfile2->name(), QString("gnome-64.gif") );
-+    QCOMPARE( embfile2->description(), QString("/usr/share/gnome-about/gnome-64.gif") );
-+    QCOMPARE( embfile2->modDate(), QDateTime( QDate(), QTime() ) );
-+    QCOMPARE( embfile2->createDate(), QDateTime( QDate(), QTime() ) );
-+
-+    QFile file2( "../../../test/unittestcases/gnome-64.gif" );
-+    QVERIFY(  file2.open( QIODevice::ReadOnly ) );
-+    QByteArray g64Data = file2.readAll();
-+    QByteArray emb2data = embfile2->data();
-+    QCOMPARE( g64Data, emb2data );
-+
-+    delete doc;
-+}
-+
-+
-+void TestAttachments::checkAttach2()
-+{
-+
-+    Poppler::Document *doc;
-+    doc = Poppler::Document::load("../../../test/unittestcases/A6EmbeddedFiles.pdf");
-+    QVERIFY( doc );
-+
-+    QVERIFY( doc->hasEmbeddedFiles() );
-+
-+    QList<Poppler::EmbeddedFile*> fileList;
-+    fileList = doc->embeddedFiles();
-+    QCOMPARE( fileList.size(), 3 );
-+
-+    Poppler::EmbeddedFile *embfile1 = fileList.at(0);
-+    QCOMPARE( embfile1->name(), QString("Acro7 thoughts") );
-+    QCOMPARE( embfile1->description(), QString("Acro7 Thoughts") );
-+    QCOMPARE( embfile1->createDate(), QDateTime( QDate( 2003, 8, 4 ), QTime( 13, 54, 54), Qt::UTC ) );
-+    QCOMPARE( embfile1->modDate(), QDateTime( QDate( 2003, 8, 4 ), QTime( 14, 15, 27), Qt::UTC ) );
-+
-+    Poppler::EmbeddedFile *embfile2 = fileList.at(1);
-+    QCOMPARE( embfile2->name(), QString("acro transitions 1.xls") );
-+    QCOMPARE( embfile2->description(), QString("AcroTransitions") );
-+    QCOMPARE( embfile2->createDate(), QDateTime( QDate( 2003, 7, 18 ), QTime( 21, 7, 16), Qt::UTC ) );
-+    QCOMPARE( embfile2->modDate(), QDateTime( QDate( 2003, 7, 22 ), QTime( 13, 4, 40), Qt::UTC ) );
-+
-+    Poppler::EmbeddedFile *embfile3 = fileList.at(2);
-+    QCOMPARE( embfile3->name(), QString("apago_pdfe_wide.gif") );
-+    QCOMPARE( embfile3->description(), QString("PDFE Animation") );
-+    QCOMPARE( embfile3->createDate(), QDateTime( QDate( 2003, 1, 31 ), QTime( 15, 54, 29), Qt::UTC ) );
-+    QCOMPARE( embfile3->modDate(), QDateTime( QDate( 2003, 1, 31 ), QTime( 15, 52, 58), Qt::UTC ) );
-+
-+    delete doc;
-+}
-+
-+void TestAttachments::checkAttach3()
-+{
-+
-+    Poppler::Document *doc;
-+    doc = Poppler::Document::load("../../../test/unittestcases/shapes+attachments.pdf");
-+    QVERIFY( doc );
-+
-+    QVERIFY( doc->hasEmbeddedFiles() );
-+
-+    QList<Poppler::EmbeddedFile*> fileList;
-+    fileList = doc->embeddedFiles();
-+    QCOMPARE( fileList.size(), 1 );
-+
-+    Poppler::EmbeddedFile *embfile = fileList.at(0);
-+    QCOMPARE( embfile->name(), QString( "ADEX1.xpdf.pgp" ) );
-+    QCOMPARE( embfile->description(), QString("encrypted version of document") );
-+    QCOMPARE( embfile->createDate(), QDateTime( QDate( 2004, 3, 29 ), QTime( 19, 37, 16), Qt::UTC ) );
-+    QCOMPARE( embfile->modDate(), QDateTime( QDate( 2004, 3, 29 ), QTime( 19, 37, 16), Qt::UTC ) );
-+    delete doc;
-+
-+}
-+
-+void TestAttachments::checkAttach4()
-+{
-+
-+    Poppler::Document *doc;
-+    doc = Poppler::Document::load("../../../test/unittestcases/imageretrieve+attachment.pdf");
-+    QVERIFY( doc );
-+
-+    QVERIFY( doc->hasEmbeddedFiles() );
-+
-+    QList<Poppler::EmbeddedFile*> fileList;
-+    fileList = doc->embeddedFiles();
-+    QCOMPARE( fileList.size(), 1 );
-+
-+    Poppler::EmbeddedFile *embfile = fileList.at(0);
-+    QCOMPARE( embfile->name(), QString( "export-altona.csv" ) );
-+    QCOMPARE( embfile->description(), QString("Altona Export") );
-+    QCOMPARE( embfile->createDate(), QDateTime( QDate( 2005, 8, 30 ), QTime( 20, 49, 35), Qt::UTC ) );
-+    QCOMPARE( embfile->modDate(), QDateTime( QDate( 2005, 8, 30 ), QTime( 20, 49, 52), Qt::UTC ) );
-+    delete doc;
-+
-+}
-+
-+QTEST_MAIN(TestAttachments)
-+#include "check_attachments.moc"
-+
-diff -Nur poppler.0_5_0/qt4/tests/Makefile.am poppler.HEAD/qt4/tests/Makefile.am
---- poppler.0_5_0/qt4/tests/Makefile.am        2005-12-27 07:10:02.000000000 +0100
-+++ poppler.HEAD/qt4/tests/Makefile.am 2006-01-18 23:32:13.000000000 +0100
-@@ -2,6 +2,7 @@
-       -I$(top_srcdir)                         \
-       -I$(top_srcdir)/poppler                 \
-       -I$(top_srcdir)/qt4/src                 \
-+      -I$(top_srcdir)/qt                      \
-       $(POPPLER_QT4_CXXFLAGS)                 \
-       $(POPPLER_QTTEST_CXXFLAGS)
-@@ -18,7 +19,7 @@
-       moc -i $< -o $@
- noinst_PROGRAMS = test-poppler-qt4 stress-poppler-qt4 \
--      poppler-fonts test-password-qt4
-+      poppler-fonts test-password-qt4 poppler-attachments
- test_poppler_qt4_SOURCES =                    \
-@@ -38,6 +39,11 @@
- poppler_fonts_LDADD = $(LDADDS)
-+poppler_attachments_SOURCES =                 \
-+       poppler-attachments.cpp
-+
-+poppler_attachments_LDADD = $(LDADDS)
-+
- stress_poppler_qt4_SOURCES =                  \
-        stress-poppler-qt4.cpp
-@@ -46,7 +52,8 @@
- if BUILD_POPPLER_QT4TESTS
- TESTS = \
--      check_dateConversion    \
-+      check_attachments       \
-+      check_dateConversion    \
-       check_fonts             \
-       check_metadata          \
-       check_permissions       \
-@@ -55,6 +62,10 @@
- check_PROGRAMS = $(TESTS)
-+check_attachments_SOURCES = check_attachments.cpp
-+check_attachments.$(OBJEXT): check_attachments.moc
-+check_attachments_LDADD = $(UT_LDADDS)
-+
- check_dateConversion_SOURCES = check_dateConversion.cpp
- check_dateConversion.$(OBJEXT): check_dateConversion.moc
- check_dateConversion_LDADD = $(UT_LDADDS)
-@@ -72,7 +83,7 @@
- check_pagemode_LDADD = $(UT_LDADDS)
- check_permissions_SOURCES = check_permissions.cpp
--check_metadata.$(OBJEXT): check_permissions.moc
-+check_permissions.$(OBJEXT): check_permissions.moc
- check_permissions_LDADD = $(UT_LDADDS)
- check_pagelayout_SOURCES = check_pagelayout.cpp
-diff -Nur poppler.0_5_0/qt4/tests/poppler-attachments.cpp poppler.HEAD/qt4/tests/poppler-attachments.cpp
---- poppler.0_5_0/qt4/tests/poppler-attachments.cpp    1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/qt4/tests/poppler-attachments.cpp     2006-01-18 23:40:26.000000000 +0100
-@@ -0,0 +1,37 @@
-+#include <QtCore/QtCore>
-+#include <iostream>
-+
-+#define UNSTABLE_POPPLER_QT4
-+#include <poppler-qt4.h>
-+
-+int main( int argc, char **argv )
-+{
-+    QCoreApplication a( argc, argv );               // QApplication required!
-+
-+    if (!( argc == 2 ))
-+    {
-+      qWarning() << "usage: poppler-attachments filename";
-+      exit(1);
-+    }
-+  
-+    Poppler::Document *doc = Poppler::Document::load(argv[1]);
-+    if (!doc)
-+    {
-+      qWarning() << "doc not loaded";
-+      exit(1);
-+    }
-+
-+    if (doc->hasEmbeddedFiles()) {
-+      std::cout << "Embedded files: " << std::endl;
-+      foreach(Poppler::EmbeddedFile *file, doc->embeddedFiles()) {
-+          std::cout << "    " << qPrintable(file->name()) << std::endl;
-+          std::cout << "    desc:" << qPrintable(file->description()) << std::endl;
-+          QByteArray data = file->data();
-+          std::cout << "       data: " << data.constData() << std::endl;
-+      }
-+      
-+    } else {
-+      std::cout << "There are no embedded document at the top level" << std::endl;
-+    }
-+  
-+}
-diff -Nur poppler.0_5_0/splash/Splash.cc poppler.HEAD/splash/Splash.cc
---- poppler.0_5_0/splash/Splash.cc     2005-10-30 21:29:05.000000000 +0100
-+++ poppler.HEAD/splash/Splash.cc      2006-02-06 21:49:21.000000000 +0100
-@@ -2020,10 +2020,10 @@
-         for (xx = 0, x1 = x0 - glyph->x; xx < glyph->w; ++xx, ++x1) {
-           alpha = *p++;
-           if (softMask) {
--            alpha = (int)(alpha * state->fillAlpha *
-+            alpha = (int)(alpha * (float)state->fillAlpha *
-                           softMask->data[y1 * softMask->rowSize + x1]);
-           } else {
--            alpha = (int)(alpha * state->fillAlpha);
-+            alpha = (int)(alpha * (float)state->fillAlpha);
-           }
-           if (alpha > 0) {
-             if (noClip || state->clip->test(x1, y1)) {
-diff -Nur poppler.0_5_0/splash/SplashFontEngine.cc poppler.HEAD/splash/SplashFontEngine.cc
---- poppler.0_5_0/splash/SplashFontEngine.cc   2005-09-16 19:42:56.000000000 +0200
-+++ poppler.HEAD/splash/SplashFontEngine.cc    2006-02-02 23:50:01.000000000 +0100
-@@ -105,19 +105,19 @@
- }
- SplashFontFile *SplashFontEngine::loadType1Font(SplashFontFileID *idA,
--                                              char *fileName,
--                                              GBool deleteFile, char **enc) {
-+                                              SplashFontSrc *src,
-+                                              char **enc) {
-   SplashFontFile *fontFile;
-   fontFile = NULL;
- #if HAVE_T1LIB_H
-   if (!fontFile && t1Engine) {
--    fontFile = t1Engine->loadType1Font(idA, fileName, deleteFile, enc);
-+    fontFile = t1Engine->loadType1Font(idA, src, enc);
-   }
- #endif
- #if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H
-   if (!fontFile && ftEngine) {
--    fontFile = ftEngine->loadType1Font(idA, fileName, deleteFile, enc);
-+    fontFile = ftEngine->loadType1Font(idA, src, enc);
-   }
- #endif
-@@ -126,29 +126,26 @@
-   // semantics, this will remove the last link; otherwise it will
-   // return an error, leaving the file to be deleted later (if
-   // loadXYZFont failed, the file will always be deleted)
--  if (deleteFile) {
--    unlink(fontFile ? fontFile->fileName->getCString() : fileName);
--  }
-+  src->unref();
- #endif
-   return fontFile;
- }
- SplashFontFile *SplashFontEngine::loadType1CFont(SplashFontFileID *idA,
--                                               char *fileName,
--                                               GBool deleteFile,
-+                                               SplashFontSrc *src,
-                                                char **enc) {
-   SplashFontFile *fontFile;
-   fontFile = NULL;
- #if HAVE_T1LIB_H
-   if (!fontFile && t1Engine) {
--    fontFile = t1Engine->loadType1CFont(idA, fileName, deleteFile, enc);
-+    fontFile = t1Engine->loadType1CFont(idA, src, enc);
-   }
- #endif
- #if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H
-   if (!fontFile && ftEngine) {
--    fontFile = ftEngine->loadType1CFont(idA, fileName, deleteFile, enc);
-+    fontFile = ftEngine->loadType1CFont(idA, src, enc);
-   }
- #endif
-@@ -157,23 +154,20 @@
-   // semantics, this will remove the last link; otherwise it will
-   // return an error, leaving the file to be deleted later (if
-   // loadXYZFont failed, the file will always be deleted)
--  if (deleteFile) {
--    unlink(fontFile ? fontFile->fileName->getCString() : fileName);
--  }
-+  src->unref();
- #endif
-   return fontFile;
- }
- SplashFontFile *SplashFontEngine::loadCIDFont(SplashFontFileID *idA,
--                                            char *fileName,
--                                            GBool deleteFile) {
-+                                            SplashFontSrc *src) {
-   SplashFontFile *fontFile;
-   fontFile = NULL;
- #if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H
-   if (!fontFile && ftEngine) {
--    fontFile = ftEngine->loadCIDFont(idA, fileName, deleteFile);
-+    fontFile = ftEngine->loadCIDFont(idA, src);
-   }
- #endif
-@@ -182,26 +176,24 @@
-   // semantics, this will remove the last link; otherwise it will
-   // return an error, leaving the file to be deleted later (if
-   // loadXYZFont failed, the file will always be deleted)
--  if (deleteFile) {
--    unlink(fontFile ? fontFile->fileName->getCString() : fileName);
--  }
-+  src->unref();
- #endif
-   return fontFile;
- }
- SplashFontFile *SplashFontEngine::loadTrueTypeFont(SplashFontFileID *idA,
--                                                 char *fileName,
--                                                 GBool deleteFile,
-+                                                 SplashFontSrc *src,
-                                                  Gushort *codeToGID,
--                                                 int codeToGIDLen) {
-+                                                 int codeToGIDLen,
-+                                                 int faceIndex) {
-   SplashFontFile *fontFile;
-   fontFile = NULL;
- #if HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H
-   if (!fontFile && ftEngine) {
--    fontFile = ftEngine->loadTrueTypeFont(idA, fileName, deleteFile,
--                                        codeToGID, codeToGIDLen);
-+    fontFile = ftEngine->loadTrueTypeFont(idA, src,
-+                                        codeToGID, codeToGIDLen, faceIndex);
-   }
- #endif
-@@ -214,9 +206,7 @@
-   // semantics, this will remove the last link; otherwise it will
-   // return an error, leaving the file to be deleted later (if
-   // loadXYZFont failed, the file will always be deleted)
--  if (deleteFile) {
--    unlink(fontFile ? fontFile->fileName->getCString() : fileName);
--  }
-+  src->unref();
- #endif
-   return fontFile;
-diff -Nur poppler.0_5_0/splash/SplashFontEngine.h poppler.HEAD/splash/SplashFontEngine.h
---- poppler.0_5_0/splash/SplashFontEngine.h    2005-03-03 20:45:59.000000000 +0100
-+++ poppler.HEAD/splash/SplashFontEngine.h     2006-02-02 23:50:01.000000000 +0100
-@@ -19,6 +19,7 @@
- class SplashFontFile;
- class SplashFontFileID;
- class SplashFont;
-+class SplashFontSrc;
- //------------------------------------------------------------------------
-@@ -48,15 +49,12 @@
-   SplashFontFile *getFontFile(SplashFontFileID *id);
-   // Load fonts - these create new SplashFontFile objects.
--  SplashFontFile *loadType1Font(SplashFontFileID *idA, char *fileName,
--                              GBool deleteFile, char **enc);
--  SplashFontFile *loadType1CFont(SplashFontFileID *idA, char *fileName,
--                               GBool deleteFile, char **enc);
--  SplashFontFile *loadCIDFont(SplashFontFileID *idA, char *fileName,
--                            GBool deleteFile);
--  SplashFontFile *loadTrueTypeFont(SplashFontFileID *idA, char *fileName,
--                                 GBool deleteFile,
--                                 Gushort *codeToGID, int codeToGIDLen);
-+  SplashFontFile *loadType1Font(SplashFontFileID *idA, SplashFontSrc *src, char **enc);
-+  SplashFontFile *loadType1CFont(SplashFontFileID *idA, SplashFontSrc *src, char **enc);
-+  SplashFontFile *loadCIDFont(SplashFontFileID *idA, SplashFontSrc *src);
-+  SplashFontFile *loadTrueTypeFont(SplashFontFileID *idA, SplashFontSrc *src,
-+                                 Gushort *codeToGID, int codeToGIDLen,
-+                                 int faceIndex=0);
-   // Get a font - this does a cache lookup first, and if not found,
-   // creates a new SplashFont object and adds it to the cache.  The
-diff -Nur poppler.0_5_0/splash/SplashFontFile.cc poppler.HEAD/splash/SplashFontFile.cc
---- poppler.0_5_0/splash/SplashFontFile.cc     2005-12-08 19:17:42.000000000 +0100
-+++ poppler.HEAD/splash/SplashFontFile.cc      2006-02-02 23:50:01.000000000 +0100
-@@ -12,6 +12,7 @@
- #include <stdio.h>
- #include <unistd.h>
-+#include "goo/gmem.h"
- #include "goo/GooString.h"
- #include "SplashFontFile.h"
- #include "SplashFontFileID.h"
-@@ -26,19 +27,15 @@
- // SplashFontFile
- //------------------------------------------------------------------------
--SplashFontFile::SplashFontFile(SplashFontFileID *idA, char *fileNameA,
--                             GBool deleteFileA) {
-+SplashFontFile::SplashFontFile(SplashFontFileID *idA, SplashFontSrc *srcA) {
-   id = idA;
--  fileName = new GooString(fileNameA);
--  deleteFile = deleteFileA;
-+  src = srcA;
-+  src->ref();
-   refCnt = 0;
- }
- SplashFontFile::~SplashFontFile() {
--  if (deleteFile) {
--    unlink(fileName->getCString());
--  }
--  delete fileName;
-+  src->unref();
-   delete id;
- }
-@@ -51,3 +48,60 @@
-     delete this;
-   }
- }
-+
-+//
-+
-+SplashFontSrc::SplashFontSrc() {
-+  isFile = gFalse;
-+  deleteSrc = gFalse;
-+  fileName = NULL;
-+  buf = NULL;
-+  refcnt = 1;
-+}
-+
-+SplashFontSrc::~SplashFontSrc() {
-+  if (deleteSrc) {
-+    if (isFile) {
-+      if (fileName)
-+      unlink(fileName->getCString());
-+    } else {
-+      if (buf)
-+      gfree(buf);
-+    }
-+  }
-+
-+  if (isFile && fileName)
-+    delete fileName;
-+}
-+
-+void SplashFontSrc::ref() {
-+  refcnt++;
-+}
-+
-+void SplashFontSrc::unref() {
-+  if (! --refcnt)
-+    delete this;
-+}
-+
-+void SplashFontSrc::setFile(GooString *file, GBool del)
-+{
-+  isFile = gTrue;
-+  fileName = file->copy();
-+  deleteSrc = del;
-+}
-+
-+void SplashFontSrc::setFile(const char *file, GBool del)
-+{
-+  isFile = gTrue;
-+  fileName = new GooString(file);
-+  deleteSrc = del;
-+}
-+
-+void SplashFontSrc::setBuf(char *bufA, int bufLenA, GBool del)
-+{
-+  isFile = gFalse;
-+  buf = bufA;
-+  bufLen = bufLenA;
-+  deleteSrc = del;
-+}
-+
-diff -Nur poppler.0_5_0/splash/SplashFontFile.h poppler.HEAD/splash/SplashFontFile.h
---- poppler.0_5_0/splash/SplashFontFile.h      2005-03-03 20:45:59.000000000 +0100
-+++ poppler.HEAD/splash/SplashFontFile.h       2006-02-02 23:50:01.000000000 +0100
-@@ -23,6 +23,25 @@
- // SplashFontFile
- //------------------------------------------------------------------------
-+struct SplashFontSrc {
-+  SplashFontSrc();
-+  ~SplashFontSrc();
-+
-+  void setFile(GooString *file, GBool del);
-+  void setFile(const char *file, GBool del);
-+  void setBuf(char *bufA, int buflenA, GBool del);
-+
-+  void ref();
-+  void unref();
-+
-+  GBool isFile;
-+  GooString *fileName;
-+  char *buf;
-+  int bufLen;
-+  GBool deleteSrc;
-+  int refcnt;
-+};
-+
- class SplashFontFile {
- public:
-@@ -44,12 +63,10 @@
- protected:
--  SplashFontFile(SplashFontFileID *idA, char *fileNameA,
--               GBool deleteFileA);
-+  SplashFontFile(SplashFontFileID *idA, SplashFontSrc *srcA);
-   SplashFontFileID *id;
--  GooString *fileName;
--  GBool deleteFile;
-+  SplashFontSrc *src;
-   int refCnt;
-   friend class SplashFontEngine;
-diff -Nur poppler.0_5_0/splash/SplashFTFont.cc poppler.HEAD/splash/SplashFTFont.cc
---- poppler.0_5_0/splash/SplashFTFont.cc       2005-11-17 22:37:34.000000000 +0100
-+++ poppler.HEAD/splash/SplashFTFont.cc        2006-01-23 15:45:30.000000000 +0100
-@@ -19,7 +19,8 @@
- #include <ft2build.h>
- #include FT_OUTLINE_H
--#include FT_INTERNAL_OBJECTS_H // needed for FT_New_Size decl
-+#include FT_SIZES_H
-+#include FT_GLYPH_H
- #include "goo/gmem.h"
- #include "SplashMath.h"
- #include "SplashGlyphBitmap.h"
-diff -Nur poppler.0_5_0/splash/SplashFTFontEngine.cc poppler.HEAD/splash/SplashFTFontEngine.cc
---- poppler.0_5_0/splash/SplashFTFontEngine.cc 2005-12-08 19:17:42.000000000 +0100
-+++ poppler.HEAD/splash/SplashFTFontEngine.cc  2006-02-02 23:50:01.000000000 +0100
-@@ -64,22 +64,19 @@
- }
- SplashFontFile *SplashFTFontEngine::loadType1Font(SplashFontFileID *idA,
--                                                char *fileName,
--                                                GBool deleteFile,
-+                                                SplashFontSrc *src,
-                                                 char **enc) {
--  return SplashFTFontFile::loadType1Font(this, idA, fileName, deleteFile, enc);
-+  return SplashFTFontFile::loadType1Font(this, idA, src, enc);
- }
- SplashFontFile *SplashFTFontEngine::loadType1CFont(SplashFontFileID *idA,
--                                                 char *fileName,
--                                                 GBool deleteFile,
-+                                                 SplashFontSrc *src,
-                                                  char **enc) {
--  return SplashFTFontFile::loadType1Font(this, idA, fileName, deleteFile, enc);
-+  return SplashFTFontFile::loadType1Font(this, idA, src, enc);
- }
- SplashFontFile *SplashFTFontEngine::loadCIDFont(SplashFontFileID *idA,
--                                              char *fileName,
--                                              GBool deleteFile) {
-+                                              SplashFontSrc *src) {
-   FoFiType1C *ff;
-   Gushort *cidToGIDMap;
-   int nCIDs;
-@@ -89,15 +86,21 @@
-   if (useCIDs) {
-     cidToGIDMap = NULL;
-     nCIDs = 0;
--  } else if ((ff = FoFiType1C::load(fileName))) {
-+  } else {
-+    if (src->isFile) {
-+      ff = FoFiType1C::load(src->fileName->getCString());
-+    } else {
-+      ff = new FoFiType1C(src->buf, src->bufLen, gFalse);
-+    }
-+    if (ff) {
-     cidToGIDMap = ff->getCIDToGIDMap(&nCIDs);
-     delete ff;
-   } else {
-     cidToGIDMap = NULL;
-     nCIDs = 0;
-   }
--  ret = SplashFTFontFile::loadCIDFont(this, idA, fileName, deleteFile,
--                                    cidToGIDMap, nCIDs);
-+  }
-+  ret = SplashFTFontFile::loadCIDFont(this, idA, src, cidToGIDMap, nCIDs);
-   if (!ret) {
-     gfree(cidToGIDMap);
-   }
-@@ -105,16 +108,17 @@
- }
- SplashFontFile *SplashFTFontEngine::loadTrueTypeFont(SplashFontFileID *idA,
--                                                   char *fileName,
--                                                   GBool deleteFile,
-+                                                   SplashFontSrc *src,
-                                                    Gushort *codeToGID,
--                                                   int codeToGIDLen) {
-+                                                   int codeToGIDLen,
-+                                                   int faceIndex) {
-+#if 0
-   FoFiTrueType *ff;
-   GooString *tmpFileName;
-   FILE *tmpFile;
-   SplashFontFile *ret;
--  if (!(ff = FoFiTrueType::load(fileName))) {
-+  if (!(ff = FoFiTrueType::load(fileName, faceIndex))) {
-     return NULL;
-   }
-   tmpFileName = NULL;
-@@ -127,7 +131,8 @@
-   fclose(tmpFile);
-   ret = SplashFTFontFile::loadTrueTypeFont(this, idA,
-                                          tmpFileName->getCString(),
--                                         gTrue, codeToGID, codeToGIDLen);
-+                                         gTrue, codeToGID, codeToGIDLen,
-+                                         faceIndex);
-   if (ret) {
-     if (deleteFile) {
-       unlink(fileName);
-@@ -137,6 +142,13 @@
-   }
-   delete tmpFileName;
-   return ret;
-+#else
-+  SplashFontFile *ret;
-+  ret = SplashFTFontFile::loadTrueTypeFont(this, idA, src,
-+                                         codeToGID, codeToGIDLen,
-+                                         faceIndex);
-+  return ret;
-+#endif
- }
- #endif // HAVE_FREETYPE_FREETYPE_H || HAVE_FREETYPE_H
-diff -Nur poppler.0_5_0/splash/SplashFTFontEngine.h poppler.HEAD/splash/SplashFTFontEngine.h
---- poppler.0_5_0/splash/SplashFTFontEngine.h  2005-09-16 00:09:50.000000000 +0200
-+++ poppler.HEAD/splash/SplashFTFontEngine.h   2006-02-02 23:50:01.000000000 +0100
-@@ -19,6 +19,7 @@
- class SplashFontFile;
- class SplashFontFileID;
-+class SplashFontSrc;
- //------------------------------------------------------------------------
- // SplashFTFontEngine
-@@ -32,15 +33,12 @@
-   ~SplashFTFontEngine();
-   // Load fonts.
--  SplashFontFile *loadType1Font(SplashFontFileID *idA, char *fileName,
--                              GBool deleteFile, char **enc);
--  SplashFontFile *loadType1CFont(SplashFontFileID *idA, char *fileName,
--                               GBool deleteFile, char **enc);
--  SplashFontFile *loadCIDFont(SplashFontFileID *idA, char *fileName,
--                            GBool deleteFile);
--  SplashFontFile *loadTrueTypeFont(SplashFontFileID *idA, char *fileName,
--                                 GBool deleteFile,
--                                 Gushort *codeToGID, int codeToGIDLen);
-+  SplashFontFile *loadType1Font(SplashFontFileID *idA, SplashFontSrc *src, char **enc);
-+  SplashFontFile *loadType1CFont(SplashFontFileID *idA, SplashFontSrc *src, char **enc);
-+  SplashFontFile *loadCIDFont(SplashFontFileID *idA, SplashFontSrc *src);
-+  SplashFontFile *loadTrueTypeFont(SplashFontFileID *idA, SplashFontSrc *src,
-+                                 Gushort *codeToGID, int codeToGIDLen,
-+                                 int faceIndex=0);
- private:
-diff -Nur poppler.0_5_0/splash/SplashFTFontFile.cc poppler.HEAD/splash/SplashFTFontFile.cc
---- poppler.0_5_0/splash/SplashFTFontFile.cc   2005-08-27 10:43:43.000000000 +0200
-+++ poppler.HEAD/splash/SplashFTFontFile.cc    2006-02-02 23:50:01.000000000 +0100
-@@ -13,6 +13,7 @@
- #endif
- #include "goo/gmem.h"
-+#include "goo/GooString.h"
- #include "SplashFTFontEngine.h"
- #include "SplashFTFont.h"
- #include "SplashFTFontFile.h"
-@@ -23,16 +24,19 @@
- SplashFontFile *SplashFTFontFile::loadType1Font(SplashFTFontEngine *engineA,
-                                               SplashFontFileID *idA,
--                                              char *fileNameA,
--                                              GBool deleteFileA,
-+                                              SplashFontSrc *src,
-                                               char **encA) {
-   FT_Face faceA;
-   Gushort *codeToGIDA;
-   char *name;
-   int i;
--  if (FT_New_Face(engineA->lib, fileNameA, 0, &faceA)) {
--    return NULL;
-+  if (src->isFile) {
-+    if (FT_New_Face(engineA->lib, src->fileName->getCString(), 0, &faceA))
-+      return NULL;
-+  } else {
-+    if (FT_New_Memory_Face(engineA->lib, (const FT_Byte *)src->buf, src->bufLen, 0, &faceA))
-+      return NULL;
-   }
-   codeToGIDA = (Gushort *)gmallocn(256, sizeof(int));
-   for (i = 0; i < 256; ++i) {
-@@ -42,48 +46,55 @@
-     }
-   }
--  return new SplashFTFontFile(engineA, idA, fileNameA, deleteFileA,
-+  return new SplashFTFontFile(engineA, idA, src,
-                             faceA, codeToGIDA, 256);
- }
- SplashFontFile *SplashFTFontFile::loadCIDFont(SplashFTFontEngine *engineA,
-                                             SplashFontFileID *idA,
--                                            char *fileNameA,
--                                            GBool deleteFileA,
-+                                            SplashFontSrc *src,
-                                             Gushort *codeToGIDA,
-                                             int codeToGIDLenA) {
-   FT_Face faceA;
--  if (FT_New_Face(engineA->lib, fileNameA, 0, &faceA)) {
--    return NULL;
-+  if (src->isFile) {
-+    if (FT_New_Face(engineA->lib, src->fileName->getCString(), 0, &faceA))
-+      return NULL;
-+  } else {
-+    if (FT_New_Memory_Face(engineA->lib, (const FT_Byte *)src->buf, src->bufLen, 0, &faceA))
-+      return NULL;
-   }
--  return new SplashFTFontFile(engineA, idA, fileNameA, deleteFileA,
-+  return new SplashFTFontFile(engineA, idA, src,
-                             faceA, codeToGIDA, codeToGIDLenA);
- }
- SplashFontFile *SplashFTFontFile::loadTrueTypeFont(SplashFTFontEngine *engineA,
-                                                  SplashFontFileID *idA,
--                                                 char *fileNameA,
--                                                 GBool deleteFileA,
-+                                                 SplashFontSrc *src,
-                                                  Gushort *codeToGIDA,
--                                                 int codeToGIDLenA) {
-+                                                 int codeToGIDLenA,
-+                                                 int faceIndexA) {
-   FT_Face faceA;
--  if (FT_New_Face(engineA->lib, fileNameA, 0, &faceA)) {
--    return NULL;
-+  if (src->isFile) {
-+    if (FT_New_Face(engineA->lib, src->fileName->getCString(), faceIndexA, &faceA))
-+      return NULL;
-+  } else {
-+    if (FT_New_Memory_Face(engineA->lib, (const FT_Byte *)src->buf, src->bufLen, faceIndexA, &faceA))
-+      return NULL;
-   }
--  return new SplashFTFontFile(engineA, idA, fileNameA, deleteFileA,
-+  return new SplashFTFontFile(engineA, idA, src,
-                             faceA, codeToGIDA, codeToGIDLenA);
- }
- SplashFTFontFile::SplashFTFontFile(SplashFTFontEngine *engineA,
-                                  SplashFontFileID *idA,
--                                 char *fileNameA, GBool deleteFileA,
-+                                 SplashFontSrc *srcA,
-                                  FT_Face faceA,
-                                  Gushort *codeToGIDA, int codeToGIDLenA):
--  SplashFontFile(idA, fileNameA, deleteFileA)
-+  SplashFontFile(idA, srcA)
- {
-   engine = engineA;
-   face = faceA;
-diff -Nur poppler.0_5_0/splash/SplashFTFontFile.h poppler.HEAD/splash/SplashFTFontFile.h
---- poppler.0_5_0/splash/SplashFTFontFile.h    2005-03-03 20:45:59.000000000 +0100
-+++ poppler.HEAD/splash/SplashFTFontFile.h     2006-02-02 23:50:01.000000000 +0100
-@@ -28,18 +28,18 @@
- public:
-   static SplashFontFile *loadType1Font(SplashFTFontEngine *engineA,
--                                     SplashFontFileID *idA, char *fileNameA,
--                                     GBool deleteFileA, char **encA);
-+                                     SplashFontFileID *idA,
-+                                     SplashFontSrc *src, char **encA);
-   static SplashFontFile *loadCIDFont(SplashFTFontEngine *engineA,
--                                   SplashFontFileID *idA, char *fileNameA,
--                                   GBool deleteFileA,
--                                   Gushort *codeToCIDA, int codeToGIDLenA);
-+                                       SplashFontFileID *idA,
-+                                       SplashFontSrc *src,
-+                                       Gushort *codeToCIDA, int codeToGIDLenA);
-   static SplashFontFile *loadTrueTypeFont(SplashFTFontEngine *engineA,
-                                         SplashFontFileID *idA,
--                                        char *fileNameA,
--                                        GBool deleteFileA,
-+                                        SplashFontSrc *src,
-                                         Gushort *codeToGIDA,
--                                        int codeToGIDLenA);
-+                                        int codeToGIDLenA,
-+                                        int faceIndexA=0);
-   virtual ~SplashFTFontFile();
-@@ -51,7 +51,7 @@
-   SplashFTFontFile(SplashFTFontEngine *engineA,
-                  SplashFontFileID *idA,
--                 char *fileNameA, GBool deleteFileA,
-+                 SplashFontSrc *srcA,
-                  FT_Face faceA,
-                  Gushort *codeToGIDA, int codeToGIDLenA);
-diff -Nur poppler.0_5_0/splash/SplashT1FontEngine.cc poppler.HEAD/splash/SplashT1FontEngine.cc
---- poppler.0_5_0/splash/SplashT1FontEngine.cc 2005-03-03 20:46:00.000000000 +0100
-+++ poppler.HEAD/splash/SplashT1FontEngine.cc  2006-02-02 23:50:01.000000000 +0100
-@@ -82,22 +82,26 @@
- }
- SplashFontFile *SplashT1FontEngine::loadType1Font(SplashFontFileID *idA,
--                                                char *fileName,
--                                                GBool deleteFile,
-+                                                SplashFontSrc *src,
-                                                 char **enc) {
--  return SplashT1FontFile::loadType1Font(this, idA, fileName, deleteFile, enc);
-+  return SplashT1FontFile::loadType1Font(this, idA, src, enc);
- }
- SplashFontFile *SplashT1FontEngine::loadType1CFont(SplashFontFileID *idA,
--                                                 char *fileName,
--                                                 GBool deleteFile,
-+                                                 SplashFontSrc *src,
-                                                  char **enc) {
-   FoFiType1C *ff;
-   GooString *tmpFileName;
-   FILE *tmpFile;
-   SplashFontFile *ret;
--  if (!(ff = FoFiType1C::load(fileName))) {
-+  SplashFontSrc *newsrc;
-+  
-+  if (src->isFile)
-+    ff = FoFiType1C::load(src->fileName);
-+  else
-+    ff = new FoFiType1C(src->buf, src->bufLen, gFalse);
-+  if (! ff)
-     return NULL;
-   }
-   tmpFileName = NULL;
-@@ -108,16 +112,11 @@
-   ff->convertToType1(NULL, gTrue, &fileWrite, tmpFile);
-   delete ff;
-   fclose(tmpFile);
--  ret = SplashT1FontFile::loadType1Font(this, idA, tmpFileName->getCString(),
--                                      gTrue, enc);
--  if (ret) {
--    if (deleteFile) {
--      unlink(fileName);
--    }
--  } else {
--    unlink(tmpFileName->getCString());
--  }
-+  newsrc = new SplashFontSrc;
-+  newsrc->setFile(tmpFileName, gTrue);
-   delete tmpFileName;
-+  ret = SplashT1FontFile::loadType1Font(this, idA, newsrc, enc);
-+  newsrc->unref();
-   return ret;
- }
-diff -Nur poppler.0_5_0/splash/SplashT1FontFile.cc poppler.HEAD/splash/SplashT1FontFile.cc
---- poppler.0_5_0/splash/SplashT1FontFile.cc   2005-08-27 10:43:43.000000000 +0200
-+++ poppler.HEAD/splash/SplashT1FontFile.cc    2006-02-02 23:50:01.000000000 +0100
-@@ -25,8 +25,7 @@
- SplashFontFile *SplashT1FontFile::loadType1Font(SplashT1FontEngine *engineA,
-                                               SplashFontFileID *idA,
--                                              char *fileNameA,
--                                              GBool deleteFileA,
-+                                              SplashFontSrc *src,
-                                               char **encA) {
-   int t1libIDA;
-   char **encTmp;
-@@ -34,9 +33,27 @@
-   int encStrSize;
-   char *encPtr;
-   int i;
--
-+  GString *fileNameA;
-+  SplashFontSrc *newsrc = NULL;
-+  SplashFontFile *ff;
-+
-+  if (! src->isFile) {
-+    GString *tmpFileName;
-+    FILE *tmpFile;
-+    if (!openTempFile(&tmpFileName, &tmpFile, "wb", NULL))
-+      return NULL;
-+    fwrite(src->buf, 1, src->bufLen, tmpFile);
-+    fclose(tmpFile);
-+    newsrc = new SplashFontSrc;
-+    newsrc->setFile(tmpFileName, gTrue);
-+    src = newsrc;
-+    delete tmpFileName;
-+  }
-+  fileNameA = src->fileName;
-   // load the font file
-   if ((t1libIDA = T1_AddFont(fileNameA)) < 0) {
-+    if (newsrc)
-+      delete newsrc;
-     return NULL;
-   }
-   T1_LoadFont(t1libIDA);
-@@ -63,15 +80,18 @@
-   encTmp[256] = "custom";
-   T1_ReencodeFont(t1libIDA, encTmp);
--  return new SplashT1FontFile(engineA, idA, fileNameA, deleteFileA,
-+  ff = new SplashT1FontFile(engineA, idA, src,
-                             t1libIDA, encTmp, encStrTmp);
-+  if (newsrc)
-+    newsrc->unref();
-+  return ff;
- }
- SplashT1FontFile::SplashT1FontFile(SplashT1FontEngine *engineA,
-                                  SplashFontFileID *idA,
--                                 char *fileNameA, GBool deleteFileA,
-+                                 SplashFontSrc *srcA,
-                                  int t1libIDA, char **encA, char *encStrA):
--  SplashFontFile(idA, fileNameA, deleteFileA)
-+  SplashFontFile(idA, srcA)
- {
-   engine = engineA;
-   t1libID = t1libIDA;
-diff -Nur poppler.0_5_0/splash/SplashT1FontFile.h poppler.HEAD/splash/SplashT1FontFile.h
---- poppler.0_5_0/splash/SplashT1FontFile.h    2005-03-03 20:45:59.000000000 +0100
-+++ poppler.HEAD/splash/SplashT1FontFile.h     2006-02-02 23:50:01.000000000 +0100
-@@ -26,7 +26,7 @@
-   static SplashFontFile *loadType1Font(SplashT1FontEngine *engineA,
-                                      SplashFontFileID *idA,
--                                     char *fileNameA, GBool deleteFileA,
-+                                     SplashFontSrc *src,
-                                      char **encA);
-   virtual ~SplashT1FontFile();
-@@ -39,7 +39,7 @@
-   SplashT1FontFile(SplashT1FontEngine *engineA,
-                  SplashFontFileID *idA,
--                 char *fileNameA, GBool deleteFileA,
-+                 SplashFontSrc *src,
-                  int t1libIDA, char **encA, char *encStrA);
-   SplashT1FontEngine *engine;
-diff -Nur poppler.0_5_0/splash/SplashTypes.h poppler.HEAD/splash/SplashTypes.h
---- poppler.0_5_0/splash/SplashTypes.h 2005-10-30 21:29:05.000000000 +0100
-+++ poppler.HEAD/splash/SplashTypes.h  2006-02-06 21:49:21.000000000 +0100
-@@ -14,7 +14,7 @@
- //------------------------------------------------------------------------
- #if USE_FIXEDPOINT
--#include "FixedPoint.h"
-+#include "goo/FixedPoint.h"
- typedef FixedPoint SplashCoord;
- #else
- typedef double SplashCoord;
-diff -Nur poppler.0_5_0/splash/SplashXPathScanner.cc poppler.HEAD/splash/SplashXPathScanner.cc
---- poppler.0_5_0/splash/SplashXPathScanner.cc 2005-10-16 16:19:47.000000000 +0200
-+++ poppler.HEAD/splash/SplashXPathScanner.cc  2006-02-03 00:06:20.000000000 +0100
-@@ -186,7 +186,7 @@
- }
- void SplashXPathScanner::computeIntersections(int y) {
--  SplashCoord ySegMin, ySegMax, xx0, xx1;
-+  SplashCoord xSegMin, xSegMax, ySegMin, ySegMax, xx0, xx1;
-   SplashXPathSeg *seg;
-   int i, j;
-@@ -236,19 +236,27 @@
-     } else if (seg->flags & splashXPathVert) {
-       xx0 = xx1 = seg->x0;
-     } else {
--      if (ySegMin <= y) {
--      // intersection with top edge
--      xx0 = seg->x0 + ((SplashCoord)y - seg->y0) * seg->dxdy;
-+      if (seg->x0 < seg->x1) {
-+      xSegMin = seg->x0;
-+      xSegMax = seg->x1;
-       } else {
--      // x coord of segment endpoint with min y coord
--      xx0 = (seg->flags & splashXPathFlip) ? seg->x1 : seg->x0;
-+      xSegMin = seg->x1;
-+      xSegMax = seg->x0;
-       }
--      if (ySegMax >= y + 1) {
--      // intersection with bottom edge
--      xx1 = seg->x0 + ((SplashCoord)y + 1 - seg->y0) * seg->dxdy;
--      } else {
--      // x coord of segment endpoint with max y coord
--      xx1 = (seg->flags & splashXPathFlip) ? seg->x0 : seg->x1;
-+      // intersection with top edge
-+      xx0 = seg->x0 + ((SplashCoord)y - seg->y0) * seg->dxdy;
-+      // intersection with bottom edge
-+      xx1 = seg->x0 + ((SplashCoord)y + 1 - seg->y0) * seg->dxdy;
-+      // the segment may not actually extend to the top and/or bottom edges
-+      if (xx0 < xSegMin) {
-+      xx0 = xSegMin;
-+      } else if (xx0 > xSegMax) {
-+      xx0 = xSegMax;
-+      }
-+      if (xx1 < xSegMin) {
-+      xx1 = xSegMin;
-+      } else if (xx1 > xSegMax) {
-+      xx1 = xSegMax;
-       }
-     }
-     if (xx0 < xx1) {
-diff -Nur poppler.0_5_0/TODO poppler.HEAD/TODO
---- poppler.0_5_0/TODO 2005-04-05 04:49:18.000000000 +0200
-+++ poppler.HEAD/TODO  2006-01-21 22:56:40.000000000 +0100
-@@ -42,3 +42,13 @@
-         [ This will go away again once we get the wrappers done. ]
-+Jeff Muizelaar's TODO:
-+      Short Term:
-+      - factor out some of the color conversion code from CairoOutputDev and ArthurOutputDev.
-+      - add CairoOutputDev::drawSoftMaskedImage. (done, but too messy)
-+      - fix CairoOutputDev asking cairo to draw nonexistant glyphs.
-+      - fix patterned text fills.
-+      - merge kpdf's ttc support code.
-+      Long Term:
-+      - use cairo glyph cache for type3 fonts.
-+      - try to use cairo pattern support.
-diff -Nur poppler.0_5_0/utils/HtmlOutputDev.cc poppler.HEAD/utils/HtmlOutputDev.cc
---- poppler.0_5_0/utils/HtmlOutputDev.cc       2005-12-30 22:59:58.000000000 +0100
-+++ poppler.HEAD/utils/HtmlOutputDev.cc        2006-01-23 16:40:54.000000000 +0100
-@@ -14,6 +14,7 @@
- #pragma implementation
- #endif
-+#include "config.h"
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdarg.h>
-@@ -24,7 +25,6 @@
- #include "goo/GooList.h"
- #include "UnicodeMap.h"
- #include "goo/gmem.h"
--#include "config.h"
- #include "Error.h"
- #include "GfxState.h"
- #ifdef ENABLE_LIBJPEG
-@@ -33,6 +33,7 @@
- #include "GlobalParams.h"
- #include "HtmlOutputDev.h"
- #include "HtmlFonts.h"
-+#include "UGooString.h"
- int HtmlPage::pgNum=0;
- int HtmlOutputDev::imgNum=1;
-diff -Nur poppler.0_5_0/utils/ImageOutputDev.cc poppler.HEAD/utils/ImageOutputDev.cc
---- poppler.0_5_0/utils/ImageOutputDev.cc      2005-12-30 22:59:58.000000000 +0100
-+++ poppler.HEAD/utils/ImageOutputDev.cc       2006-01-23 16:40:54.000000000 +0100
-@@ -6,6 +6,7 @@
- //
- //========================================================================
-+#include "config.h"
- #include <poppler-config.h>
- #ifdef USE_GCC_PRAGMAS
-@@ -17,7 +18,6 @@
- #include <stddef.h>
- #include <ctype.h>
- #include "goo/gmem.h"
--#include "config.h"
- #include "Error.h"
- #include "GfxState.h"
- #include "Object.h"
-diff -Nur poppler.0_5_0/utils/Makefile.am poppler.HEAD/utils/Makefile.am
---- poppler.0_5_0/utils/Makefile.am    2006-01-06 11:05:59.000000000 +0100
-+++ poppler.HEAD/utils/Makefile.am     2006-02-23 23:26:05.000000000 +0100
-@@ -13,7 +13,10 @@
-       pdfinfo                                 \
-       pdftops                                 \
-       pdftotext                               \
--      pdftohtml
-+      pdftohtml                               \
-+      $(pdftoppm_binary)
-+
-+EXTRA_DIST = pdf2xml.dtd
- dist_man1_MANS =                              \
-       pdffonts.1                              \
-@@ -21,7 +24,9 @@
-       pdfinfo.1                               \
-       pdftops.1                               \
-       pdftotext.1                             \
--      pdftohtml.1
-+      pdftohtml.1                             \
-+      $(pdftoppm_manpage)
-+      
- common = parseargs.c parseargs.h
-@@ -56,3 +61,15 @@
-       HtmlOutputDev.cc                        \
-       HtmlOutputDev.h                         \
-       $(common)
-+
-+if BUILD_SPLASH_OUTPUT
-+
-+pdftoppm_SOURCES =                            \
-+      pdftoppm.cc                             \
-+      $(common)
-+
-+pdftoppm_binary = pdftoppm
-+
-+pdftoppm_manpage =pdftoppm.1
-+
-+endif
-\ No hi ha cap caràcter de salt de línia al final del fitxer
-diff -Nur poppler.0_5_0/utils/pdf2xml.dtd poppler.HEAD/utils/pdf2xml.dtd
---- poppler.0_5_0/utils/pdf2xml.dtd    1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/utils/pdf2xml.dtd     2006-02-04 21:31:00.000000000 +0100
-@@ -0,0 +1,28 @@
-+<?xml version="1.0"?>
-+<!ELEMENT pdf2xml (page+)>
-+<!ELEMENT page (fontspec*, text*)>
-+<!ATTLIST page
-+      number CDATA #REQUIRED
-+      position CDATA #REQUIRED
-+      top CDATA #REQUIRED
-+      left CDATA #REQUIRED
-+      height CDATA #REQUIRED
-+      width CDATA #REQUIRED
-+>
-+<!ELEMENT fontspec EMPTY>
-+<!ATTLIST fontspec
-+      id CDATA #REQUIRED
-+      size CDATA #REQUIRED
-+      family CDATA #REQUIRED
-+      color CDATA #REQUIRED
-+>
-+<!ELEMENT text (#PCDATA | b | i)*>
-+<!ATTLIST text
-+      top CDATA #REQUIRED
-+      left CDATA #REQUIRED
-+      width CDATA #REQUIRED
-+      height CDATA #REQUIRED
-+      font CDATA #REQUIRED
-+>
-+<!ELEMENT b (#PCDATA)>
-+<!ELEMENT i (#PCDATA)>
-diff -Nur poppler.0_5_0/utils/pdffonts.cc poppler.HEAD/utils/pdffonts.cc
---- poppler.0_5_0/utils/pdffonts.cc    2005-12-12 21:15:11.000000000 +0100
-+++ poppler.HEAD/utils/pdffonts.cc     2006-01-23 16:40:54.000000000 +0100
-@@ -6,6 +6,7 @@
- //
- //========================================================================
-+#include "config.h"
- #include <poppler-config.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -22,7 +23,7 @@
- #include "GfxFont.h"
- #include "Annot.h"
- #include "PDFDoc.h"
--#include "config.h"
-+#include "UGooString.h"
- static char *fontTypeNames[] = {
-   "unknown",
-diff -Nur poppler.0_5_0/utils/pdfimages.cc poppler.HEAD/utils/pdfimages.cc
---- poppler.0_5_0/utils/pdfimages.cc   2005-12-12 21:15:11.000000000 +0100
-+++ poppler.HEAD/utils/pdfimages.cc    2006-01-23 16:40:54.000000000 +0100
-@@ -8,6 +8,7 @@
- //
- //========================================================================
-+#include "config.h"
- #include <poppler-config.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -27,7 +28,6 @@
- #include "PDFDoc.h"
- #include "ImageOutputDev.h"
- #include "Error.h"
--#include "config.h"
- static int firstPage = 1;
- static int lastPage = 0;
-diff -Nur poppler.0_5_0/utils/pdfinfo.cc poppler.HEAD/utils/pdfinfo.cc
---- poppler.0_5_0/utils/pdfinfo.cc     2005-12-12 21:15:11.000000000 +0100
-+++ poppler.HEAD/utils/pdfinfo.cc      2006-01-23 16:40:54.000000000 +0100
-@@ -6,6 +6,7 @@
- //
- //========================================================================
-+#include "config.h"
- #include <poppler-config.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -28,7 +29,7 @@
- #include "CharTypes.h"
- #include "UnicodeMap.h"
- #include "Error.h"
--#include "config.h"
-+#include "UGooString.h"
- static void printInfoString(Dict *infoDict, char *key, char *text,
-                           UnicodeMap *uMap);
-diff -Nur poppler.0_5_0/utils/pdftohtml.cc poppler.HEAD/utils/pdftohtml.cc
---- poppler.0_5_0/utils/pdftohtml.cc   2005-12-12 21:15:11.000000000 +0100
-+++ poppler.HEAD/utils/pdftohtml.cc    2006-01-23 19:52:48.000000000 +0100
-@@ -6,12 +6,13 @@
- // Copyright 1999-2000 G. Ovtcharov
- //========================================================================
-+#include "config.h"
-+#include <poppler-config.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <stddef.h>
- #include <string.h>
- #include <dirent.h>
--#include <poppler-config.h>
- #include <time.h>
- #include "parseargs.h"
- #include "goo/GooString.h"
-@@ -28,7 +29,7 @@
- #include "PSOutputDev.h"
- #include "GlobalParams.h"
- #include "Error.h"
--#include "config.h"
-+#include "UGooString.h"
- #include "goo/gfile.h"
- #ifndef GHOSTSCRIPT
-@@ -315,12 +316,10 @@
-     psFileName = new GooString(htmlFileName->getCString());
-     psFileName->append(".ps");
--    globalParams->setPSPaperWidth(w);
--    globalParams->setPSPaperHeight(h);
-     // XXX
-     // globalParams->setPSNoText(gTrue);
-     psOut = new PSOutputDev(psFileName->getCString(), doc->getXRef(),
--                          doc->getCatalog(), firstPage, lastPage, psModePS);
-+                          doc->getCatalog(), firstPage, lastPage, psModePS, w, h);
-     doc->displayPages(psOut, firstPage, lastPage, 72, 72, 0,
-                     gTrue, gFalse, gFalse);
-     delete psOut;
-diff -Nur poppler.0_5_0/utils/pdftoppm.1 poppler.HEAD/utils/pdftoppm.1
---- poppler.0_5_0/utils/pdftoppm.1     1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/utils/pdftoppm.1      2005-12-12 21:15:11.000000000 +0100
-@@ -0,0 +1,113 @@
-+.\" Copyright 2004 Glyph & Cog, LLC
-+.TH pdftoppm 1 "22 January 2004"
-+.SH NAME
-+pdftoppm \- Portable Document Format (PDF) to Portable Pixmap (PPM)
-+converter (version 3.00)
-+.SH SYNOPSIS
-+.B pdftoppm
-+[options]
-+.I PDF-file PPM-root
-+.SH DESCRIPTION
-+.B Pdftoppm
-+converts Portable Document Format (PDF) files to color image files in
-+Portable Pixmap (PPM) format, grayscale image files in Portable
-+Graymap (PGM) format, or monochrome image files in Portable Bitmap
-+(PBM) format.
-+.PP
-+Pdftoppm reads the PDF file,
-+.IR PDF-file ,
-+and writes one PPM file for each page,
-+.IR PPM-root - nnnnnn .ppm,
-+where
-+.I nnnnnn
-+is the page number.
-+.SH CONFIGURATION FILE
-+Pdftoppm reads a configuration file at startup.  It first tries to
-+find the user's private config file, ~/.xpdfrc.  If that doesn't
-+exist, it looks for a system-wide config file, /etc/xpdf/xpdfrc. See the
-+.BR xpdfrc (5)
-+man page for details.
-+.SH OPTIONS
-+Many of the following options can be set with configuration file
-+commands.  These are listed in square brackets with the description of
-+the corresponding command line option.
-+.TP
-+.BI \-f " number"
-+Specifies the first page to convert.
-+.TP
-+.BI \-l " number"
-+Specifies the last page to convert.
-+.TP
-+.BI \-r " number"
-+Specifies the resolution, in DPI.  The default is 150 DPI.
-+.TP
-+.B \-mono
-+Generate a monochrome PBM file (instead of a color PPM file).
-+.TP
-+.B \-gray
-+Generate a grayscale PGM file (instead of a color PPM file).
-+.TP
-+.BI \-t1lib " yes | no"
-+Enable or disable t1lib (a Type 1 font rasterizer).  This defaults to
-+"yes".
-+.RB "[config file: " enableT1lib ]
-+.TP
-+.BI \-freetype " yes | no"
-+Enable or disable FreeType (a TrueType / Type 1 font rasterizer).
-+This defaults to "yes".
-+.RB "[config file: " enableFreeType ]
-+.TP
-+.BI \-aa " yes | no"
-+Enable or disable font anti-aliasing.  This defaults to "yes".
-+.RB "[config file: " antialias ]
-+.TP
-+.BI \-opw " password"
-+Specify the owner password for the PDF file.  Providing this will
-+bypass all security restrictions.
-+.TP
-+.BI \-upw " password"
-+Specify the user password for the PDF file.
-+.TP
-+.B \-q
-+Don't print any messages or errors.
-+.RB "[config file: " errQuiet ]
-+.TP
-+.B \-v
-+Print copyright and version information.
-+.TP
-+.B \-h
-+Print usage information.
-+.RB ( \-help
-+and
-+.B \-\-help
-+are equivalent.)
-+.SH EXIT CODES
-+The Xpdf tools use the following exit codes:
-+.TP
-+0
-+No error.
-+.TP
-+1
-+Error opening a PDF file.
-+.TP
-+2
-+Error opening an output file.
-+.TP
-+3
-+Error related to PDF permissions.
-+.TP
-+99
-+Other error.
-+.SH AUTHOR
-+The pdftoppm software and documentation are copyright 1996-2004 Glyph
-+& Cog, LLC.
-+.SH "SEE ALSO"
-+.BR xpdf (1),
-+.BR pdftops (1),
-+.BR pdftotext (1),
-+.BR pdfinfo (1),
-+.BR pdffonts (1),
-+.BR pdfimages (1),
-+.BR xpdfrc (5)
-+.br
-+.B http://www.foolabs.com/xpdf/
-diff -Nur poppler.0_5_0/utils/pdftoppm.cc poppler.HEAD/utils/pdftoppm.cc
---- poppler.0_5_0/utils/pdftoppm.cc    1970-01-01 01:00:00.000000000 +0100
-+++ poppler.HEAD/utils/pdftoppm.cc     2006-02-04 21:07:08.000000000 +0100
-@@ -0,0 +1,190 @@
-+//========================================================================
-+//
-+// pdftoppm.cc
-+//
-+// Copyright 2003 Glyph & Cog, LLC
-+//
-+//========================================================================
-+
-+#include "config.h"
-+#include <poppler-config.h>
-+#include <stdio.h>
-+#include "parseargs.h"
-+#include "goo/gmem.h"
-+#include "goo/GooString.h"
-+#include "GlobalParams.h"
-+#include "Object.h"
-+#include "PDFDoc.h"
-+#include "splash/SplashBitmap.h"
-+#include "splash/Splash.h"
-+#include "SplashOutputDev.h"
-+
-+static int firstPage = 1;
-+static int lastPage = 0;
-+static int resolution = 150;
-+static GBool mono = gFalse;
-+static GBool gray = gFalse;
-+static char enableT1libStr[16] = "";
-+static char enableFreeTypeStr[16] = "";
-+static char antialiasStr[16] = "";
-+static char ownerPassword[33] = "";
-+static char userPassword[33] = "";
-+static GBool quiet = gFalse;
-+static char cfgFileName[256] = "";
-+static GBool printVersion = gFalse;
-+static GBool printHelp = gFalse;
-+
-+static ArgDesc argDesc[] = {
-+  {"-f",      argInt,      &firstPage,     0,
-+   "first page to print"},
-+  {"-l",      argInt,      &lastPage,      0,
-+   "last page to print"},
-+  {"-r",      argInt,      &resolution,    0,
-+   "resolution, in DPI (default is 150)"},
-+  {"-mono",   argFlag,     &mono,          0,
-+   "generate a monochrome PBM file"},
-+  {"-gray",   argFlag,     &gray,          0,
-+   "generate a grayscale PGM file"},
-+#if HAVE_T1LIB_H
-+  {"-t1lib",      argString,      enableT1libStr, sizeof(enableT1libStr),
-+   "enable t1lib font rasterizer: yes, no"},
-+#endif
-+#if HAVE_FREETYPE_FREETYPE_H | HAVE_FREETYPE_H
-+  {"-freetype",   argString,      enableFreeTypeStr, sizeof(enableFreeTypeStr),
-+   "enable FreeType font rasterizer: yes, no"},
-+#endif
-+  {"-aa",         argString,      antialiasStr,   sizeof(antialiasStr),
-+   "enable font anti-aliasing: yes, no"},
-+  {"-opw",    argString,   ownerPassword,  sizeof(ownerPassword),
-+   "owner password (for encrypted files)"},
-+  {"-upw",    argString,   userPassword,   sizeof(userPassword),
-+   "user password (for encrypted files)"},
-+  {"-q",      argFlag,     &quiet,         0,
-+   "don't print any messages or errors"},
-+  {"-cfg",        argString,      cfgFileName,    sizeof(cfgFileName),
-+   "configuration file to use in place of .xpdfrc"},
-+  {"-v",      argFlag,     &printVersion,  0,
-+   "print copyright and version info"},
-+  {"-h",      argFlag,     &printHelp,     0,
-+   "print usage information"},
-+  {"-help",   argFlag,     &printHelp,     0,
-+   "print usage information"},
-+  {"--help",  argFlag,     &printHelp,     0,
-+   "print usage information"},
-+  {"-?",      argFlag,     &printHelp,     0,
-+   "print usage information"},
-+  {NULL}
-+};
-+
-+int main(int argc, char *argv[]) {
-+  PDFDoc *doc;
-+  GooString *fileName;
-+  char *ppmRoot;
-+  char ppmFile[512];
-+  GooString *ownerPW, *userPW;
-+  SplashColor paperColor;
-+  SplashOutputDev *splashOut;
-+  GBool ok;
-+  int exitCode;
-+  int pg;
-+
-+  exitCode = 99;
-+
-+  // parse args
-+  ok = parseArgs(argDesc, &argc, argv);
-+  if (mono && gray) {
-+    ok = gFalse;
-+  }
-+  if (!ok || argc != 3 || printVersion || printHelp) {
-+    fprintf(stderr, "pdftoppm version %s\n", xpdfVersion);
-+    fprintf(stderr, "%s\n", xpdfCopyright);
-+    if (!printVersion) {
-+      printUsage("pdftoppm", "<PDF-file> <PPM-root>", argDesc);
-+    }
-+    goto err0;
-+  }
-+  fileName = new GooString(argv[1]);
-+  ppmRoot = argv[2];
-+
-+  // read config file
-+  globalParams = new GlobalParams(cfgFileName);
-+  if (enableT1libStr[0]) {
-+    if (!globalParams->setEnableT1lib(enableT1libStr)) {
-+      fprintf(stderr, "Bad '-t1lib' value on command line\n");
-+    }
-+  }
-+  if (enableFreeTypeStr[0]) {
-+    if (!globalParams->setEnableFreeType(enableFreeTypeStr)) {
-+      fprintf(stderr, "Bad '-freetype' value on command line\n");
-+    }
-+  }
-+  if (antialiasStr[0]) {
-+    if (!globalParams->setAntialias(antialiasStr)) {
-+      fprintf(stderr, "Bad '-aa' value on command line\n");
-+    }
-+  }
-+  if (quiet) {
-+    globalParams->setErrQuiet(quiet);
-+  }
-+
-+  // open PDF file
-+  if (ownerPassword[0]) {
-+    ownerPW = new GooString(ownerPassword);
-+  } else {
-+    ownerPW = NULL;
-+  }
-+  if (userPassword[0]) {
-+    userPW = new GooString(userPassword);
-+  } else {
-+    userPW = NULL;
-+  }
-+  doc = new PDFDoc(fileName, ownerPW, userPW);
-+  if (userPW) {
-+    delete userPW;
-+  }
-+  if (ownerPW) {
-+    delete ownerPW;
-+  }
-+  if (!doc->isOk()) {
-+    exitCode = 1;
-+    goto err1;
-+  }
-+
-+  // get page range
-+  if (firstPage < 1)
-+    firstPage = 1;
-+  if (lastPage < 1 || lastPage > doc->getNumPages())
-+    lastPage = doc->getNumPages();
-+
-+  // write PPM files
-+  paperColor[0] = 255;
-+  paperColor[1] = 255;
-+  paperColor[2] = 255;
-+  splashOut = new SplashOutputDev(mono ? splashModeMono1 :
-+                                  gray ? splashModeMono8 :
-+                                           splashModeRGB8, 4,
-+                                gFalse, paperColor);
-+  splashOut->startDoc(doc->getXRef());
-+  for (pg = firstPage; pg <= lastPage; ++pg) {
-+    doc->displayPage(splashOut, pg, resolution, resolution, 0, gTrue, gFalse, gFalse);
-+    sprintf(ppmFile, "%.*s-%06d.%s",
-+          (int)sizeof(ppmFile) - 32, ppmRoot, pg,
-+          mono ? "pbm" : gray ? "pgm" : "ppm");
-+    splashOut->getBitmap()->writePNMFile(ppmFile);
-+  }
-+  delete splashOut;
-+
-+  exitCode = 0;
-+
-+  // clean up
-+ err1:
-+  delete doc;
-+  delete globalParams;
-+ err0:
-+
-+  // check for memory leaks
-+  Object::memCheck(stderr);
-+  gMemReport(stderr);
-+
-+  return exitCode;
-+}
-diff -Nur poppler.0_5_0/utils/pdftops.cc poppler.HEAD/utils/pdftops.cc
---- poppler.0_5_0/utils/pdftops.cc     2005-12-12 21:15:11.000000000 +0100
-+++ poppler.HEAD/utils/pdftops.cc      2006-01-23 19:52:48.000000000 +0100
-@@ -8,6 +8,7 @@
- //
- //========================================================================
-+#include "config.h"
- #include <poppler-config.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -27,7 +28,6 @@
- #include "PDFDoc.h"
- #include "PSOutputDev.h"
- #include "Error.h"
--#include "config.h"
- static int firstPage = 1;
- static int lastPage = 0;
-@@ -307,7 +307,9 @@
-   // write PostScript file
-   psOut = new PSOutputDev(psFileName->getCString(), doc->getXRef(),
--                        doc->getCatalog(), firstPage, lastPage, mode);
-+                        doc->getCatalog(), firstPage, lastPage, mode,
-+                        globalParams->getPSPaperWidth(),
-+                        globalParams->getPSPaperHeight());
-   if (psOut->isOk()) {
-     doc->displayPages(psOut, firstPage, lastPage, 72, 72,
-                     0, globalParams->getPSCrop(), gFalse, gFalse);
-diff -Nur poppler.0_5_0/utils/pdftotext.cc poppler.HEAD/utils/pdftotext.cc
---- poppler.0_5_0/utils/pdftotext.cc   2005-12-12 21:15:11.000000000 +0100
-+++ poppler.HEAD/utils/pdftotext.cc    2006-01-23 16:40:54.000000000 +0100
-@@ -8,6 +8,7 @@
- //
- //========================================================================
-+#include "config.h"
- #include <poppler-config.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -29,7 +30,7 @@
- #include "CharTypes.h"
- #include "UnicodeMap.h"
- #include "Error.h"
--#include "config.h"
-+#include "UGooString.h"
- static void printInfoString(FILE *f, Dict *infoDict, char *key,
-                           char *text1, char *text2, UnicodeMap *uMap);
This page took 0.643152 seconds and 4 git commands to generate.