Skip to content

Commit 1efdbc5

Browse files
committedApr 19, 2018
fix build errors, use MDAL 0.0.2 (int API)
1 parent 50422a1 commit 1efdbc5

27 files changed

+227
-253
lines changed
 

‎external/mdal/api/mdal.h

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,8 @@
3636
extern "C" {
3737
#endif
3838

39-
#include <stddef.h>
40-
4139
/* Statuses */
42-
enum Status
40+
enum MDAL_Status
4341
{
4442
None,
4543
// Errors
@@ -57,32 +55,32 @@ enum Status
5755
Warn_NodeNotUnique
5856
};
5957

60-
/* Mesh */
58+
//! Mesh
6159
typedef void *MeshH;
6260

6361
//! Return MDAL version
6462
MDAL_EXPORT const char *MDAL_Version();
6563

6664
//! Return last status message
67-
MDAL_EXPORT Status MDAL_LastStatus();
65+
MDAL_EXPORT MDAL_Status MDAL_LastStatus();
6866

6967
//! Load mesh file. On error see MDAL_LastStatus for error type This effectively loads whole mesh in-memory
7068
MDAL_EXPORT MeshH MDAL_LoadMesh( const char *meshFile );
7169
//! Close mesh, free the memory
7270
MDAL_EXPORT void MDAL_CloseMesh( MeshH mesh );
7371

7472
//! Return vertex count for the mesh
75-
MDAL_EXPORT size_t MDAL_M_vertexCount( MeshH mesh );
73+
MDAL_EXPORT int MDAL_M_vertexCount( MeshH mesh );
7674
//! Return vertex X coord for the mesh
77-
MDAL_EXPORT double MDAL_M_vertexXCoordinatesAt( MeshH mesh, size_t index );
75+
MDAL_EXPORT double MDAL_M_vertexXCoordinatesAt( MeshH mesh, int index );
7876
//! Return vertex Y coord for the mesh
79-
MDAL_EXPORT double MDAL_M_vertexYCoordinatesAt( MeshH mesh, size_t index );
77+
MDAL_EXPORT double MDAL_M_vertexYCoordinatesAt( MeshH mesh, int index );
8078
//! Return face count for the mesh
81-
MDAL_EXPORT size_t MDAL_M_faceCount( MeshH mesh );
79+
MDAL_EXPORT int MDAL_M_faceCount( MeshH mesh );
8280
//! Return number of vertices face consist of, e.g. 3 for triangle
83-
MDAL_EXPORT size_t MDAL_M_faceVerticesCountAt( MeshH mesh, size_t index );
81+
MDAL_EXPORT int MDAL_M_faceVerticesCountAt( MeshH mesh, int index );
8482
//! Return vertex index for face
85-
MDAL_EXPORT size_t MDAL_M_faceVerticesIndexAt( MeshH mesh, size_t face_index, size_t vertex_index );
83+
MDAL_EXPORT int MDAL_M_faceVerticesIndexAt( MeshH mesh, int face_index, int vertex_index );
8684

8785
#ifdef __cplusplus
8886
}

‎external/mdal/frmts/mdal_2dm.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,21 @@ MDAL::Loader2dm::Loader2dm( const std::string &meshFile ):
2222
{
2323
}
2424

