QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
Public Types | Public Member Functions | List of all members
QgsMapRendererStagedRenderJob Class Reference

Render job implementation that renders maps in stages, allowing different stages (e.g. More...

#include <qgsmaprendererstagedrenderjob.h>

Inheritance diagram for QgsMapRendererStagedRenderJob:
Inheritance graph
[legend]

Public Types

enum  Flag { RenderLabelsByMapLayer = 0x01 }
 Flags which control the staged render job behavior. More...
 
enum  RenderStage { Symbology , Labels , Finished }
 Represents the stages of a rendering job. More...
 
- Public Types inherited from QgsMapRendererJob
typedef QList< QgsMapRendererJob::ErrorErrors
 

Public Member Functions

 QgsMapRendererStagedRenderJob (const QgsMapSettings &settings, Flags flags=Flags())
 Constructor for QgsMapRendererStagedRenderJob, using the given map settings. More...
 
 ~QgsMapRendererStagedRenderJob () 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...
 
QPainter::CompositionMode currentLayerCompositionMode () const
 Returns the composition mode for the current layer about to be rendered in the next render operation. More...
 
QString currentLayerId () const
 Returns the ID of the current layer about to be rendered in the next render operation. More...
 
double currentLayerOpacity () const
 Returns the opacity for the current layer about to be rendered in the next render operation. More...
 
RenderStage currentStage () const
 Returns the current stage which will be rendered in the next render operation. More...
 
bool isActive () const override
 Tell whether the rendering job is currently running in background. More...
 
bool isFinished () const
 Returns true if the job is finished, and nothing remains to render. More...
 
bool nextPart ()
 Iterates to the next part to render. More...
 
bool renderCurrentPart (QPainter *painter)
 Renders the current part of the map to the specified painter. More...
 
QgsLabelingResultstakeLabelingResults () 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...
 
- Public Member Functions inherited from QgsMapRendererAbstractCustomPainterJob
 QgsMapRendererAbstractCustomPainterJob (const QgsMapSettings &settings)
 Constructor for QgsMapRendererAbstractCustomPainterJob, using the given map settings. More...
 
- Public Member Functions inherited from QgsMapRendererJob
 QgsMapRendererJob (const QgsMapSettings &settings)
 
 ~QgsMapRendererJob () override
 
virtual void cancel ()=0
 Stop the rendering job - does not return until the job has terminated. More...
 
virtual void cancelWithoutBlocking ()=0
 Triggers cancellation of the rendering job without blocking. More...
 
Errors errors () const
 List of errors that happened during the rendering job - available when the rendering has been finished. More...
 
const QgsFeatureFilterProviderfeatureFilterProvider () const
 Returns the feature filter provider used by the QgsRenderContext of each LayerRenderJob. More...
 
virtual bool isActive () const =0
 Tell whether the rendering job is currently running in background. More...
 
QgsLabelingEngineFeedbacklabelingEngineFeedback ()
 Returns the associated labeling engine feedback object. More...
 
QgsLabelSinklabelSink () const
 Returns the label sink associated to this rendering job. More...
 
QStringList layersRedrawnFromCache () const
 Returns a list of the layer IDs for all layers which were redrawn from cached images. More...
 
const QgsMapSettingsmapSettings () 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...
 
void setLabelSink (QgsLabelSink *sink)
 Assigns the label sink which will take over responsibility for handling labels during the rendering job. More...
 
void setLayerRenderingTimeHints (const QHash< QString, int > &hints)
 Sets approximate render times (in ms) for map layers. More...
 
void start ()
 Start the rendering job and immediately return. More...
 
virtual QgsLabelingResultstakeLabelingResults ()=0
 Gets pointer to internal labeling engine (in order to get access to the results). More...
 
QgsRenderedItemResultstakeRenderedItemResults ()
 Takes the rendered item results from the map render job and returns them. More...
 
virtual bool usedCachedLabels () const =0
 Returns true if the render job was able to use a cached labeling solution. More...
 
virtual void waitForFinished ()=0
 Block until the job has finished. More...
 

Additional Inherited Members

- Signals inherited from QgsMapRendererJob
void finished ()
 emitted when asynchronous rendering is finished (or canceled). More...
 
void layerRendered (const QString &layerId)
 Emitted when a layer has completed rendering. More...
 
void layerRenderingStarted (const QString &layerId)
 Emitted just before rendering starts for a particular layer. 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...
 
static const QString LABEL_PREVIEW_CACHE_ID
 QgsMapRendererCache ID string for cached label image during preview compositions only. More...
 
static const QgsSettingsEntryBool settingsLogCanvasRefreshEvent = QgsSettingsEntryBool( QStringLiteral( "logCanvasRefreshEvent" ), QgsSettings::Prefix::MAP, false )
 Settings entry log canvas refresh event. More...
 
- Protected Member Functions inherited from QgsMapRendererAbstractCustomPainterJob
void preparePainter (QPainter *painter, const QColor &backgroundColor=Qt::transparent)
 Prepares the given painter ready for a map render. More...
 
- Protected Member Functions inherited from QgsMapRendererJob
void cleanupJobs (std::vector< LayerRenderJob > &jobs)
 
void cleanupLabelJob (LabelRenderJob &job)
 Handles clean up tasks for a label job, including deletion of images and storing cached label results. More...
 
void cleanupSecondPassJobs (std::vector< LayerRenderJob > &jobs)
 
void initSecondPassJobs (std::vector< LayerRenderJob > &secondPassJobs, LabelRenderJob &labelJob) const
 Initialize secondPassJobs according to what have been rendered (mask clipping path e.g.) in first pass jobs and labelJob. More...
 
void logRenderingTime (const std::vector< LayerRenderJob > &jobs, const std::vector< LayerRenderJob > &secondPassJobs, const LabelRenderJob &labelJob)
 
std::vector< LayerRenderJob > prepareJobs (QPainter *painter, QgsLabelingEngine *labelingEngine2, bool deferredPainterSet=false)
 Creates a list of layer rendering jobs and prepares them for later render. More...
 
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...
 
std::vector< LayerRenderJob > prepareSecondPassJobs (std::vector< LayerRenderJob > &firstPassJobs, LabelRenderJob &labelJob)
 Prepares jobs for a second pass, if selective masks exist (from labels or symbol layers). More...
 
- Static Protected Member Functions inherited from QgsMapRendererJob
static QImage composeImage (const QgsMapSettings &settings, const std::vector< LayerRenderJob > &jobs, const LabelRenderJob &labelJob, const QgsMapRendererCache *cache=nullptr)
 
static void composeSecondPass (std::vector< LayerRenderJob > &secondPassJobs, LabelRenderJob &labelJob, bool forceVector=false)
 Compose second pass images into first pass images. More...
 
static Q_DECL_DEPRECATED void drawLabeling (const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter)
 
static void drawLabeling (QgsRenderContext &renderContext, QgsLabelingEngine *labelingEngine2, QPainter *painter)
 
static QImage layerImageToBeComposed (const QgsMapSettings &settings, const LayerRenderJob &job, const QgsMapRendererCache *cache)
 
- Protected Attributes inherited from QgsMapRendererJob
QgsMapRendererCachemCache = nullptr
 
Errors mErrors
 
QHash< QString, int > mLayerRenderingTimeHints
 Approximate expected layer rendering time per layer, by layer ID. More...
 
QStringList mLayersRedrawnFromCache
 
QHash< QgsWeakMapLayerPointer, int > mPerLayerRenderingTime
 Render time (in ms) per layer, by layer ID. More...
 
bool mRecordRenderingTime = true
 true if layer rendering time should be recorded. More...
 
std::unique_ptr< QgsRenderedItemResultsmRenderedItemResults
 
QElapsedTimer mRenderingStart
 
int mRenderingTime = 0
 
QgsMapSettings mSettings
 

Detailed Description

Render job implementation that renders maps in stages, allowing different stages (e.g.

individual map layers) to be rendered to different paint devices.

Since
QGIS 3.10

Definition at line 32 of file qgsmaprendererstagedrenderjob.h.

Member Enumeration Documentation

◆ Flag

Flags which control the staged render job behavior.

Enumerator
RenderLabelsByMapLayer 

Labels should be rendered in individual stages by map layer. This allows separation of labels belonging to different layers, but may affect label stacking order as the order will become layer-dependent, instead of per-label-dependent.

Definition at line 40 of file qgsmaprendererstagedrenderjob.h.

◆ RenderStage

Represents the stages of a rendering job.

Enumerator
Symbology 

Rendering layer symbology.

Labels 

Rendering labels.

Finished 

Rendering is finished.

Definition at line 49 of file qgsmaprendererstagedrenderjob.h.

Constructor & Destructor Documentation

◆ QgsMapRendererStagedRenderJob()

QgsMapRendererStagedRenderJob::QgsMapRendererStagedRenderJob ( const QgsMapSettings settings,
Flags  flags = Flags() 
)

Constructor for QgsMapRendererStagedRenderJob, using the given map settings.

The optional flags argument can be used to control the staged render job behavior.

Definition at line 26 of file qgsmaprendererstagedrenderjob.cpp.

◆ ~QgsMapRendererStagedRenderJob()

QgsMapRendererStagedRenderJob::~QgsMapRendererStagedRenderJob ( )
override

Definition at line 32 of file qgsmaprendererstagedrenderjob.cpp.

Member Function Documentation

◆ cancel()

void QgsMapRendererStagedRenderJob::cancel ( )
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 66 of file qgsmaprendererstagedrenderjob.cpp.

◆ cancelWithoutBlocking()

void QgsMapRendererStagedRenderJob::cancelWithoutBlocking ( )
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 70 of file qgsmaprendererstagedrenderjob.cpp.

◆ currentLayerCompositionMode()

QPainter::CompositionMode QgsMapRendererStagedRenderJob::currentLayerCompositionMode ( ) const

Returns the composition mode for the current layer about to be rendered in the next render operation.

Since
QGIS 3.14

Definition at line 254 of file qgsmaprendererstagedrenderjob.cpp.

◆ currentLayerId()

QString QgsMapRendererStagedRenderJob::currentLayerId ( ) const

Returns the ID of the current layer about to be rendered in the next render operation.

Definition at line 229 of file qgsmaprendererstagedrenderjob.cpp.

◆ currentLayerOpacity()

double QgsMapRendererStagedRenderJob::currentLayerOpacity ( ) const

Returns the opacity for the current layer about to be rendered in the next render operation.

Since
QGIS 3.14

Definition at line 244 of file qgsmaprendererstagedrenderjob.cpp.

◆ currentStage()

QgsMapRendererStagedRenderJob::RenderStage QgsMapRendererStagedRenderJob::currentStage ( ) const

Returns the current stage which will be rendered in the next render operation.

Definition at line 264 of file qgsmaprendererstagedrenderjob.cpp.

◆ isActive()

bool QgsMapRendererStagedRenderJob::isActive ( ) const
overridevirtual

Tell whether the rendering job is currently running in background.

Implements QgsMapRendererJob.

Definition at line 78 of file qgsmaprendererstagedrenderjob.cpp.

◆ isFinished()

bool QgsMapRendererStagedRenderJob::isFinished ( ) const

Returns true if the job is finished, and nothing remains to render.

Definition at line 224 of file qgsmaprendererstagedrenderjob.cpp.

◆ nextPart()

bool QgsMapRendererStagedRenderJob::nextPart ( )

Iterates to the next part to render.

Returns true if another part exists to render, or false if all parts have been rendered and nothing remains.

Definition at line 167 of file qgsmaprendererstagedrenderjob.cpp.

◆ renderCurrentPart()

bool QgsMapRendererStagedRenderJob::renderCurrentPart ( QPainter *  painter)

Renders the current part of the map to the specified painter.

Returns true if a part was rendered or false if nothing was rendered.

Definition at line 96 of file qgsmaprendererstagedrenderjob.cpp.

◆ takeLabelingResults()

QgsLabelingResults * QgsMapRendererStagedRenderJob::takeLabelingResults ( )
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().

See also
usedCachedLabels()

Implements QgsMapRendererJob.

Definition at line 88 of file qgsmaprendererstagedrenderjob.cpp.

◆ usedCachedLabels()

bool QgsMapRendererStagedRenderJob::usedCachedLabels ( ) const
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.

See also
takeLabelingResults()
Since
QGIS 3.0

Implements QgsMapRendererJob.

Definition at line 83 of file qgsmaprendererstagedrenderjob.cpp.

◆ waitForFinished()

void QgsMapRendererStagedRenderJob::waitForFinished ( )
overridevirtual

Block until the job has finished.

Implements QgsMapRendererJob.

Definition at line 74 of file qgsmaprendererstagedrenderjob.cpp.


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