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();
114 const QgsTriangularMesh &mTriangularMesh;
115 const QgsMeshDataBlock &mDatasetValues;
116 const QVector<double> &mDatasetValuesMag;
117 double mMinMag = 0.0;
118 double mMaxMag = 0.0;
120 QgsRectangle mBufferedExtent;
122 QgsRenderContext &mContext;
123 const QgsVectorFieldSettings mCfg;
126 QgsVectorFieldEngine mEngine;
140class QgsMeshVectorStreamlineRenderer :
public QgsMeshVectorRenderer
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,
158 ~QgsMeshVectorStreamlineRenderer()
override;
160 void draw()
override;
163 const QgsVectorFieldSettings mCfg;
164 QgsRasterBlockFeedback *mFeedBack =
nullptr;
165 std::unique_ptr<QgsMeshVectorFieldValueSource> mSource;
166 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.