QGIS API Documentation 4.3.0-Master (52aa6503bed)
Loading...
Searching...
No Matches
qgsmeshvectorrenderer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmeshvectorrenderer.h
3 -------------------
4 begin : May 2018
5 copyright : (C) 2018 by Peter Petrik
6 email : zilolv at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSMESHVECTORRENDERER_H
19#define QGSMESHVECTORRENDERER_H
20
21#include <memory>
22
23#include "qgsmeshdataset.h"
24#include "qgsmeshutils.h"
26
27#include <QSize>
28#include <QVector>
29
30#define SIP_NO_FILE
31
32class QgsMeshVectorFieldValueSource;
33class QgsPointXY;
38
40
41
42class QgsMeshVectorRenderer
43{
44 public:
45 QgsMeshVectorRenderer() = default;
46
50 virtual ~QgsMeshVectorRenderer();
51
52 virtual void draw() = 0;
53
55 static QgsMeshVectorRenderer *makeVectorRenderer(
56 const QgsTriangularMesh &m,
57 const QgsMeshDataBlock &datasetVectorValues,
58 const QgsMeshDataBlock &scalarActiveFaceFlagValues,
59 const QVector<double> &datasetValuesMag,
60 double datasetMagMaximumValue,
61 double datasetMagMinimumValue,
63 const QgsVectorFieldSettings &settings,
64 QgsRenderContext &context,
65 const QgsRectangle &layerExtent,
66 QgsRasterBlockFeedback *feedBack,
67 const QSize &size
68 );
69};
70
80class QgsMeshVectorGlyphRenderer : public QgsMeshVectorRenderer
81{
82 public:
84 QgsMeshVectorGlyphRenderer(
85 const QgsTriangularMesh &m,
86 const QgsMeshDataBlock &datasetValues,
87 const QVector<double> &datasetValuesMag,
88 double datasetMagMaximumValue,
89 double datasetMagMinimumValue,
91 const QgsVectorFieldSettings &settings,
92 QgsRenderContext &context,
93 QSize size
94 );
95 ~QgsMeshVectorGlyphRenderer() override;
96
100 void draw() override;
101
102 private:
104 void drawVectorDataOnVertices();
106 void drawVectorDataOnFaces();
108 void drawVectorDataOnEdges();
110 void drawVectorDataOnPoints( const QSet<int> indexesToRender, const QVector<QgsMeshVertex> &points );
112 void drawVectorDataOnGrid();
113
114 const QgsTriangularMesh &mTriangularMesh;
115 const QgsMeshDataBlock &mDatasetValues;
116 const QVector<double> &mDatasetValuesMag; //magnitudes
117 double mMinMag = 0.0;
118 double mMaxMag = 0.0;
120 QgsRectangle mBufferedExtent;
121
122 QgsRenderContext &mContext;
123 const QgsVectorFieldSettings mCfg;
124 QSize mOutputSize;
125
126 QgsVectorFieldEngine mEngine;
127};
128
140class QgsMeshVectorStreamlineRenderer : public QgsMeshVectorRenderer
141{
142 public:
144 QgsMeshVectorStreamlineRenderer(
145 const QgsTriangularMesh &m,
146 const QgsMeshDataBlock &datasetValues,
147 const QgsMeshDataBlock &scalarActiveFaceFlagValues,
148 const QVector<double> &datasetValuesMag,
149 double datasetMagMaximumValue,
150 double datasetMagMinimumValue,
152 const QgsVectorFieldSettings &settings,
153 QgsRenderContext &context,
154 const QgsRectangle &layerExtent,
155 QgsRasterBlockFeedback *feedBack,
156 QSize size
157 );
158 ~QgsMeshVectorStreamlineRenderer() override;
159
160 void draw() override;
161
162 private:
163 const QgsVectorFieldSettings mCfg;
164 QgsRasterBlockFeedback *mFeedBack = nullptr;
165 std::unique_ptr<QgsMeshVectorFieldValueSource> mSource;
166 QgsVectorFieldEngine mEngine;
167};
168
170
171
172#endif // QGSMESHVECTORRENDERER_H
A block of integers/doubles from a mesh dataset.
DataType
Location of where data is specified for datasets in the dataset group.
@ DataOnVertices
Data is defined on vertices.
Represents a 2D point.
Definition qgspointxy.h:62
Feedback object tailored for raster block reading.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
A triangular/derived mesh with vertices in map coordinates.
Represents a renderer settings for vector datasets.