QGIS API Documentation 3.43.0-Master (c67cf405802)
qgsmaprendererparalleljob.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmaprendererparalleljob.h
3 --------------------------------------
4 Date : December 2013
5 Copyright : (C) 2013 by Martin Dobias
6 Email : wonder dot sk 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 QGSMAPRENDERERPARALLELJOB_H
17#define QGSMAPRENDERERPARALLELJOB_H
18
19#include "qgis_core.h"
20#include "qgis_sip.h"
21#include "qgsmaprendererjob.h"
22
32{
33 Q_OBJECT
34 public:
37
38 void cancel() override;
39 void cancelWithoutBlocking() override;
40 void waitForFinished() override;
41 bool isActive() const override;
42
43 bool usedCachedLabels() const override;
45
46 // from QgsMapRendererJobWithPreview
47 QImage renderedImage() override;
48
49 private slots:
51 void renderLayersFinished();
53 void renderLayersSecondPassFinished();
55 void renderingFinished();
56
57 private:
58
60 static void renderLayerStatic( LayerRenderJob &job ) SIP_SKIP;
62 static void renderLabelsStatic( QgsMapRendererParallelJob *self ) SIP_SKIP;
63
64 void startPrivate() override;
65
66 QImage mFinalImage;
67
69 enum { Idle, RenderingLayers, RenderingSecondPass, RenderingLabels } mStatus SIP_SKIP;
70
71 QFuture<void> mFuture;
72 QFutureWatcher<void> mFutureWatcher;
73
74 std::vector< LayerRenderJob > mLayerJobs;
75 LabelRenderJob mLabelJob;
76
77 std::vector< LayerRenderJob > mSecondPassLayerJobs;
78 QFuture<void> mSecondPassFuture;
79 QFutureWatcher<void> mSecondPassFutureWatcher;
80
82 std::unique_ptr< QgsLabelingEngine > mLabelingEngineV2;
83 QFuture<void> mLabelingFuture;
84 QFutureWatcher<void> mLabelingFutureWatcher;
85
86};
87
88
89#endif // QGSMAPRENDERERPARALLELJOB_H
Stores computed placement from labeling engine.
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.
Job implementation that renders all layers in parallel.
Intermediate base class adding functionality that allows a client to query the rendered image.
virtual QImage renderedImage()=0
Gets a preview/resulting image.
Contains configuration for rendering maps.
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_TRANSFER
Definition qgis_sip.h:36