18#ifndef QGSMESHVECTORRENDERER_H
19#define QGSMESHVECTORRENDERER_H
35class QgsMeshLayerRendererFeedback;
39class QgsMeshVectorRenderer
43 QgsMeshVectorRenderer() =
default;
48 virtual ~QgsMeshVectorRenderer();
50 virtual void draw() = 0;
56 const QVector<double> &datasetValuesMag,
57 double datasetMagMaximumValue,
58 double datasetMagMinimumValue,
63 QgsMeshLayerRendererFeedback *feedBack,
75class QgsMeshVectorArrowRenderer :
public QgsMeshVectorRenderer
79 QgsMeshVectorArrowRenderer(
const QgsTriangularMesh &m,
80 const QgsMeshDataBlock &datasetValues,
81 const QVector<double> &datasetValuesMag,
82 double datasetMagMaximumValue,
83 double datasetMagMinimumValue,
85 const QgsMeshRendererVectorSettings &settings,
86 QgsRenderContext &context,
88 ~QgsMeshVectorArrowRenderer()
override;
97 void drawVectorDataOnVertices( );
99 void drawVectorDataOnFaces( );
101 void drawVectorDataOnEdges( );
103 void drawVectorDataOnPoints(
const QSet<int> indexesToRender,
const QVector<QgsMeshVertex> &points );
105 void drawVectorDataOnGrid( );
107 virtual void drawVector(
const QgsPointXY &lineStart,
double xVal,
double yVal,
double magnitude );
109 bool calcVectorLineEnd( QgsPointXY &lineEnd,
110 double &vectorLength,
113 const QgsPointXY &lineStart,
125 double calcExtentBufferSize()
const;
127 const QgsTriangularMesh &mTriangularMesh;
128 const QgsMeshDataBlock &mDatasetValues;
129 const QVector<double> &mDatasetValuesMag;
130 double mMinMag = 0.0;
131 double mMaxMag = 0.0;
133 QgsRectangle mBufferedExtent;
137 QgsRenderContext &mContext;
138 const QgsMeshRendererVectorSettings mCfg;
140 QgsInterpolatedLineColor mVectorColoring;
152class QgsMeshVectorWindBarbRenderer :
public QgsMeshVectorArrowRenderer
156 QgsMeshVectorWindBarbRenderer(
const QgsTriangularMesh &m,
157 const QgsMeshDataBlock &datasetValues,
158 const QVector<double> &datasetValuesMag,
159 double datasetMagMaximumValue,
160 double datasetMagMinimumValue,
162 const QgsMeshRendererVectorSettings &settings,
163 QgsRenderContext &context,
165 ~QgsMeshVectorWindBarbRenderer()
override;
168 void drawVector(
const QgsPointXY &lineStart,
double xVal,
double yVal,
double magnitude )
override;
170 QgsCoordinateTransform mGeographicTransform;
Defines color interpolation for rendering mesh datasets.
A block of integers/doubles from a mesh dataset.
Represents a renderer settings for vector datasets.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
A triangular/derived mesh with vertices in map coordinates.