25-
MDAL::Mesh *MDAL::Loader2dm::load( Status *status )
25+
MDAL::Mesh *MDAL::Loader2dm::load( MDAL_Status *status )
2626
{
27-
if ( status ) *status = Status::None;
27+
if ( status ) *status = MDAL_Status::None;
2828

2929
if ( !MDAL::fileExists( mMeshFile ) )
3030
{
31-
if ( status ) *status = Status::Err_FileNotFound;
31+
if ( status ) *status = MDAL_Status::Err_FileNotFound;
3232
return 0;
3333
}
3434

3535
std::ifstream in( mMeshFile, std::ifstream::in );
3636
std::string line;
3737
if ( !std::getline( in, line ) || !startsWith( line, "MESH2D" ) )
3838
{
39-
if ( status ) *status = Status::Err_UnknownFormat;
39+
if ( status ) *status = MDAL_Status::Err_UnknownFormat;
4040
return 0;
4141
}
4242

@@ -61,7 +61,7 @@ MDAL::Mesh *MDAL::Loader2dm::load( Status *status )
6161
startsWith( line, "E8Q" ) ||
6262
startsWith( line, "E9Q" ) )
6363
{
64-
if ( status ) *status = Status::Warn_UnsupportedElement;
64+
if ( status ) *status = MDAL_Status::Warn_UnsupportedElement;
6565
elemCount += 1; // We still count them as elements
6666
}
6767
}
@@ -92,7 +92,7 @@ MDAL::Mesh *MDAL::Loader2dm::load( Status *status )
9292
std::map<size_t, size_t>::iterator search = elemIDtoIndex.find( elemID );
9393
if ( search != elemIDtoIndex.end() )
9494
{
95-
if ( status ) *status = Status::Warn_ElementNotUnique;
95+
if ( status ) *status = MDAL_Status::Warn_ElementNotUnique;
9696
continue;
9797
}
9898
elemIDtoIndex[elemID] = elemIndex;
@@ -114,7 +114,7 @@ MDAL::Mesh *MDAL::Loader2dm::load( Status *status )
114114
std::map<size_t, size_t>::iterator search = elemIDtoIndex.find( elemID );
115115
if ( search != elemIDtoIndex.end() )
116116
{
117-
if ( status ) *status = Status::Warn_ElementNotUnique;
117+
if ( status ) *status = MDAL_Status::Warn_ElementNotUnique;
118118
continue;
119119
}
120120
elemIDtoIndex[elemID] = elemIndex;
@@ -143,7 +143,7 @@ MDAL::Mesh *MDAL::Loader2dm::load( Status *status )
143143
std::map<size_t, size_t>::iterator search = elemIDtoIndex.find( elemID );
144144
if ( search != elemIDtoIndex.end() )
145145
{
146-
if ( status ) *status = Status::Warn_ElementNotUnique;
146+
if ( status ) *status = MDAL_Status::Warn_ElementNotUnique;
147147
continue;
148148
}
149149
elemIDtoIndex[elemID] = elemIndex;
@@ -159,7 +159,7 @@ MDAL::Mesh *MDAL::Loader2dm::load( Status *status )
159159
std::map<size_t, size_t>::iterator search = nodeIDtoIndex.find( nodeID );
160160
if ( search != nodeIDtoIndex.end() )
161161
{
162-
if ( status ) *status = Status::Warn_NodeNotUnique;
162+
if ( status ) *status = MDAL_Status::Warn_NodeNotUnique;
163163
continue;
164164
}
165165
nodeIDtoIndex[nodeID] = nodeIndex;
@@ -188,7 +188,7 @@ MDAL::Mesh *MDAL::Loader2dm::load( Status *status )
188188
{
189189
assert( false ); //TODO mark element as unusable
190190

191-
if ( status ) *status = Status::Warn_ElementWithInvalidNode;
191+
if ( status ) *status = MDAL_Status::Warn_ElementWithInvalidNode;
192192
}
193193
}
194194

‎external/mdal/frmts/mdal_2dm.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace MDAL
1818
{
1919
public:
2020
Loader2dm( const std::string &meshFile );
21-
Mesh *load( Status *status );
21+
Mesh *load( MDAL_Status *status );
2222

2323
private:
2424
std::string mMeshFile;

‎external/mdal/mdal.cpp

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
#include "mdal_loader.hpp"
77
#include "mdal_defines.hpp"
88

9-
static Status sLastStatus;
9+
static MDAL_Status sLastStatus;
1010

1111
const char *MDAL_Version()
1212
{
13-
return "0.0.1";
13+
return "0.0.2";
1414
}
1515

16-
Status MDAL_LastStatus()
16+
MDAL_Status MDAL_LastStatus()
1717
{
1818
return sLastStatus;
1919
}
@@ -38,49 +38,63 @@ void MDAL_CloseMesh( MeshH mesh )
3838
}
3939

4040

41-
size_t MDAL_M_vertexCount( MeshH mesh )
41+
int MDAL_M_vertexCount( MeshH mesh )
4242
{
4343
assert( mesh );
4444
MDAL::Mesh *m = ( MDAL::Mesh * ) mesh;
45-
return m->vertices.size();
45+
int len = static_cast<int>( m->vertices.size() );
46+
return len;
4647
}
4748

48-
double MDAL_M_vertexXCoordinatesAt( MeshH mesh, size_t index )
49+
double MDAL_M_vertexXCoordinatesAt( MeshH mesh, int index )
4950
{
5051
assert( mesh );
5152
MDAL::Mesh *m = ( MDAL::Mesh * ) mesh;
52-
assert( m->vertices.size() > index );
53-
return m->vertices[index].x;
53+
assert( index > -1 );
54+
size_t i = static_cast<size_t>( index );
55+
assert( m->vertices.size() > i );
56+
return m->vertices[i].x;
5457
}
5558

56-
double MDAL_M_vertexYCoordinatesAt( MeshH mesh, size_t index )
59+
double MDAL_M_vertexYCoordinatesAt( MeshH mesh, int index )
5760
{
5861
assert( mesh );
5962
MDAL::Mesh *m = ( MDAL::Mesh * ) mesh;
60-
assert( m->vertices.size() > index );
61-
return m->vertices[index].y;
63+
assert( index > -1 );
64+
size_t i = static_cast<size_t>( index );
65+
assert( m->vertices.size() > i );
66+
return m->vertices[i].y;
6267
}
6368

64-
size_t MDAL_M_faceCount( MeshH mesh )
69+
int MDAL_M_faceCount( MeshH mesh )
6570
{
6671
assert( mesh );
6772
MDAL::Mesh *m = ( MDAL::Mesh * ) mesh;
68-
return m->faces.size();
73+
int len = static_cast<int>( m->faces.size() );
74+
return len;
6975
}
7076

