diff --git a/src/common/QskBoxBorderMetrics.cpp b/src/common/QskBoxBorderMetrics.cpp index 265b244d..c7fd627c 100644 --- a/src/common/QskBoxBorderMetrics.cpp +++ b/src/common/QskBoxBorderMetrics.cpp @@ -22,24 +22,12 @@ static inline qreal qskAbsoluted( qreal length, qreal percentage ) return percentage / 100.0 * 0.5 * length; } -QskBoxBorderMetrics::~QskBoxBorderMetrics() -{ -} - -bool QskBoxBorderMetrics::operator==( const QskBoxBorderMetrics& other ) const -{ - if ( m_sizeMode != other.m_sizeMode ) - return false; - - return m_widths == other.m_widths; -} - -void QskBoxBorderMetrics::setSizeMode( Qt::SizeMode sizeMode ) +void QskBoxBorderMetrics::setSizeMode( Qt::SizeMode sizeMode ) noexcept { m_sizeMode = sizeMode; } -void QskBoxBorderMetrics::setWidths( const QskMargins& widths ) +void QskBoxBorderMetrics::setWidths( const QskMargins& widths ) noexcept { m_widths.setLeft( qMax( widths.left(), 0.0 ) ); m_widths.setTop( qMax( widths.top(), 0.0 ) ); @@ -47,12 +35,12 @@ void QskBoxBorderMetrics::setWidths( const QskMargins& widths ) m_widths.setBottom( qMax( widths.bottom(), 0.0 ) ); } -void QskBoxBorderMetrics::setWidthAt( Qt::Edges edges, qreal width ) +void QskBoxBorderMetrics::setWidthAt( Qt::Edges edges, qreal width ) noexcept { m_widths.setMarginsAt( edges, qMax( width, 0.0 ) ); } -QskBoxBorderMetrics QskBoxBorderMetrics::toAbsolute( const QSizeF& size ) const +QskBoxBorderMetrics QskBoxBorderMetrics::toAbsolute( const QSizeF& size ) const noexcept { if ( m_sizeMode != Qt::RelativeSize ) return *this; @@ -79,7 +67,7 @@ QskBoxBorderMetrics QskBoxBorderMetrics::toAbsolute( const QSizeF& size ) const } QskBoxBorderMetrics QskBoxBorderMetrics::interpolated( - const QskBoxBorderMetrics& to, qreal ratio ) const + const QskBoxBorderMetrics& to, qreal ratio ) const noexcept { if ( ( *this == to ) || ( m_sizeMode != to.m_sizeMode ) ) return to; @@ -95,7 +83,7 @@ QVariant QskBoxBorderMetrics::interpolate( return QVariant::fromValue( from.interpolated( to, progress ) ); } -uint QskBoxBorderMetrics::hash( uint seed ) const +uint QskBoxBorderMetrics::hash( uint seed ) const noexcept { uint hash = qHashBits( &m_widths, sizeof( m_widths ), seed ); diff --git a/src/common/QskBoxBorderMetrics.h b/src/common/QskBoxBorderMetrics.h index f91113ac..f789fc8a 100644 --- a/src/common/QskBoxBorderMetrics.h +++ b/src/common/QskBoxBorderMetrics.h @@ -12,45 +12,42 @@ #include #include -class QDebug; class QVariant; class QSK_EXPORT QskBoxBorderMetrics { public: - constexpr QskBoxBorderMetrics(); + constexpr QskBoxBorderMetrics() noexcept; constexpr QskBoxBorderMetrics( - qreal width, Qt::SizeMode = Qt::AbsoluteSize ); + qreal width, Qt::SizeMode = Qt::AbsoluteSize ) noexcept; constexpr QskBoxBorderMetrics( qreal left, qreal top, - qreal right, qreal bottom, Qt::SizeMode = Qt::AbsoluteSize ); + qreal right, qreal bottom, Qt::SizeMode = Qt::AbsoluteSize ) noexcept; - constexpr QskBoxBorderMetrics( - const QskMargins& widths, Qt::SizeMode sizeMode = Qt::AbsoluteSize ); + constexpr QskBoxBorderMetrics( const QskMargins& widths, + Qt::SizeMode sizeMode = Qt::AbsoluteSize ) noexcept; - ~QskBoxBorderMetrics(); + constexpr bool operator==( const QskBoxBorderMetrics& ) const noexcept; + constexpr bool operator!=( const QskBoxBorderMetrics& ) const noexcept; - bool operator==( const QskBoxBorderMetrics& ) const; - bool operator!=( const QskBoxBorderMetrics& ) const; + constexpr bool isNull() const noexcept; - bool isNull() const; + void setWidthAt( Qt::Edges, qreal width ) noexcept; + qreal widthAt( Qt::Edge ) const noexcept; - void setWidthAt( Qt::Edges, qreal width ); - qreal widthAt( Qt::Edge ) const; + void setWidths( const QskMargins& ) noexcept; + constexpr const QskMargins& widths() const noexcept; - void setWidths( const QskMargins& ); - const QskMargins& widths() const; - - void setSizeMode( Qt::SizeMode ); - Qt::SizeMode sizeMode() const; + void setSizeMode( Qt::SizeMode ) noexcept; + constexpr Qt::SizeMode sizeMode() const noexcept; QskBoxBorderMetrics interpolated( - const QskBoxBorderMetrics&, qreal value ) const; + const QskBoxBorderMetrics&, qreal value ) const noexcept; - QskBoxBorderMetrics toAbsolute( const QSizeF& ) const; + QskBoxBorderMetrics toAbsolute( const QSizeF& ) const noexcept; - uint hash( uint seed = 0 ) const; + uint hash( uint seed = 0 ) const noexcept; static QVariant interpolate( const QskBoxBorderMetrics&, const QskBoxBorderMetrics&, qreal progress ); @@ -60,59 +57,67 @@ class QSK_EXPORT QskBoxBorderMetrics Qt::SizeMode m_sizeMode : 2; }; -inline constexpr QskBoxBorderMetrics::QskBoxBorderMetrics() +inline constexpr QskBoxBorderMetrics::QskBoxBorderMetrics() noexcept : m_sizeMode( Qt::AbsoluteSize ) { } inline constexpr QskBoxBorderMetrics::QskBoxBorderMetrics( - qreal width, Qt::SizeMode sizeMode ) + qreal width, Qt::SizeMode sizeMode ) noexcept : m_widths( width ) , m_sizeMode( sizeMode ) { } inline constexpr QskBoxBorderMetrics::QskBoxBorderMetrics( - const QskMargins& widths, Qt::SizeMode sizeMode ) + const QskMargins& widths, Qt::SizeMode sizeMode ) noexcept : m_widths( widths ) , m_sizeMode( sizeMode ) { } inline constexpr QskBoxBorderMetrics::QskBoxBorderMetrics( - qreal left, qreal top, qreal right, qreal bottom, Qt::SizeMode sizeMode ) + qreal left, qreal top, qreal right, qreal bottom, Qt::SizeMode sizeMode ) noexcept : m_widths( left, top, right, bottom ) , m_sizeMode( sizeMode ) { } -inline bool QskBoxBorderMetrics::operator!=( const QskBoxBorderMetrics& other ) const +inline constexpr bool QskBoxBorderMetrics::operator==( + const QskBoxBorderMetrics& other ) const noexcept +{ + return ( m_sizeMode == other.m_sizeMode ) && ( m_widths == other.m_widths ); +} + +inline constexpr bool QskBoxBorderMetrics::operator!=( + const QskBoxBorderMetrics& other ) const noexcept { return !( *this == other ); } -inline bool QskBoxBorderMetrics::isNull() const +inline constexpr bool QskBoxBorderMetrics::isNull() const noexcept { return m_widths.isNull(); } -inline const QskMargins& QskBoxBorderMetrics::widths() const +inline constexpr const QskMargins& QskBoxBorderMetrics::widths() const noexcept { return m_widths; } -inline qreal QskBoxBorderMetrics::widthAt( Qt::Edge edge ) const +inline qreal QskBoxBorderMetrics::widthAt( Qt::Edge edge ) const noexcept { return m_widths.marginAt( edge ); } -inline Qt::SizeMode QskBoxBorderMetrics::sizeMode() const +inline constexpr Qt::SizeMode QskBoxBorderMetrics::sizeMode() const noexcept { return m_sizeMode; } #ifndef QT_NO_DEBUG_STREAM +class QDebug; QSK_EXPORT QDebug operator<<( QDebug, const QskBoxBorderMetrics& ); #endif