You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.1 KiB
113 lines
3.1 KiB
/*************************************************************************** |
|
* 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
|
|
|