71-
size_t MDAL_M_faceVerticesCountAt( MeshH mesh, size_t index )
77+
int MDAL_M_faceVerticesCountAt( MeshH mesh, int index )
7278
{
7379
assert( mesh );
7480
MDAL::Mesh *m = ( MDAL::Mesh * ) mesh;
75-
assert( m->faces.size() > index );
76-
return m->faces[index].size();
81+
assert( index > -1 );
82+
size_t i = static_cast<size_t>( index );
83+
assert( m->faces.size() > i );
84+
int len = static_cast<int>( m->faces[i].size() );
85+
return len;
7786
}
7887

79-
size_t MDAL_M_faceVerticesIndexAt( MeshH mesh, size_t face_index, size_t vertex_index )
88+
int MDAL_M_faceVerticesIndexAt( MeshH mesh, int face_index, int vertex_index )
8089
{
8190
assert( mesh );
8291
MDAL::Mesh *m = ( MDAL::Mesh * ) mesh;
83-
assert( m->faces.size() > face_index );
84-
assert( m->faces[face_index].size() > vertex_index );
85-
return m->faces[face_index][vertex_index];
92+
assert( face_index > -1 );
93+
size_t fi = static_cast<size_t>( face_index );
94+
assert( m->faces.size() > fi );
95+
assert( vertex_index > -1 );
96+
size_t vi = static_cast<size_t>( vertex_index );
97+
assert( m->faces[fi].size() > vi );
98+
int len = static_cast<int>( m->faces[fi][vi] );
99+
return len;
86100
}

‎external/mdal/mdal_loader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include "mdal_loader.hpp"
77
#include "frmts/mdal_2dm.hpp"
88

9-
MDAL::Mesh *MDAL::Loader::load( const std::string &meshFile, Status *status )
9+
MDAL::Mesh *MDAL::Loader::load( const std::string &meshFile, MDAL_Status *status )
1010
{
1111
MDAL::Loader2dm loader( meshFile );
1212
return loader.load( status );

‎external/mdal/mdal_loader.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace MDAL
1717
class Loader
1818
{
1919
public:
20-
static Mesh *load( const std::string &meshFile, Status *status );
20+
static Mesh *load( const std::string &meshFile, MDAL_Status *status );
2121
};
2222

2323
} // namespace MDAL
Lines changed: 78 additions & 0 deletions
Loading

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

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

1111

1212

13-
1413
typedef QgsPoint QgsMeshVertex; //xyz coords of vertex
15-
typedef QVector<size_t> QgsMeshFace; //list of vertex indexes
14+
typedef QVector<int> QgsMeshFace; //list of vertex indexes
1615

1716
class QgsMeshSource /Abstract/
1817
{
@@ -33,28 +32,28 @@ read on demand
3332
public:
3433
virtual ~QgsMeshSource();
3534

36-
virtual size_t vertexCount() const = 0;
35+
virtual int vertexCount() const = 0;
3736
%Docstring
38-
Return number of vertexes in the native mesh
37+
Return number of vertices in the native mesh
3938

40-
:return: Number of vertexes in the mesh
39+
:return: Number of vertices in the mesh
4140
%End
4241

43-
virtual size_t faceCount() const = 0;
42+
virtual int faceCount() const = 0;
4443
%Docstring
4544
Return number of faces in the native mesh
4645

4746
:return: Number of faces in the mesh
4847
%End
4948

50-
virtual QgsMeshVertex vertex( size_t index ) const = 0;
49+
virtual QgsMeshVertex vertex( int index ) const = 0;
5150
%Docstring
5251
Factory for mesh vertex with index
5352

5453
:return: new mesh vertex on index
5554
%End
5655

57-
virtual QgsMeshFace face( size_t index ) const = 0;
56+
virtual QgsMeshFace face( int index ) const = 0;
5857
%Docstring
5958
Factory for mesh face with index
6059

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

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

1111

1212

13-
14-
1513
class QgsMeshLayer : QgsMapLayer
1614
{
1715
%Docstring
@@ -90,29 +88,17 @@ parameters used by the data provider as url query items.
9088
virtual QgsMeshDataProvider *dataProvider();
9189

9290
%Docstring
93-
Return data provider
91+
QgsMeshLayer cannot be copied.
9492
%End
95-
96-
9793
virtual QgsMeshLayer *clone() const /Factory/;
9894

99-
%Docstring
100-
Returns a new instance equivalent to this one. A new provider is
101-
created for the same data source and renderers are cloned too.
102-
103-
:return: a new layer instance
104-
%End
105-
10695
virtual QgsRectangle extent() const;
10796

108-
%Docstring
109-
Returns the extent of the layer.
110-
%End
111-
11297
virtual QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) /Factory/;
113-
%Docstring
114-
Return new instance of QgsMapLayerRenderer that will be used for rendering of given context
115-
%End
98+
virtual bool readSymbology( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context );
99+
100+
virtual bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context ) const;
101+
116102

117103
QString providerType() const;
118104
%Docstring
@@ -138,30 +124,7 @@ Returns a line symbol used for rendering of triangular (derived) mesh.
138124
Toggle rendering of triangular (derived) mesh. Off by default
139125
%End
140126

