QGIS API Documentation  3.21.0-Master (5b68dc587e)
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 QgsLabelingResults * takeLabelingResults()=0
Gets pointer to internal labeling engine (in order to get access to the results).
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 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:79
#define SIP_TRANSFER
Definition: qgis_sip.h:36