From f4c2211f2c196b6662fdc023578e1498805f3377 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Fri, 22 Nov 2024 17:37:47 +0100 Subject: [PATCH] API extended --- src/common/QskIntervalF.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/common/QskIntervalF.h b/src/common/QskIntervalF.h index fdbf4289..c0c967c4 100644 --- a/src/common/QskIntervalF.h +++ b/src/common/QskIntervalF.h @@ -36,6 +36,8 @@ class QSK_EXPORT QskIntervalF constexpr qreal upperBound() const noexcept; void setUpperBound( qreal ) noexcept; + constexpr qreal center() const noexcept; + void spanFromLowerBound( qreal ) noexcept; void spanFromUpperBound( qreal ) noexcept; @@ -66,6 +68,9 @@ class QSK_EXPORT QskIntervalF void extend( qreal value ) noexcept; QskIntervalF extended( qreal value ) const noexcept; + void stretch( qreal length ) noexcept; + constexpr QskIntervalF stretched( qreal length ) const noexcept; + QskIntervalF operator|( const QskIntervalF& ) const noexcept; QskIntervalF operator&( const QskIntervalF& ) const noexcept; @@ -135,6 +140,11 @@ inline constexpr qreal QskIntervalF::upperBound() const noexcept return m_upperBound; } +inline constexpr qreal QskIntervalF::center() const noexcept +{ + return m_lowerBound + 0.5 * ( m_upperBound - m_lowerBound ); +} + inline constexpr qreal QskIntervalF::length() const noexcept { return ( m_upperBound > m_lowerBound ) ? ( m_upperBound - m_lowerBound ) : 0.0; @@ -198,6 +208,18 @@ inline constexpr QskIntervalF QskIntervalF::normalized( qreal value1, qreal valu return ( value1 < value2 ) ? QskIntervalF( value1, value2 ) : QskIntervalF( value2, value1 ); } +inline void QskIntervalF::stretch( qreal length ) noexcept +{ + m_lowerBound = center() - 0.5 * length; + m_upperBound = m_lowerBound + length; +} + +inline constexpr QskIntervalF QskIntervalF::stretched( qreal length ) const noexcept +{ + const auto lowerBound = center() - 0.5 * length; + return QskIntervalF( lowerBound, lowerBound + length ); +} + inline QskIntervalF QskIntervalF::operator&( const QskIntervalF& other ) const noexcept { return intersected( other );