From b5476ef5d4c7cc83e44ea2c81990f00e47d13c33 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Mon, 1 Oct 2018 14:14:33 +1000 Subject: [PATCH] Fix clang warnings, scale truncation to int --- python/core/auto_generated/qgsrulebasedlabeling.sip.in | 2 +- .../symbology/qgssymbollayerutils.sip.in | 2 +- src/core/qgsrulebasedlabeling.cpp | 6 +++--- src/core/qgsrulebasedlabeling.h | 4 ++-- src/core/symbology/qgssymbollayerutils.cpp | 10 +++++----- src/core/symbology/qgssymbollayerutils.h | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/python/core/auto_generated/qgsrulebasedlabeling.sip.in b/python/core/auto_generated/qgsrulebasedlabeling.sip.in index f693f00a63f..72bcc66ba4f 100644 --- a/python/core/auto_generated/qgsrulebasedlabeling.sip.in +++ b/python/core/auto_generated/qgsrulebasedlabeling.sip.in @@ -35,7 +35,7 @@ class QgsRuleBasedLabeling : QgsAbstractVectorLayerLabeling #include "qgsrulebasedlabeling.h" %End public: - Rule( QgsPalLayerSettings *settings /Transfer/, int maximumScale = 0, int minimumScale = 0, const QString &filterExp = QString(), const QString &description = QString(), bool elseRule = false ); + Rule( QgsPalLayerSettings *settings /Transfer/, double maximumScale = 0, double minimumScale = 0, const QString &filterExp = QString(), const QString &description = QString(), bool elseRule = false ); %Docstring takes ownership of settings, settings may be None %End diff --git a/python/core/auto_generated/symbology/qgssymbollayerutils.sip.in b/python/core/auto_generated/symbology/qgssymbollayerutils.sip.in index 4ded9f18db4..d2bab17ae57 100644 --- a/python/core/auto_generated/symbology/qgssymbollayerutils.sip.in +++ b/python/core/auto_generated/symbology/qgssymbollayerutils.sip.in @@ -717,7 +717,7 @@ Checks if the properties contain scaleMinDenom and scaleMaxDenom, if available, .. versionadded:: 3.0 %End - static void mergeScaleDependencies( int mScaleMinDenom, int mScaleMaxDenom, QgsStringMap &props ); + static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QgsStringMap &props ); %Docstring Merges the local scale limits, if any, with the ones already in the map, if any diff --git a/src/core/qgsrulebasedlabeling.cpp b/src/core/qgsrulebasedlabeling.cpp index 00f2b003966..089fea275af 100644 --- a/src/core/qgsrulebasedlabeling.cpp +++ b/src/core/qgsrulebasedlabeling.cpp @@ -54,7 +54,7 @@ QList QgsRuleBasedLabelProvider::subProviders() //////////////////// -QgsRuleBasedLabeling::Rule::Rule( QgsPalLayerSettings *settings, int scaleMinDenom, int scaleMaxDenom, const QString &filterExp, const QString &description, bool elseRule ) +QgsRuleBasedLabeling::Rule::Rule( QgsPalLayerSettings *settings, double scaleMinDenom, double scaleMaxDenom, const QString &filterExp, const QString &description, bool elseRule ) : mSettings( settings ) , mMaximumScale( scaleMinDenom ) , mMinimumScale( scaleMaxDenom ) @@ -256,9 +256,9 @@ QDomElement QgsRuleBasedLabeling::Rule::save( QDomDocument &doc, const QgsReadWr } if ( !mFilterExp.isEmpty() ) ruleElem.setAttribute( QStringLiteral( "filter" ), mFilterExp ); - if ( mMaximumScale != 0 ) + if ( !qgsDoubleNear( mMaximumScale, 0 ) ) ruleElem.setAttribute( QStringLiteral( "scalemindenom" ), mMaximumScale ); - if ( mMinimumScale != 0 ) + if ( !qgsDoubleNear( mMinimumScale, 0 ) ) ruleElem.setAttribute( QStringLiteral( "scalemaxdenom" ), mMinimumScale ); if ( !mDescription.isEmpty() ) ruleElem.setAttribute( QStringLiteral( "description" ), mDescription ); diff --git a/src/core/qgsrulebasedlabeling.h b/src/core/qgsrulebasedlabeling.h index a889d2581b2..8f3f2fb0d5a 100644 --- a/src/core/qgsrulebasedlabeling.h +++ b/src/core/qgsrulebasedlabeling.h @@ -53,7 +53,7 @@ class CORE_EXPORT QgsRuleBasedLabeling : public QgsAbstractVectorLayerLabeling { public: //! takes ownership of settings, settings may be nullptr - Rule( QgsPalLayerSettings *settings SIP_TRANSFER, int maximumScale = 0, int minimumScale = 0, const QString &filterExp = QString(), const QString &description = QString(), bool elseRule = false ); + Rule( QgsPalLayerSettings *settings SIP_TRANSFER, double maximumScale = 0, double minimumScale = 0, const QString &filterExp = QString(), const QString &description = QString(), bool elseRule = false ); ~Rule(); //! Rules cannot be copied. @@ -79,7 +79,7 @@ class CORE_EXPORT QgsRuleBasedLabeling : public QgsAbstractVectorLayerLabeling * * \returns True if scale based labeling is active */ - bool dependsOnScale() const { return mMinimumScale != 0 || mMaximumScale != 0; } + bool dependsOnScale() const { return !qgsDoubleNear( mMinimumScale, 0.0 ) || !qgsDoubleNear( mMaximumScale, 0 ); } /** * Returns the maximum map scale (i.e. most "zoomed in" scale) at which the label rule will be active. diff --git a/src/core/symbology/qgssymbollayerutils.cpp b/src/core/symbology/qgssymbollayerutils.cpp index b7a0f2d8904..4f2d4c896eb 100644 --- a/src/core/symbology/qgssymbollayerutils.cpp +++ b/src/core/symbology/qgssymbollayerutils.cpp @@ -4201,22 +4201,22 @@ void QgsSymbolLayerUtils::applyScaleDependency( QDomDocument &doc, QDomElement & } } -void QgsSymbolLayerUtils::mergeScaleDependencies( int mScaleMinDenom, int mScaleMaxDenom, QgsStringMap &props ) +void QgsSymbolLayerUtils::mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QgsStringMap &props ) { - if ( mScaleMinDenom != 0 ) + if ( !qgsDoubleNear( mScaleMinDenom, 0 ) ) { bool ok; - int parentScaleMinDenom = props.value( QStringLiteral( "scaleMinDenom" ), QStringLiteral( "0" ) ).toInt( &ok ); + double parentScaleMinDenom = props.value( QStringLiteral( "scaleMinDenom" ), QStringLiteral( "0" ) ).toDouble( &ok ); if ( !ok || parentScaleMinDenom <= 0 ) props[ QStringLiteral( "scaleMinDenom" )] = QString::number( mScaleMinDenom ); else props[ QStringLiteral( "scaleMinDenom" )] = QString::number( std::max( parentScaleMinDenom, mScaleMinDenom ) ); } - if ( mScaleMaxDenom != 0 ) + if ( !qgsDoubleNear( mScaleMaxDenom, 0 ) ) { bool ok; - int parentScaleMaxDenom = props.value( QStringLiteral( "scaleMaxDenom" ), QStringLiteral( "0" ) ).toInt( &ok ); + double parentScaleMaxDenom = props.value( QStringLiteral( "scaleMaxDenom" ), QStringLiteral( "0" ) ).toDouble( &ok ); if ( !ok || parentScaleMaxDenom <= 0 ) props[ QStringLiteral( "scaleMaxDenom" )] = QString::number( mScaleMaxDenom ); else diff --git a/src/core/symbology/qgssymbollayerutils.h b/src/core/symbology/qgssymbollayerutils.h index 1ecfa7ad58f..88483c4b197 100644 --- a/src/core/symbology/qgssymbollayerutils.h +++ b/src/core/symbology/qgssymbollayerutils.h @@ -654,7 +654,7 @@ class CORE_EXPORT QgsSymbolLayerUtils * Merges the local scale limits, if any, with the ones already in the map, if any * \since QGIS 3.0 */ - static void mergeScaleDependencies( int mScaleMinDenom, int mScaleMaxDenom, QgsStringMap &props ); + static void mergeScaleDependencies( double mScaleMinDenom, double mScaleMaxDenom, QgsStringMap &props ); /** * Encodes a reference to a parametric SVG into SLD, as a succession of parametric SVG using URL parameters,