Skip to content

Commit 3fc99c0

Browse files
committedMay 16, 2018
code cleanup
1 parent aea3dcc commit 3fc99c0

19 files changed

+401
-294
lines changed
 

‎python/core/auto_generated/mesh/qgsmeshdataprovider.sip.in

Lines changed: 70 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,13 @@ typedef QgsPoint QgsMeshVertex;
1414

1515
typedef QVector<int> QgsMeshFace;
1616

17-
typedef QMap<QString, QString> QgsMeshDatasetMetadata;
18-
1917
class QgsMeshDatasetValue
2018
{
2119
%Docstring
2220

23-
QgsMeshDatasetValue is a vector or a scalar value on vertex or face of the mesh with
24-
support of nodata values
21+
QgsMeshDatasetValue represents single mesh dataset value
22+
23+
could be scalar or vector. Nodata values are represented by NaNs.
2524

2625
.. note::
2726

@@ -37,38 +36,21 @@ support of nodata values
3736
QgsMeshDatasetValue( double x,
3837
double y );
3938
%Docstring
40-
Ctor
39+
Constructor for vector value
4140
%End
4241

4342
QgsMeshDatasetValue( double scalar );
4443
%Docstring
45-
Ctor
44+
Constructor for scalar value
4645
%End
4746

48-
QgsMeshDatasetValue( );
47+
QgsMeshDatasetValue();
4948
%Docstring
50-
Ctor
49+
Default Ctor, initialize to NaN
5150
%End
5251

5352
~QgsMeshDatasetValue();
5453

55-
void setNodata( bool nodata = true );
56-
%Docstring
57-
Sets nodata value for this dataset value
58-
%End
59-
bool isNodata() const;
60-
%Docstring
61-
Returns whether it is nodata value
62-
%End
63-
bool isScalar() const;
64-
%Docstring
65-
Returns whether it is scalar value
66-
%End
67-
double scalar() const;
68-
%Docstring
69-
Returns scalar value. Length for vectors, value for scalars
70-
%End
71-
7254
void set( double scalar );
7355
%Docstring
7456
Sets scalar value
@@ -82,6 +64,11 @@ Sets X value
8264
void setY( double y );
8365
%Docstring
8466
Sets Y value
67+
%End
68+
69+
double scalar() const;
70+
%Docstring
71+
Returns magnitude of vector for vector data or scalar value for scalar data
8572
%End
8673

8774
double x() const;
@@ -98,6 +85,60 @@ Returns y value
9885

9986
};
10087

88+
89+
90+
class QgsMeshDatasetMetadata
91+
{
92+
%Docstring
93+
94+
QgsMeshDatasetMetadata is a collection of mesh dataset metadata such
95+
as if the data is vector or scalar, etc.
96+
97+
.. note::
98+
99+
The API is considered EXPERIMENTAL and can be changed without a notice
100+
101+
.. versionadded:: 3.2
102+
%End
103+
104+
%TypeHeaderCode
105+
#include "qgsmeshdataprovider.h"
106+
%End
107+
public:
108+
QgsMeshDatasetMetadata();
109+
QgsMeshDatasetMetadata( bool isScalar,
110+
bool isValid,
111+
bool isOnVertices,
112+
const QMap<QString, QString> &extraOptions );
113+
114+
QMap<QString, QString> extraOptions() const;
115+
%Docstring
116+
Returns extra metadata options
117+
Usually including name, description or time variable
118+
%End
119+
120+
bool isVector() const;
121+
%Docstring
122+
Returns whether dataset has vector data
123+
%End
124+
125+
bool isScalar() const;
126+
%Docstring
127+
Returns whether dataset has scalar data
128+
%End
129+
130+
bool isOnVertices() const;
131+
%Docstring
132+
Returns whether dataset data is defined on vertices
133+
%End
134+
135+
bool isValid() const;
136+
%Docstring
137+
Returns whether dataset is valid
138+
%End
139+
140+
};
141+
101142
class QgsMeshSource /Abstract/
102143
{
103144
%Docstring
@@ -155,7 +196,7 @@ class QgsMeshDatasetSource /Abstract/
155196
%Docstring
156197
Dataset is a collection of vector or scalar values on vertices or faces of the mesh
157198

158-
Base on the underlying data provider/format, whole dataset is either stored in memory or
199+
Based on the underlying data provider/format, whole dataset is either stored in memory or
159200
read on demand
160201

161202
.. note::
@@ -181,29 +222,16 @@ read on demand
181222
Returns number of datasets loaded
182223
%End
183224

184-
virtual bool datasetHasScalarData( int index ) const = 0;
185-
%Docstring
186-
Returns whether dataset has scalar data associated
187-
%End
188-
189-
virtual bool datasetIsOnVertices( int index ) const = 0;
190-
%Docstring
191-
Returns whether dataset is on vertices
192-
%End
193-
194-
virtual QgsMeshDatasetMetadata datasetMetadata( int index ) const = 0;
225+
virtual QgsMeshDatasetMetadata datasetMetadata( int datasetIndex ) const = 0;
195226
%Docstring
196227
Returns dataset metadata
197228
%End
198229

199230
virtual QgsMeshDatasetValue datasetValue( int datasetIndex, int valueIndex ) const = 0;
200231
%Docstring
201-
Returns value associated with the index from the dataset
202-
%End
232+
Returns vector/scalar value associated with the index from the dataset
203233

204-
virtual bool datasetIsValid( int index ) const = 0;
205-
%Docstring
206-
Returns whether dataset is valid
234+
See QgsMeshDatasetMetadata.isVector() to check if the returned value is vector or scalar
207235
%End
208236
};
209237

‎python/core/auto_generated/mesh/qgsmeshlayer.sip.in

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111

1212

13+
const int NO_ACTIVE_MESH_DATASET;
14+
1315

