QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsmaprendererstagedrenderjob.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmaprendererstagedrenderjob.h
3 --------------------------------------
4 Date : August 2019
5 Copyright : (C) 2019 by Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSMAPRENDERERSTAGEDRENDERJOB_H
17#define QGSMAPRENDERERSTAGEDRENDERJOB_H
18
19#include "qgis_core.h"
20#include "qgis_sip.h"
22
23#define SIP_NO_FILE
24
33{
34 Q_OBJECT
35 public:
36
40 enum Flag
41 {
42 RenderLabelsByMapLayer = 0x01,
43 };
44 Q_DECLARE_FLAGS( Flags, Flag )
45
46
50 {
54 };
55
62 QgsMapRendererStagedRenderJob( const QgsMapSettings &settings, Flags flags = Flags() );
64
65 void cancel() override;
66 void cancelWithoutBlocking() override;
67 void waitForFinished() override;
68 bool isActive() const override;
69 bool usedCachedLabels() const override;
71
77 bool renderCurrentPart( QPainter *painter );
78
85 bool nextPart();
86
90 bool isFinished() const;
91
95 QString currentLayerId() const;
96
102 double currentLayerOpacity() const;
103
109 QPainter::CompositionMode currentLayerCompositionMode() const;
110
114 RenderStage currentStage() const;
115
116 private:
117
118 void startPrivate() override;
119
120 std::unique_ptr< QgsLabelingEngine > mLabelingEngineV2;
121
122 std::vector< LayerRenderJob > mLayerJobs;
123 LabelRenderJob mLabelJob;
124 std::vector< LayerRenderJob >::iterator mJobIt;
125
126 bool mNextIsLabel = false;
127 bool mExportedLabels = false;
128 Flags mFlags = Flags();
129 bool mPreparedStagedLabelJob = false;
130 QStringList mLabelingLayers;
131 QStringList::iterator mLabelLayerIt;
132};
133
134#endif // QGSMAPRENDERERSTAGEDRENDERJOB_H
The QgsLabelingEngine class provides map labeling functionality.
Class that stores computed placement from labeling engine.
Abstract base class for map renderer jobs which use custom painters.
virtual void waitForFinished()=0
Block until the job has finished.
virtual bool usedCachedLabels() const =0
Returns true if the render job was able to use a cached labeling solution.
virtual bool isActive() const =0
Tell whether the rendering job is currently running in background.
virtual QgsLabelingResults * takeLabelingResults()=0
Gets pointer to internal labeling engine (in order to get access to the results).
virtual void cancel()=0
Stop the rendering job - does not return until the job has terminated.
virtual void cancelWithoutBlocking()=0
Triggers cancellation of the rendering job without blocking.
Render job implementation that renders maps in stages, allowing different stages (e....
Flag
Flags which control the staged render job behavior.
RenderStage
Represents the stages of a rendering job.
The QgsMapSettings class contains configuration for rendering of the map.
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:73
#define SIP_TRANSFER
Definition: qgis_sip.h:36