141-
bool readSymbology( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context );
142-
%Docstring
143-
Read the symbology for the current layer from the Dom node supplied.
144-
145-
:param node: node that will contain the symbology definition for this layer.
146-
:param errorMessage: reference to string that will be updated with any error messages
147-
:param context: reading context (used for transform from relative to absolute paths)
148-
149-
:return: true in case of success.
150-
%End
151-
152-
bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context ) const;
153-
%Docstring
154-
Write the symbology for the layer into the docment provided.
155-
156-
:param node: the node that will have the style element added to it.
157-
:param doc: the document that will have the QDomNode added.
158-
:param errorMessage: reference to string that will be updated with any error messages
159-
:param context: writing context (used for transform from absolute to relative paths)
160-
161-
:return: true in case of success.
162-
%End
163-
164-
private: // Private methods
127+
private: // Private methods
165128
QgsMeshLayer( const QgsMeshLayer &rhs );
166129
};
167130

‎python/core/qgsdataitem.sip.in

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,9 @@ Returns the icon name of the given ``layerType``
472472
static QIcon iconRaster();
473473
static QIcon iconDefault();
474474
static QIcon iconMesh();
475+
%Docstring
476+
Return icon for mesh layer type
477+
%End
475478

476479
virtual QString layerName() const;
477480
%Docstring

