From 166ba5b87a77b63aeaefe3eb49a733facba8b0c8 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Fri, 20 Apr 2007 17:17:44 +0000 Subject: [PATCH] move the Generator::Private to a GeneratorPrivate, and move the implementations of the provate threads to a cpp svn path=/trunk/KDE/kdegraphics/okular/; revision=656221 --- CMakeLists.txt | 1 + core/generator.cpp | 71 +++++++++------------------ core/generator.h | 5 +- core/generator_p.cpp | 87 +++++++++++++++++++++++++++++++++ core/generator_p.h | 113 +++++++++++++++++++++---------------------- 5 files changed, 169 insertions(+), 108 deletions(-) create mode 100644 core/generator_p.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ed94c9ab4..ecfff6f3a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ set(okularcore_SRCS core/document.cpp core/form.cpp core/generator.cpp + core/generator_p.cpp core/misc.cpp core/observer.cpp core/page.cpp diff --git a/core/generator.cpp b/core/generator.cpp index 1af59164c..bc71e8930 100644 --- a/core/generator.cpp +++ b/core/generator.cpp @@ -10,8 +10,6 @@ #include "generator.h" #include "generator_p.h" -#include - #include #include #include @@ -23,55 +21,32 @@ using namespace Okular; -class Generator::Private +GeneratorPrivate::GeneratorPrivate( Generator *parent ) + : m_document( 0 ), m_about( 0 ), m_componentData( 0 ), + m_generator( parent ), + mPixmapGenerationThread( 0 ), mTextPageGenerationThread( 0 ), + mPixmapReady( true ), mTextPageReady( true ) { - public: - Private( Generator *parent ) - : m_document( 0 ), - m_about( 0 ), m_componentData( 0 ), - m_generator( parent ), - mPixmapGenerationThread( 0 ), - mTextPageGenerationThread( 0 ), - mPixmapReady( true ), - mTextPageReady( true ) - { - } - - ~Private() - { - if ( mPixmapGenerationThread ) - mPixmapGenerationThread->wait(); +} - delete mPixmapGenerationThread; +GeneratorPrivate::~GeneratorPrivate() +{ + if ( mPixmapGenerationThread ) + mPixmapGenerationThread->wait(); - if ( mTextPageGenerationThread ) - mTextPageGenerationThread->wait(); + delete mPixmapGenerationThread; - delete mTextPageGenerationThread; + if ( mTextPageGenerationThread ) + mTextPageGenerationThread->wait(); - // first delete the component data, then the about - delete m_componentData; - delete m_about; - } + delete mTextPageGenerationThread; - void createPixmapGenerationThread(); - void createTextPageGenerationThread(); - - void pixmapGenerationFinished(); - void textpageGenerationFinished(); - - Document * m_document; - QSet< GeneratorFeature > m_features; - KAboutData* m_about; - KComponentData* m_componentData; - Generator *m_generator; - PixmapGenerationThread *mPixmapGenerationThread; - TextPageGenerationThread *mTextPageGenerationThread; - bool mPixmapReady; - bool mTextPageReady; -}; + // first delete the component data, then the about + delete m_componentData; + delete m_about; +} -void Generator::Private::createPixmapGenerationThread() +void GeneratorPrivate::createPixmapGenerationThread() { if ( mPixmapGenerationThread ) return; @@ -82,7 +57,7 @@ void Generator::Private::createPixmapGenerationThread() Qt::QueuedConnection ); } -void Generator::Private::createTextPageGenerationThread() +void GeneratorPrivate::createTextPageGenerationThread() { if ( mTextPageGenerationThread ) return; @@ -93,7 +68,7 @@ void Generator::Private::createTextPageGenerationThread() Qt::QueuedConnection ); } -void Generator::Private::pixmapGenerationFinished() +void GeneratorPrivate::pixmapGenerationFinished() { PixmapRequest *request = mPixmapGenerationThread->request(); mPixmapGenerationThread->endGeneration(); @@ -105,7 +80,7 @@ void Generator::Private::pixmapGenerationFinished() m_generator->signalPixmapRequestDone( request ); } -void Generator::Private::textpageGenerationFinished() +void GeneratorPrivate::textpageGenerationFinished() { Page *page = mTextPageGenerationThread->page(); mTextPageGenerationThread->endGeneration(); @@ -118,7 +93,7 @@ void Generator::Private::textpageGenerationFinished() Generator::Generator() - : d( new Private( this ) ) + : d( new GeneratorPrivate( this ) ) { } diff --git a/core/generator.h b/core/generator.h index 140ccaeae..feff42774 100644 --- a/core/generator.h +++ b/core/generator.h @@ -44,6 +44,7 @@ class DocumentInfo; class DocumentSynopsis; class EmbeddedFile; class ExportFormatPrivate; +class GeneratorPrivate; class Page; class PixmapRequest; class TextPage; @@ -423,8 +424,8 @@ setAboutData( about ); void setAboutData( KAboutData* data ); private: - class Private; - Private* const d; + friend class GeneratorPrivate; + GeneratorPrivate* const d; Q_PRIVATE_SLOT( d, void pixmapGenerationFinished() ) Q_PRIVATE_SLOT( d, void textpageGenerationFinished() ) diff --git a/core/generator_p.cpp b/core/generator_p.cpp new file mode 100644 index 000000000..2ea90d646 --- /dev/null +++ b/core/generator_p.cpp @@ -0,0 +1,87 @@ +/*************************************************************************** + * Copyright (C) 2007 Tobias Koenig * + * * + * 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 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ + +#include "generator_p.h" + +#include "generator.h" + +using namespace Okular; + +PixmapGenerationThread::PixmapGenerationThread( Generator *generator ) + : mGenerator( generator ), mRequest( 0 ) +{ +} + +void PixmapGenerationThread::startGeneration( PixmapRequest *request ) +{ + mRequest = request; + + start( QThread::InheritPriority ); +} + +void PixmapGenerationThread::endGeneration() +{ + mRequest = 0; +} + +PixmapRequest *PixmapGenerationThread::request() const +{ + return mRequest; +} + +QImage PixmapGenerationThread::image() const +{ + return mImage; +} + +void PixmapGenerationThread::run() +{ + mImage = QImage(); + + if ( mRequest ) + mImage = mGenerator->image( mRequest ); +} + + +TextPageGenerationThread::TextPageGenerationThread( Generator *generator ) + : mGenerator( generator ), mPage( 0 ) +{ +} + +void TextPageGenerationThread::startGeneration( Page *page ) +{ + mPage = page; + + start( QThread::InheritPriority ); +} + +void TextPageGenerationThread::endGeneration() +{ + mPage = 0; +} + +Page *TextPageGenerationThread::page() const +{ + return mPage; +} + +TextPage* TextPageGenerationThread::textPage() const +{ + return mTextPage; +} + +void TextPageGenerationThread::run() +{ + mTextPage = 0; + + if ( mPage ) + mTextPage = mGenerator->textPage( mPage ); +} + +#include "generator_p.moc" diff --git a/core/generator_p.h b/core/generator_p.h index 28f8e68c9..e2282feb9 100644 --- a/core/generator_p.h +++ b/core/generator_p.h @@ -10,49 +10,67 @@ #ifndef OKULAR_THREADEDGENERATOR_P_H #define OKULAR_THREADEDGENERATOR_P_H +#include #include #include +class KAboutData; +class KComponentData; + namespace Okular { -class PixmapGenerationThread : public QThread +class Document; +class Generator; +class Page; +class PixmapGenerationThread; +class PixmapRequest; +class TextPage; +class TextPageGenerationThread; + +class GeneratorPrivate { public: - PixmapGenerationThread( Generator *generator ) - : mGenerator( generator ), mRequest( 0 ) - { - } + GeneratorPrivate( Generator *parent ); + + ~GeneratorPrivate(); + + void createPixmapGenerationThread(); + void createTextPageGenerationThread(); + + void pixmapGenerationFinished(); + void textpageGenerationFinished(); + + Document *m_document; + // NOTE: the following should be a QSet< GeneratorFeature >, + // but it is not to avoid #include'ing generator.h + QSet< int > m_features; + KAboutData *m_about; + KComponentData *m_componentData; + Generator *m_generator; + PixmapGenerationThread *mPixmapGenerationThread; + TextPageGenerationThread *mTextPageGenerationThread; + bool mPixmapReady; + bool mTextPageReady; +}; - void startGeneration( PixmapRequest *request ) - { - mRequest = request; - start( QThread::InheritPriority ); - } +class PixmapGenerationThread : public QThread +{ + Q_OBJECT - void endGeneration() - { - mRequest = 0; - } + public: + PixmapGenerationThread( Generator *generator ); - PixmapRequest *request() const - { - return mRequest; - } + void startGeneration( PixmapRequest *request ); - QImage image() const - { - return mImage; - } + void endGeneration(); - protected: - virtual void run() - { - mImage = QImage(); + PixmapRequest *request() const; + + QImage image() const; - if ( mRequest ) - mImage = mGenerator->image( mRequest ); - } + protected: + virtual void run(); private: Generator *mGenerator; @@ -63,42 +81,21 @@ class PixmapGenerationThread : public QThread class TextPageGenerationThread : public QThread { - public: - TextPageGenerationThread( Generator *generator ) - : mGenerator( generator ), mPage( 0 ) - { - } + Q_OBJECT - void startGeneration( Page *page ) - { - mPage = page; + public: + TextPageGenerationThread( Generator *generator ); - start( QThread::InheritPriority ); - } + void startGeneration( Page *page ); - void endGeneration() - { - mPage = 0; - } + void endGeneration(); - Page *page() const - { - return mPage; - } + Page *page() const; - TextPage* textPage() const - { - return mTextPage; - } + TextPage* textPage() const; protected: - virtual void run() - { - mTextPage = 0; - - if ( mPage ) - mTextPage = mGenerator->textPage( mPage ); - } + virtual void run(); private: Generator *mGenerator;