[poppler] qt4/src

Pino Toscano pino at kemper.freedesktop.org
Thu Nov 11 12:57:43 PST 2010


 qt4/src/poppler-private.cc |   20 +++++++++++++++++++-
 qt4/src/poppler-qt4.h      |   24 ++++++++++++++++++++++++
 2 files changed, 43 insertions(+), 1 deletion(-)

New commits:
commit d772364b8a5858cbd98e256547d319260fa9d084
Author: Pino Toscano <pino at kde.org>
Date:   Thu Nov 11 21:52:25 2010 +0100

    [Qt4] New function setDebugErrorFunction().
    
    This new function + typedef can be useful to direct the ebug/error messages
    to a different place than the default qDebug()'s one.
    
    Base on an idea of Albert, added closure and polish by me.

diff --git a/qt4/src/poppler-private.cc b/qt4/src/poppler-private.cc
index 1cbcc91..3c30ff2 100644
--- a/qt4/src/poppler-private.cc
+++ b/qt4/src/poppler-private.cc
@@ -32,6 +32,24 @@
 
 namespace Poppler {
 
+namespace Debug {
+
+    void qDebugDebugFunction(const QString &message, const QVariant & /*closure*/)
+    {
+        qDebug() << message;
+    }
+
+    PopplerDebugFunc debugFunction = qDebugDebugFunction;
+    QVariant debugClosure;
+
+}
+
+    void setDebugErrorFunction(PopplerDebugFunc function, const QVariant &closure)
+    {
+        Debug::debugFunction = function ? function : Debug::qDebugDebugFunction;
+        Debug::debugClosure = closure;
+    }
+
     void qt4ErrorFunction(int pos, char *msg, va_list args)
     {
         QString emsg;
@@ -47,7 +65,7 @@ namespace Poppler {
         }
         qvsnprintf(buffer, sizeof(buffer) - 1, msg, args);
         emsg += QString::fromAscii(buffer);
-        qDebug() << qPrintable(emsg);
+        (*Debug::debugFunction)(emsg, Debug::debugClosure);
     }
 
     QString unicodeToQString(Unicode* u, int len) {
diff --git a/qt4/src/poppler-qt4.h b/qt4/src/poppler-qt4.h
index c50e4f9..576c53e 100644
--- a/qt4/src/poppler-qt4.h
+++ b/qt4/src/poppler-qt4.h
@@ -59,6 +59,30 @@ namespace Poppler {
     class PSConverter;
 
     /**
+	Debug/error function.
+
+	This function type is used for debugging & error output;
+	the first parameter is the actual message, the second is the unaltered
+	closure argument which was passed to the setDebugErrorFunction call.
+
+	\since 0.16
+    */
+    typedef void (*PopplerDebugFunc)(const QString & /*message*/, const QVariant & /*closure*/);
+
+    /**
+	Set a new debug/error output function.
+
+	If not set, by default error and debug messages will be sent to the
+	Qt \p qDebug() function.
+
+	\param debugFunction the new debug function
+	\param closure user data which will be passes as-is to the debug function
+
+	\since 0.16
+    */
+    POPPLER_QT4_EXPORT void setDebugErrorFunction(PopplerDebugFunc debugFunction, const QVariant &closure);
+
+    /**
         Describes the physical location of text on a document page
        
         This very simple class describes the physical location of text


More information about the poppler mailing list