1416
class QgsMeshLayer : QgsMapLayer
1517
{
@@ -121,7 +123,7 @@ Returns the provider type for this layer
121123

122124

123125

124-
QgsMeshRendererMeshSettings rendererNativeMeshSettings() const /Factory/;
126+
QgsMeshRendererMeshSettings rendererNativeMeshSettings() const;
125127
%Docstring
126128
Returns rendrer settings
127129
%End
@@ -131,7 +133,7 @@ Returns rendrer settings
131133
Sets new rendering settings, triggers repaint
132134
%End
133135

134-
QgsMeshRendererMeshSettings rendererTriangularMeshSettings() const /Factory/;
136+
QgsMeshRendererMeshSettings rendererTriangularMeshSettings() const;
135137
%Docstring
136138
Returns rendrer settings
137139
%End
@@ -141,7 +143,7 @@ Returns rendrer settings
141143
Sets new rendering settings, triggers repaint
142144
%End
143145

144-
QgsMeshRendererScalarSettings rendererScalarSettings() const /Factory/;
146+
QgsMeshRendererScalarSettings rendererScalarSettings() const;
145147
%Docstring
146148
Returns rendrer settings
147149
%End
@@ -151,7 +153,7 @@ Returns rendrer settings
151153
Sets new rendering settings, triggers repaint
152154
%End
153155

154-
QgsMeshRendererVectorSettings rendererVectorSettings() const /Factory/;
156+
QgsMeshRendererVectorSettings rendererVectorSettings() const;
155157
%Docstring
156158
Returns rendrer settings
157159
%End
@@ -161,18 +163,22 @@ Returns rendrer settings
161163
Sets new rendering settings, triggers repaint
162164
%End
163165

164-
void setActiveScalarDataset( int index = -1 );
166+
void setActiveScalarDataset( int index = NO_ACTIVE_MESH_DATASET );
165167
%Docstring
166168
Sets active scalar dataset for rendering
169+
170+
Triggers repaint
167171
%End
168172
int activeScalarDataset() const;
169173
%Docstring
170174
Returns active scalar dataset
171175
%End
172176

173-
void setActiveVectorDataset( int index = -1 );
177+
void setActiveVectorDataset( int index = NO_ACTIVE_MESH_DATASET );
174178
%Docstring
175-
Sets active vector dataset for rendering. If dataset is not vector based, do nothing
179+
Sets active vector dataset for rendering.
180+
181+
If dataset is not vector based, do nothing. Triggers repaint
176182
%End
177183
int activeVectorDataset() const;
178184
%Docstring

‎python/core/auto_generated/mesh/qgsmeshrenderersettings.sip.in

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ Represents a mesh renderer settings for vector datasets
140140
#include "qgsmeshrenderersettings.h"
141141
%End
142142
public:
143-
enum VectorRenderingType
143+
enum ArrowScalingMethod
144144
{
145145

146146
MinMax,
@@ -198,11 +198,11 @@ Sets filter value for vector magnitudes.
198198
.. seealso:: :py:func:`QgsMeshRendererVectorSettings.vectorFilterMax`
199199
%End
200200

201-
QgsMeshRendererVectorSettings::VectorRenderingType shaftLengthMethod() const;
201+
QgsMeshRendererVectorSettings::ArrowScalingMethod shaftLengthMethod() const;
202202
%Docstring
203203
Returns method used for drawing arrows
204204
%End
205-
void setShaftLengthMethod( const QgsMeshRendererVectorSettings::VectorRenderingType &shaftLengthMethod );
205+
void setShaftLengthMethod( const QgsMeshRendererVectorSettings::ArrowScalingMethod &shaftLengthMethod );
206206
%Docstring
207207
Sets method used for drawing arrows
208208
%End
@@ -211,46 +211,56 @@ Sets method used for drawing arrows
211211
%Docstring
212212
Returns mininimum shaft length (in millimeters)
213213

214-
Only for QgsMeshRendererVectorSettings.ArrowType.MinMax
214+
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.MinMax
215215
%End
216216

217217
void setMinShaftLength( double minShaftLength );
218218
%Docstring
219219
Sets mininimum shaft length (in millimeters)
220220

221-
Only for QgsMeshRendererVectorSettings.ArrowType.MinMax
221+
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.MinMax
222222
%End
223223

224224
double maxShaftLength() const;
225225
%Docstring
226226
Returns maximum shaft length (in millimeters)
227227

228-
Only for QgsMeshRendererVectorSettings.ArrowType.MinMax
228+
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.MinMax
229229
%End
230230

231231
void setMaxShaftLength( double maxShaftLength );
232232
%Docstring
233233
Sets maximum shaft length (in millimeters)
234234

235-
Only for QgsMeshRendererVectorSettings.ArrowType.MinMax
235+
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.MinMax
236236
%End
237237

238238
double scaleFactor() const;
239239
%Docstring
240-
Returns scale factor. Only for QgsMeshRendererVectorSettings.ArrowType.Scaled
240+
Returns scale factor
241+
242+
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.Scaled
241243
%End
244+
242245
void setScaleFactor( double scaleFactor );
243246
%Docstring
244-
Sets scale factor. Only for QgsMeshRendererVectorSettings.ArrowType.Scaled
247+
Sets scale factor
248+
249+
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.Scaled
245250
%End
246251

247252
double fixedShaftLength() const;
248253
%Docstring
249-
Returns fixed arrow length (in millimeters). Only for QgsMeshRendererVectorSettings.ArrowType.Fixed
254+
Returns fixed arrow length (in millimeters)
255+
256+
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.Fixed
250257
%End
258+
251259
void setFixedShaftLength( double fixedShaftLength );
252260
%Docstring
253-
Sets fixed length (in millimeters). Only for QgsMeshRendererVectorSettings.ArrowType.Fixed
261+
Sets fixed length (in millimeters)
262+
263+
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.Fixed
254264
%End
255265

256266
double arrowHeadWidthRatio() const;

‎python/core/core_auto.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
// Include auto-generated SIP files
12
%Include auto_generated/expression/qgsexpression.sip
23
%Include auto_generated/expression/qgsexpressionnode.sip
34
%Include auto_generated/expression/qgsexpressionnodeimpl.sip

‎src/core/mesh/qgsmeshdataprovider.cpp

Lines changed: 51 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -40,40 +40,21 @@ QgsRectangle QgsMeshDataProvider::extent() const
4040

4141
}
4242

43-
QgsMeshDatasetValue::QgsMeshDatasetValue( double x, double y )
44-
{
45-
setX( x );
46-
setY( y );
47-
}
48-
49-
QgsMeshDatasetValue::QgsMeshDatasetValue( double scalar )
50-
{
51-
set( scalar );
52-
}
53-
54-
void QgsMeshDatasetValue::setNodata( bool nodata )
55-
{
56-
mIsNodata = nodata;
57-
}
58-
59-
bool QgsMeshDatasetValue::isNodata() const
60-
{return mIsNodata;}
43+
QgsMeshDatasetValue::QgsMeshDatasetValue( double x, double y ): mX( x ), mY( y )
44+
{}
6145

62-
bool QgsMeshDatasetValue::isScalar() const
63-
{
64-
return mIsScalar;
65-
}
46+
QgsMeshDatasetValue::QgsMeshDatasetValue( double scalar ): mX( scalar )
47+
{}
6648

6749
double QgsMeshDatasetValue::scalar() const
6850
{
69-
if ( isNodata() )
51+
if ( std::isnan( mY ) )
7052
{
71-
return std::numeric_limits<double>::quiet_NaN();
53+
return mX;
7254
}
73-
74-
if ( isScalar() )
55+
else if ( std::isnan( mX ) )
7556
{
76-
return mX;
57+
return std::numeric_limits<double>::quiet_NaN();
7758
}
7859
else
7960
{
@@ -84,29 +65,16 @@ double QgsMeshDatasetValue::scalar() const
8465
void QgsMeshDatasetValue::set( double scalar )
8566
{
8667
setX( scalar );
87-
mIsScalar = true;
8868
}
8969

9070
void QgsMeshDatasetValue::setX( double x )
9171
{
9272
mX = x;
93-
if ( std::isnan( x ) )
94-
{
95-
mIsNodata = true;
96-
}
97-
else
98-
{
99-
mIsNodata = false;
100-
}
10173
}
10274

10375
void QgsMeshDatasetValue::setY( double y )
10476
{
10577
mY = y;
106-
if ( std::isnan( y ) )
107-
{
108-
mIsScalar = true;
109-
}
11078
}
11179

11280
double QgsMeshDatasetValue::x() const
@@ -121,22 +89,58 @@ double QgsMeshDatasetValue::y() const
12189

12290
bool QgsMeshDatasetValue::operator==( const QgsMeshDatasetValue &other ) const
12391
{
124-
bool equal = true;
125-
if ( isNodata() )
126-
equal = other.isNodata();
127-
else
92+
bool equal = std::isnan( mX ) == std::isnan( other.x() );
93+
equal &= std::isnan( mY ) == std::isnan( other.y() );
94+
95+
if ( equal )
12896
{
129-
if ( isScalar() )
97+
if ( std::isnan( mY ) )
13098
{
131-
equal &= other.isScalar();
13299
equal &= qgsDoubleNear( other.x(), mX, 1E-8 );
133100
}
134101
else
135102
{
136-
equal &= !other.isScalar();
137103
equal &= qgsDoubleNear( other.x(), mX, 1E-8 );
138104
equal &= qgsDoubleNear( other.y(), mY, 1E-8 );
139105
}
140106
}
141107
return equal;
142108
}
109+
110+
QgsMeshDatasetMetadata::QgsMeshDatasetMetadata(
111+
bool isScalar,
112+
bool isValid,
113+
bool isOnVertices,
114+
const QMap<QString, QString> &extraOptions )
115+
: mIsScalar( isScalar )
116+
, mIsValid( isValid )
117+
, mIsOnVertices( isOnVertices )
118+
, mExtraOptions( extraOptions )
119+
{
120+
}
121+
122+
QMap<QString, QString> QgsMeshDatasetMetadata::extraOptions() const
123+
{
124+
return mExtraOptions;
125+
}
126+
127+
bool QgsMeshDatasetMetadata::isVector() const
128+
{
129+
return !mIsScalar;
130+
}
131+
132+
bool QgsMeshDatasetMetadata::isScalar() const
133+
{
134+
return mIsScalar;
135+
}
136+
137+
bool QgsMeshDatasetMetadata::isValid() const
138+
{
139+
return mIsValid;
140+
}
141+
142+
143+
bool QgsMeshDatasetMetadata::isOnVertices() const
144+
{
145+
return mIsOnVertices;
146+
}

‎src/core/mesh/qgsmeshdataprovider.h

Lines changed: 69 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -34,46 +34,33 @@ typedef QgsPoint QgsMeshVertex;
3434
//! List of vertex indexes
3535
typedef QVector<int> QgsMeshFace;
3636

37-
//! Dataset's metadata key:value map
38-
typedef QMap<QString, QString> QgsMeshDatasetMetadata;
39-
4037
/**
4138
* \ingroup core
4239
*
43-
* QgsMeshDatasetValue is a vector or a scalar value on vertex or face of the mesh with
44-
* support of nodata values
40+
* QgsMeshDatasetValue represents single mesh dataset value
41+
*
42+
* could be scalar or vector. Nodata values are represented by NaNs.
4543
*
4644
* \note The API is considered EXPERIMENTAL and can be changed without a notice
4745
*
4846
* \since QGIS 3.2
4947
*/
5048
class CORE_EXPORT QgsMeshDatasetValue
5149
{
52-
Q_GADGET
53-
5450
public:
55-
//! Ctor
51+
//! Constructor for vector value
5652
QgsMeshDatasetValue( double x,
5753
double y );
5854

59-
//! Ctor
55+
//! Constructor for scalar value
6056
QgsMeshDatasetValue( double scalar );
6157

62-
//! Ctor
63-
QgsMeshDatasetValue( ) = default;
58+
//! Default Ctor, initialize to NaN
59+
QgsMeshDatasetValue() = default;
6460

6561
//! Dtor
6662
~QgsMeshDatasetValue() = default;
6763

68-
//! Sets nodata value for this dataset value
69-
void setNodata( bool nodata = true );
70-
//! Returns whether it is nodata value
71-
bool isNodata() const;
72-
//! Returns whether it is scalar value
73-
bool isScalar() const;
74-
//! Returns scalar value. Length for vectors, value for scalars
75-
double scalar() const;
76-
7764
//! Sets scalar value
7865
void set( double scalar );
7966

@@ -83,6 +70,9 @@ class CORE_EXPORT QgsMeshDatasetValue
8370
//! Sets Y value
8471
void setY( double y ) ;
8572

73+
//! Returns magnitude of vector for vector data or scalar value for scalar data
74+
double scalar() const;
75+
8676
//! Returns x value
8777
double x() const;
8878

@@ -95,8 +85,60 @@ class CORE_EXPORT QgsMeshDatasetValue
9585
private:
9686
double mX = std::numeric_limits<double>::quiet_NaN();
9787
double mY = std::numeric_limits<double>::quiet_NaN();
98-
bool mIsNodata = true;
99-
bool mIsScalar = true;
88+
};
89+
90+
91+
92+
/**
93+
* \ingroup core
94+
*
95+
* QgsMeshDatasetMetadata is a collection of mesh dataset metadata such
96+
* as if the data is vector or scalar, etc.
97+
*
98+
* \note The API is considered EXPERIMENTAL and can be changed without a notice
99+
*
100+
* \since QGIS 3.2
101+
*/
102+
class CORE_EXPORT QgsMeshDatasetMetadata
103+
{
104+
public:
105+
QgsMeshDatasetMetadata() = default;
106+
QgsMeshDatasetMetadata( bool isScalar,
107+
bool isValid,
108+
bool isOnVertices,
109+
const QMap<QString, QString> &extraOptions );
110+
111+
/**
112+
* Returns extra metadata options
113+
* Usually including name, description or time variable
114+
*/
115+
QMap<QString, QString> extraOptions() const;
116+
117+
/**
118+
* \brief Returns whether dataset has vector data
119+
*/
120+
bool isVector() const;
121+
122+
/**
123+
* \brief Returns whether dataset has scalar data
124+
*/
125+
bool isScalar() const;
126+
127+
/**
128+
* \brief Returns whether dataset data is defined on vertices
129+
*/
130+
bool isOnVertices() const;
131+
132+
/**
133+
* \brief Returns whether dataset is valid
134+
*/
135+
bool isValid() const;
136+
137+
private:
138+
bool mIsScalar = false;
139+
bool mIsValid = false;
140+
bool mIsOnVertices = false;
141+
QMap<QString, QString> mExtraOptions;
100142
};
101143

102144
/**
@@ -147,7 +189,7 @@ class CORE_EXPORT QgsMeshSource SIP_ABSTRACT
147189
* \ingroup core
148190
* Dataset is a collection of vector or scalar values on vertices or faces of the mesh
149191
*
150-
* Base on the underlying data provider/format, whole dataset is either stored in memory or
192+
* Based on the underlying data provider/format, whole dataset is either stored in memory or
151193
* read on demand
152194
*
153195
* \note The API is considered EXPERIMENTAL and can be changed without a notice
@@ -170,30 +212,17 @@ class CORE_EXPORT QgsMeshDatasetSource SIP_ABSTRACT
170212
*/
171213
virtual int datasetCount() const = 0;
172214

173-
/**
174-
* \brief Returns whether dataset has scalar data associated
175-
*/
176-
virtual bool datasetHasScalarData( int index ) const = 0;
177-
178-
/**
179-
* \brief Returns whether dataset is on vertices
180-
*/
181-
virtual bool datasetIsOnVertices( int index ) const = 0;
182-
183215
/**
184216
* \brief Returns dataset metadata
185217
*/
186-
virtual QgsMeshDatasetMetadata datasetMetadata( int index ) const = 0;
218+
virtual QgsMeshDatasetMetadata datasetMetadata( int datasetIndex ) const = 0;
187219

188220
/**
189-
* \brief Returns value associated with the index from the dataset
221+
* \brief Returns vector/scalar value associated with the index from the dataset
222+
*
223+
* See QgsMeshDatasetMetadata::isVector() to check if the returned value is vector or scalar
190224
*/
191225
virtual QgsMeshDatasetValue datasetValue( int datasetIndex, int valueIndex ) const = 0;
192-
193-
/**
194-
* \brief Returns whether dataset is valid
195-
*/
196-
virtual bool datasetIsValid( int index ) const = 0;
197226
};
198227

199228

‎src/core/mesh/qgsmeshlayer.cpp

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -144,28 +144,36 @@ void QgsMeshLayer::setRendererVectorSettings( const QgsMeshRendererVectorSetting
144144

145145
void QgsMeshLayer::setActiveScalarDataset( int index )
146146
{
147-
if ( index < 0 )
148-
{
149-
mActiveScalarDataset = -1;
147+
if ( index == mActiveScalarDataset )
150148
return;
151-
}
152149

153-
Q_ASSERT( dataProvider()->datasetCount() > index );
154-
// for vector datasets, we render magnitude
155-
mActiveScalarDataset = index;
150+
if ( ( index >= 0 ) && ( index < dataProvider()->datasetCount() ) )
151+
mActiveScalarDataset = index;
152+
else
153+
mActiveScalarDataset = NO_ACTIVE_MESH_DATASET;
154+
155+
triggerRepaint();
156156
}
157157

158158
void QgsMeshLayer::setActiveVectorDataset( int index )
159159
{
160-
if ( index < 0 )
161-
{
162-
mActiveVectorDataset = -1;
160+
if ( index == mActiveVectorDataset )
163161
return;
162+
163+
if ( ( index < 0 ) || ( index >= dataProvider()->datasetCount() ) )
164+
{
165+
mActiveVectorDataset = NO_ACTIVE_MESH_DATASET;
166+
}
167+
else
168+
{
169+
const QgsMeshDatasetMetadata metadata = dataProvider()->datasetMetadata( index );
170+
if ( metadata.isVector() )
171+
mActiveVectorDataset = index;
172+
else
173+
mActiveVectorDataset = NO_ACTIVE_MESH_DATASET;
164174
}
165175

166-
Q_ASSERT( dataProvider()->datasetCount() > index );
167-
if ( !dataProvider()->datasetHasScalarData( index ) )
168-
mActiveVectorDataset = index;
176+
triggerRepaint();
169177
}
170178

171179
void QgsMeshLayer::fillNativeMesh()

‎src/core/mesh/qgsmeshlayer.h

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
#include "qgsmeshdataprovider.h"
2727
#include "qgsmeshrenderersettings.h"
2828

29+
const int NO_ACTIVE_MESH_DATASET = -1;
30+
2931
class QgsMapLayerRenderer;
3032
class QgsSymbol;
3133
class QgsTriangularMesh;
@@ -132,36 +134,44 @@ class CORE_EXPORT QgsMeshLayer : public QgsMapLayer
132134
QgsTriangularMesh *triangularMesh() SIP_SKIP;
133135

134136
//! Returns rendrer settings
135-
QgsMeshRendererMeshSettings rendererNativeMeshSettings() const SIP_FACTORY;
137+
QgsMeshRendererMeshSettings rendererNativeMeshSettings() const;
136138

137139
//! Sets new rendering settings, triggers repaint
138140
void setRendererNativeMeshSettings( const QgsMeshRendererMeshSettings &settings );
139141

140142
//! Returns rendrer settings
141-
QgsMeshRendererMeshSettings rendererTriangularMeshSettings() const SIP_FACTORY;
143+
QgsMeshRendererMeshSettings rendererTriangularMeshSettings() const;
142144

143145
//! Sets new rendering settings, triggers repaint
144146
void setRendererTriangularMeshSettings( const QgsMeshRendererMeshSettings &settings );
145147

146148
//! Returns rendrer settings
147-
QgsMeshRendererScalarSettings rendererScalarSettings() const SIP_FACTORY;
149+
QgsMeshRendererScalarSettings rendererScalarSettings() const;
148150

149151
//! Sets new rendering settings, triggers repaint
150152
void setRendererScalarSettings( const QgsMeshRendererScalarSettings &settings );
151153

152154
//! Returns rendrer settings
153-
QgsMeshRendererVectorSettings rendererVectorSettings() const SIP_FACTORY;
155+
QgsMeshRendererVectorSettings rendererVectorSettings() const;
154156

155157
//! Sets new rendering settings, triggers repaint
156158
void setRendererVectorSettings( const QgsMeshRendererVectorSettings &settings );
157159

158-
//! Sets active scalar dataset for rendering
159-
void setActiveScalarDataset( int index = -1 );
160+
/**
161+
* Sets active scalar dataset for rendering
162+
*
163+
* Triggers repaint
164+
*/
165+
void setActiveScalarDataset( int index = NO_ACTIVE_MESH_DATASET );
160166
//! Returns active scalar dataset
161167
int activeScalarDataset() const { return mActiveScalarDataset; }
162168

163-
//! Sets active vector dataset for rendering. If dataset is not vector based, do nothing
164-
void setActiveVectorDataset( int index = -1 );
169+
/**
170+
* Sets active vector dataset for rendering.
171+
*
172+
* If dataset is not vector based, do nothing. Triggers repaint
173+
*/
174+
void setActiveVectorDataset( int index = NO_ACTIVE_MESH_DATASET );
165175
//! Returns active vector dataset
166176
int activeVectorDataset() const { return mActiveVectorDataset; }
167177

@@ -204,10 +214,10 @@ class CORE_EXPORT QgsMeshLayer : public QgsMapLayer
204214
QgsMeshRendererVectorSettings mRendererVectorSettings;
205215

206216
//! index of active scalar dataset; -1 if none
207-
int mActiveScalarDataset = -1;
217+
int mActiveScalarDataset = NO_ACTIVE_MESH_DATASET;
208218

209219
//! index of active vector dataset; -1 if none
210-
int mActiveVectorDataset = -1;
220+
int mActiveVectorDataset = NO_ACTIVE_MESH_DATASET;
211221
};
212222

213223
#endif //QGSMESHLAYER_H

‎src/core/mesh/qgsmeshlayerrenderer.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,10 @@ void QgsMeshLayerRenderer::createMeshSymbol( std::unique_ptr<QgsSymbol> &symbol,
9292
void QgsMeshLayerRenderer::copyScalarDatasetValues( QgsMeshLayer *layer )
9393
{
9494
int datasetIndex = layer->activeScalarDataset();
95-
if ( datasetIndex != -1 )
95+
if ( datasetIndex != NO_ACTIVE_MESH_DATASET )
9696
{
97-
mScalarDataOnVertices = layer->dataProvider()->datasetIsOnVertices( datasetIndex );
97+
const QgsMeshDatasetMetadata metadata = layer->dataProvider()->datasetMetadata( datasetIndex );
98+
mScalarDataOnVertices = metadata.isOnVertices();
9899
int count;
99100
if ( mScalarDataOnVertices )
100101
count = mNativeMesh.vertices.count();
@@ -113,16 +114,18 @@ void QgsMeshLayerRenderer::copyScalarDatasetValues( QgsMeshLayer *layer )
113114
void QgsMeshLayerRenderer::copyVectorDatasetValues( QgsMeshLayer *layer )
114115
{
115116
int datasetIndex = layer->activeVectorDataset();
116-
if ( datasetIndex != -1 )
117+
if ( datasetIndex != NO_ACTIVE_MESH_DATASET )
117118
{
118-
bool isScalar = layer->dataProvider()->datasetHasScalarData( datasetIndex );
119+
const QgsMeshDatasetMetadata metadata = layer->dataProvider()->datasetMetadata( datasetIndex );
120+
121+
bool isScalar = metadata.isScalar();
119122
if ( isScalar )
120123
{
121124
QgsDebugMsg( "Dataset has no vector values" );
122125
}
123126
else
124127
{
125-
mVectorDataOnVertices = layer->dataProvider()->datasetIsOnVertices( datasetIndex );
128+
mVectorDataOnVertices = metadata.isOnVertices();
126129
int count;
127130
if ( mVectorDataOnVertices )
128131
count = mNativeMesh.vertices.count();

‎src/core/mesh/qgsmeshmemorydataprovider.cpp

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -236,11 +236,6 @@ bool QgsMeshMemoryDataProvider::addDatasetValues( const QString &def, QgsMeshMem
236236
{
237237
point.setX( values[0].toDouble() );
238238
point.setY( values[1].toDouble() );
239-
if ( values.size() > 2 )
240-
{
241-
Q_ASSERT( false );
242-
//TODO Not implemented
243-
}
244239
}
245240
}
246241

@@ -322,35 +317,38 @@ int QgsMeshMemoryDataProvider::datasetCount() const
322317
return mDatasets.count();
323318
}
324319

325-
bool QgsMeshMemoryDataProvider::datasetHasScalarData( int index ) const
326-
{
327-
Q_ASSERT( datasetCount() > index );
328-
return mDatasets[index].isScalar;
329-
}
330-
331-
bool QgsMeshMemoryDataProvider::datasetIsOnVertices( int index ) const
332-
{
333-
Q_ASSERT( datasetCount() > index );
334-
return mDatasets[index].isOnVertices;
335-
}
336-
337320
QgsMeshDatasetMetadata QgsMeshMemoryDataProvider::datasetMetadata( int index ) const
338321
{
339-
Q_ASSERT( datasetCount() > index );
340-
return mDatasets[index].metadata;
322+
if ( ( index >= 0 ) && ( index < datasetCount() ) )
323+
{
324+
QgsMeshDatasetMetadata metadata(
325+
mDatasets[index].isScalar,
326+
mDatasets[index].valid,
327+
mDatasets[index].isOnVertices,
328+
mDatasets[index].metadata
329+
);
330+
return metadata;
331+
}
332+
else
333+
{
334+
return QgsMeshDatasetMetadata();
335+
}
341336
}
342337

343338
QgsMeshDatasetValue QgsMeshMemoryDataProvider::datasetValue( int datasetIndex, int valueIndex ) const
344339
{
345-
Q_ASSERT( datasetCount() > datasetIndex );
346-
Q_ASSERT( mDatasets[datasetIndex].values.count() > valueIndex );
347-
return mDatasets[datasetIndex].values[valueIndex];
340+
if ( ( datasetIndex >= 0 ) &&
341+
( datasetIndex < datasetCount() ) &&
342+
( valueIndex >= 0 ) &&
343+
( valueIndex < mDatasets[datasetIndex].values.count() ) )
344+
{
345+
return mDatasets[datasetIndex].values[valueIndex];
346+
}
347+
else
348+
{
349+
return QgsMeshDatasetValue();
350+
}
348351
}
349352

350-
bool QgsMeshMemoryDataProvider::datasetIsValid( int index ) const
351-
{
352-
Q_ASSERT( datasetCount() > index );
353-
return mDatasets[index].valid;
354-
}
355353

356354
///@endcond

‎src/core/mesh/qgsmeshmemorydataprovider.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,8 @@
3131

3232
struct QgsMeshMemoryDataset
3333
{
34-
QgsMeshDatasetMetadata metadata;
34+
QMap<QString, QString> metadata;
3535
QVector<QgsMeshDatasetValue> values;
36-
3736
bool isScalar = true;
3837
bool isOnVertices = true;
3938
bool valid = false;
@@ -111,11 +110,9 @@ class QgsMeshMemoryDataProvider: public QgsMeshDataProvider
111110
*/
112111
bool addDataset( const QString &uri ) override;
113112
int datasetCount() const override;
114-
bool datasetHasScalarData( int index ) const override;
115-
bool datasetIsOnVertices( int index ) const override;
116-
QgsMeshDatasetMetadata datasetMetadata( int index ) const override;
113+
114+
QgsMeshDatasetMetadata datasetMetadata( int datasetIndex ) const override;
117115
QgsMeshDatasetValue datasetValue( int datasetIndex, int valueIndex ) const override;
118-
bool datasetIsValid( int index ) const override;
119116

120117
//! Returns the memory provider key
121118
static QString providerKey();

‎src/core/mesh/qgsmeshrenderersettings.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,12 @@ void QgsMeshRendererVectorSettings::setFilterMax( double vectorFilterMax )
127127
mFilterMax = vectorFilterMax;
128128
}
129129

130-
QgsMeshRendererVectorSettings::VectorRenderingType QgsMeshRendererVectorSettings::shaftLengthMethod() const
130+
QgsMeshRendererVectorSettings::ArrowScalingMethod QgsMeshRendererVectorSettings::shaftLengthMethod() const
131131
{
132132
return mShaftLengthMethod;
133133
}
134134

135-
void QgsMeshRendererVectorSettings::setShaftLengthMethod( const QgsMeshRendererVectorSettings::VectorRenderingType &shaftLengthMethod )
135+
void QgsMeshRendererVectorSettings::setShaftLengthMethod( const QgsMeshRendererVectorSettings::ArrowScalingMethod &shaftLengthMethod )
136136
{
137137
mShaftLengthMethod = shaftLengthMethod;
138138
}

‎src/core/mesh/qgsmeshrenderersettings.h

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ class CORE_EXPORT QgsMeshRendererVectorSettings
127127
{
128128
public:
129129
//! Algorithm how to transform vector magnitude to length of arrow on the device in pixels
130-
enum VectorRenderingType
130+
enum ArrowScalingMethod
131131
{
132132

133133
/**
@@ -185,46 +185,64 @@ class CORE_EXPORT QgsMeshRendererVectorSettings
185185
void setFilterMax( double filterMax );
186186

187187
//! Returns method used for drawing arrows
188-
QgsMeshRendererVectorSettings::VectorRenderingType shaftLengthMethod() const;
188+
QgsMeshRendererVectorSettings::ArrowScalingMethod shaftLengthMethod() const;
189189
//! Sets method used for drawing arrows
190-
void setShaftLengthMethod( const QgsMeshRendererVectorSettings::VectorRenderingType &shaftLengthMethod );
190+
void setShaftLengthMethod( const QgsMeshRendererVectorSettings::ArrowScalingMethod &shaftLengthMethod );
191191

192192
/**
193193
* Returns mininimum shaft length (in millimeters)
194194
*
195-
* Only for QgsMeshRendererVectorSettings::ArrowType::MinMax
195+
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
196196
*/
197197
double minShaftLength() const;
198198

199199
/**
200200
* Sets mininimum shaft length (in millimeters)
201201
*
202-
* Only for QgsMeshRendererVectorSettings::ArrowType::MinMax
202+
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
203203
*/
204204
void setMinShaftLength( double minShaftLength );
205205

206206
/**
207207
* Returns maximum shaft length (in millimeters)
208208
*
209-
* Only for QgsMeshRendererVectorSettings::ArrowType::MinMax
209+
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
210210
*/
211211
double maxShaftLength() const;
212212

213213
/**
214214
* Sets maximum shaft length (in millimeters)
215215
*
216-
* Only for QgsMeshRendererVectorSettings::ArrowType::MinMax
216+
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
217217
*/
218218
void setMaxShaftLength( double maxShaftLength );
219219

220-
//! Returns scale factor. Only for QgsMeshRendererVectorSettings::ArrowType::Scaled
220+
/**
221+
* Returns scale factor
222+
*
223+
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Scaled
224+
*/
221225
double scaleFactor() const;
222-
//! Sets scale factor. Only for QgsMeshRendererVectorSettings::ArrowType::Scaled
226+
227+
/**
228+
* Sets scale factor
229+
*
230+
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Scaled
231+
*/
223232
void setScaleFactor( double scaleFactor );
224233

225-
//! Returns fixed arrow length (in millimeters). Only for QgsMeshRendererVectorSettings::ArrowType::Fixed
234+
/**
235+
* Returns fixed arrow length (in millimeters)
236+
*
237+
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Fixed
238+
*/
226239
double fixedShaftLength() const;
227-
//! Sets fixed length (in millimeters). Only for QgsMeshRendererVectorSettings::ArrowType::Fixed
240+
241+
/**
242+
* Sets fixed length (in millimeters)
243+
*
244+
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Fixed
245+
*/
228246
void setFixedShaftLength( double fixedShaftLength );
229247

230248
//! Returns ratio of the head width of the arrow (range 0-1)
@@ -242,7 +260,7 @@ class CORE_EXPORT QgsMeshRendererVectorSettings
242260
QColor mColor = Qt::black;
243261
double mFilterMin = -1; //disabled
244262
double mFilterMax = -1; //disabled
245-
QgsMeshRendererVectorSettings::VectorRenderingType mShaftLengthMethod = QgsMeshRendererVectorSettings::VectorRenderingType::MinMax;
263+
QgsMeshRendererVectorSettings::ArrowScalingMethod mShaftLengthMethod = QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax;
246264
double mMinShaftLength = 0.8; //in milimeters
247265
double mMaxShaftLength = 10; //in milimeters
248266
double mScaleFactor = 10;

‎src/core/mesh/qgsmeshvectorrenderer.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ bool QgsMeshVectorRenderer::calcVectorLineEnd(
118118
double yDist = 0.0;
119119
switch ( mCfg.shaftLengthMethod() )
120120
{
121-
case QgsMeshRendererVectorSettings::VectorRenderingType::MinMax:
121+
case QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax:
122122
{
123123
double minShaftLength = mContext.convertToPainterUnits( mCfg.minShaftLength(),
124124
QgsUnitTypes::RenderUnit::RenderMillimeters );
@@ -132,14 +132,14 @@ bool QgsMeshVectorRenderer::calcVectorLineEnd(
132132
yDist = sinAlpha * L;
133133
break;
134134
}
135-
case QgsMeshRendererVectorSettings::VectorRenderingType::Scaled:
135+
case QgsMeshRendererVectorSettings::ArrowScalingMethod::Scaled:
136136
{
137137
double scaleFactor = mCfg.scaleFactor();
138138
xDist = scaleFactor * xVal;
139139
yDist = scaleFactor * yVal;
140140
break;
141141
}
142-
case QgsMeshRendererVectorSettings::VectorRenderingType::Fixed:
142+
case QgsMeshRendererVectorSettings::ArrowScalingMethod::Fixed:
143143
{
144144
// We must be using a fixed length
145145
double fixedShaftLength = mContext.convertToPainterUnits( mCfg.fixedShaftLength(),

‎src/providers/mdal/qgsmdalprovider.cpp

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -109,65 +109,63 @@ int QgsMdalProvider::datasetCount() const
109109
return MDAL_M_datasetCount( mMeshH );
110110
}
111111

112-
bool QgsMdalProvider::datasetHasScalarData( int index ) const
112+
QgsMeshDatasetMetadata QgsMdalProvider::datasetMetadata( int datasetIndex ) const
113113
{
114-
Q_ASSERT( index < mDatasets.length() );
115-
DatasetH dataset = mDatasets[index];
116-
return MDAL_D_hasScalarData( dataset );
117-
}
114+
if ( datasetIndex >= mDatasets.length() )
115+
return QgsMeshDatasetMetadata();
118116

119-
bool QgsMdalProvider::datasetIsOnVertices( int index ) const
120-
{
121-
Q_ASSERT( index < mDatasets.length() );
122-
DatasetH dataset = mDatasets[index];
123-
return MDAL_D_isOnVertices( dataset );
124-
}
117+
if ( datasetIndex < 0 )
118+
return QgsMeshDatasetMetadata();
125119

126-
QgsMeshDatasetMetadata QgsMdalProvider::datasetMetadata( int index ) const
127-
{
128-
Q_ASSERT( index < mDatasets.length() );
129-
DatasetH dataset = mDatasets[index];
130-
QgsMeshDatasetMetadata meta;
120+
DatasetH dataset = mDatasets[datasetIndex];
121+
122+
bool isScalar = MDAL_D_hasScalarData( dataset );
123+
bool isValid = MDAL_D_isValid( dataset );
124+
bool isOnVertices = MDAL_D_isOnVertices( dataset );
131125

126+
QMap<QString, QString> metadata;
132127
int n = MDAL_D_metadataCount( dataset );
133128
for ( int i = 0; i < n; ++i )
134129
{
135130
QString key = MDAL_D_metadataKey( dataset, i );
136131
QString value = MDAL_D_metadataValue( dataset, i );
137-
meta[key] = value;
132+
metadata[key] = value;
138133
}
139134

135+
QgsMeshDatasetMetadata meta(
136+
isScalar,
137+
isValid,
138+
isOnVertices,
139+
metadata
140+
);
141+
140142
return meta;
141143
}
142144

143145
QgsMeshDatasetValue QgsMdalProvider::datasetValue( int datasetIndex, int valueIndex ) const
144146
{
145-
Q_ASSERT( datasetIndex < mDatasets.length() );
146-
DatasetH dataset = mDatasets[datasetIndex];
147+
if ( datasetIndex >= mDatasets.length() )
148+
return QgsMeshDatasetValue();
149+
150+
if ( datasetIndex < 0 )
151+
return QgsMeshDatasetValue();
147152

153+
DatasetH dataset = mDatasets[datasetIndex];
148154
QgsMeshDatasetValue val;
149155

150-
if ( datasetHasScalarData( datasetIndex ) )
156+
if ( MDAL_D_hasScalarData( dataset ) )
151157
{
152158
val.setX( MDAL_D_value( dataset, valueIndex ) );
153159
}
154160
else
155161
{
156162
val.setX( MDAL_D_valueX( dataset, valueIndex ) );
157-
val.setY( MDAL_D_valueX( dataset, valueIndex ) );
163+
val.setY( MDAL_D_valueY( dataset, valueIndex ) );
158164
}
159165

160166
return val;
161167
}
162168

163-
bool QgsMdalProvider::datasetIsValid( int index ) const
164-
{
165-
Q_ASSERT( index < mDatasets.length() );
166-
DatasetH dataset = mDatasets[index];
167-
return MDAL_D_isValid( dataset );
168-
}
169-
170-
171169
void QgsMdalProvider::refreshDatasets()
172170
{
173171
mDatasets.clear();

‎src/providers/mdal/qgsmdalprovider.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,8 @@ class QgsMdalProvider : public QgsMeshDataProvider
5959

6060
bool addDataset( const QString &uri ) override;
6161
int datasetCount() const override;
62-
bool datasetHasScalarData( int index ) const override;
63-
bool datasetIsOnVertices( int index ) const override;
64-
QgsMeshDatasetMetadata datasetMetadata( int index ) const override;
62+
QgsMeshDatasetMetadata datasetMetadata( int datasetIndex ) const override;
6563
QgsMeshDatasetValue datasetValue( int datasetIndex, int valueIndex ) const override;
66-
bool datasetIsValid( int index ) const override;
6764
private:
6865
void refreshDatasets();
6966

‎tests/src/core/testqgsmeshlayer.cpp

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,14 @@ void TestQgsMeshLayer::test_read_vertex_scalar_dataset()
151151

152152
QCOMPARE( 4, dp->datasetCount() );
153153

154-
QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
155-
QCOMPARE( meta.count(), 2 );
156-
QCOMPARE( meta["name"], QString( "VertexScalarDataset" ) );
157-
QVERIFY( qgsDoubleNear( meta["time"].toDouble(), 0.0 ) );
154+
const QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
155+
QCOMPARE( meta.extraOptions().count(), 2 );
156+
QCOMPARE( meta.extraOptions()["name"], QString( "VertexScalarDataset" ) );
157+
QVERIFY( qgsDoubleNear( meta.extraOptions()["time"].toDouble(), 0.0 ) );
158158

159-
QVERIFY( dp->datasetIsValid( ds ) );
160-
QVERIFY( dp->datasetHasScalarData( ds ) );
161-
QVERIFY( dp->datasetIsOnVertices( ds ) );
159+
QVERIFY( meta.isValid() );
160+
QVERIFY( meta.isScalar() );
161+
QVERIFY( meta.isOnVertices() );
162162

163163
// We have 5 values, since dp->vertexCount() = 5
164164
QCOMPARE( QgsMeshDatasetValue( 1.0 ), dp->datasetValue( ds, 0 ) );
@@ -183,14 +183,14 @@ void TestQgsMeshLayer::test_read_vertex_vector_dataset()
183183

184184
QCOMPARE( 4, dp->datasetCount() );
185185

186-
QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
187-
QCOMPARE( meta.count(), 2 );
188-
QCOMPARE( meta["name"], QString( "VertexVectorDataset" ) );
189-
QVERIFY( qgsDoubleNear( meta["time"].toDouble(), 0.0 ) );
186+
const QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
187+
QCOMPARE( meta.extraOptions().count(), 2 );
188+
QCOMPARE( meta.extraOptions()["name"], QString( "VertexVectorDataset" ) );
189+
QVERIFY( qgsDoubleNear( meta.extraOptions()["time"].toDouble(), 0.0 ) );
190190

191-
QVERIFY( dp->datasetIsValid( ds ) );
192-
QVERIFY( !dp->datasetHasScalarData( ds ) );
193-
QVERIFY( dp->datasetIsOnVertices( ds ) );
191+
QVERIFY( meta.isValid() );
192+
QVERIFY( !meta.isScalar() );
193+
QVERIFY( meta.isOnVertices() );
194194

195195
// We have 5 values, since dp->vertexCount() = 5
196196
QCOMPARE( QgsMeshDatasetValue( 1, 1 ), dp->datasetValue( ds, 0 ) );
@@ -215,14 +215,14 @@ void TestQgsMeshLayer::test_read_face_scalar_dataset()
215215

216216
QCOMPARE( 4, dp->datasetCount() );
217217

218-
QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
219-
QCOMPARE( meta.count(), 2 );
220-
QCOMPARE( meta["name"], QString( "FaceScalarDataset" ) );
221-
QVERIFY( qgsDoubleNear( meta["time"].toDouble(), 0.0 ) );
218+
const QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
219+
QCOMPARE( meta.extraOptions().count(), 2 );
220+
QCOMPARE( meta.extraOptions()["name"], QString( "FaceScalarDataset" ) );
221+
QVERIFY( qgsDoubleNear( meta.extraOptions()["time"].toDouble(), 0.0 ) );
222222

223-
QVERIFY( dp->datasetIsValid( ds ) );
224-
QVERIFY( dp->datasetHasScalarData( ds ) );
225-
QVERIFY( !dp->datasetIsOnVertices( ds ) );
223+
QVERIFY( meta.isValid() );
224+
QVERIFY( meta.isScalar() );
225+
QVERIFY( !meta.isOnVertices() );
226226

227227
// We have 2 values, since dp->faceCount() = 2
228228
QCOMPARE( QgsMeshDatasetValue( 1 ), dp->datasetValue( ds, 0 ) );
@@ -245,14 +245,14 @@ void TestQgsMeshLayer::test_read_face_vector_dataset()
245245

246246
QCOMPARE( 4, dp->datasetCount() );
247247

248-
QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
249-
QCOMPARE( meta.count(), 2 );
250-
QCOMPARE( meta["name"], QString( "FaceVectorDataset" ) );
251-
QVERIFY( qgsDoubleNear( meta["time"].toDouble(), 0.0 ) );
248+
const QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
249+
QCOMPARE( meta.extraOptions().count(), 2 );
250+
QCOMPARE( meta.extraOptions()["name"], QString( "FaceVectorDataset" ) );
251+
QVERIFY( qgsDoubleNear( meta.extraOptions()["time"].toDouble(), 0.0 ) );
252252

253-
QVERIFY( dp->datasetIsValid( ds ) );
254-
QVERIFY( !dp->datasetHasScalarData( ds ) );
255-
QVERIFY( !dp->datasetIsOnVertices( ds ) );
253+
QVERIFY( meta.isValid() );
254+
QVERIFY( !meta.isScalar() );
255+
QVERIFY( !meta.isOnVertices() );
256256

257257
// We have 2 values, since dp->faceCount() = 2
258258
QCOMPARE( QgsMeshDatasetValue( 1, 1 ), dp->datasetValue( ds, 0 ) );

‎tests/src/core/testqgsmeshlayerrenderer.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -157,17 +157,17 @@ void TestQgsMeshRenderer::test_vertex_scalar_dataset_rendering()
157157
{
158158
int ds = 0;
159159
mMemoryLayer->setActiveScalarDataset( ds );
160-
QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
161-
QVERIFY( metadata["name"] == "VertexScalarDataset" );
160+
const QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
161+
QVERIFY( metadata.extraOptions()["name"] == "VertexScalarDataset" );
162162
QVERIFY( imageCheck( "quad_and_triangle_vertex_scalar_dataset" ) );
163163
}
164164

165165
void TestQgsMeshRenderer::test_vertex_vector_dataset_rendering()
166166
{
167167
int ds = 1;
168168
mMemoryLayer->setActiveVectorDataset( ds );
169-
QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
170-
QVERIFY( metadata["name"] == "VertexVectorDataset" );
169+
const QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
170+
QVERIFY( metadata.extraOptions()["name"] == "VertexVectorDataset" );
171171

172172
QgsMeshRendererVectorSettings settings = mMemoryLayer->rendererVectorSettings();
173173
settings.setMinShaftLength( 15 );
@@ -180,17 +180,17 @@ void TestQgsMeshRenderer::test_face_scalar_dataset_rendering()
180180
{
181181
int ds = 2;
182182
mMemoryLayer->setActiveScalarDataset( ds );
183-
QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
184-
QVERIFY( metadata["name"] == "FaceScalarDataset" );
183+
const QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
184+
QVERIFY( metadata.extraOptions()["name"] == "FaceScalarDataset" );
185185
QVERIFY( imageCheck( "quad_and_triangle_face_scalar_dataset" ) );
186186
}
187187

188188
void TestQgsMeshRenderer::test_face_vector_dataset_rendering()
189189
{
190190
int ds = 3;
191191
mMemoryLayer->setActiveVectorDataset( ds );
192-
QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
193-
QVERIFY( metadata["name"] == "FaceVectorDataset" );
192+
const QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
193+
QVERIFY( metadata.extraOptions()["name"] == "FaceVectorDataset" );
194194
QVERIFY( imageCheck( "quad_and_triangle_face_vector_dataset" ) );
195195
}
196196

0 commit comments

Comments
 (0)
Please sign in to comment.