/
qgsmdalprovider.h
103 lines (86 loc) · 3.58 KB
/
qgsmdalprovider.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/***************************************************************************
qgsmdalprovider.h
-----------------
begin : April 2018
copyright : (C) 2018 by Peter Petrik
email : zilolv at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSMDALPROVIDER_H
#define QGSMDALPROVIDER_H
#include <QString>
#include <QVector>
#include <QStringList>
#include <mdal.h>
#include "qgscoordinatereferencesystem.h"
#include "qgsmeshdataprovider.h"
class QMutex;
class QgsCoordinateTransform;
class QgsCoordinateReferenceSystem;
/**
\brief Data provider for MDAL layers.
*/
class QgsMdalProvider : public QgsMeshDataProvider
{
Q_OBJECT
public:
/**
* Constructor for the provider.
*
* \param uri file name
* \param options generic provider options
*/
QgsMdalProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options );
~QgsMdalProvider() override;
bool isValid() const override;
QString name() const override;
QString description() const override;
QgsCoordinateReferenceSystem crs() const override;
int vertexCount() const override;
int faceCount() const override;
void populateMesh( QgsMesh *mesh ) const override;
bool addDataset( const QString &uri ) override;
QStringList extraDatasets() const override;
int datasetGroupCount() const override;
int datasetCount( int groupIndex ) const override;
QgsMeshDatasetGroupMetadata datasetGroupMetadata( int groupIndex ) const override;
QgsMeshDatasetMetadata datasetMetadata( QgsMeshDatasetIndex index ) const override;
QgsMeshDatasetValue datasetValue( QgsMeshDatasetIndex index, int valueIndex ) const override;
QgsMeshDataBlock datasetValues( QgsMeshDatasetIndex index, int valueIndex, int count ) const override;
bool isFaceActive( QgsMeshDatasetIndex index, int faceIndex ) const override;
QgsMeshDataBlock areFacesActive( QgsMeshDatasetIndex index, int faceIndex, int count ) const override;
QgsRectangle extent() const override;
/**
* Returns file filters for meshes and datasets to be used in Open File Dialogs
* \param fileMeshFiltersString file mesh filters
* \param fileMeshDatasetFiltersString file mesh datasets filters
*
* \see fileMeshExtensions()
*
* \since QGIS 3.6
*/
static void fileMeshFilters( QString &fileMeshFiltersString, QString &fileMeshDatasetFiltersString );
/**
* Returns file extensions for meshes and datasets
* \param fileMeshExtensions file mesh extensions
* \param fileMeshDatasetExtensions file mesh datasets extensions
*
* \see fileMeshFilters()
*
* \since QGIS 3.6
*/
static void fileMeshExtensions( QStringList &fileMeshExtensions, QStringList &fileMeshDatasetExtensions );
private:
QVector<QgsMeshVertex> vertices( ) const;
QVector<QgsMeshFace> faces( ) const;
MeshH mMeshH;
QStringList mExtraDatasetUris;
QgsCoordinateReferenceSystem mCrs;
};
#endif //QGSMDALPROVIDER_H