Last step of the ThreadedGenerator -> Generator merge: remove the old files and rename the used file.
svn path=/trunk/playground/graphics/okular/; revision=628856remotes/origin/KDE/4.0
parent
6068c76df6
commit
92ea1bba69
5 changed files with 1 additions and 260 deletions
@ -1,144 +0,0 @@ |
||||
/***************************************************************************
|
||||
* 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 "core/page.h" |
||||
#include "core/textpage.h" |
||||
|
||||
#include "threadedgenerator.h" |
||||
#include "threadedgenerator_p.h" |
||||
|
||||
using namespace Okular; |
||||
|
||||
class ThreadedGenerator::Private |
||||
{ |
||||
public: |
||||
Private( ThreadedGenerator *parent ) |
||||
: mParent( parent ), |
||||
mPixmapReady( true ), |
||||
mTextPageReady( true ) |
||||
{ |
||||
mPixmapGenerationThread = new PixmapGenerationThread( mParent ); |
||||
mParent->connect( mPixmapGenerationThread, SIGNAL( finished() ), |
||||
mParent, SLOT( pixmapGenerationFinished() ), |
||||
Qt::QueuedConnection ); |
||||
|
||||
mTextPageGenerationThread = new TextPageGenerationThread( mParent ); |
||||
mParent->connect( mTextPageGenerationThread, SIGNAL( finished() ), |
||||
mParent, SLOT( textpageGenerationFinished() ), |
||||
Qt::QueuedConnection ); |
||||
} |
||||
|
||||
~Private() |
||||
{ |
||||
if ( mPixmapGenerationThread ) |
||||
mPixmapGenerationThread->wait(); |
||||
|
||||
delete mPixmapGenerationThread; |
||||
|
||||
if ( mTextPageGenerationThread ) |
||||
mTextPageGenerationThread->wait(); |
||||
|
||||
delete mTextPageGenerationThread; |
||||
} |
||||
|
||||
void pixmapGenerationFinished(); |
||||
void textpageGenerationFinished(); |
||||
|
||||
ThreadedGenerator *mParent; |
||||
PixmapGenerationThread *mPixmapGenerationThread; |
||||
TextPageGenerationThread *mTextPageGenerationThread; |
||||
bool mPixmapReady; |
||||
bool mTextPageReady; |
||||
}; |
||||
|
||||
void ThreadedGenerator::Private::pixmapGenerationFinished() |
||||
{ |
||||
PixmapRequest *request = mPixmapGenerationThread->request(); |
||||
mPixmapGenerationThread->endGeneration(); |
||||
|
||||
request->page()->setPixmap( request->id(), new QPixmap( QPixmap::fromImage( mPixmapGenerationThread->image() ) ) ); |
||||
|
||||
mPixmapReady = true; |
||||
|
||||
mParent->signalPixmapRequestDone( request ); |
||||
} |
||||
|
||||
void ThreadedGenerator::Private::textpageGenerationFinished() |
||||
{ |
||||
Page *page = mTextPageGenerationThread->page(); |
||||
mTextPageGenerationThread->endGeneration(); |
||||
|
||||
mTextPageReady = true; |
||||
|
||||
if ( mTextPageGenerationThread->textPage() ) |
||||
page->setTextPage( mTextPageGenerationThread->textPage() ); |
||||
} |
||||
|
||||
ThreadedGenerator::ThreadedGenerator() |
||||
: d( new Private( this ) ) |
||||
{ |
||||
} |
||||
|
||||
ThreadedGenerator::~ThreadedGenerator() |
||||
{ |
||||
delete d; |
||||
} |
||||
|
||||
bool ThreadedGenerator::canRequestPixmap() const |
||||
{ |
||||
return d->mPixmapReady; |
||||
} |
||||
|
||||
void ThreadedGenerator::requestPixmap( PixmapRequest * request ) |
||||
{ |
||||
d->mPixmapReady = false; |
||||
|
||||
d->mPixmapGenerationThread->startGeneration( request ); |
||||
} |
||||
|
||||
bool ThreadedGenerator::canRequestTextPage() const |
||||
{ |
||||
return d->mTextPageReady; |
||||
} |
||||
|
||||
void ThreadedGenerator::requestTextPage( Page * page ) |
||||
{ |
||||
d->mTextPageReady = false; |
||||
|
||||
d->mTextPageGenerationThread->startGeneration( page ); |
||||
} |
||||
|
||||
TextPage* ThreadedGenerator::textPage( Page* ) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
bool ThreadedGenerator::canGeneratePixmap() const |
||||
{ |
||||
// dummy implementation
|
||||
return false; |
||||
} |
||||
|
||||
void ThreadedGenerator::generatePixmap( PixmapRequest* ) |
||||
{ |
||||
// dummy implementation
|
||||
} |
||||
|
||||
bool ThreadedGenerator::canGenerateTextPage() const |
||||
{ |
||||
// dummy implementation
|
||||
return false; |
||||
} |
||||
|
||||
void ThreadedGenerator::generateSyncTextPage( Page* ) |
||||
{ |
||||
// dummy implementation
|
||||
} |
||||
|
||||
#include "threadedgenerator.moc" |
||||
@ -1,113 +0,0 @@ |
||||
/***************************************************************************
|
||||
* 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. * |
||||
***************************************************************************/ |
||||
|
||||
#ifndef OKULAR_THREADEDGENERATOR_H |
||||
#define OKULAR_THREADEDGENERATOR_H |
||||
|
||||
#include <okular/core/okular_export.h> |
||||
|
||||
#include <okular/core/generator.h> |
||||
|
||||
namespace Okular { |
||||
|
||||
/**
|
||||
* ThreadedGenerator is meant to be a base class for Okular generators |
||||
* which supports multithreaded generation of page pixmaps, text pages |
||||
* and other data structures. |
||||
*/ |
||||
class OKULAR_EXPORT ThreadedGenerator : public Generator |
||||
{ |
||||
friend class PixmapGenerationThread; |
||||
friend class TextPageGenerationThread; |
||||
|
||||
Q_OBJECT |
||||
|
||||
public: |
||||
/**
|
||||
* Creates a new threaded generator. |
||||
*/ |
||||
ThreadedGenerator(); |
||||
|
||||
/**
|
||||
* Destroys the threaded generator. |
||||
*/ |
||||
~ThreadedGenerator(); |
||||
|
||||
/**
|
||||
* Returns whether the generator is ready to |
||||
* handle a new pixmap generation request. |
||||
*/ |
||||
bool canRequestPixmap() const; |
||||
|
||||
/**
|
||||
* This method can be called to trigger the generation of |
||||
* a new pixmap as described by @p request. |
||||
*/ |
||||
void requestPixmap( PixmapRequest * request ); |
||||
|
||||
/**
|
||||
* Returns whether the generator is ready to |
||||
* handle a new text page generation request. |
||||
*/ |
||||
bool canRequestTextPage() const; |
||||
|
||||
/**
|
||||
* This method can be called to trigger the generation of |
||||
* a text page for the given @p page. |
||||
* @see TextPage |
||||
*/ |
||||
void requestTextPage( Page * page ); |
||||
|
||||
protected: |
||||
/**
|
||||
* Returns the image of the page as specified in |
||||
* the passed pixmap @p request. |
||||
* |
||||
* Note: This method is executed in its own separated thread! |
||||
*/ |
||||
virtual QImage image( PixmapRequest *page ) = 0; |
||||
|
||||
/**
|
||||
* Returns the text page for the given @p page. |
||||
* |
||||
* Note: This method is executed in its own separated thread! |
||||
*/ |
||||
virtual TextPage* textPage( Page *page ); |
||||
|
||||
/**
|
||||
* @internal |
||||
*/ |
||||
bool canGeneratePixmap() const; |
||||
|
||||
/**
|
||||
* @internal |
||||
*/ |
||||
void generatePixmap( PixmapRequest* ); |
||||
|
||||
/**
|
||||
* @internal |
||||
*/ |
||||
bool canGenerateTextPage() const; |
||||
|
||||
/**
|
||||
* @internal |
||||
*/ |
||||
void generateSyncTextPage( Page* ); |
||||
|
||||
private: |
||||
class Private; |
||||
Private* const d; |
||||
|
||||
Q_PRIVATE_SLOT( d, void pixmapGenerationFinished() ) |
||||
Q_PRIVATE_SLOT( d, void textpageGenerationFinished() ) |
||||
}; |
||||
|
||||
} |
||||
|
||||
#endif |
||||
Loading…
Reference in new issue