18#ifndef QGSMESHVECTORRENDERER_H
19#define QGSMESHVECTORRENDERER_H
35class QgsMeshLayerRendererFeedback;
39class QgsMeshVectorRenderer
42 QgsMeshVectorRenderer() =
default;
47 virtual ~QgsMeshVectorRenderer();
49 virtual void draw() = 0;
52 static QgsMeshVectorRenderer *makeVectorRenderer(
56 const QVector<double> &datasetValuesMag,
57 double datasetMagMaximumValue,
58 double datasetMagMinimumValue,
63 QgsMeshLayerRendererFeedback *feedBack,
76class QgsMeshVectorArrowRenderer :
public QgsMeshVectorRenderer
80 QgsMeshVectorArrowRenderer(
81 const QgsTriangularMesh &m,
82 const QgsMeshDataBlock &datasetValues,
83 const QVector<double> &datasetValuesMag,
84 double datasetMagMaximumValue,
85 double datasetMagMinimumValue,
87 const QgsMeshRendererVectorSettings &settings,
88 QgsRenderContext &context,
91 ~QgsMeshVectorArrowRenderer()
override;
100 void drawVectorDataOnVertices();
102 void drawVectorDataOnFaces();
104 void drawVectorDataOnEdges();
106 void drawVectorDataOnPoints(
const QSet<int> indexesToRender,
const QVector<QgsMeshVertex> &points );
108 void drawVectorDataOnGrid();
110 virtual void drawVector(
const QgsPointXY &lineStart,
double xVal,
double yVal,
double magnitude );
112 bool calcVectorLineEnd(
114 double &vectorLength,
117 const QgsPointXY &lineStart,
129 double calcExtentBufferSize()
const;
131 const QgsTriangularMesh &mTriangularMesh;
132 const QgsMeshDataBlock &mDatasetValues;
133 const QVector<double> &mDatasetValuesMag;
134 double mMinMag = 0.0;
135 double mMaxMag = 0.0;
137 QgsRectangle mBufferedExtent;
141 QgsRenderContext &mContext;
142 const QgsMeshRendererVectorSettings mCfg;
144 QgsInterpolatedLineColor mVectorColoring;
155class QgsMeshVectorWindBarbRenderer :
public QgsMeshVectorArrowRenderer
159 QgsMeshVectorWindBarbRenderer(
160 const QgsTriangularMesh &m,
161 const QgsMeshDataBlock &datasetValues,
162 const QVector<double> &datasetValuesMag,
163 double datasetMagMaximumValue,
164 double datasetMagMinimumValue,
166 const QgsMeshRendererVectorSettings &settings,
167 QgsRenderContext &context,
170 ~QgsMeshVectorWindBarbRenderer()
override;
173 void drawVector(
const QgsPointXY &lineStart,
double xVal,
double yVal,
double magnitude )
override;
175 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.