‎src/core/mesh/qgsmeshdataprovider.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ QgsRectangle QgsMeshDataProvider::extent() const
2727
{
2828
QgsRectangle rec;
2929
rec.setMinimal();
30-
for ( size_t i = 0; i < vertexCount(); ++i )
30+
for ( int i = 0; i < vertexCount(); ++i )
3131
{
3232
QgsMeshVertex v = vertex( i );
3333
rec.setXMinimum( std::min( rec.xMinimum(), v.x() ) );

‎src/core/mesh/qgsmeshdataprovider.h

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,16 @@
1818
#ifndef QGSMESHDATAPROVIDER_H
1919
#define QGSMESHDATAPROVIDER_H
2020

21-
#include <cstddef>
22-
2321
#include "qgis_core.h"
24-
#include "qgis.h"
2522
#include "qgspoint.h"
2623
#include "qgsrectangle.h"
2724
#include "qgsdataprovider.h"
28-
#include "qgscoordinatereferencesystem.h"
2925

3026
#include <QVector>
31-
#include <QHash>
3227
#include <QString>
33-
#include <QVariant>
3428

3529
typedef QgsPoint QgsMeshVertex; //xyz coords of vertex
36-
typedef QVector<size_t> QgsMeshFace; //list of vertex indexes
30+
typedef QVector<int> QgsMeshFace; //list of vertex indexes
3731

3832
/**
3933
* \ingroup core
@@ -53,28 +47,28 @@ class CORE_EXPORT QgsMeshSource SIP_ABSTRACT
5347
virtual ~QgsMeshSource() = default;
5448

5549
/**
56-
* \brief Return number of vertexes in the native mesh
57-
* \returns Number of vertexes in the mesh
50+
* \brief Return number of vertices in the native mesh
51+
* \returns Number of vertices in the mesh
5852
*/
59-
virtual size_t vertexCount() const = 0;
53+
virtual int vertexCount() const = 0;
6054

6155
/**
6256
* \brief Return number of faces in the native mesh
6357
* \returns Number of faces in the mesh
6458
*/
65-
virtual size_t faceCount() const = 0;
59+
virtual int faceCount() const = 0;
6660

6761
/**
6862
* \brief Factory for mesh vertex with index
6963
* \returns new mesh vertex on index
7064
*/
71-
virtual QgsMeshVertex vertex( size_t index ) const = 0;
65+
virtual QgsMeshVertex vertex( int index ) const = 0;
7266

7367
/**
7468
* \brief Factory for mesh face with index
7569
* \returns new mesh face on index
7670
*/
77-
virtual QgsMeshFace face( size_t index ) const = 0;
71+
virtual QgsMeshFace face( int index ) const = 0;
7872
};
7973

8074
/**

‎src/core/mesh/qgsmeshlayer.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,18 @@
1414
* (at your option) any later version. *
1515
* *
1616
***************************************************************************/
17+
18+
#include <cstddef>
19+
1720
#include <QUuid>
1821

19-
#include "qgsmeshlayer.h"
20-
#include "qgis.h"
21-
#include "qgsmaplayerrenderer.h"
22+
#include "qgsfillsymbollayer.h"
23+
#include "qgslogger.h"
2224
#include "qgsmeshdataprovider.h"
25+
#include "qgsmeshlayer.h"
2326
#include "qgsmeshlayerrenderer.h"
24-
#include "qgstriangularmesh.h"
25-
#include "qgssinglesymbolrenderer.h"
26-
#include "qgsmeshmemorydataprovider.h"
27-
#include "qgsfillsymbollayer.h"
2827
#include "qgsproviderregistry.h"
29-
#include "qgslogger.h"
28+
#include "qgstriangularmesh.h"
3029

3130
QgsMeshLayer::QgsMeshLayer( const QString &meshLayerPath,
3231
const QString &baseName,
@@ -96,6 +95,14 @@ QString QgsMeshLayer::providerType() const
9695
return mProviderKey;
9796
}
9897

98+
QgsMesh *QgsMeshLayer::nativeMesh() SIP_SKIP {return mNativeMesh;}
99+
100+
QgsTriangularMesh *QgsMeshLayer::triangularMesh() SIP_SKIP {return mTriangularMesh;}
101+
102+
QgsSymbol *QgsMeshLayer::nativeMeshSymbol() {return mNativeMeshSymbol;}
103+
104+
QgsSymbol *QgsMeshLayer::triangularMeshSymbol() {return mTriangularMeshSymbol;}
105+
99106
void QgsMeshLayer::toggleTriangularMeshRendering( bool toggle )
100107
{
101108
if ( toggle && mTriangularMeshSymbol )
@@ -127,13 +134,13 @@ void QgsMeshLayer::fillNativeMesh()
127134
return;
128135

129136
mNativeMesh->vertices.resize( dataProvider()->vertexCount() );
130-
for ( size_t i = 0; i < dataProvider()->vertexCount(); ++i )
137+
for ( int i = 0; i < dataProvider()->vertexCount(); ++i )
131138
{
132139
mNativeMesh->vertices[i] = dataProvider()->vertex( i );
133140
}
134141

135142
mNativeMesh->faces.resize( dataProvider()->faceCount() );
136-
for ( size_t i = 0; i < dataProvider()->faceCount(); ++i )
143+
for ( int i = 0; i < dataProvider()->faceCount(); ++i )
137144
{
138145
mNativeMesh->faces[i] = dataProvider()->face( i );
139146
}

‎src/core/mesh/qgsmeshlayer.h

Lines changed: 8 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,12 @@
1919
#define QGSMESHLAYER_H
2020

2121
#include "qgis_core.h"
22-
#include <QMap>
23-
#include <QSet>
24-
#include <QSharedPointer>
25-
#include <QList>
26-
#include <QStringList>
27-
#include <QFont>
28-
#include <QMutex>
29-
30-
#include "qgis.h"
3122
#include "qgsmaplayer.h"
3223
#include "qgsrendercontext.h"
3324
#include "qgsmeshdataprovider.h"
3425

3526
class QgsMapLayerRenderer;
3627
class QgsSymbol;
37-
38-
class QgsMeshDataProvider;
39-
class QgsNativeMesh;
4028
class QgsTriangularMesh;
4129
struct QgsMesh;
4230

@@ -110,76 +98,43 @@ class CORE_EXPORT QgsMeshLayer : public QgsMapLayer
11098
* \param providerLib The name of the data provider, e.g., "mesh_memory", "mdal"
11199
*/
112100
explicit QgsMeshLayer( const QString &path = QString(), const QString &baseName = QString(), const QString &providerLib = "mesh_memory" );
113-
//! Dtor
114101
~QgsMeshLayer() override;
115102

116103
//! QgsMeshLayer cannot be copied.
117104
QgsMeshLayer( const QgsMeshLayer &rhs ) = delete;
118105
//! QgsMeshLayer cannot be copied.
119106
QgsMeshLayer &operator=( QgsMeshLayer const &rhs ) = delete;
120107

121-
//! Return data provider
122108
QgsMeshDataProvider *dataProvider() override;
123-
124-
//! Return const data provider
125109
const QgsMeshDataProvider *dataProvider() const override SIP_SKIP;
126-
127-
/**
128-
* Returns a new instance equivalent to this one. A new provider is
129-
* created for the same data source and renderers are cloned too.
130-
* \returns a new layer instance
131-
*/
132110
QgsMeshLayer *clone() const override SIP_FACTORY;
133-
134-
//! Returns the extent of the layer.
135111
QgsRectangle extent() const override;
136-
137-
/**
138-
* Return new instance of QgsMapLayerRenderer that will be used for rendering of given context
139-
*/
140-
virtual QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) SIP_FACTORY;
112+
virtual QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override SIP_FACTORY;
113+
bool readSymbology( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context ) override;
114+
bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context ) const override;
141115

142116
//! Return the provider type for this layer
143117
QString providerType() const;
144118

145119
//! return native mesh (nullprt before rendering)
146-
QgsMesh *nativeMesh() SIP_SKIP {return mNativeMesh;}
120+
QgsMesh *nativeMesh() SIP_SKIP;
147121

148122
//! return triangular mesh (nullprt before rendering)
149-
QgsTriangularMesh *triangularMesh() SIP_SKIP {return mTriangularMesh;}
123+
QgsTriangularMesh *triangularMesh() SIP_SKIP;
150124

151125
//! Returns a line symbol used for rendering native mesh.
152-
QgsSymbol *nativeMeshSymbol() {return mNativeMeshSymbol;}
126+
QgsSymbol *nativeMeshSymbol();
153127

154128
/**
155129
* Returns a line symbol used for rendering of triangular (derived) mesh.
156130
* \see toggleTriangularMeshRendering
157131
*/
158-
QgsSymbol *triangularMeshSymbol() {return mTriangularMeshSymbol;}
132+
QgsSymbol *triangularMeshSymbol();
159133

