18#ifndef QGSMESHVECTORRENDERER_H
19#define QGSMESHVECTORRENDERER_H
32class QgsMeshVectorFieldValueSource;
42class QgsMeshVectorRenderer
45 QgsMeshVectorRenderer() =
default;
50 virtual ~QgsMeshVectorRenderer();
52 virtual void draw() = 0;
55 static QgsMeshVectorRenderer *makeVectorRenderer(
59 const QVector<double> &datasetValuesMag,
60 double datasetMagMaximumValue,
61 double datasetMagMinimumValue,
80class QgsMeshVectorGlyphRenderer :
public QgsMeshVectorRenderer
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,
95 ~QgsMeshVectorGlyphRenderer()
override;
100 void draw()
override;
104 void drawVectorDataOnVertices();
106 void drawVectorDataOnFaces();
108 void drawVectorDataOnEdges();
110 void drawVectorDataOnPoints(
const QSet<int> indexesToRender,
const QVector<QgsMeshVertex> &points );
112 void drawVectorDataOnGrid();
120 double calcExtentBufferSize()
const;
122 const QgsTriangularMesh &mTriangularMesh;
123 const QgsMeshDataBlock &mDatasetValues;
124 const QVector<double> &mDatasetValuesMag;
125 double mMinMag = 0.0;
126 double mMaxMag = 0.0;
128 QgsRectangle mBufferedExtent;
130 QgsRenderContext &mContext;
131 const QgsVectorFieldSettings mCfg;
134 QgsVectorFieldEngine mEngine;
148class QgsMeshVectorStreamlineRenderer :
public QgsMeshVectorRenderer
152 QgsMeshVectorStreamlineRenderer(
153 const QgsTriangularMesh &m,
154 const QgsMeshDataBlock &datasetValues,
155 const QgsMeshDataBlock &scalarActiveFaceFlagValues,
156 const QVector<double> &datasetValuesMag,
157 double datasetMagMaximumValue,
158 double datasetMagMinimumValue,
160 const QgsVectorFieldSettings &settings,
161 QgsRenderContext &context,
162 const QgsRectangle &layerExtent,
163 QgsRasterBlockFeedback *feedBack,
166 ~QgsMeshVectorStreamlineRenderer()
override;
168 void draw()
override;
171 const QgsVectorFieldSettings mCfg;
172 QgsRasterBlockFeedback *mFeedBack =
nullptr;
173 std::unique_ptr<QgsMeshVectorFieldValueSource> mSource;
174 QgsVectorFieldEngine mEngine;
A block of integers/doubles from a mesh dataset.
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.