mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
code cleanup
This commit is contained in:
parent
aea3dccea7
commit
3fc99c04c1
@ -14,14 +14,13 @@ typedef QgsPoint QgsMeshVertex;
|
||||
|
||||
typedef QVector<int> QgsMeshFace;
|
||||
|
||||
typedef QMap<QString, QString> QgsMeshDatasetMetadata;
|
||||
|
||||
class QgsMeshDatasetValue
|
||||
{
|
||||
%Docstring
|
||||
|
||||
QgsMeshDatasetValue is a vector or a scalar value on vertex or face of the mesh with
|
||||
support of nodata values
|
||||
QgsMeshDatasetValue represents single mesh dataset value
|
||||
|
||||
could be scalar or vector. Nodata values are represented by NaNs.
|
||||
|
||||
.. note::
|
||||
|
||||
@ -37,38 +36,21 @@ support of nodata values
|
||||
QgsMeshDatasetValue( double x,
|
||||
double y );
|
||||
%Docstring
|
||||
Ctor
|
||||
Constructor for vector value
|
||||
%End
|
||||
|
||||
QgsMeshDatasetValue( double scalar );
|
||||
%Docstring
|
||||
Ctor
|
||||
Constructor for scalar value
|
||||
%End
|
||||
|
||||
QgsMeshDatasetValue( );
|
||||
QgsMeshDatasetValue();
|
||||
%Docstring
|
||||
Ctor
|
||||
Default Ctor, initialize to NaN
|
||||
%End
|
||||
|
||||
~QgsMeshDatasetValue();
|
||||
|
||||
void setNodata( bool nodata = true );
|
||||
%Docstring
|
||||
Sets nodata value for this dataset value
|
||||
%End
|
||||
bool isNodata() const;
|
||||
%Docstring
|
||||
Returns whether it is nodata value
|
||||
%End
|
||||
bool isScalar() const;
|
||||
%Docstring
|
||||
Returns whether it is scalar value
|
||||
%End
|
||||
double scalar() const;
|
||||
%Docstring
|
||||
Returns scalar value. Length for vectors, value for scalars
|
||||
%End
|
||||
|
||||
void set( double scalar );
|
||||
%Docstring
|
||||
Sets scalar value
|
||||
@ -82,6 +64,11 @@ Sets X value
|
||||
void setY( double y );
|
||||
%Docstring
|
||||
Sets Y value
|
||||
%End
|
||||
|
||||
double scalar() const;
|
||||
%Docstring
|
||||
Returns magnitude of vector for vector data or scalar value for scalar data
|
||||
%End
|
||||
|
||||
double x() const;
|
||||
@ -98,6 +85,60 @@ Returns y value
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
class QgsMeshDatasetMetadata
|
||||
{
|
||||
%Docstring
|
||||
|
||||
QgsMeshDatasetMetadata is a collection of mesh dataset metadata such
|
||||
as if the data is vector or scalar, etc.
|
||||
|
||||
.. note::
|
||||
|
||||
The API is considered EXPERIMENTAL and can be changed without a notice
|
||||
|
||||
.. versionadded:: 3.2
|
||||
%End
|
||||
|
||||
%TypeHeaderCode
|
||||
#include "qgsmeshdataprovider.h"
|
||||
%End
|
||||
public:
|
||||
QgsMeshDatasetMetadata();
|
||||
QgsMeshDatasetMetadata( bool isScalar,
|
||||
bool isValid,
|
||||
bool isOnVertices,
|
||||
const QMap<QString, QString> &extraOptions );
|
||||
|
||||
QMap<QString, QString> extraOptions() const;
|
||||
%Docstring
|
||||
Returns extra metadata options
|
||||
Usually including name, description or time variable
|
||||
%End
|
||||
|
||||
bool isVector() const;
|
||||
%Docstring
|
||||
Returns whether dataset has vector data
|
||||
%End
|
||||
|
||||
bool isScalar() const;
|
||||
%Docstring
|
||||
Returns whether dataset has scalar data
|
||||
%End
|
||||
|
||||
bool isOnVertices() const;
|
||||
%Docstring
|
||||
Returns whether dataset data is defined on vertices
|
||||
%End
|
||||
|
||||
bool isValid() const;
|
||||
%Docstring
|
||||
Returns whether dataset is valid
|
||||
%End
|
||||
|
||||
};
|
||||
|
||||
class QgsMeshSource /Abstract/
|
||||
{
|
||||
%Docstring
|
||||
@ -155,7 +196,7 @@ class QgsMeshDatasetSource /Abstract/
|
||||
%Docstring
|
||||
Dataset is a collection of vector or scalar values on vertices or faces of the mesh
|
||||
|
||||
Base on the underlying data provider/format, whole dataset is either stored in memory or
|
||||
Based on the underlying data provider/format, whole dataset is either stored in memory or
|
||||
read on demand
|
||||
|
||||
.. note::
|
||||
@ -181,29 +222,16 @@ read on demand
|
||||
Returns number of datasets loaded
|
||||
%End
|
||||
|
||||
virtual bool datasetHasScalarData( int index ) const = 0;
|
||||
%Docstring
|
||||
Returns whether dataset has scalar data associated
|
||||
%End
|
||||
|
||||
virtual bool datasetIsOnVertices( int index ) const = 0;
|
||||
%Docstring
|
||||
Returns whether dataset is on vertices
|
||||
%End
|
||||
|
||||
virtual QgsMeshDatasetMetadata datasetMetadata( int index ) const = 0;
|
||||
virtual QgsMeshDatasetMetadata datasetMetadata( int datasetIndex ) const = 0;
|
||||
%Docstring
|
||||
Returns dataset metadata
|
||||
%End
|
||||
|
||||
virtual QgsMeshDatasetValue datasetValue( int datasetIndex, int valueIndex ) const = 0;
|
||||
%Docstring
|
||||
Returns value associated with the index from the dataset
|
||||
%End
|
||||
Returns vector/scalar value associated with the index from the dataset
|
||||
|
||||
virtual bool datasetIsValid( int index ) const = 0;
|
||||
%Docstring
|
||||
Returns whether dataset is valid
|
||||
See QgsMeshDatasetMetadata.isVector() to check if the returned value is vector or scalar
|
||||
%End
|
||||
};
|
||||
|
||||
|
@ -10,6 +10,8 @@
|
||||
|
||||
|
||||
|
||||
const int NO_ACTIVE_MESH_DATASET;
|
||||
|
||||
|
||||
class QgsMeshLayer : QgsMapLayer
|
||||
{
|
||||
@ -121,7 +123,7 @@ Returns the provider type for this layer
|
||||
|
||||
|
||||
|
||||
QgsMeshRendererMeshSettings rendererNativeMeshSettings() const /Factory/;
|
||||
QgsMeshRendererMeshSettings rendererNativeMeshSettings() const;
|
||||
%Docstring
|
||||
Returns rendrer settings
|
||||
%End
|
||||
@ -131,7 +133,7 @@ Returns rendrer settings
|
||||
Sets new rendering settings, triggers repaint
|
||||
%End
|
||||
|
||||
QgsMeshRendererMeshSettings rendererTriangularMeshSettings() const /Factory/;
|
||||
QgsMeshRendererMeshSettings rendererTriangularMeshSettings() const;
|
||||
%Docstring
|
||||
Returns rendrer settings
|
||||
%End
|
||||
@ -141,7 +143,7 @@ Returns rendrer settings
|
||||
Sets new rendering settings, triggers repaint
|
||||
%End
|
||||
|
||||
QgsMeshRendererScalarSettings rendererScalarSettings() const /Factory/;
|
||||
QgsMeshRendererScalarSettings rendererScalarSettings() const;
|
||||
%Docstring
|
||||
Returns rendrer settings
|
||||
%End
|
||||
@ -151,7 +153,7 @@ Returns rendrer settings
|
||||
Sets new rendering settings, triggers repaint
|
||||
%End
|
||||
|
||||
QgsMeshRendererVectorSettings rendererVectorSettings() const /Factory/;
|
||||
QgsMeshRendererVectorSettings rendererVectorSettings() const;
|
||||
%Docstring
|
||||
Returns rendrer settings
|
||||
%End
|
||||
@ -161,18 +163,22 @@ Returns rendrer settings
|
||||
Sets new rendering settings, triggers repaint
|
||||
%End
|
||||
|
||||
void setActiveScalarDataset( int index = -1 );
|
||||
void setActiveScalarDataset( int index = NO_ACTIVE_MESH_DATASET );
|
||||
%Docstring
|
||||
Sets active scalar dataset for rendering
|
||||
|
||||
Triggers repaint
|
||||
%End
|
||||
int activeScalarDataset() const;
|
||||
%Docstring
|
||||
Returns active scalar dataset
|
||||
%End
|
||||
|
||||
void setActiveVectorDataset( int index = -1 );
|
||||
void setActiveVectorDataset( int index = NO_ACTIVE_MESH_DATASET );
|
||||
%Docstring
|
||||
Sets active vector dataset for rendering. If dataset is not vector based, do nothing
|
||||
Sets active vector dataset for rendering.
|
||||
|
||||
If dataset is not vector based, do nothing. Triggers repaint
|
||||
%End
|
||||
int activeVectorDataset() const;
|
||||
%Docstring
|
||||
|
@ -140,7 +140,7 @@ Represents a mesh renderer settings for vector datasets
|
||||
#include "qgsmeshrenderersettings.h"
|
||||
%End
|
||||
public:
|
||||
enum VectorRenderingType
|
||||
enum ArrowScalingMethod
|
||||
{
|
||||
|
||||
MinMax,
|
||||
@ -198,11 +198,11 @@ Sets filter value for vector magnitudes.
|
||||
.. seealso:: :py:func:`QgsMeshRendererVectorSettings.vectorFilterMax`
|
||||
%End
|
||||
|
||||
QgsMeshRendererVectorSettings::VectorRenderingType shaftLengthMethod() const;
|
||||
QgsMeshRendererVectorSettings::ArrowScalingMethod shaftLengthMethod() const;
|
||||
%Docstring
|
||||
Returns method used for drawing arrows
|
||||
%End
|
||||
void setShaftLengthMethod( const QgsMeshRendererVectorSettings::VectorRenderingType &shaftLengthMethod );
|
||||
void setShaftLengthMethod( const QgsMeshRendererVectorSettings::ArrowScalingMethod &shaftLengthMethod );
|
||||
%Docstring
|
||||
Sets method used for drawing arrows
|
||||
%End
|
||||
@ -211,46 +211,56 @@ Sets method used for drawing arrows
|
||||
%Docstring
|
||||
Returns mininimum shaft length (in millimeters)
|
||||
|
||||
Only for QgsMeshRendererVectorSettings.ArrowType.MinMax
|
||||
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.MinMax
|
||||
%End
|
||||
|
||||
void setMinShaftLength( double minShaftLength );
|
||||
%Docstring
|
||||
Sets mininimum shaft length (in millimeters)
|
||||
|
||||
Only for QgsMeshRendererVectorSettings.ArrowType.MinMax
|
||||
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.MinMax
|
||||
%End
|
||||
|
||||
double maxShaftLength() const;
|
||||
%Docstring
|
||||
Returns maximum shaft length (in millimeters)
|
||||
|
||||
Only for QgsMeshRendererVectorSettings.ArrowType.MinMax
|
||||
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.MinMax
|
||||
%End
|
||||
|
||||
void setMaxShaftLength( double maxShaftLength );
|
||||
%Docstring
|
||||
Sets maximum shaft length (in millimeters)
|
||||
|
||||
Only for QgsMeshRendererVectorSettings.ArrowType.MinMax
|
||||
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.MinMax
|
||||
%End
|
||||
|
||||
double scaleFactor() const;
|
||||
%Docstring
|
||||
Returns scale factor. Only for QgsMeshRendererVectorSettings.ArrowType.Scaled
|
||||
Returns scale factor
|
||||
|
||||
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.Scaled
|
||||
%End
|
||||
|
||||
void setScaleFactor( double scaleFactor );
|
||||
%Docstring
|
||||
Sets scale factor. Only for QgsMeshRendererVectorSettings.ArrowType.Scaled
|
||||
Sets scale factor
|
||||
|
||||
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.Scaled
|
||||
%End
|
||||
|
||||
double fixedShaftLength() const;
|
||||
%Docstring
|
||||
Returns fixed arrow length (in millimeters). Only for QgsMeshRendererVectorSettings.ArrowType.Fixed
|
||||
Returns fixed arrow length (in millimeters)
|
||||
|
||||
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.Fixed
|
||||
%End
|
||||
|
||||
void setFixedShaftLength( double fixedShaftLength );
|
||||
%Docstring
|
||||
Sets fixed length (in millimeters). Only for QgsMeshRendererVectorSettings.ArrowType.Fixed
|
||||
Sets fixed length (in millimeters)
|
||||
|
||||
Only for QgsMeshRendererVectorSettings.ArrowScalingMethod.Fixed
|
||||
%End
|
||||
|
||||
double arrowHeadWidthRatio() const;
|
||||
|
@ -1,3 +1,4 @@
|
||||
// Include auto-generated SIP files
|
||||
%Include auto_generated/expression/qgsexpression.sip
|
||||
%Include auto_generated/expression/qgsexpressionnode.sip
|
||||
%Include auto_generated/expression/qgsexpressionnodeimpl.sip
|
||||
|
@ -40,41 +40,22 @@ QgsRectangle QgsMeshDataProvider::extent() const
|
||||
|
||||
}
|
||||
|
||||
QgsMeshDatasetValue::QgsMeshDatasetValue( double x, double y )
|
||||
{
|
||||
setX( x );
|
||||
setY( y );
|
||||
}
|
||||
QgsMeshDatasetValue::QgsMeshDatasetValue( double x, double y ): mX( x ), mY( y )
|
||||
{}
|
||||
|
||||
QgsMeshDatasetValue::QgsMeshDatasetValue( double scalar )
|
||||
{
|
||||
set( scalar );
|
||||
}
|
||||
|
||||
void QgsMeshDatasetValue::setNodata( bool nodata )
|
||||
{
|
||||
mIsNodata = nodata;
|
||||
}
|
||||
|
||||
bool QgsMeshDatasetValue::isNodata() const
|
||||
{return mIsNodata;}
|
||||
|
||||
bool QgsMeshDatasetValue::isScalar() const
|
||||
{
|
||||
return mIsScalar;
|
||||
}
|
||||
QgsMeshDatasetValue::QgsMeshDatasetValue( double scalar ): mX( scalar )
|
||||
{}
|
||||
|
||||
double QgsMeshDatasetValue::scalar() const
|
||||
{
|
||||
if ( isNodata() )
|
||||
{
|
||||
return std::numeric_limits<double>::quiet_NaN();
|
||||
}
|
||||
|
||||
if ( isScalar() )
|
||||
if ( std::isnan( mY ) )
|
||||
{
|
||||
return mX;
|
||||
}
|
||||
else if ( std::isnan( mX ) )
|
||||
{
|
||||
return std::numeric_limits<double>::quiet_NaN();
|
||||
}
|
||||
else
|
||||
{
|
||||
return std::sqrt( ( mX ) * ( mX ) + ( mY ) * ( mY ) );
|
||||
@ -84,29 +65,16 @@ double QgsMeshDatasetValue::scalar() const
|
||||
void QgsMeshDatasetValue::set( double scalar )
|
||||
{
|
||||
setX( scalar );
|
||||
mIsScalar = true;
|
||||
}
|
||||
|
||||
void QgsMeshDatasetValue::setX( double x )
|
||||
{
|
||||
mX = x;
|
||||
if ( std::isnan( x ) )
|
||||
{
|
||||
mIsNodata = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
mIsNodata = false;
|
||||
}
|
||||
}
|
||||
|
||||
void QgsMeshDatasetValue::setY( double y )
|
||||
{
|
||||
mY = y;
|
||||
if ( std::isnan( y ) )
|
||||
{
|
||||
mIsScalar = true;
|
||||
}
|
||||
}
|
||||
|
||||
double QgsMeshDatasetValue::x() const
|
||||
@ -121,22 +89,58 @@ double QgsMeshDatasetValue::y() const
|
||||
|
||||
bool QgsMeshDatasetValue::operator==( const QgsMeshDatasetValue &other ) const
|
||||
{
|
||||
bool equal = true;
|
||||
if ( isNodata() )
|
||||
equal = other.isNodata();
|
||||
else
|
||||
bool equal = std::isnan( mX ) == std::isnan( other.x() );
|
||||
equal &= std::isnan( mY ) == std::isnan( other.y() );
|
||||
|
||||
if ( equal )
|
||||
{
|
||||
if ( isScalar() )
|
||||
if ( std::isnan( mY ) )
|
||||
{
|
||||
equal &= other.isScalar();
|
||||
equal &= qgsDoubleNear( other.x(), mX, 1E-8 );
|
||||
}
|
||||
else
|
||||
{
|
||||
equal &= !other.isScalar();
|
||||
equal &= qgsDoubleNear( other.x(), mX, 1E-8 );
|
||||
equal &= qgsDoubleNear( other.y(), mY, 1E-8 );
|
||||
}
|
||||
}
|
||||
return equal;
|
||||
}
|
||||
|
||||
QgsMeshDatasetMetadata::QgsMeshDatasetMetadata(
|
||||
bool isScalar,
|
||||
bool isValid,
|
||||
bool isOnVertices,
|
||||
const QMap<QString, QString> &extraOptions )
|
||||
: mIsScalar( isScalar )
|
||||
, mIsValid( isValid )
|
||||
, mIsOnVertices( isOnVertices )
|
||||
, mExtraOptions( extraOptions )
|
||||
{
|
||||
}
|
||||
|
||||
QMap<QString, QString> QgsMeshDatasetMetadata::extraOptions() const
|
||||
{
|
||||
return mExtraOptions;
|
||||
}
|
||||
|
||||
bool QgsMeshDatasetMetadata::isVector() const
|
||||
{
|
||||
return !mIsScalar;
|
||||
}
|
||||
|
||||
bool QgsMeshDatasetMetadata::isScalar() const
|
||||
{
|
||||
return mIsScalar;
|
||||
}
|
||||
|
||||
bool QgsMeshDatasetMetadata::isValid() const
|
||||
{
|
||||
return mIsValid;
|
||||
}
|
||||
|
||||
|
||||
bool QgsMeshDatasetMetadata::isOnVertices() const
|
||||
{
|
||||
return mIsOnVertices;
|
||||
}
|
||||
|
@ -34,14 +34,12 @@ typedef QgsPoint QgsMeshVertex;
|
||||
//! List of vertex indexes
|
||||
typedef QVector<int> QgsMeshFace;
|
||||
|
||||
//! Dataset's metadata key:value map
|
||||
typedef QMap<QString, QString> QgsMeshDatasetMetadata;
|
||||
|
||||
/**
|
||||
* \ingroup core
|
||||
*
|
||||
* QgsMeshDatasetValue is a vector or a scalar value on vertex or face of the mesh with
|
||||
* support of nodata values
|
||||
* QgsMeshDatasetValue represents single mesh dataset value
|
||||
*
|
||||
* could be scalar or vector. Nodata values are represented by NaNs.
|
||||
*
|
||||
* \note The API is considered EXPERIMENTAL and can be changed without a notice
|
||||
*
|
||||
@ -49,31 +47,20 @@ typedef QMap<QString, QString> QgsMeshDatasetMetadata;
|
||||
*/
|
||||
class CORE_EXPORT QgsMeshDatasetValue
|
||||
{
|
||||
Q_GADGET
|
||||
|
||||
public:
|
||||
//! Ctor
|
||||
//! Constructor for vector value
|
||||
QgsMeshDatasetValue( double x,
|
||||
double y );
|
||||
|
||||
//! Ctor
|
||||
//! Constructor for scalar value
|
||||
QgsMeshDatasetValue( double scalar );
|
||||
|
||||
//! Ctor
|
||||
QgsMeshDatasetValue( ) = default;
|
||||
//! Default Ctor, initialize to NaN
|
||||
QgsMeshDatasetValue() = default;
|
||||
|
||||
//! Dtor
|
||||
~QgsMeshDatasetValue() = default;
|
||||
|
||||
//! Sets nodata value for this dataset value
|
||||
void setNodata( bool nodata = true );
|
||||
//! Returns whether it is nodata value
|
||||
bool isNodata() const;
|
||||
//! Returns whether it is scalar value
|
||||
bool isScalar() const;
|
||||
//! Returns scalar value. Length for vectors, value for scalars
|
||||
double scalar() const;
|
||||
|
||||
//! Sets scalar value
|
||||
void set( double scalar );
|
||||
|
||||
@ -83,6 +70,9 @@ class CORE_EXPORT QgsMeshDatasetValue
|
||||
//! Sets Y value
|
||||
void setY( double y ) ;
|
||||
|
||||
//! Returns magnitude of vector for vector data or scalar value for scalar data
|
||||
double scalar() const;
|
||||
|
||||
//! Returns x value
|
||||
double x() const;
|
||||
|
||||
@ -95,8 +85,60 @@ class CORE_EXPORT QgsMeshDatasetValue
|
||||
private:
|
||||
double mX = std::numeric_limits<double>::quiet_NaN();
|
||||
double mY = std::numeric_limits<double>::quiet_NaN();
|
||||
bool mIsNodata = true;
|
||||
bool mIsScalar = true;
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \ingroup core
|
||||
*
|
||||
* QgsMeshDatasetMetadata is a collection of mesh dataset metadata such
|
||||
* as if the data is vector or scalar, etc.
|
||||
*
|
||||
* \note The API is considered EXPERIMENTAL and can be changed without a notice
|
||||
*
|
||||
* \since QGIS 3.2
|
||||
*/
|
||||
class CORE_EXPORT QgsMeshDatasetMetadata
|
||||
{
|
||||
public:
|
||||
QgsMeshDatasetMetadata() = default;
|
||||
QgsMeshDatasetMetadata( bool isScalar,
|
||||
bool isValid,
|
||||
bool isOnVertices,
|
||||
const QMap<QString, QString> &extraOptions );
|
||||
|
||||
/**
|
||||
* Returns extra metadata options
|
||||
* Usually including name, description or time variable
|
||||
*/
|
||||
QMap<QString, QString> extraOptions() const;
|
||||
|
||||
/**
|
||||
* \brief Returns whether dataset has vector data
|
||||
*/
|
||||
bool isVector() const;
|
||||
|
||||
/**
|
||||
* \brief Returns whether dataset has scalar data
|
||||
*/
|
||||
bool isScalar() const;
|
||||
|
||||
/**
|
||||
* \brief Returns whether dataset data is defined on vertices
|
||||
*/
|
||||
bool isOnVertices() const;
|
||||
|
||||
/**
|
||||
* \brief Returns whether dataset is valid
|
||||
*/
|
||||
bool isValid() const;
|
||||
|
||||
private:
|
||||
bool mIsScalar = false;
|
||||
bool mIsValid = false;
|
||||
bool mIsOnVertices = false;
|
||||
QMap<QString, QString> mExtraOptions;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -147,7 +189,7 @@ class CORE_EXPORT QgsMeshSource SIP_ABSTRACT
|
||||
* \ingroup core
|
||||
* Dataset is a collection of vector or scalar values on vertices or faces of the mesh
|
||||
*
|
||||
* Base on the underlying data provider/format, whole dataset is either stored in memory or
|
||||
* Based on the underlying data provider/format, whole dataset is either stored in memory or
|
||||
* read on demand
|
||||
*
|
||||
* \note The API is considered EXPERIMENTAL and can be changed without a notice
|
||||
@ -170,30 +212,17 @@ class CORE_EXPORT QgsMeshDatasetSource SIP_ABSTRACT
|
||||
*/
|
||||
virtual int datasetCount() const = 0;
|
||||
|
||||
/**
|
||||
* \brief Returns whether dataset has scalar data associated
|
||||
*/
|
||||
virtual bool datasetHasScalarData( int index ) const = 0;
|
||||
|
||||
/**
|
||||
* \brief Returns whether dataset is on vertices
|
||||
*/
|
||||
virtual bool datasetIsOnVertices( int index ) const = 0;
|
||||
|
||||
/**
|
||||
* \brief Returns dataset metadata
|
||||
*/
|
||||
virtual QgsMeshDatasetMetadata datasetMetadata( int index ) const = 0;
|
||||
virtual QgsMeshDatasetMetadata datasetMetadata( int datasetIndex ) const = 0;
|
||||
|
||||
/**
|
||||
* \brief Returns value associated with the index from the dataset
|
||||
* \brief Returns vector/scalar value associated with the index from the dataset
|
||||
*
|
||||
* See QgsMeshDatasetMetadata::isVector() to check if the returned value is vector or scalar
|
||||
*/
|
||||
virtual QgsMeshDatasetValue datasetValue( int datasetIndex, int valueIndex ) const = 0;
|
||||
|
||||
/**
|
||||
* \brief Returns whether dataset is valid
|
||||
*/
|
||||
virtual bool datasetIsValid( int index ) const = 0;
|
||||
};
|
||||
|
||||
|
||||
|
@ -144,28 +144,36 @@ void QgsMeshLayer::setRendererVectorSettings( const QgsMeshRendererVectorSetting
|
||||
|
||||
void QgsMeshLayer::setActiveScalarDataset( int index )
|
||||
{
|
||||
if ( index < 0 )
|
||||
{
|
||||
mActiveScalarDataset = -1;
|
||||
if ( index == mActiveScalarDataset )
|
||||
return;
|
||||
}
|
||||
|
||||
Q_ASSERT( dataProvider()->datasetCount() > index );
|
||||
// for vector datasets, we render magnitude
|
||||
mActiveScalarDataset = index;
|
||||
if ( ( index >= 0 ) && ( index < dataProvider()->datasetCount() ) )
|
||||
mActiveScalarDataset = index;
|
||||
else
|
||||
mActiveScalarDataset = NO_ACTIVE_MESH_DATASET;
|
||||
|
||||
triggerRepaint();
|
||||
}
|
||||
|
||||
void QgsMeshLayer::setActiveVectorDataset( int index )
|
||||
{
|
||||
if ( index < 0 )
|
||||
{
|
||||
mActiveVectorDataset = -1;
|
||||
if ( index == mActiveVectorDataset )
|
||||
return;
|
||||
|
||||
if ( ( index < 0 ) || ( index >= dataProvider()->datasetCount() ) )
|
||||
{
|
||||
mActiveVectorDataset = NO_ACTIVE_MESH_DATASET;
|
||||
}
|
||||
else
|
||||
{
|
||||
const QgsMeshDatasetMetadata metadata = dataProvider()->datasetMetadata( index );
|
||||
if ( metadata.isVector() )
|
||||
mActiveVectorDataset = index;
|
||||
else
|
||||
mActiveVectorDataset = NO_ACTIVE_MESH_DATASET;
|
||||
}
|
||||
|
||||
Q_ASSERT( dataProvider()->datasetCount() > index );
|
||||
if ( !dataProvider()->datasetHasScalarData( index ) )
|
||||
mActiveVectorDataset = index;
|
||||
triggerRepaint();
|
||||
}
|
||||
|
||||
void QgsMeshLayer::fillNativeMesh()
|
||||
|
@ -26,6 +26,8 @@
|
||||
#include "qgsmeshdataprovider.h"
|
||||
#include "qgsmeshrenderersettings.h"
|
||||
|
||||
const int NO_ACTIVE_MESH_DATASET = -1;
|
||||
|
||||
class QgsMapLayerRenderer;
|
||||
class QgsSymbol;
|
||||
class QgsTriangularMesh;
|
||||
@ -132,36 +134,44 @@ class CORE_EXPORT QgsMeshLayer : public QgsMapLayer
|
||||
QgsTriangularMesh *triangularMesh() SIP_SKIP;
|
||||
|
||||
//! Returns rendrer settings
|
||||
QgsMeshRendererMeshSettings rendererNativeMeshSettings() const SIP_FACTORY;
|
||||
QgsMeshRendererMeshSettings rendererNativeMeshSettings() const;
|
||||
|
||||
//! Sets new rendering settings, triggers repaint
|
||||
void setRendererNativeMeshSettings( const QgsMeshRendererMeshSettings &settings );
|
||||
|
||||
//! Returns rendrer settings
|
||||
QgsMeshRendererMeshSettings rendererTriangularMeshSettings() const SIP_FACTORY;
|
||||
QgsMeshRendererMeshSettings rendererTriangularMeshSettings() const;
|
||||
|
||||
//! Sets new rendering settings, triggers repaint
|
||||
void setRendererTriangularMeshSettings( const QgsMeshRendererMeshSettings &settings );
|
||||
|
||||
//! Returns rendrer settings
|
||||
QgsMeshRendererScalarSettings rendererScalarSettings() const SIP_FACTORY;
|
||||
QgsMeshRendererScalarSettings rendererScalarSettings() const;
|
||||
|
||||
//! Sets new rendering settings, triggers repaint
|
||||
void setRendererScalarSettings( const QgsMeshRendererScalarSettings &settings );
|
||||
|
||||
//! Returns rendrer settings
|
||||
QgsMeshRendererVectorSettings rendererVectorSettings() const SIP_FACTORY;
|
||||
QgsMeshRendererVectorSettings rendererVectorSettings() const;
|
||||
|
||||
//! Sets new rendering settings, triggers repaint
|
||||
void setRendererVectorSettings( const QgsMeshRendererVectorSettings &settings );
|
||||
|
||||
//! Sets active scalar dataset for rendering
|
||||
void setActiveScalarDataset( int index = -1 );
|
||||
/**
|
||||
* Sets active scalar dataset for rendering
|
||||
*
|
||||
* Triggers repaint
|
||||
*/
|
||||
void setActiveScalarDataset( int index = NO_ACTIVE_MESH_DATASET );
|
||||
//! Returns active scalar dataset
|
||||
int activeScalarDataset() const { return mActiveScalarDataset; }
|
||||
|
||||
//! Sets active vector dataset for rendering. If dataset is not vector based, do nothing
|
||||
void setActiveVectorDataset( int index = -1 );
|
||||
/**
|
||||
* Sets active vector dataset for rendering.
|
||||
*
|
||||
* If dataset is not vector based, do nothing. Triggers repaint
|
||||
*/
|
||||
void setActiveVectorDataset( int index = NO_ACTIVE_MESH_DATASET );
|
||||
//! Returns active vector dataset
|
||||
int activeVectorDataset() const { return mActiveVectorDataset; }
|
||||
|
||||
@ -204,10 +214,10 @@ class CORE_EXPORT QgsMeshLayer : public QgsMapLayer
|
||||
QgsMeshRendererVectorSettings mRendererVectorSettings;
|
||||
|
||||
//! index of active scalar dataset; -1 if none
|
||||
int mActiveScalarDataset = -1;
|
||||
int mActiveScalarDataset = NO_ACTIVE_MESH_DATASET;
|
||||
|
||||
//! index of active vector dataset; -1 if none
|
||||
int mActiveVectorDataset = -1;
|
||||
int mActiveVectorDataset = NO_ACTIVE_MESH_DATASET;
|
||||
};
|
||||
|
||||
#endif //QGSMESHLAYER_H
|
||||
|
@ -92,9 +92,10 @@ void QgsMeshLayerRenderer::createMeshSymbol( std::unique_ptr<QgsSymbol> &symbol,
|
||||
void QgsMeshLayerRenderer::copyScalarDatasetValues( QgsMeshLayer *layer )
|
||||
{
|
||||
int datasetIndex = layer->activeScalarDataset();
|
||||
if ( datasetIndex != -1 )
|
||||
if ( datasetIndex != NO_ACTIVE_MESH_DATASET )
|
||||
{
|
||||
mScalarDataOnVertices = layer->dataProvider()->datasetIsOnVertices( datasetIndex );
|
||||
const QgsMeshDatasetMetadata metadata = layer->dataProvider()->datasetMetadata( datasetIndex );
|
||||
mScalarDataOnVertices = metadata.isOnVertices();
|
||||
int count;
|
||||
if ( mScalarDataOnVertices )
|
||||
count = mNativeMesh.vertices.count();
|
||||
@ -113,16 +114,18 @@ void QgsMeshLayerRenderer::copyScalarDatasetValues( QgsMeshLayer *layer )
|
||||
void QgsMeshLayerRenderer::copyVectorDatasetValues( QgsMeshLayer *layer )
|
||||
{
|
||||
int datasetIndex = layer->activeVectorDataset();
|
||||
if ( datasetIndex != -1 )
|
||||
if ( datasetIndex != NO_ACTIVE_MESH_DATASET )
|
||||
{
|
||||
bool isScalar = layer->dataProvider()->datasetHasScalarData( datasetIndex );
|
||||
const QgsMeshDatasetMetadata metadata = layer->dataProvider()->datasetMetadata( datasetIndex );
|
||||
|
||||
bool isScalar = metadata.isScalar();
|
||||
if ( isScalar )
|
||||
{
|
||||
QgsDebugMsg( "Dataset has no vector values" );
|
||||
}
|
||||
else
|
||||
{
|
||||
mVectorDataOnVertices = layer->dataProvider()->datasetIsOnVertices( datasetIndex );
|
||||
mVectorDataOnVertices = metadata.isOnVertices();
|
||||
int count;
|
||||
if ( mVectorDataOnVertices )
|
||||
count = mNativeMesh.vertices.count();
|
||||
|
@ -236,11 +236,6 @@ bool QgsMeshMemoryDataProvider::addDatasetValues( const QString &def, QgsMeshMem
|
||||
{
|
||||
point.setX( values[0].toDouble() );
|
||||
point.setY( values[1].toDouble() );
|
||||
if ( values.size() > 2 )
|
||||
{
|
||||
Q_ASSERT( false );
|
||||
//TODO Not implemented
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -322,35 +317,38 @@ int QgsMeshMemoryDataProvider::datasetCount() const
|
||||
return mDatasets.count();
|
||||
}
|
||||
|
||||
bool QgsMeshMemoryDataProvider::datasetHasScalarData( int index ) const
|
||||
{
|
||||
Q_ASSERT( datasetCount() > index );
|
||||
return mDatasets[index].isScalar;
|
||||
}
|
||||
|
||||
bool QgsMeshMemoryDataProvider::datasetIsOnVertices( int index ) const
|
||||
{
|
||||
Q_ASSERT( datasetCount() > index );
|
||||
return mDatasets[index].isOnVertices;
|
||||
}
|
||||
|
||||
QgsMeshDatasetMetadata QgsMeshMemoryDataProvider::datasetMetadata( int index ) const
|
||||
{
|
||||
Q_ASSERT( datasetCount() > index );
|
||||
return mDatasets[index].metadata;
|
||||
if ( ( index >= 0 ) && ( index < datasetCount() ) )
|
||||
{
|
||||
QgsMeshDatasetMetadata metadata(
|
||||
mDatasets[index].isScalar,
|
||||
mDatasets[index].valid,
|
||||
mDatasets[index].isOnVertices,
|
||||
mDatasets[index].metadata
|
||||
);
|
||||
return metadata;
|
||||
}
|
||||
else
|
||||
{
|
||||
return QgsMeshDatasetMetadata();
|
||||
}
|
||||
}
|
||||
|
||||
QgsMeshDatasetValue QgsMeshMemoryDataProvider::datasetValue( int datasetIndex, int valueIndex ) const
|
||||
{
|
||||
Q_ASSERT( datasetCount() > datasetIndex );
|
||||
Q_ASSERT( mDatasets[datasetIndex].values.count() > valueIndex );
|
||||
return mDatasets[datasetIndex].values[valueIndex];
|
||||
if ( ( datasetIndex >= 0 ) &&
|
||||
( datasetIndex < datasetCount() ) &&
|
||||
( valueIndex >= 0 ) &&
|
||||
( valueIndex < mDatasets[datasetIndex].values.count() ) )
|
||||
{
|
||||
return mDatasets[datasetIndex].values[valueIndex];
|
||||
}
|
||||
else
|
||||
{
|
||||
return QgsMeshDatasetValue();
|
||||
}
|
||||
}
|
||||
|
||||
bool QgsMeshMemoryDataProvider::datasetIsValid( int index ) const
|
||||
{
|
||||
Q_ASSERT( datasetCount() > index );
|
||||
return mDatasets[index].valid;
|
||||
}
|
||||
|
||||
///@endcond
|
||||
|
@ -31,9 +31,8 @@
|
||||
|
||||
struct QgsMeshMemoryDataset
|
||||
{
|
||||
QgsMeshDatasetMetadata metadata;
|
||||
QMap<QString, QString> metadata;
|
||||
QVector<QgsMeshDatasetValue> values;
|
||||
|
||||
bool isScalar = true;
|
||||
bool isOnVertices = true;
|
||||
bool valid = false;
|
||||
@ -111,11 +110,9 @@ class QgsMeshMemoryDataProvider: public QgsMeshDataProvider
|
||||
*/
|
||||
bool addDataset( const QString &uri ) override;
|
||||
int datasetCount() const override;
|
||||
bool datasetHasScalarData( int index ) const override;
|
||||
bool datasetIsOnVertices( int index ) const override;
|
||||
QgsMeshDatasetMetadata datasetMetadata( int index ) const override;
|
||||
|
||||
QgsMeshDatasetMetadata datasetMetadata( int datasetIndex ) const override;
|
||||
QgsMeshDatasetValue datasetValue( int datasetIndex, int valueIndex ) const override;
|
||||
bool datasetIsValid( int index ) const override;
|
||||
|
||||
//! Returns the memory provider key
|
||||
static QString providerKey();
|
||||
|
@ -127,12 +127,12 @@ void QgsMeshRendererVectorSettings::setFilterMax( double vectorFilterMax )
|
||||
mFilterMax = vectorFilterMax;
|
||||
}
|
||||
|
||||
QgsMeshRendererVectorSettings::VectorRenderingType QgsMeshRendererVectorSettings::shaftLengthMethod() const
|
||||
QgsMeshRendererVectorSettings::ArrowScalingMethod QgsMeshRendererVectorSettings::shaftLengthMethod() const
|
||||
{
|
||||
return mShaftLengthMethod;
|
||||
}
|
||||
|
||||
void QgsMeshRendererVectorSettings::setShaftLengthMethod( const QgsMeshRendererVectorSettings::VectorRenderingType &shaftLengthMethod )
|
||||
void QgsMeshRendererVectorSettings::setShaftLengthMethod( const QgsMeshRendererVectorSettings::ArrowScalingMethod &shaftLengthMethod )
|
||||
{
|
||||
mShaftLengthMethod = shaftLengthMethod;
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ class CORE_EXPORT QgsMeshRendererVectorSettings
|
||||
{
|
||||
public:
|
||||
//! Algorithm how to transform vector magnitude to length of arrow on the device in pixels
|
||||
enum VectorRenderingType
|
||||
enum ArrowScalingMethod
|
||||
{
|
||||
|
||||
/**
|
||||
@ -185,46 +185,64 @@ class CORE_EXPORT QgsMeshRendererVectorSettings
|
||||
void setFilterMax( double filterMax );
|
||||
|
||||
//! Returns method used for drawing arrows
|
||||
QgsMeshRendererVectorSettings::VectorRenderingType shaftLengthMethod() const;
|
||||
QgsMeshRendererVectorSettings::ArrowScalingMethod shaftLengthMethod() const;
|
||||
//! Sets method used for drawing arrows
|
||||
void setShaftLengthMethod( const QgsMeshRendererVectorSettings::VectorRenderingType &shaftLengthMethod );
|
||||
void setShaftLengthMethod( const QgsMeshRendererVectorSettings::ArrowScalingMethod &shaftLengthMethod );
|
||||
|
||||
/**
|
||||
* Returns mininimum shaft length (in millimeters)
|
||||
*
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowType::MinMax
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
|
||||
*/
|
||||
double minShaftLength() const;
|
||||
|
||||
/**
|
||||
* Sets mininimum shaft length (in millimeters)
|
||||
*
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowType::MinMax
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
|
||||
*/
|
||||
void setMinShaftLength( double minShaftLength );
|
||||
|
||||
/**
|
||||
* Returns maximum shaft length (in millimeters)
|
||||
*
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowType::MinMax
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
|
||||
*/
|
||||
double maxShaftLength() const;
|
||||
|
||||
/**
|
||||
* Sets maximum shaft length (in millimeters)
|
||||
*
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowType::MinMax
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax
|
||||
*/
|
||||
void setMaxShaftLength( double maxShaftLength );
|
||||
|
||||
//! Returns scale factor. Only for QgsMeshRendererVectorSettings::ArrowType::Scaled
|
||||
/**
|
||||
* Returns scale factor
|
||||
*
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Scaled
|
||||
*/
|
||||
double scaleFactor() const;
|
||||
//! Sets scale factor. Only for QgsMeshRendererVectorSettings::ArrowType::Scaled
|
||||
|
||||
/**
|
||||
* Sets scale factor
|
||||
*
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Scaled
|
||||
*/
|
||||
void setScaleFactor( double scaleFactor );
|
||||
|
||||
//! Returns fixed arrow length (in millimeters). Only for QgsMeshRendererVectorSettings::ArrowType::Fixed
|
||||
/**
|
||||
* Returns fixed arrow length (in millimeters)
|
||||
*
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Fixed
|
||||
*/
|
||||
double fixedShaftLength() const;
|
||||
//! Sets fixed length (in millimeters). Only for QgsMeshRendererVectorSettings::ArrowType::Fixed
|
||||
|
||||
/**
|
||||
* Sets fixed length (in millimeters)
|
||||
*
|
||||
* Only for QgsMeshRendererVectorSettings::ArrowScalingMethod::Fixed
|
||||
*/
|
||||
void setFixedShaftLength( double fixedShaftLength );
|
||||
|
||||
//! Returns ratio of the head width of the arrow (range 0-1)
|
||||
@ -242,7 +260,7 @@ class CORE_EXPORT QgsMeshRendererVectorSettings
|
||||
QColor mColor = Qt::black;
|
||||
double mFilterMin = -1; //disabled
|
||||
double mFilterMax = -1; //disabled
|
||||
QgsMeshRendererVectorSettings::VectorRenderingType mShaftLengthMethod = QgsMeshRendererVectorSettings::VectorRenderingType::MinMax;
|
||||
QgsMeshRendererVectorSettings::ArrowScalingMethod mShaftLengthMethod = QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax;
|
||||
double mMinShaftLength = 0.8; //in milimeters
|
||||
double mMaxShaftLength = 10; //in milimeters
|
||||
double mScaleFactor = 10;
|
||||
|
@ -118,7 +118,7 @@ bool QgsMeshVectorRenderer::calcVectorLineEnd(
|
||||
double yDist = 0.0;
|
||||
switch ( mCfg.shaftLengthMethod() )
|
||||
{
|
||||
case QgsMeshRendererVectorSettings::VectorRenderingType::MinMax:
|
||||
case QgsMeshRendererVectorSettings::ArrowScalingMethod::MinMax:
|
||||
{
|
||||
double minShaftLength = mContext.convertToPainterUnits( mCfg.minShaftLength(),
|
||||
QgsUnitTypes::RenderUnit::RenderMillimeters );
|
||||
@ -132,14 +132,14 @@ bool QgsMeshVectorRenderer::calcVectorLineEnd(
|
||||
yDist = sinAlpha * L;
|
||||
break;
|
||||
}
|
||||
case QgsMeshRendererVectorSettings::VectorRenderingType::Scaled:
|
||||
case QgsMeshRendererVectorSettings::ArrowScalingMethod::Scaled:
|
||||
{
|
||||
double scaleFactor = mCfg.scaleFactor();
|
||||
xDist = scaleFactor * xVal;
|
||||
yDist = scaleFactor * yVal;
|
||||
break;
|
||||
}
|
||||
case QgsMeshRendererVectorSettings::VectorRenderingType::Fixed:
|
||||
case QgsMeshRendererVectorSettings::ArrowScalingMethod::Fixed:
|
||||
{
|
||||
// We must be using a fixed length
|
||||
double fixedShaftLength = mContext.convertToPainterUnits( mCfg.fixedShaftLength(),
|
||||
|
@ -109,65 +109,63 @@ int QgsMdalProvider::datasetCount() const
|
||||
return MDAL_M_datasetCount( mMeshH );
|
||||
}
|
||||
|
||||
bool QgsMdalProvider::datasetHasScalarData( int index ) const
|
||||
QgsMeshDatasetMetadata QgsMdalProvider::datasetMetadata( int datasetIndex ) const
|
||||
{
|
||||
Q_ASSERT( index < mDatasets.length() );
|
||||
DatasetH dataset = mDatasets[index];
|
||||
return MDAL_D_hasScalarData( dataset );
|
||||
}
|
||||
if ( datasetIndex >= mDatasets.length() )
|
||||
return QgsMeshDatasetMetadata();
|
||||
|
||||
bool QgsMdalProvider::datasetIsOnVertices( int index ) const
|
||||
{
|
||||
Q_ASSERT( index < mDatasets.length() );
|
||||
DatasetH dataset = mDatasets[index];
|
||||
return MDAL_D_isOnVertices( dataset );
|
||||
}
|
||||
if ( datasetIndex < 0 )
|
||||
return QgsMeshDatasetMetadata();
|
||||
|
||||
QgsMeshDatasetMetadata QgsMdalProvider::datasetMetadata( int index ) const
|
||||
{
|
||||
Q_ASSERT( index < mDatasets.length() );
|
||||
DatasetH dataset = mDatasets[index];
|
||||
QgsMeshDatasetMetadata meta;
|
||||
DatasetH dataset = mDatasets[datasetIndex];
|
||||
|
||||
bool isScalar = MDAL_D_hasScalarData( dataset );
|
||||
bool isValid = MDAL_D_isValid( dataset );
|
||||
bool isOnVertices = MDAL_D_isOnVertices( dataset );
|
||||
|
||||
QMap<QString, QString> metadata;
|
||||
int n = MDAL_D_metadataCount( dataset );
|
||||
for ( int i = 0; i < n; ++i )
|
||||
{
|
||||
QString key = MDAL_D_metadataKey( dataset, i );
|
||||
QString value = MDAL_D_metadataValue( dataset, i );
|
||||
meta[key] = value;
|
||||
metadata[key] = value;
|
||||
}
|
||||
|
||||
QgsMeshDatasetMetadata meta(
|
||||
isScalar,
|
||||
isValid,
|
||||
isOnVertices,
|
||||
metadata
|
||||
);
|
||||
|
||||
return meta;
|
||||
}
|
||||
|
||||
QgsMeshDatasetValue QgsMdalProvider::datasetValue( int datasetIndex, int valueIndex ) const
|
||||
{
|
||||
Q_ASSERT( datasetIndex < mDatasets.length() );
|
||||
DatasetH dataset = mDatasets[datasetIndex];
|
||||
if ( datasetIndex >= mDatasets.length() )
|
||||
return QgsMeshDatasetValue();
|
||||
|
||||
if ( datasetIndex < 0 )
|
||||
return QgsMeshDatasetValue();
|
||||
|
||||
DatasetH dataset = mDatasets[datasetIndex];
|
||||
QgsMeshDatasetValue val;
|
||||
|
||||
if ( datasetHasScalarData( datasetIndex ) )
|
||||
if ( MDAL_D_hasScalarData( dataset ) )
|
||||
{
|
||||
val.setX( MDAL_D_value( dataset, valueIndex ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
val.setX( MDAL_D_valueX( dataset, valueIndex ) );
|
||||
val.setY( MDAL_D_valueX( dataset, valueIndex ) );
|
||||
val.setY( MDAL_D_valueY( dataset, valueIndex ) );
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
bool QgsMdalProvider::datasetIsValid( int index ) const
|
||||
{
|
||||
Q_ASSERT( index < mDatasets.length() );
|
||||
DatasetH dataset = mDatasets[index];
|
||||
return MDAL_D_isValid( dataset );
|
||||
}
|
||||
|
||||
|
||||
void QgsMdalProvider::refreshDatasets()
|
||||
{
|
||||
mDatasets.clear();
|
||||
|
@ -59,11 +59,8 @@ class QgsMdalProvider : public QgsMeshDataProvider
|
||||
|
||||
bool addDataset( const QString &uri ) override;
|
||||
int datasetCount() const override;
|
||||
bool datasetHasScalarData( int index ) const override;
|
||||
bool datasetIsOnVertices( int index ) const override;
|
||||
QgsMeshDatasetMetadata datasetMetadata( int index ) const override;
|
||||
QgsMeshDatasetMetadata datasetMetadata( int datasetIndex ) const override;
|
||||
QgsMeshDatasetValue datasetValue( int datasetIndex, int valueIndex ) const override;
|
||||
bool datasetIsValid( int index ) const override;
|
||||
private:
|
||||
void refreshDatasets();
|
||||
|
||||
|
@ -151,14 +151,14 @@ void TestQgsMeshLayer::test_read_vertex_scalar_dataset()
|
||||
|
||||
QCOMPARE( 4, dp->datasetCount() );
|
||||
|
||||
QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
|
||||
QCOMPARE( meta.count(), 2 );
|
||||
QCOMPARE( meta["name"], QString( "VertexScalarDataset" ) );
|
||||
QVERIFY( qgsDoubleNear( meta["time"].toDouble(), 0.0 ) );
|
||||
const QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
|
||||
QCOMPARE( meta.extraOptions().count(), 2 );
|
||||
QCOMPARE( meta.extraOptions()["name"], QString( "VertexScalarDataset" ) );
|
||||
QVERIFY( qgsDoubleNear( meta.extraOptions()["time"].toDouble(), 0.0 ) );
|
||||
|
||||
QVERIFY( dp->datasetIsValid( ds ) );
|
||||
QVERIFY( dp->datasetHasScalarData( ds ) );
|
||||
QVERIFY( dp->datasetIsOnVertices( ds ) );
|
||||
QVERIFY( meta.isValid() );
|
||||
QVERIFY( meta.isScalar() );
|
||||
QVERIFY( meta.isOnVertices() );
|
||||
|
||||
// We have 5 values, since dp->vertexCount() = 5
|
||||
QCOMPARE( QgsMeshDatasetValue( 1.0 ), dp->datasetValue( ds, 0 ) );
|
||||
@ -183,14 +183,14 @@ void TestQgsMeshLayer::test_read_vertex_vector_dataset()
|
||||
|
||||
QCOMPARE( 4, dp->datasetCount() );
|
||||
|
||||
QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
|
||||
QCOMPARE( meta.count(), 2 );
|
||||
QCOMPARE( meta["name"], QString( "VertexVectorDataset" ) );
|
||||
QVERIFY( qgsDoubleNear( meta["time"].toDouble(), 0.0 ) );
|
||||
const QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
|
||||
QCOMPARE( meta.extraOptions().count(), 2 );
|
||||
QCOMPARE( meta.extraOptions()["name"], QString( "VertexVectorDataset" ) );
|
||||
QVERIFY( qgsDoubleNear( meta.extraOptions()["time"].toDouble(), 0.0 ) );
|
||||
|
||||
QVERIFY( dp->datasetIsValid( ds ) );
|
||||
QVERIFY( !dp->datasetHasScalarData( ds ) );
|
||||
QVERIFY( dp->datasetIsOnVertices( ds ) );
|
||||
QVERIFY( meta.isValid() );
|
||||
QVERIFY( !meta.isScalar() );
|
||||
QVERIFY( meta.isOnVertices() );
|
||||
|
||||
// We have 5 values, since dp->vertexCount() = 5
|
||||
QCOMPARE( QgsMeshDatasetValue( 1, 1 ), dp->datasetValue( ds, 0 ) );
|
||||
@ -215,14 +215,14 @@ void TestQgsMeshLayer::test_read_face_scalar_dataset()
|
||||
|
||||
QCOMPARE( 4, dp->datasetCount() );
|
||||
|
||||
QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
|
||||
QCOMPARE( meta.count(), 2 );
|
||||
QCOMPARE( meta["name"], QString( "FaceScalarDataset" ) );
|
||||
QVERIFY( qgsDoubleNear( meta["time"].toDouble(), 0.0 ) );
|
||||
const QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
|
||||
QCOMPARE( meta.extraOptions().count(), 2 );
|
||||
QCOMPARE( meta.extraOptions()["name"], QString( "FaceScalarDataset" ) );
|
||||
QVERIFY( qgsDoubleNear( meta.extraOptions()["time"].toDouble(), 0.0 ) );
|
||||
|
||||
QVERIFY( dp->datasetIsValid( ds ) );
|
||||
QVERIFY( dp->datasetHasScalarData( ds ) );
|
||||
QVERIFY( !dp->datasetIsOnVertices( ds ) );
|
||||
QVERIFY( meta.isValid() );
|
||||
QVERIFY( meta.isScalar() );
|
||||
QVERIFY( !meta.isOnVertices() );
|
||||
|
||||
// We have 2 values, since dp->faceCount() = 2
|
||||
QCOMPARE( QgsMeshDatasetValue( 1 ), dp->datasetValue( ds, 0 ) );
|
||||
@ -245,14 +245,14 @@ void TestQgsMeshLayer::test_read_face_vector_dataset()
|
||||
|
||||
QCOMPARE( 4, dp->datasetCount() );
|
||||
|
||||
QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
|
||||
QCOMPARE( meta.count(), 2 );
|
||||
QCOMPARE( meta["name"], QString( "FaceVectorDataset" ) );
|
||||
QVERIFY( qgsDoubleNear( meta["time"].toDouble(), 0.0 ) );
|
||||
const QgsMeshDatasetMetadata meta = dp->datasetMetadata( ds );
|
||||
QCOMPARE( meta.extraOptions().count(), 2 );
|
||||
QCOMPARE( meta.extraOptions()["name"], QString( "FaceVectorDataset" ) );
|
||||
QVERIFY( qgsDoubleNear( meta.extraOptions()["time"].toDouble(), 0.0 ) );
|
||||
|
||||
QVERIFY( dp->datasetIsValid( ds ) );
|
||||
QVERIFY( !dp->datasetHasScalarData( ds ) );
|
||||
QVERIFY( !dp->datasetIsOnVertices( ds ) );
|
||||
QVERIFY( meta.isValid() );
|
||||
QVERIFY( !meta.isScalar() );
|
||||
QVERIFY( !meta.isOnVertices() );
|
||||
|
||||
// We have 2 values, since dp->faceCount() = 2
|
||||
QCOMPARE( QgsMeshDatasetValue( 1, 1 ), dp->datasetValue( ds, 0 ) );
|
||||
|
@ -157,8 +157,8 @@ void TestQgsMeshRenderer::test_vertex_scalar_dataset_rendering()
|
||||
{
|
||||
int ds = 0;
|
||||
mMemoryLayer->setActiveScalarDataset( ds );
|
||||
QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
|
||||
QVERIFY( metadata["name"] == "VertexScalarDataset" );
|
||||
const QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
|
||||
QVERIFY( metadata.extraOptions()["name"] == "VertexScalarDataset" );
|
||||
QVERIFY( imageCheck( "quad_and_triangle_vertex_scalar_dataset" ) );
|
||||
}
|
||||
|
||||
@ -166,8 +166,8 @@ void TestQgsMeshRenderer::test_vertex_vector_dataset_rendering()
|
||||
{
|
||||
int ds = 1;
|
||||
mMemoryLayer->setActiveVectorDataset( ds );
|
||||
QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
|
||||
QVERIFY( metadata["name"] == "VertexVectorDataset" );
|
||||
const QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
|
||||
QVERIFY( metadata.extraOptions()["name"] == "VertexVectorDataset" );
|
||||
|
||||
QgsMeshRendererVectorSettings settings = mMemoryLayer->rendererVectorSettings();
|
||||
settings.setMinShaftLength( 15 );
|
||||
@ -180,8 +180,8 @@ void TestQgsMeshRenderer::test_face_scalar_dataset_rendering()
|
||||
{
|
||||
int ds = 2;
|
||||
mMemoryLayer->setActiveScalarDataset( ds );
|
||||
QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
|
||||
QVERIFY( metadata["name"] == "FaceScalarDataset" );
|
||||
const QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
|
||||
QVERIFY( metadata.extraOptions()["name"] == "FaceScalarDataset" );
|
||||
QVERIFY( imageCheck( "quad_and_triangle_face_scalar_dataset" ) );
|
||||
}
|
||||
|
||||
@ -189,8 +189,8 @@ void TestQgsMeshRenderer::test_face_vector_dataset_rendering()
|
||||
{
|
||||
int ds = 3;
|
||||
mMemoryLayer->setActiveVectorDataset( ds );
|
||||
QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
|
||||
QVERIFY( metadata["name"] == "FaceVectorDataset" );
|
||||
const QgsMeshDatasetMetadata metadata = mMemoryLayer->dataProvider()->datasetMetadata( ds );
|
||||
QVERIFY( metadata.extraOptions()["name"] == "FaceVectorDataset" );
|
||||
QVERIFY( imageCheck( "quad_and_triangle_face_vector_dataset" ) );
|
||||
}
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Loading…
x
Reference in New Issue
Block a user