160134
//! Toggle rendering of triangular (derived) mesh. Off by default
161135
void toggleTriangularMeshRendering( bool toggle );
162136

163-
/**
164-
* Read the symbology for the current layer from the Dom node supplied.
165-
* \param node node that will contain the symbology definition for this layer.
166-
* \param errorMessage reference to string that will be updated with any error messages
167-
* \param context reading context (used for transform from relative to absolute paths)
168-
* \returns true in case of success.
169-
*/
170-
bool readSymbology( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context );
171-
172-
/**
173-
* Write the symbology for the layer into the docment provided.
174-
* \param node the node that will have the style element added to it.
175-
* \param doc the document that will have the QDomNode added.
176-
* \param errorMessage reference to string that will be updated with any error messages
177-
* \param context writing context (used for transform from absolute to relative paths)
178-
* \returns true in case of success.
179-
*/
180-
bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context ) const;
181-
182-
private: // Private methods
137+
private: // Private methods
183138

184139
/**
185140
* Returns true if the provider is in read-only mode

‎src/core/mesh/qgsmeshlayerrenderer.cpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,14 @@
1717

1818
#include "qgsmeshlayerrenderer.h"
1919

20-
#include "qgsrenderer.h"
21-
#include "qgsrendercontext.h"
22-
#include "qgsmeshlayer.h"
23-
#include "qgsexception.h"
24-
#include "qgslogger.h"
25-
#include "qgssettings.h"
26-
#include "qgssinglesymbolrenderer.h"
2720
#include "qgsfield.h"
28-
#include "qgstriangularmesh.h"
21+
#include "qgslogger.h"
22+
#include "qgsmeshlayer.h"
2923
#include "qgspointxy.h"
24+
#include "qgsrenderer.h"
25+
#include "qgssinglesymbolrenderer.h"
26+
#include "qgssymbol.h"
3027

31-
#include <QPicture>
3228

3329

3430
QgsMeshLayerRenderer::QgsMeshLayerRenderer( QgsMeshLayer *layer, QgsRenderContext &context )

‎src/core/mesh/qgsmeshlayerrenderer.h

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,15 @@
1818
#ifndef QGSMESHLAYERRENDERER_H
1919
#define QGSMESHLAYERRENDERER_H
2020

21-
class QgsRenderContext;
2221
class QgsMeshLayer;
23-
class QgsMeshVectorFieldRenderer;
24-
class QgsSingleSymbolRenderer;
25-
class QgsTriangularMesh;
2622
class QgsSymbol;
2723

2824
#define SIP_NO_FILE
2925

30-
#include <QList>
31-
#include <QPainter>
32-
3326
#include "qgis.h"
34-
#include "qgsfeedback.h"
3527

3628
#include "qgsmaplayerrenderer.h"
37-
#include "qgsmeshdataprovider.h"
29+
#include "qgsrendercontext.h"
3830
#include "qgstriangularmesh.h"
3931

4032
/**
@@ -47,9 +39,10 @@ class QgsSymbol;
4739
class QgsMeshLayerRenderer : public QgsMapLayerRenderer
4840
{
4941
public:
42+
//! Ctor
5043
QgsMeshLayerRenderer( QgsMeshLayer *layer, QgsRenderContext &context );
51-
~QgsMeshLayerRenderer() override;
5244

45+
~QgsMeshLayerRenderer() override;
5346
bool render() override;
5447

5548
private:

‎src/core/mesh/qgsmeshmemorydataprovider.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,7 @@
1414
* (at your option) any later version. *
1515
* *
1616
***************************************************************************/
17-
1817
#include "qgsmeshmemorydataprovider.h"
19-
#include <QFile>
20-
#include <QJsonDocument>
21-
#include <limits>
2218

2319
static const QString TEXT_PROVIDER_KEY = QStringLiteral( "mesh_memory" );
2420
static const QString TEXT_PROVIDER_DESCRIPTION = QStringLiteral( "Mesh memory provider" );
@@ -127,12 +123,18 @@ bool QgsMeshMemoryDataProvider::addFaces( const QString &def )
127123
for ( int j = 0; j < vertices.size(); ++j )
128124
{
129125
int vertex_id = vertices[j].toInt();
130-
face.push_back( vertex_id );
131-
if ( face[j] >= mVertices.size() )
126+
if ( vertex_id < 0 )
127+
{
128+
setError( QgsError( QStringLiteral( "Invalid mesh definition, vertex index must be positive value" ), QStringLiteral( "Mesh Memory Provider" ) ) );
129+
return false;
130+
}
131+
if ( mVertices.size() < vertex_id )
132132
{
133133
setError( QgsError( QStringLiteral( "Invalid mesh definition, missing vertex id defined in face" ), QStringLiteral( "Mesh Memory Provider" ) ) );
134134
return false;
135135
}
136+
137+
face.push_back( vertex_id );
136138
}
137139
faces.push_back( face );
138140
}
@@ -141,23 +143,23 @@ bool QgsMeshMemoryDataProvider::addFaces( const QString &def )
141143
return true;
142144
}
143145

