[poppler] 3 commits - qt/CMakeLists.txt qt/Makefile.am qt/poppler-document.cc qt/poppler-link.cc qt/poppler-page.cc qt/poppler-private.cc qt/poppler-private.h

Pino Toscano pino at kemper.freedesktop.org
Sun Dec 21 15:29:54 PST 2008


 qt/CMakeLists.txt      |    1 
 qt/Makefile.am         |    1 
 qt/poppler-document.cc |   10 ---
 qt/poppler-link.cc     |   11 ++-
 qt/poppler-page.cc     |    1 
 qt/poppler-private.cc  |  147 +++++++++++++++++++++++++++++++++++++++++++++++++
 qt/poppler-private.h   |  106 ++---------------------------------
 7 files changed, 163 insertions(+), 114 deletions(-)

New commits:
commit bfb975466f0ff78e9e292b6af7cac66e4c331456
Merge: 3e27892... ea3546f...
Author: Pino Toscano <pino at kde.org>
Date:   Mon Dec 22 00:29:38 2008 +0100

    Merge branch 'master' of ssh://pino@git.freedesktop.org/git/poppler/poppler

commit 3e2789257f5fc4ae0573a0c62ea380d8e83a5bb5
Author: Pino Toscano <pino at kde.org>
Date:   Mon Dec 22 00:24:23 2008 +0100

    [Qt] deserialize also the value of 'right'

diff --git a/qt/poppler-link.cc b/qt/poppler-link.cc
index 1be7437..af6d645 100644
--- a/qt/poppler-link.cc
+++ b/qt/poppler-link.cc
@@ -87,11 +87,12 @@ namespace Poppler {
 		m_pageNum = tokens[1].toInt();
 		m_left = tokens[2].toDouble();
 		m_bottom = tokens[3].toDouble();
-		m_top = tokens[4].toDouble();
-		m_zoom = tokens[5].toDouble();
-		m_changeLeft = static_cast<bool>(tokens[6].toInt());
-		m_changeTop = static_cast<bool>(tokens[7].toInt());
-		m_changeZoom = static_cast<bool>(tokens[8].toInt());
+		m_right = tokens[4].toDouble();
+		m_top = tokens[5].toDouble();
+		m_zoom = tokens[6].toDouble();
+		m_changeLeft = static_cast<bool>(tokens[7].toInt());
+		m_changeTop = static_cast<bool>(tokens[8].toInt());
+		m_changeZoom = static_cast<bool>(tokens[9].toInt());
 	}
 	
 	LinkDestination::Kind LinkDestination::kind() const
commit 7c053ab7623cea1ac650d3e960d2d91a1ef21557
Author: Pino Toscano <pino at kde.org>
Date:   Mon Dec 22 00:19:02 2008 +0100

    [Qt] move in a .cc file the implementation of the QString<->GooString functions and DocumentData::addTocChildren()

diff --git a/qt/CMakeLists.txt b/qt/CMakeLists.txt
index f3d0916..b97089b 100644
--- a/qt/CMakeLists.txt
+++ b/qt/CMakeLists.txt
@@ -11,6 +11,7 @@ set(poppler_qt_SRCS
   poppler-link.cc
   poppler-page.cc
   poppler-page-transition.cc
+  poppler-private.cc
 )
 add_library(poppler-qt SHARED ${poppler_qt_SRCS})
 set_target_properties(poppler-qt PROPERTIES VERSION 2.0.0 SOVERSION 2)
diff --git a/qt/Makefile.am b/qt/Makefile.am
index 1297659..8827d65 100644
--- a/qt/Makefile.am
+++ b/qt/Makefile.am
@@ -21,6 +21,7 @@ libpoppler_qt_la_SOURCES =			\
 	poppler-page.cc				\
 	poppler-page-transition.cc		\
 	poppler-page-transition-private.h	\
+	poppler-private.cc			\
 	poppler-private.h
 
 libpoppler_qt_la_LIBADD = 			\
