QGIS API Documentation 3.99.0-Master (c22de0620c0)
Loading...
Searching...
No Matches
qgsmeshvectorrenderer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmeshvectorrenderer.h
3 -------------------
4 begin : May 2018
5 copyright : (C) 2018 by Peter Petrik
6 email : zilolv at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSMESHVECTORRENDERER_H
19#define QGSMESHVECTORRENDERER_H
20
21
22
23#include "qgis_core.h"
24#include "qgsmeshdataprovider.h"
25#include "qgsmeshlayer.h"
26#include "qgspointxy.h"
27#include "qgstriangularmesh.h"
28
29#include <QSize>
30#include <QVector>
31
32#define SIP_NO_FILE
33
36class QgsMeshLayerRendererFeedback;
38
39
40class QgsMeshVectorRenderer
41{
42 public:
43
44 QgsMeshVectorRenderer() = default;
45
49 virtual ~QgsMeshVectorRenderer();
50
51 virtual void draw() = 0;
52
54 static QgsMeshVectorRenderer *makeVectorRenderer( const QgsTriangularMesh &m,
55 const QgsMeshDataBlock &datasetVectorValues,
56 const QgsMeshDataBlock &scalarActiveFaceFlagValues,
57 const QVector<double> &datasetValuesMag,
58 double datasetMagMaximumValue,
59 double datasetMagMinimumValue,
61 const QgsMeshRendererVectorSettings &settings,
62 QgsRenderContext &context,
63 const QgsRectangle &layerExtent,
64 QgsMeshLayerRendererFeedback *feedBack,
65 const QSize &size );
66};
67
76class QgsMeshVectorArrowRenderer : public QgsMeshVectorRenderer
77{
78 public:
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,
88 QSize size );
89 ~QgsMeshVectorArrowRenderer() override;
90
94 void draw() override;
95
96 private:
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,
112 double &cosAlpha,
113 double &sinAlpha, //out
114 const QgsPointXY &lineStart,
115 double xVal,
116 double yVal,
117 double magnitude //in
118 );
119
126 double calcExtentBufferSize() const;
127
128 const QgsTriangularMesh &mTriangularMesh;
129 const QgsMeshDataBlock &mDatasetValues;
130 const QVector<double> &mDatasetValuesMag; //magnitudes
131 double mMinMag = 0.0;
132 double mMaxMag = 0.0;
134 QgsRectangle mBufferedExtent;
135 QPen mPen;
136
137 protected:
138 QgsRenderContext &mContext;
139 const QgsMeshRendererVectorSettings mCfg;
140 QSize mOutputSize;
141 QgsInterpolatedLineColor mVectorColoring;
142
143};
144
153class QgsMeshVectorWindBarbRenderer : public QgsMeshVectorArrowRenderer
154{
155 public:
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,
165 QSize size );
166 ~QgsMeshVectorWindBarbRenderer() override;
167
168 private:
169 void drawVector( const QgsPointXY &lineStart, double xVal, double yVal, double magnitude ) override;
170
171 QgsCoordinateTransform mGeographicTransform;
172
173};
174
176
177
178
179#endif // QGSMESHVECTORRENDERER_H
Defines color interpolation for rendering mesh datasets.
A block of integers/doubles from a mesh dataset.
DataType
Location of where data is specified for datasets in the dataset group.
@ DataOnVertices
Data is defined on vertices.
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.