QGIS API Documentation
3.4.15-Madeira (e83d02e274)
|
Job implementation that renders everything sequentially using a custom painter. More...
#include <qgsmaprenderercustompainterjob.h>
Public Member Functions | |
QgsMapRendererCustomPainterJob (const QgsMapSettings &settings, QPainter *painter) | |
~QgsMapRendererCustomPainterJob () override | |
void | cancel () override |
Stop the rendering job - does not return until the job has terminated. More... | |
void | cancelWithoutBlocking () override |
Triggers cancellation of the rendering job without blocking. More... | |
bool | isActive () const override |
Tell whether the rendering job is currently running in background. More... | |
const LayerRenderJobs & | jobs () const |
void | renderSynchronously () |
Render the map synchronously in this thread. More... | |
void | start () override |
Start the rendering job and immediately return. More... | |
QgsLabelingResults * | takeLabelingResults () override |
Gets pointer to internal labeling engine (in order to get access to the results). More... | |
bool | usedCachedLabels () const override |
Returns true if the render job was able to use a cached labeling solution. More... | |
void | waitForFinished () override |
Block until the job has finished. More... | |
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... | |
Public Member Functions inherited from QgsMapRendererJob | |
QgsMapRendererJob (const QgsMapSettings &settings) | |
Errors | errors () const |
List of errors that happened during the rendering job - available when the rendering has been finished. More... | |
const QgsFeatureFilterProvider * | featureFilterProvider () const |
Returns the feature filter provider used by the QgsRenderContext of each LayerRenderJob. More... | |
const QgsMapSettings & | mapSettings () const |
Returns map settings with which this job was started. More... | |
QHash< QgsMapLayer *, int > | perLayerRenderingTime () const |
Returns the render time (in ms) per layer. More... | |
int | renderingTime () const |
Returns the total time it took to finish the job (in milliseconds). More... | |
void | setCache (QgsMapRendererCache *cache) |
Assign a cache to be used for reading and storing rendered images of individual layers. More... | |
void | setFeatureFilterProvider (const QgsFeatureFilterProvider *f) |
Set the feature filter provider used by the QgsRenderContext of each LayerRenderJob. More... | |
Additional Inherited Members | |
Public Types inherited from QgsMapRendererJob | |
typedef QList< QgsMapRendererJob::Error > | Errors |
Signals inherited from QgsMapRendererJob | |
void | finished () |
emitted when asynchronous rendering is finished (or canceled). More... | |
void | renderingLayersFinished () |
Emitted when the layers are rendered. More... | |
Static Public Attributes inherited from QgsMapRendererJob | |
static const QString | LABEL_CACHE_ID |
QgsMapRendererCache ID string for cached label image. More... | |
Protected Member Functions inherited from QgsMapRendererJob | |
void | cleanupJobs (LayerRenderJobs &jobs) |
void | cleanupLabelJob (LabelRenderJob &job) |
Handles clean up tasks for a label job, including deletion of images and storing cached label results. More... | |
void | logRenderingTime (const LayerRenderJobs &jobs, const LabelRenderJob &labelJob) |
LayerRenderJobs | prepareJobs (QPainter *painter, QgsLabelingEngine *labelingEngine2) |
bool | prepareLabelCache () const |
Prepares the cache for storing the result of labeling. More... | |
LabelRenderJob | prepareLabelingJob (QPainter *painter, QgsLabelingEngine *labelingEngine2, bool canUseLabelCache=true) |
Prepares a labeling job. More... | |
Static Protected Member Functions inherited from QgsMapRendererJob | |
static QImage | composeImage (const QgsMapSettings &settings, const LayerRenderJobs &jobs, const LabelRenderJob &labelJob) |
static Q_DECL_DEPRECATED void | drawLabeling (const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter) |
static void | drawLabeling (QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter) |
Protected Attributes inherited from QgsMapRendererJob | |
QgsMapRendererCache * | mCache = nullptr |
Errors | mErrors |
QHash< QgsWeakMapLayerPointer, int > | mPerLayerRenderingTime |
Render time (in ms) per layer, by layer ID. More... | |
QTime | mRenderingStart |
int | mRenderingTime = 0 |
QgsMapSettings | mSettings |
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 35 of file qgsmaprenderercustompainterjob.h.
QgsMapRendererCustomPainterJob::QgsMapRendererCustomPainterJob | ( | const QgsMapSettings & | settings, |
QPainter * | painter | ||
) |
Definition at line 29 of file qgsmaprenderercustompainterjob.cpp.
|
override |
Definition at line 38 of file qgsmaprenderercustompainterjob.cpp.
|
overridevirtual |
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 105 of file qgsmaprenderercustompainterjob.cpp.
|
overridevirtual |
Triggers cancellation of the rendering job without blocking.
The render job will continue to operate until it is able to cancel, at which stage the finished() signal will be emitted. Does nothing if the rendering is not active.
Implements QgsMapRendererJob.
Definition at line 129 of file qgsmaprenderercustompainterjob.cpp.
|
overridevirtual |
Tell whether the rendering job is currently running in background.
Implements QgsMapRendererJob.
Definition at line 163 of file qgsmaprenderercustompainterjob.cpp.
|
inline |
Definition at line 51 of file qgsmaprenderercustompainterjob.h.
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 190 of file qgsmaprenderercustompainterjob.cpp.
|
overridevirtual |
Start the rendering job and immediately return.
Does nothing if the rendering is already in progress.
Implements QgsMapRendererJob.
Definition at line 45 of file qgsmaprenderercustompainterjob.cpp.
|
overridevirtual |
Gets pointer to internal labeling engine (in order to get access to the results).
This should not be used if cached labeling was redrawn - see usedCachedLabels().
Implements QgsMapRendererJob.
Definition at line 173 of file qgsmaprenderercustompainterjob.cpp.
|
overridevirtual |
Returns true if the render job was able to use a cached labeling solution.
If so, any previously stored labeling results (see takeLabelingResults()) should be retained.
Implements QgsMapRendererJob.
Definition at line 168 of file qgsmaprenderercustompainterjob.cpp.
|
overridevirtual |
Block until the job has finished.
Implements QgsMapRendererJob.
Definition at line 146 of file qgsmaprenderercustompainterjob.cpp.
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 182 of file qgsmaprenderercustompainterjob.cpp.