QGIS API Documentation  2.5.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Member Functions | Protected Slots | Protected Member Functions | Static Protected Member Functions | List of all members
QgsMapRendererCustomPainterJob Class Reference

Job implementation that renders everything sequentially using a custom painter. More...

#include <qgsmaprenderercustompainterjob.h>

Inheritance diagram for QgsMapRendererCustomPainterJob:
Inheritance graph
[legend]

Public Member Functions

 QgsMapRendererCustomPainterJob (const QgsMapSettings &settings, QPainter *painter)
 
 ~QgsMapRendererCustomPainterJob ()
 
virtual void start ()
 Start the rendering job and immediately return. More...
 
virtual void cancel ()
 Stop the rendering job - does not return until the job has terminated. More...
 
virtual void waitForFinished ()
 Block until the job has finished. More...
 
virtual bool isActive () const
 Tell whether the rendering job is currently running in background. More...
 
virtual QgsLabelingResultstakeLabelingResults ()
 Get pointer to internal labeling engine (in order to get access to the results) More...
 
const LayerRenderJobsjobs () const
 
void waitForFinishedWithEventLoop (QEventLoop::ProcessEventsFlags flags=QEventLoop::AllEvents)
 Wait for the job to be finished - and keep the thread's event loop running while waiting. More...
 
void renderSynchronously ()
 Render the map synchronously in this thread. More...
 
- Public Member Functions inherited from QgsMapRendererJob
 QgsMapRendererJob (const QgsMapSettings &settings)
 
virtual ~QgsMapRendererJob ()
 
Errors errors () const
 List of errors that happened during the rendering job - available when the rendering has been finished. More...
 
void setCache (QgsMapRendererCache *cache)
 Assign a cache to be used for reading and storing rendered images of individual layers. More...
 
void setRequestedGeometryCacheForLayers (const QStringList &layerIds)
 Set which vector layers should be cached while rendering. More...
 
int renderingTime () const
 Find out how log it took to finish the job (in miliseconds) More...
 

Protected Slots

void futureFinished ()
 

Protected Member Functions

void doRender ()
 
- Protected Member Functions inherited from QgsMapRendererJob
LayerRenderJobs prepareJobs (QPainter *painter, QgsPalLabeling *labelingEngine)
 
void cleanupJobs (LayerRenderJobs &jobs)
 
bool needTemporaryImage (QgsMapLayer *ml)
 
void updateLayerGeometryCaches ()
 called when rendering has finished to update all layers' geometry caches More...
 

Static Protected Member Functions

static void staticRender (QgsMapRendererCustomPainterJob *self)
 
- Static Protected Member Functions inherited from QgsMapRendererJob
static bool reprojectToLayerExtent (const QgsCoordinateTransform *ct, bool layerCrsGeographic, QgsRectangle &extent, QgsRectangle &r2)
 Convenience function to project an extent into the layer source CRS, but also split it into two extents if it crosses the +/- 180 degree line. More...
 
static QImage composeImage (const QgsMapSettings &settings, const LayerRenderJobs &jobs)
 
static void drawLabeling (const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsPalLabeling *labelingEngine, QPainter *painter)
 
static void drawOldLabeling (const QgsMapSettings &settings, QgsRenderContext &renderContext)
 
static void drawNewLabeling (const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsPalLabeling *labelingEngine)
 

Additional Inherited Members

- Public Types inherited from QgsMapRendererJob
typedef QList< ErrorErrors
 
- Signals inherited from QgsMapRendererJob
void finished ()
 emitted when asynchronous rendering is finished (or canceled). More...
 
- Protected Attributes inherited from QgsMapRendererJob
QgsMapSettings mSettings
 
Errors mErrors
 
QgsMapRendererCachemCache
 
QStringList mRequestedGeomCacheForLayers
 list of layer IDs for which the geometry cache should be updated More...
 
QMap< QString, QgsGeometryCachemGeometryCaches
 map of geometry caches More...
 
QTime mRenderingStart
 
int mRenderingTime
 

Detailed Description

Job implementation that renders everything sequentially using a custom painter.

Also supports synchronous rendering in main thread for cases when rendering in background is not an option because of some technical limitations (e.g. printing to printer on some platforms).

Note
added in 2.4

Constructor & Destructor Documentation

QgsMapRendererCustomPainterJob::QgsMapRendererCustomPainterJob ( const QgsMapSettings settings,
QPainter *  painter 
)
QgsMapRendererCustomPainterJob::~QgsMapRendererCustomPainterJob ( )

Member Function Documentation

void QgsMapRendererCustomPainterJob::cancel ( )
virtual

Stop the rendering job - does not return until the job has terminated.

Does nothing if the rendering is not active.

Implements QgsMapRendererJob.

void QgsMapRendererCustomPainterJob::doRender ( )
protected
void QgsMapRendererCustomPainterJob::futureFinished ( )
protectedslot
bool QgsMapRendererCustomPainterJob::isActive ( ) const
virtual

Tell whether the rendering job is currently running in background.

Implements QgsMapRendererJob.

const LayerRenderJobs& QgsMapRendererCustomPainterJob::jobs ( ) const
inline
Note
not available in python bindings
void QgsMapRendererCustomPainterJob::renderSynchronously ( )

Render the map synchronously in this thread.

The function does not return until the map is completely rendered.

This is an alternative to ordinary API (using start() + waiting for finished() signal). Users are discouraged to use this method unless they have a strong reason for doing it. The synchronous rendering blocks the main thread, making the application unresponsive. Also, it is not possible to cancel rendering while it is in progress.

void QgsMapRendererCustomPainterJob::start ( )
virtual

Start the rendering job and immediately return.

Does nothing if the rendering is already in progress.

Implements QgsMapRendererJob.

void QgsMapRendererCustomPainterJob::staticRender ( QgsMapRendererCustomPainterJob self)
staticprotected
QgsLabelingResults * QgsMapRendererCustomPainterJob::takeLabelingResults ( )
virtual

Get pointer to internal labeling engine (in order to get access to the results)

Implements QgsMapRendererJob.

void QgsMapRendererCustomPainterJob::waitForFinished ( )
virtual

Block until the job has finished.

Implements QgsMapRendererJob.

void QgsMapRendererCustomPainterJob::waitForFinishedWithEventLoop ( QEventLoop::ProcessEventsFlags  flags = QEventLoop::AllEvents)

Wait for the job to be finished - and keep the thread's event loop running while waiting.

With a call to waitForFinished(), the waiting is done with a synchronization primitive and does not involve processing of messages. That may cause issues to code which requires some events to be handled in the main thread. Some plugins hooking into the rendering pipeline may require this in order to work properly - for example, OpenLayers plugin which uses a QWebPage in the main thread.

Ideally the "wait for finished" method should not be used at all. The code triggering rendering should not need to actively wait for rendering to finish.


The documentation for this class was generated from the following files: