QGIS API Documentation  2.18.21-Las Palmas (9fba24a)
Classes | Public Types | Signals | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
QgsMapRendererJob Class Referenceabstract

Abstract base class for map rendering implementations. More...

#include <qgsmaprendererjob.h>

Inheritance diagram for QgsMapRendererJob:
Inheritance graph
[legend]

Classes

struct  Error
 

Public Types

typedef QList< ErrorErrors
 

Signals

void finished ()
 emitted when asynchronous rendering is finished (or canceled). More...
 

Public Member Functions

 QgsMapRendererJob (const QgsMapSettings &settings)
 
virtual ~QgsMapRendererJob ()
 
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...
 
virtual bool isActive () const =0
 Tell whether the rendering job is currently running in background. More...
 
const QgsMapSettingsmapSettings () const
 Return map settings with which this job was started. More...
 
int renderingTime () const
 Find out how log it took to finish the job (in miliseconds) 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...
 
virtual void start ()=0
 Start the rendering job and immediately return. More...
 
virtual QgsLabelingResultstakeLabelingResults ()=0
 Get pointer to internal labeling engine (in order to get access to the results) More...
 
virtual void waitForFinished ()=0
 Block until the job has finished. More...
 
- Public Member Functions inherited from QObject
 QObject (QObject *parent)
 
 QObject (QObject *parent, const char *name)
 
virtual ~QObject ()
 
bool blockSignals (bool block)
 
QObjectchild (const char *objName, const char *inheritsClass, bool recursiveSearch) const
 
const QObjectList & children () const
 
const char * className () const
 
bool connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const
 
void deleteLater ()
 
void destroyed (QObject *obj)
 
bool disconnect (const QObject *receiver, const char *method)
 
bool disconnect (const char *signal, const QObject *receiver, const char *method)
 
void dumpObjectInfo ()
 
void dumpObjectTree ()
 
QList< QByteArraydynamicPropertyNames () const
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
findChild (const QString &name) const
 
QList< T > findChildren (const QRegExp &regExp) const
 
QList< T > findChildren (const QString &name) const
 
bool inherits (const char *className) const
 
void insertChild (QObject *object)
 
void installEventFilter (QObject *filterObj)
 
bool isA (const char *className) const
 
bool isWidgetType () const
 
void killTimer (int id)
 
virtual const QMetaObjectmetaObject () const
 
void moveToThread (QThread *targetThread)
 
const char * name () const
 
const char * name (const char *defaultName) const
 
QString objectName () const
 
QObjectparent () const
 
QVariant property (const char *name) const
 
void removeChild (QObject *object)
 
void removeEventFilter (QObject *obj)
 
void setName (const char *name)
 
void setObjectName (const QString &name)
 
void setParent (QObject *parent)
 
bool setProperty (const char *name, const QVariant &value)
 
bool signalsBlocked () const
 
int startTimer (int interval)
 
QThreadthread () const
 

Protected Member Functions

void cleanupJobs (LayerRenderJobs &jobs)
 
void logRenderingTime (const LayerRenderJobs &jobs)
 
bool needTemporaryImage (QgsMapLayer *ml)
 
LayerRenderJobs prepareJobs (QPainter *painter, QgsPalLabeling *labelingEngine, QgsLabelingEngineV2 *labelingEngine2)
 
void updateLayerGeometryCaches ()
 called when rendering has finished to update all layers' geometry caches More...
 
- Protected Member Functions inherited from QObject
bool checkConnectArgs (const char *signal, const QObject *object, const char *method)
 
virtual void childEvent (QChildEvent *event)
 
virtual void connectNotify (const char *signal)
 
virtual void customEvent (QEvent *event)
 
virtual void disconnectNotify (const char *signal)
 
int receivers (const char *signal) const
 
QObjectsender () const
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *event)
 

Static Protected Member Functions

static QImage composeImage (const QgsMapSettings &settings, const LayerRenderJobs &jobs)
 
static void drawLabeling (const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsPalLabeling *labelingEngine, QgsLabelingEngineV2 *labelingEngine2, QPainter *painter)
 
static void drawNewLabeling (const QgsMapSettings &settings, QgsRenderContext &renderContext, QgsPalLabeling *labelingEngine)
 
static void drawOldLabeling (const QgsMapSettings &settings, QgsRenderContext &renderContext)
 
