From 6ed9d1f50f6b657c25f5e2ef5e649b24b5eb5edb Mon Sep 17 00:00:00 2001 From: Rick Vogel Date: Sun, 5 Nov 2023 19:37:09 +0100 Subject: [PATCH] make QskTickmarksMetrics default comparable --- src/common/QskFunctions.h | 5 +++++ src/nodes/QskTickmarksMetrics.h | 18 +++++++++--------- src/nodes/QskTickmarksNode.cpp | 9 ++++++++- src/nodes/QskTickmarksNode.h | 2 +- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/common/QskFunctions.h b/src/common/QskFunctions.h index fdcf774b..fd7c002d 100644 --- a/src/common/QskFunctions.h +++ b/src/common/QskFunctions.h @@ -69,6 +69,11 @@ inline constexpr bool qskFuzzyCompare( qreal value1, qreal value2 ) return qFuzzyCompare( value1, value2 ); } +inline constexpr bool qskConstrainedRatio( qreal ratio ) +{ + return qBound( 0.0, ratio, 1.0 ); +} + QSK_EXPORT qreal qskFuzzyFloor( qreal value, qreal stepSize ); QSK_EXPORT qreal qskFuzzyCeil( qreal value, qreal stepSize ); diff --git a/src/nodes/QskTickmarksMetrics.h b/src/nodes/QskTickmarksMetrics.h index 38614bda..6e1bcb2d 100644 --- a/src/nodes/QskTickmarksMetrics.h +++ b/src/nodes/QskTickmarksMetrics.h @@ -41,16 +41,16 @@ class QSK_EXPORT QskTickmarksMetrics Q_REQUIRED_RESULT constexpr qreal& operator[]( int index ) noexcept; private: - qreal m_minorRatio = 0.7; - qreal m_mediumRatio = 0.85; - qreal m_majorRatio = 1.0; + qreal m_minorRatio = 0.0; + qreal m_mediumRatio = 0.0; + qreal m_majorRatio = 0.0; }; inline constexpr QskTickmarksMetrics::QskTickmarksMetrics( qreal minorRatio, qreal mediumRatio, qreal majorRatio ) noexcept - : m_minorRatio( minorRatio ) - , m_mediumRatio( mediumRatio ) - , m_majorRatio( majorRatio ) + : m_minorRatio( qskConstrainedRatio(minorRatio) ) + , m_mediumRatio( qskConstrainedRatio(mediumRatio) ) + , m_majorRatio( qskConstrainedRatio(majorRatio) ) { } @@ -71,17 +71,17 @@ inline constexpr qreal QskTickmarksMetrics::minorRatio() const noexcept inline constexpr void QskTickmarksMetrics::setMajorRatio( qreal ratio ) noexcept { - m_majorRatio = qBound( 0.0, ratio, 1.0 ); + m_majorRatio = qskConstrainedRatio( ratio ); } inline constexpr void QskTickmarksMetrics::setMediumRatio( qreal ratio ) noexcept { - m_mediumRatio = qBound( 0.0, ratio, 1.0 ); + m_mediumRatio = qskConstrainedRatio( ratio ); } inline constexpr void QskTickmarksMetrics::setMinorRatio( qreal ratio ) noexcept { - m_minorRatio = qBound( 0.0, ratio, 1.0 ); + m_minorRatio = qskConstrainedRatio( ratio ); } inline constexpr bool QskTickmarksMetrics::operator==( diff --git a/src/nodes/QskTickmarksNode.cpp b/src/nodes/QskTickmarksNode.cpp index 31a6870d..f3e90cd2 100644 --- a/src/nodes/QskTickmarksNode.cpp +++ b/src/nodes/QskTickmarksNode.cpp @@ -54,10 +54,17 @@ QskTickmarksNode::~QskTickmarksNode() void QskTickmarksNode::update( const QColor& color, const QRectF& rect, const QskIntervalF& boundaries, const QskScaleTickmarks& tickmarks, - int lineWidth, Qt::Orientation orientation, Qt::Alignment alignment, const QskTickmarksMetrics& metrics ) + int lineWidth, Qt::Orientation orientation, Qt::Alignment alignment, QskTickmarksMetrics metrics ) { Q_D( QskTickmarksNode ); + if ( metrics == QskTickmarksMetrics{} ) + { + metrics[QskScaleTickmarks::MinorTick] = qskTickFactor( QskScaleTickmarks::MinorTick ); + metrics[QskScaleTickmarks::MediumTick] = qskTickFactor( QskScaleTickmarks::MediumTick ); + metrics[QskScaleTickmarks::MajorTick] = qskTickFactor( QskScaleTickmarks::MajorTick ); + } + if( lineWidth != d->lineWidth ) { d->lineWidth = lineWidth; diff --git a/src/nodes/QskTickmarksNode.h b/src/nodes/QskTickmarksNode.h index e0cd9b29..a9dec15c 100644 --- a/src/nodes/QskTickmarksNode.h +++ b/src/nodes/QskTickmarksNode.h @@ -27,7 +27,7 @@ class QSK_EXPORT QskTickmarksNode : public QSGGeometryNode void update(const QColor&, const QRectF&, const QskIntervalF&, const QskScaleTickmarks&, int tickLineWidth, Qt::Orientation, - Qt::Alignment, const QskTickmarksMetrics& metrics ); + Qt::Alignment, QskTickmarksMetrics metrics ); private: Q_DECLARE_PRIVATE( QskTickmarksNode )