QGIS API Documentation
2.4.0-Chugiak
|
Job implementation that renders everything sequentially using a custom painter. More...
#include <qgsmaprenderercustompainterjob.h>
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 QgsLabelingResults * | takeLabelingResults () |
Get pointer to internal labeling engine (in order to get access to the results) More... | |
const LayerRenderJobs & | jobs () 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) |
Private Attributes | |
QPainter * | mPainter |
QFuture< void > | mFuture |
QFutureWatcher< void > | mFutureWatcher |
QgsRenderContext | mLabelingRenderContext |
QgsPalLabeling * | mLabelingEngine |
bool | mActive |
LayerRenderJobs | mLayerJobs |
bool | mRenderSynchronously |
Additional Inherited Members | |
Public Types inherited from QgsMapRendererJob | |
typedef QList< Error > | Errors |
Signals inherited from QgsMapRendererJob | |
void | finished () |
emitted when asynchronous rendering is finished (or canceled). More... | |
Protected Attributes inherited from QgsMapRendererJob | |
QgsMapSettings | mSettings |
Errors | mErrors |
QgsMapRendererCache * | mCache |
QStringList | mRequestedGeomCacheForLayers |
list of layer IDs for which the geometry cache should be updated More... | |
QMap< QString, QgsGeometryCache > | mGeometryCaches |
map of geometry caches More... | |
QTime | mRenderingStart |
int | mRenderingTime |
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).
Definition at line 31 of file qgsmaprenderercustompainterjob.h.
QgsMapRendererCustomPainterJob::QgsMapRendererCustomPainterJob | ( | const QgsMapSettings & | settings, |
QPainter * | painter | ||
) |
Definition at line 24 of file qgsmaprenderercustompainterjob.cpp.
References QgsDebugMsg.
QgsMapRendererCustomPainterJob::~QgsMapRendererCustomPainterJob | ( | ) |
Definition at line 34 of file qgsmaprenderercustompainterjob.cpp.
References mFutureWatcher, mLabelingEngine, and QgsDebugMsg.
|
virtual |
Stop the rendering job - does not return until the job has terminated.
Does nothing if the rendering is not active.
Implements QgsMapRendererJob.
Definition at line 100 of file qgsmaprenderercustompainterjob.cpp.
References QgsMapRendererJob::finished(), futureFinished(), isActive(), mFutureWatcher, mLabelingRenderContext, mLayerJobs, QgsDebugMsg, and QgsRenderContext::setRenderingStopped().
Referenced by QgsMapRendererSequentialJob::cancel().
|
protected |
Definition at line 208 of file qgsmaprenderercustompainterjob.cpp.
References LayerRenderJob::blendMode, LayerRenderJob::cached, LayerRenderJob::context, QgsMapSettings::DrawLabeling, QgsMapRendererJob::drawLabeling(), LayerRenderJob::img, mLabelingEngine, mLabelingRenderContext, mLayerJobs, mPainter, QgsMapRendererJob::mSettings, QgsDebugMsg, QgsMapLayerRenderer::render(), LayerRenderJob::renderer, QgsRenderContext::renderingStopped(), QgsMapSettings::testFlag(), and QgsRenderContext::useAdvancedEffects().
Referenced by start().
|
protectedslot |
Definition at line 175 of file qgsmaprenderercustompainterjob.cpp.
References QgsMapRendererJob::cleanupJobs(), QgsMapRendererJob::finished(), mActive, mLayerJobs, QgsMapRendererJob::mRenderingStart, QgsMapRendererJob::mRenderingTime, and QgsDebugMsg.
Referenced by cancel(), renderSynchronously(), start(), and waitForFinished().
|
virtual |
Tell whether the rendering job is currently running in background.
Implements QgsMapRendererJob.
Definition at line 146 of file qgsmaprenderercustompainterjob.cpp.
References mActive.
Referenced by cancel(), start(), and waitForFinished().
|
inline |
Definition at line 45 of file qgsmaprenderercustompainterjob.h.
Referenced by QgsMapRendererSequentialJob::renderedImage().
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.
Definition at line 166 of file qgsmaprenderercustompainterjob.cpp.
References futureFinished(), mRenderSynchronously, and start().
Referenced by QgsComposerMap::draw().
|
virtual |
Start the rendering job and immediately return.
Does nothing if the rendering is already in progress.
Implements QgsMapRendererJob.
Definition at line 44 of file qgsmaprenderercustompainterjob.cpp.
References QgsMapSettings::Antialiasing, QgsMapSettings::backgroundColor(), doRender(), QgsMapSettings::DrawLabeling, QgsMapRendererJob::finished(), futureFinished(), isActive(), QgsPalLabeling::loadEngineSettings(), mActive, QgsMapRendererJob::mErrors, mFuture, mFutureWatcher, mLabelingEngine, mLayerJobs, mPainter, QgsMapRendererJob::mRenderingStart, mRenderSynchronously, QgsMapRendererJob::mSettings, QgsMapSettings::outputDpi(), QgsMapSettings::outputSize(), QgsMapRendererJob::prepareJobs(), QgsDebugMsg, staticRender(), and QgsMapSettings::testFlag().
Referenced by renderSynchronously(), QgsMapCanvas::saveAsImage(), and QgsMapRendererSequentialJob::start().
|
staticprotected |
Definition at line 188 of file qgsmaprenderercustompainterjob.cpp.
References QgsDebugMsg, and QgsException::what().
Referenced by start().
|
virtual |
Get pointer to internal labeling engine (in order to get access to the results)
Implements QgsMapRendererJob.
Definition at line 152 of file qgsmaprenderercustompainterjob.cpp.
References mLabelingEngine, and QgsPalLabeling::takeResults().
Referenced by QgsMapRendererSequentialJob::internalFinished().
|
virtual |
Block until the job has finished.
Implements QgsMapRendererJob.
Definition at line 129 of file qgsmaprenderercustompainterjob.cpp.
References QgsMapRendererJob::finished(), futureFinished(), isActive(), mFutureWatcher, and QgsDebugMsg.
Referenced by QgsMapCanvas::saveAsImage(), and QgsMapRendererSequentialJob::waitForFinished().
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.
Definition at line 158 of file qgsmaprenderercustompainterjob.cpp.
References QgsMapRendererJob::finished(), and mFutureWatcher.
|
private |
Definition at line 88 of file qgsmaprenderercustompainterjob.h.
Referenced by futureFinished(), isActive(), and start().
|
private |
Definition at line 83 of file qgsmaprenderercustompainterjob.h.
Referenced by start().
|
private |
Definition at line 84 of file qgsmaprenderercustompainterjob.h.
Referenced by cancel(), start(), waitForFinished(), waitForFinishedWithEventLoop(), and ~QgsMapRendererCustomPainterJob().
|
private |
Definition at line 86 of file qgsmaprenderercustompainterjob.h.
Referenced by doRender(), start(), takeLabelingResults(), and ~QgsMapRendererCustomPainterJob().
|
private |
Definition at line 85 of file qgsmaprenderercustompainterjob.h.
Referenced by cancel(), and doRender().
|
private |
Definition at line 89 of file qgsmaprenderercustompainterjob.h.
Referenced by cancel(), doRender(), futureFinished(), and start().
|
private |
Definition at line 82 of file qgsmaprenderercustompainterjob.h.
Referenced by doRender(), and start().
|
private |
Definition at line 90 of file qgsmaprenderercustompainterjob.h.
Referenced by renderSynchronously(), and start().