static bool reprojectToLayerExtent (const QgsMapLayer *ml, const QgsCoordinateTransform *ct, 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 Protected Member Functions inherited from QObject
QByteArray normalizeSignalSlot (const char *signalSlot)
 

Protected Attributes

QgsMapRendererCachemCache
 
Errors mErrors
 
QMap< QString, QgsGeometryCachemGeometryCaches
 map of geometry caches More...
 
QTime mRenderingStart
 
int mRenderingTime
 
QStringList mRequestedGeomCacheForLayers
 list of layer IDs for which the geometry cache should be updated More...
 
QgsMapSettings mSettings
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
- Properties inherited from QObject
 objectName
 

Detailed Description

Abstract base class for map rendering implementations.

The API is designed in a way that rendering is done asynchronously, therefore the caller is not blocked while the rendering is in progress. Non-blocking operation is quite important because the rendering can take considerable amount of time.

Common use case: 0. prepare QgsMapSettings with rendering configuration (extent, layer, map size, ...)

  1. create QgsMapRendererJob subclass with QgsMapSettings instance
  2. connect to job's finished() signal
  3. call start(). Map rendering will start in background, the function immediately returns
  4. at some point, slot connected to finished() signal is called, map rendering is done

It is possible to cancel the rendering job while it is active by calling cancel() function.

The following subclasses are available:

Note
added in 2.4

Definition at line 82 of file qgsmaprendererjob.h.

Member Typedef Documentation

◆ Errors

Definition at line 126 of file qgsmaprendererjob.h.

Constructor & Destructor Documentation

◆ QgsMapRendererJob()

QgsMapRendererJob::QgsMapRendererJob ( const QgsMapSettings settings)

Definition at line 37 of file qgsmaprendererjob.cpp.

◆ ~QgsMapRendererJob()

virtual QgsMapRendererJob::~QgsMapRendererJob ( )
inlinevirtual

Definition at line 89 of file qgsmaprendererjob.h.

Member Function Documentation

◆ cancel()

virtual void QgsMapRendererJob::cancel ( )
pure virtual

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

Does nothing if the rendering is not active.

Implemented in QgsMapRendererCustomPainterJob, QgsMapRendererSequentialJob, and QgsMapRendererParallelJob.

◆ cancelWithoutBlocking()

virtual void QgsMapRendererJob::cancelWithoutBlocking ( )
pure virtual

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.

Implemented in QgsMapRendererCustomPainterJob, QgsMapRendererSequentialJob, and QgsMapRendererParallelJob.

◆ cleanupJobs()

void QgsMapRendererJob::cleanupJobs ( LayerRenderJobs jobs)
protected
Note
not available in python bindings

Definition at line 321 of file qgsmaprendererjob.cpp.

◆ composeImage()

QImage QgsMapRendererJob::composeImage ( const QgsMapSettings settings,
const LayerRenderJobs jobs 
)
staticprotected

Definition at line 357 of file qgsmaprendererjob.cpp.

◆ drawLabeling()

void QgsMapRendererJob::drawLabeling ( const QgsMapSettings settings,
QgsRenderContext renderContext,
QgsPalLabeling labelingEngine,
QgsLabelingEngineV2 labelingEngine2,
QPainter painter 
)
staticprotected
Note
not available in Python bindings

Definition at line 297 of file qgsmaprenderercustompainterjob.cpp.

◆ drawNewLabeling()

void QgsMapRendererJob::drawNewLabeling ( const QgsMapSettings settings,
QgsRenderContext renderContext,
QgsPalLabeling labelingEngine 
)
staticprotected

Definition at line 373 of file qgsmaprenderercustompainterjob.cpp.

◆ drawOldLabeling()

void QgsMapRendererJob::drawOldLabeling ( const QgsMapSettings settings,
QgsRenderContext renderContext 
)
staticprotected

Definition at line 331 of file qgsmaprenderercustompainterjob.cpp.

◆ errors()

QgsMapRendererJob::Errors QgsMapRendererJob::errors ( ) const

List of errors that happened during the rendering job - available when the rendering has been finished.

Definition at line 51 of file qgsmaprendererjob.cpp.

◆ finished

void QgsMapRendererJob::finished ( )
signal

emitted when asynchronous rendering is finished (or canceled).

◆ isActive()

virtual bool QgsMapRendererJob::isActive ( ) const
pure virtual

Tell whether the rendering job is currently running in background.

Implemented in QgsMapRendererCustomPainterJob, QgsMapRendererSequentialJob, and QgsMapRendererParallelJob.

◆ logRenderingTime()

void QgsMapRendererJob::logRenderingTime ( const LayerRenderJobs jobs)
protected
Note
not available in python bindings

Definition at line 380 of file qgsmaprendererjob.cpp.

◆ mapSettings()

const QgsMapSettings & QgsMapRendererJob::mapSettings ( ) const

Return map settings with which this job was started.

Returns
A QgsMapSettings instance with render settings
Note
added in 2.8

Definition at line 61 of file qgsmaprendererjob.cpp.

◆ needTemporaryImage()

bool QgsMapRendererJob::needTemporaryImage ( QgsMapLayer ml)
protected

Definition at line 399 of file qgsmaprenderercustompainterjob.cpp.

◆ prepareJobs()

LayerRenderJobs QgsMapRendererJob::prepareJobs ( QPainter painter,
QgsPalLabeling labelingEngine,
QgsLabelingEngineV2 labelingEngine2 
)
protected
Note
not available in python bindings

Definition at line 171 of file qgsmaprendererjob.cpp.

◆ renderingTime()

int QgsMapRendererJob::renderingTime ( ) const
inline

Find out how log it took to finish the job (in miliseconds)

Definition at line 141 of file qgsmaprendererjob.h.

◆ reprojectToLayerExtent()

bool QgsMapRendererJob::reprojectToLayerExtent ( const QgsMapLayer ml,
const QgsCoordinateTransform ct,
QgsRectangle extent,
QgsRectangle r2 
)
staticprotected

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.

Modifies the given extent to be in the source CRS coordinates, and if it was split, returns true, and also sets the contents of the r2 parameter

Definition at line 67 of file qgsmaprendererjob.cpp.

◆ setCache()

void QgsMapRendererJob::setCache ( QgsMapRendererCache cache)

Assign a cache to be used for reading and storing rendered images of individual layers.

Does not take ownership of the object.

Definition at line 56 of file qgsmaprendererjob.cpp.

◆ setRequestedGeometryCacheForLayers()

void QgsMapRendererJob::setRequestedGeometryCacheForLayers ( const QStringList layerIds)
inline

Set which vector layers should be cached while rendering.

Note
The way how geometries are cached is really suboptimal - this method may be removed in future releases

Definition at line 138 of file qgsmaprendererjob.h.

◆ start()

virtual void QgsMapRendererJob::start ( )
pure virtual

Start the rendering job and immediately return.

Does nothing if the rendering is already in progress.

Implemented in QgsMapRendererCustomPainterJob, QgsMapRendererSequentialJob, and QgsMapRendererParallelJob.

◆ takeLabelingResults()

virtual QgsLabelingResults* QgsMapRendererJob::takeLabelingResults ( )
pure virtual

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

Implemented in QgsMapRendererCustomPainterJob, QgsMapRendererSequentialJob, and QgsMapRendererParallelJob.

◆ updateLayerGeometryCaches()

void QgsMapRendererJob::updateLayerGeometryCaches ( )
protected

called when rendering has finished to update all layers' geometry caches

Definition at line 386 of file qgsmaprenderercustompainterjob.cpp.

◆ waitForFinished()

virtual void QgsMapRendererJob::waitForFinished ( )
pure virtual

Block until the job has finished.

Implemented in QgsMapRendererCustomPainterJob, QgsMapRendererSequentialJob, and QgsMapRendererParallelJob.

Member Data Documentation

◆ mCache

QgsMapRendererCache* QgsMapRendererJob::mCache
protected

Definition at line 189 of file qgsmaprendererjob.h.

◆ mErrors

Errors QgsMapRendererJob::mErrors
protected

Definition at line 187 of file qgsmaprendererjob.h.

◆ mGeometryCaches

QMap<QString, QgsGeometryCache> QgsMapRendererJob::mGeometryCaches
protected

map of geometry caches

Definition at line 194 of file qgsmaprendererjob.h.

◆ mRenderingStart

QTime QgsMapRendererJob::mRenderingStart
protected

Definition at line 196 of file qgsmaprendererjob.h.

◆ mRenderingTime

int QgsMapRendererJob::mRenderingTime
protected

Definition at line 197 of file qgsmaprendererjob.h.

◆ mRequestedGeomCacheForLayers

QStringList QgsMapRendererJob::mRequestedGeomCacheForLayers
protected

list of layer IDs for which the geometry cache should be updated

Definition at line 192 of file qgsmaprendererjob.h.

◆ mSettings

QgsMapSettings QgsMapRendererJob::mSettings
protected

Definition at line 186 of file qgsmaprendererjob.h.


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