18#ifndef QGSMESHVECTORRENDERER_H
19#define QGSMESHVECTORRENDERER_H
36class QgsMeshLayerRendererFeedback;
40class QgsMeshVectorRenderer
44 QgsMeshVectorRenderer() =
default;
49 virtual ~QgsMeshVectorRenderer();
51 virtual void draw() = 0;
57 const QVector<double> &datasetValuesMag,
58 double datasetMagMaximumValue,
59 double datasetMagMinimumValue,
64 QgsMeshLayerRendererFeedback *feedBack,
76class QgsMeshVectorArrowRenderer :
public QgsMeshVectorRenderer
80 QgsMeshVectorArrowRenderer(
const QgsTriangularMesh &m,
81 const QgsMeshDataBlock &datasetValues,
82 const QVector<double> &datasetValuesMag,
83 double datasetMagMaximumValue,
84 double datasetMagMinimumValue,
86 const QgsMeshRendererVectorSettings &settings,
87 QgsRenderContext &context,
89 ~QgsMeshVectorArrowRenderer()
override;
98 void drawVectorDataOnVertices( );
100 void drawVectorDataOnFaces( );
102 void drawVectorDataOnEdges( );
104 void drawVectorDataOnPoints(
const QSet<int> indexesToRender,
const QVector<QgsMeshVertex> &points );
106 void drawVectorDataOnGrid( );
108 virtual void drawVector(
const QgsPointXY &lineStart,
double xVal,
double yVal,
double magnitude );
110 bool calcVectorLineEnd( QgsPointXY &lineEnd,
111 double &vectorLength,
114 const QgsPointXY &lineStart,
126 double calcExtentBufferSize()
const;
128 const QgsTriangularMesh &mTriangularMesh;
129 const QgsMeshDataBlock &mDatasetValues;
130 const QVector<double> &mDatasetValuesMag;
131 double mMinMag = 0.0;
132 double mMaxMag = 0.0;
134 QgsRectangle mBufferedExtent;
138 QgsRenderContext &mContext;
139 const QgsMeshRendererVectorSettings mCfg;
141 QgsInterpolatedLineColor mVectorColoring;
153class QgsMeshVectorWindBarbRenderer :
public QgsMeshVectorArrowRenderer
157 QgsMeshVectorWindBarbRenderer(
const QgsTriangularMesh &m,
158 const QgsMeshDataBlock &datasetValues,
159 const QVector<double> &datasetValuesMag,
160 double datasetMagMaximumValue,
161 double datasetMagMinimumValue,
163 const QgsMeshRendererVectorSettings &settings,
164 QgsRenderContext &context,
166 ~QgsMeshVectorWindBarbRenderer()
override;
169 void drawVector(
const QgsPointXY &lineStart,
double xVal,
double yVal,
double magnitude )
override;
171 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.