144-
size_t QgsMeshMemoryDataProvider::vertexCount() const
146+
int QgsMeshMemoryDataProvider::vertexCount() const
145147
{
146148
return mVertices.size();
147149
}
148150

149-
size_t QgsMeshMemoryDataProvider::faceCount() const
151+
int QgsMeshMemoryDataProvider::faceCount() const
150152
{
151153
return mFaces.size();
152154
}
153155

154-
QgsMeshVertex QgsMeshMemoryDataProvider::vertex( size_t index ) const
156+
QgsMeshVertex QgsMeshMemoryDataProvider::vertex( int index ) const
155157
{
156158
Q_ASSERT( vertexCount() > index );
157159
return mVertices[index];
158160
}
159161

160-
QgsMeshFace QgsMeshMemoryDataProvider::face( size_t index ) const
162+
QgsMeshFace QgsMeshMemoryDataProvider::face( int index ) const
161163
{
162164
Q_ASSERT( faceCount() > index );
163165
return mFaces[index];

‎src/core/mesh/qgsmeshmemorydataprovider.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222

2323
///@cond PRIVATE
2424

25-
#include <cstddef>
26-
2725
#include <QString>
2826

2927
#include "qgis_core.h"
@@ -72,10 +70,10 @@ class QgsMeshMemoryDataProvider: public QgsMeshDataProvider
7270
QString description() const override;
7371
QgsCoordinateReferenceSystem crs() const override;
7472

75-
size_t vertexCount() const override;
76-
size_t faceCount() const override;
77-
QgsMeshVertex vertex( size_t index ) const override;
78-
QgsMeshFace face( size_t index ) const override;
73+
int vertexCount() const override;
74+
int faceCount() const override;
75+
QgsMeshVertex vertex( int index ) const override;
76+
QgsMeshFace face( int index ) const override;
7977

8078
//! Returns the memory provider key
8179
static QString providerKey();

‎src/core/mesh/qgstriangularmesh.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,8 @@
1616
***************************************************************************/
1717

1818
#include "qgstriangularmesh.h"
19-
#include "qgsmeshdataprovider.h"
2019
#include "qgsrendercontext.h"
21-
#include "qgscoordinatereferencesystem.h"
2220
#include "qgscoordinatetransform.h"
23-
#include "qgsmeshlayer.h"
24-
2521

2622
QgsTriangularMesh::QgsTriangularMesh( )
2723
{

‎src/core/mesh/qgstriangularmesh.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,10 @@
2121

2222
#define SIP_NO_FILE
2323

24-
#include <QList>
25-
#include <QPainter>
2624
#include <QVector>
2725

28-
#include "qgis.h"
2926
#include "qgis_core.h"
3027
#include "qgsmeshdataprovider.h"
31-
#include "qgscoordinatereferencesystem.h"
3228

3329
class QgsRenderContext;
3430

‎src/core/qgsdataitem.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ QIcon QgsLayerItem::iconRaster()
7676

7777
QIcon QgsLayerItem::iconMesh()
7878
{
79-
// TODO new icon!
8079
return QgsApplication::getThemeIcon( QStringLiteral( "/mIconPointLayer.svg" ) );
8180
}
8281

‎src/core/qgsdataitem.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,7 @@ class CORE_EXPORT QgsLayerItem : public QgsDataItem
499499
static QIcon iconTable();
500500
static QIcon iconRaster();
501501
static QIcon iconDefault();
502+
//! Return icon for mesh layer type
502503
static QIcon iconMesh();
503504

504505
//! \returns the layer name

‎src/providers/mdal/qgsmdaldataitems.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
#include "qgsdataitem.h"
1919

20+
#include <QString>
21+
2022
class QgsMdalLayerItem : public QgsLayerItem
2123
{
2224
Q_OBJECT

‎src/providers/mdal/qgsmdalprovider.cpp

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
***************************************************************************/
1717

1818
#include "qgsmdalprovider.h"
19-
#include <QFile>
20-
#include <QJsonDocument>
21-
#include <limits>
22-
#include "mdal.h"
2319

2420
static const QString TEXT_PROVIDER_KEY = QStringLiteral( "mdal" );
2521
static const QString TEXT_PROVIDER_DESCRIPTION = QStringLiteral( "MDAL provider" );
@@ -57,23 +53,23 @@ QgsMdalProvider::~QgsMdalProvider()
5753
MDAL_CloseMesh( mMeshH );
5854
}
5955

60-
size_t QgsMdalProvider::vertexCount() const
56+
int QgsMdalProvider::vertexCount() const
6157
{
6258
if ( mMeshH )
6359
return MDAL_M_vertexCount( mMeshH );
6460
else
65-
return ( size_t ) 0;
61+
return 0;
6662
}
6763

68-
size_t QgsMdalProvider::faceCount() const
64+
int QgsMdalProvider::faceCount() const
6965
{
7066
if ( mMeshH )
7167
return MDAL_M_faceCount( mMeshH );
7268
else
73-
return ( size_t ) 0;
69+
return 0;
7470
}
7571

76-
QgsMeshVertex QgsMdalProvider::vertex( size_t index ) const
72+
QgsMeshVertex QgsMdalProvider::vertex( int index ) const
7773
{
7874
Q_ASSERT( index < vertexCount() );
7975
double x = MDAL_M_vertexXCoordinatesAt( mMeshH, index );
@@ -82,12 +78,12 @@ QgsMeshVertex QgsMdalProvider::vertex( size_t index ) const
8278
return vertex;
8379
}
8480

85-
QgsMeshFace QgsMdalProvider::face( size_t index ) const
81+
QgsMeshFace QgsMdalProvider::face( int index ) const
8682
{
8783
Q_ASSERT( index < faceCount() );
8884
QgsMeshFace face;
8985
int n_face_vertices = MDAL_M_faceVerticesCountAt( mMeshH, index );
90-
for ( size_t j = 0; j < n_face_vertices; ++j )
86+
for ( int j = 0; j < n_face_vertices; ++j )
9187
{
9288
int vertex_index = MDAL_M_faceVerticesIndexAt( mMeshH, index, j );
9389
face.push_back( vertex_index );

‎src/providers/mdal/qgsmdalprovider.h

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,13 @@
1616
#ifndef QGSMDALPROVIDER_H
1717
#define QGSGDALPROVIDER_H
1818

19-
#include <cstddef>
20-
21-
#include "qgscoordinatereferencesystem.h"
22-
#include "qgsdataitem.h"
23-
#include "qgsmeshdataprovider.h"
24-
#include "qgsrectangle.h"
25-
2619
#include <QString>
27-
#include <QStringList>
28-
#include <QDomElement>
29-
#include <QMap>
30-
#include <QVector>
3120

3221
#include <mdal.h>
3322

23+
#include "qgscoordinatereferencesystem.h"
24+
#include "qgsmeshdataprovider.h"
25+
3426
class QMutex;
3527
class QgsCoordinateTransform;
3628

@@ -58,10 +50,10 @@ class QgsMdalProvider : public QgsMeshDataProvider
5850
QString description() const override;
5951
QgsCoordinateReferenceSystem crs() const override;
6052

61-
size_t vertexCount() const override;
62-
size_t faceCount() const override;
63-
QgsMeshVertex vertex( size_t index ) const override;
64-
QgsMeshFace face( size_t index ) const override;
53+
int vertexCount() const override;
54+
int faceCount() const override;
55+
QgsMeshVertex vertex( int index ) const override;
56+
QgsMeshFace face( int index ) const override;
6557

6658
private:
6759
MeshH mMeshH;

‎src/providers/ogr/qgsgeopackagedataitems.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ bool QgsGeoPackageCollectionItem::handleDrop( const QMimeData *data, Qt::DropAct
230230
}
231231
else if ( dropUri.layerType == QStringLiteral( "mesh" ) )
232232
{
233-
// unsuported
233+
// unsupported
234234
hasError = true;
235235
continue;
236236
}

‎tests/src/core/testqgsmeshlayer.cpp

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,13 @@
1818
#include "qgstest.h"
1919
#include <QObject>
2020
#include <QString>
21-
#include <QLabel>
22-
#include <QStringList>
23-
#include <QApplication>
24-
#include <QFileInfo>
25-
#include <QDir>
26-
#include <QDesktopServices>
2721

2822
//qgis includes...
2923
#include "qgsmaplayer.h"
3024
#include "qgsmeshlayer.h"
3125
#include "qgsapplication.h"
3226
#include "qgsproviderregistry.h"
3327
#include "qgsproject.h"
34-
#include "qgsmaprenderersequentialjob.h"
35-
#include "qgsmeshmemorydataprovider.h"
3628

3729
/**
3830
* \ingroup UnitTests
@@ -104,14 +96,14 @@ void TestQgsMeshLayer::test_data_provider()
10496
QVERIFY( dp->isValid() );
10597
QCOMPARE( expectedExtent, dp->extent() );
10698

107-
QCOMPARE( ( size_t ) 5, dp->vertexCount() );
99+
QCOMPARE( 5, dp->vertexCount() );
108100
QCOMPARE( QgsMeshVertex( 1000.0, 2000.0 ), dp->vertex( 0 ) );
109101
QCOMPARE( QgsMeshVertex( 2000.0, 2000.0 ), dp->vertex( 1 ) );
110102
QCOMPARE( QgsMeshVertex( 3000.0, 2000.0 ), dp->vertex( 2 ) );
111103
QCOMPARE( QgsMeshVertex( 2000.0, 3000.0 ), dp->vertex( 3 ) );
112104
QCOMPARE( QgsMeshVertex( 1000.0, 3000.0 ), dp->vertex( 4 ) );
113105

114-
QCOMPARE( ( size_t ) 2, dp->faceCount() );
106+
QCOMPARE( 2, dp->faceCount() );
115107
QgsMeshFace f1;
116108
f1 << 0 << 1 << 3 << 4;
117109
QCOMPARE( f1, dp->face( 0 ) );

0 commit comments

Comments
 (0)
Please sign in to comment.