diff --git a/qt/poppler-document.cc b/qt/poppler-document.cc
index 50600ad..4c47e62 100644
--- a/qt/poppler-document.cc
+++ b/qt/poppler-document.cc
@@ -34,16 +34,6 @@
 
 namespace Poppler {
 
-static GooString *QStringToGooString(const QString &s) {
-    int len = s.length();
-    char *cstring = (char *)gmallocn(s.length(), sizeof(char));
-    for (int i = 0; i < len; ++i)
-      cstring[i] = s.at(i).unicode();
-    GooString *ret = new GooString(cstring, len);
-    gfree(cstring);
-    return ret;
-}
-
 Document *Document::load(const QString &filePath)
 {
   if (!globalParams) {
diff --git a/qt/poppler-page.cc b/qt/poppler-page.cc
index 67a8aa7..536babb 100644
--- a/qt/poppler-page.cc
+++ b/qt/poppler-page.cc
@@ -31,6 +31,7 @@
 #include <Catalog.h>
 #include <ErrorCodes.h>
 #include <TextOutputDev.h>
+#include <Link.h>
 #if defined(HAVE_SPLASH)
 #include <SplashOutputDev.h>
 #include <splash/SplashBitmap.h>
diff --git a/qt/poppler-private.cc b/qt/poppler-private.cc
new file mode 100644
index 0000000..2388a1b
--- /dev/null
+++ b/qt/poppler-private.cc
@@ -0,0 +1,147 @@
+/* poppler-private.h: qt interface to poppler
+ * Copyright (C) 2005, Net Integration Technologies, Inc.
+ * Copyright (C) 2005-2008, Albert Astals Cid <aacid at kde.org>
+ * Copyright (C) 2006, Kristian Høgsberg <krh at bitplanet.net>
+ * Copyright (C) 2006, Wilfried Huss <Wilfried.Huss at gmx.at>
+ * Copyright (C) 2007, Pino Toscano <pino at kde.org>
+ *
+ * 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include "poppler-private.h"
+#include "poppler-link-qt3.h"
+
+#include <qstring.h>
+
+#include <Outline.h>
+#include <Link.h>
+
+namespace Poppler {
+
+/* borrowed from kpdf */
+QString unicodeToQString(Unicode* u, int len)
+{
+    QString ret;
+    ret.setLength(len);
+    QChar* qch = (QChar*) ret.unicode();
+    for (;len;--len)
+      *qch++ = (QChar) *u++;
+    return ret;
+}
+
+QString UnicodeParsedString(GooString *s1)
+{
+    GBool isUnicode;
+    int i;
+    Unicode u;
+    QString result;
+    if ( ( s1->getChar(0) & 0xff ) == 0xfe && ( s1->getChar(1) & 0xff ) == 0xff )
+    {
+        isUnicode = gTrue;
+        i = 2;
+    }
+    else
+    {
+        isUnicode = gFalse;
+        i = 0;
+    }
+    while ( i < s1->getLength() )
+    {
+        if ( isUnicode )
+        {
+            u = ( ( s1->getChar(i) & 0xff ) << 8 ) | ( s1->getChar(i+1) & 0xff );
+            i += 2;
+        }
+        else
+        {
+            u = s1->getChar(i) & 0xff;
+            ++i;
+        }
+        result += unicodeToQString( &u, 1 );
+    }
+    return result;
+}
+
+GooString *QStringToGooString(const QString &s)
+{
+    int len = s.length();
+    char *cstring = (char *)gmallocn(s.length(), sizeof(char));
+    for (int i = 0; i < len; ++i)
+      cstring[i] = s.at(i).unicode();
+    GooString *ret = new GooString(cstring, len);
+    gfree(cstring);
+    return ret;
+}
+
+
+void DocumentData::addTocChildren( QDomDocument * docSyn, QDomNode * parent, GooList * items )
+{
+    int numItems = items->getLength();
+    for ( int i = 0; i < numItems; ++i )
+    {
+        // iterate over every object in 'items'
+        OutlineItem * outlineItem = (OutlineItem *)items->get( i );
+
+        // 1. create element using outlineItem's title as tagName
+        QString name;
+        Unicode * uniChar = outlineItem->getTitle();
+        int titleLength = outlineItem->getTitleLength();
+        name = unicodeToQString(uniChar, titleLength);
+        if ( name.isEmpty() )
+            continue;
+
+        QDomElement item = docSyn->createElement( name );
+        parent->appendChild( item );
+
+        // 2. find the page the link refers to
+        ::LinkAction * a = outlineItem->getAction();
+        if ( a && ( a->getKind() == actionGoTo || a->getKind() == actionGoToR ) )
+        {
+            // page number is contained/referenced in a LinkGoTo
+            LinkGoTo * g = static_cast< LinkGoTo * >( a );
+            LinkDest * destination = g->getDest();
+            if ( !destination && g->getNamedDest() )
+            {
+                // no 'destination' but an internal 'named reference'. we could
+                // get the destination for the page now, but it's VERY time consuming,
+                // so better storing the reference and provide the viewport on demand
+                GooString *s = g->getNamedDest();
+                QChar *charArray = new QChar[s->getLength()];
+                for (int i = 0; i < s->getLength(); ++i) charArray[i] = QChar(s->getCString()[i]);
+                    QString aux(charArray, s->getLength());
+                    item.setAttribute( "DestinationName", aux );
+                    delete[] charArray;
+                }
+                else if ( destination && destination->isOk() )
+                {
+                    LinkDestinationData ldd(destination, NULL, this);
+                    item.setAttribute( "Destination", LinkDestination(ldd).toString() );
+                }
+                if ( a->getKind() == actionGoToR )
+                {
+                    LinkGoToR * g2 = static_cast< LinkGoToR * >( a );
+                    item.setAttribute( "ExternalFileName", g2->getFileName()->getCString() );
+                }
+            }
+
+        // 3. recursively descend over children
+        outlineItem->open();
+        GooList * children = outlineItem->getKids();
+        if ( children )
+            addTocChildren( docSyn, &item, children );
+    }
+}
+
+}
diff --git a/qt/poppler-private.h b/qt/poppler-private.h
index 21a147f..4351d68 100644
--- a/qt/poppler-private.h
+++ b/qt/poppler-private.h
@@ -24,8 +24,6 @@
 
 #include <config.h>
 #include <Object.h>
-#include <Outline.h>
-#include <Link.h>
 #include <PDFDoc.h>
 #include <FontInfo.h>
 #if defined(HAVE_SPLASH)
@@ -36,47 +34,13 @@ class SplashOutputDev;
 
 namespace Poppler {
     
-/* borrowed from kpdf */
-static QString unicodeToQString(Unicode* u, int len) {
-    QString ret;
-    ret.setLength(len);
-    QChar* qch = (QChar*) ret.unicode();
-    for (;len;--len)
-      *qch++ = (QChar) *u++;
-    return ret;
-}
+class DocumentData;
 
-static QString UnicodeParsedString(GooString *s1) {
-    GBool isUnicode;
-    int i;
-    Unicode u;
-    QString result;
-    if ( ( s1->getChar(0) & 0xff ) == 0xfe && ( s1->getChar(1) & 0xff ) == 0xff )
-    {
-        isUnicode = gTrue;
-        i = 2;
-    }
-    else
-    {
-        isUnicode = gFalse;
-        i = 0;
-    }
-    while ( i < s1->getLength() )
-    {
-        if ( isUnicode )
-        {
-            u = ( ( s1->getChar(i) & 0xff ) << 8 ) | ( s1->getChar(i+1) & 0xff );
-            i += 2;
-        }
-        else
-        {
-            u = s1->getChar(i) & 0xff;
-            ++i;
-        }
-        result += unicodeToQString( &u, 1 );
-    }
-    return result;
-}
+QString unicodeToQString(Unicode* u, int len);
+
+QString UnicodeParsedString(GooString *s1);
+
+GooString *QStringToGooString(const QString &s);
 
 class LinkDestinationData {
   public:
@@ -117,63 +81,7 @@ class DocumentData {
         return m_outputDev;
     }
 
-    void addTocChildren( QDomDocument * docSyn, QDomNode * parent, GooList * items )
-    {
-        int numItems = items->getLength();
-        for ( int i = 0; i < numItems; ++i )
-        {
-            // iterate over every object in 'items'
-            OutlineItem * outlineItem = (OutlineItem *)items->get( i );
-
-            // 1. create element using outlineItem's title as tagName
-            QString name;
-            Unicode * uniChar = outlineItem->getTitle();
-            int titleLength = outlineItem->getTitleLength();
-            name = unicodeToQString(uniChar, titleLength);
-            if ( name.isEmpty() )
-                continue;
-
-            QDomElement item = docSyn->createElement( name );
-            parent->appendChild( item );
-
-            // 2. find the page the link refers to
-            ::LinkAction * a = outlineItem->getAction();
-            if ( a && ( a->getKind() == actionGoTo || a->getKind() == actionGoToR ) )
-            {
-                // page number is contained/referenced in a LinkGoTo
-                LinkGoTo * g = static_cast< LinkGoTo * >( a );
-                LinkDest * destination = g->getDest();
-                if ( !destination && g->getNamedDest() )
-                {
-                    // no 'destination' but an internal 'named reference'. we could
-                    // get the destination for the page now, but it's VERY time consuming,
-                    // so better storing the reference and provide the viewport on demand
-                    GooString *s = g->getNamedDest();
-                    QChar *charArray = new QChar[s->getLength()];
-                    for (int i = 0; i < s->getLength(); ++i) charArray[i] = QChar(s->getCString()[i]);
-                    QString aux(charArray, s->getLength());
-                    item.setAttribute( "DestinationName", aux );
-                    delete[] charArray;
-                }
-                else if ( destination && destination->isOk() )
-                {
-                    LinkDestinationData ldd(destination, NULL, this);
-                    item.setAttribute( "Destination", LinkDestination(ldd).toString() );
-                }
-                if ( a->getKind() == actionGoToR )
-                {
-                    LinkGoToR * g2 = static_cast< LinkGoToR * >( a );
-                    item.setAttribute( "ExternalFileName", g2->getFileName()->getCString() );
-                }
-            }
-
-            // 3. recursively descend over children
-            outlineItem->open();
-            GooList * children = outlineItem->getKids();
-            if ( children )
-                addTocChildren( docSyn, &item, children );
-        }
-    }
+    void addTocChildren( QDomDocument * docSyn, QDomNode * parent, GooList * items );
 
   class PDFDoc doc;
   bool locked;


More information about the poppler mailing list