make QskTickmarksMetrics default comparable

This commit is contained in:
Rick Vogel 2023-11-05 19:37:09 +01:00
parent b90c7a3cf2
commit 6ed9d1f50f
4 changed files with 23 additions and 11 deletions

View File

@ -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 );

View File

@ -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==(

View File

@ -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;

View File

@ -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 )