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
remotes/origin/KDE/4.0
Pino Toscano 19 years ago
parent 214883d582
commit 166ba5b87a
  1. 1
      CMakeLists.txt
  2. 71
      core/generator.cpp
  3. 5
      core/generator.h
  4. 87
      core/generator_p.cpp
  5. 113
      core/generator_p.h

@ -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

@ -10,8 +10,6 @@
#include "generator.h"
#include "generator_p.h"
#include <qset.h>
#include <kaboutdata.h>
#include <kcomponentdata.h>
#include <kdebug.h>
@ -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 ) )
{
}

@ -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() )

@ -0,0 +1,87 @@
/***************************************************************************
* Copyright (C) 2007 Tobias Koenig <tokoe@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 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"

@ -10,49 +10,67 @@
#ifndef OKULAR_THREADEDGENERATOR_P_H
#define OKULAR_THREADEDGENERATOR_P_H
#include <QtCore/QSet>
#include <QtCore/QThread>
#include <QtGui/QImage>
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;

Loading…
Cancel
Save