From bc54bfbe97700c5a9393c5be55a4c2aecfabd380 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sat, 2 May 2020 12:38:44 +0200 Subject: [PATCH] formal changes for QskLayoutHint --- qmlexport/QskQml.cpp | 2 + src/layouts/QskLayoutHint.cpp | 61 ++++------------ src/layouts/QskLayoutHint.h | 127 +++++++++++++++++++++++----------- 3 files changed, 102 insertions(+), 88 deletions(-) diff --git a/qmlexport/QskQml.cpp b/qmlexport/QskQml.cpp index b132ee02..03ade951 100644 --- a/qmlexport/QskQml.cpp +++ b/qmlexport/QskQml.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -289,6 +290,7 @@ void QskQml::registerTypes() QSK_REGISTER_GADGET( QskGradient, "Gradient" ); QSK_REGISTER_GADGET( QskGradientStop, "GradientStop" ); QSK_REGISTER_GADGET( QskIntervalF, "IntervalF" ); + QSK_REGISTER_GADGET( QskLayoutHint, "LayoutHint" ); QSK_REGISTER_GADGET( QskSizePolicy, "SizePolicy" ); QSK_REGISTER_GADGET( QskTextOptions, "TextOptions" ); diff --git a/src/layouts/QskLayoutHint.cpp b/src/layouts/QskLayoutHint.cpp index 0c0c0de4..03c0aadb 100644 --- a/src/layouts/QskLayoutHint.cpp +++ b/src/layouts/QskLayoutHint.cpp @@ -6,38 +6,9 @@ #include "QskLayoutHint.h" #include "QskControl.h" #include +#include -QskLayoutHint::QskLayoutHint() - : QskLayoutHint( 0.0, 0.0, QskLayoutHint::unlimited ) -{ -} - -QskLayoutHint::QskLayoutHint( qreal minimum, qreal preferred, qreal maximum ) - : m_minimum( minimum ) - , m_preferred( preferred ) - , m_maximum( maximum ) -{ -} - -qreal QskLayoutHint::size( int which ) const -{ - switch( which ) - { - case Qt::MinimumSize: - return m_minimum; - - case Qt::PreferredSize: - return m_preferred; - - case Qt::MaximumSize: - return m_maximum; - - default: - return 0.0; - } -} - -void QskLayoutHint::setSize( int which, qreal size ) +void QskLayoutHint::setSize( int which, qreal size ) noexcept { switch (which) { @@ -58,27 +29,21 @@ void QskLayoutHint::setSize( int which, qreal size ) } } -void QskLayoutHint::expandTo( const QskLayoutHint& other ) +void QskLayoutHint::expandTo( const QskLayoutHint& other ) noexcept { - m_minimum = qMax( m_minimum, other.m_minimum ); - m_preferred = qMax( m_preferred, other.m_preferred ); - m_maximum = qMax( m_maximum, other.m_maximum ); + m_minimum = std::max( m_minimum, other.m_minimum ); + m_preferred = std::max( m_preferred, other.m_preferred ); + m_maximum = std::max( m_maximum, other.m_maximum ); } -void QskLayoutHint::normalize() +void QskLayoutHint::normalize() noexcept { - m_minimum = qMax( m_minimum, qreal( 0.0 ) ); - m_maximum = qMax( m_minimum, m_maximum ); + m_minimum = std::max( m_minimum, qreal( 0.0 ) ); + m_maximum = std::max( m_minimum, m_maximum ); m_preferred = qBound( m_minimum, m_preferred, m_maximum ); } -bool QskLayoutHint::isDefault() const -{ - return ( m_minimum == 0.0 ) && ( m_preferred == 0.0 ) - && ( m_maximum == QskLayoutHint::unlimited ); -} - -qreal QskLayoutHint::combined( int which, qreal value1, qreal value2 ) +qreal QskLayoutHint::combined( int which, qreal value1, qreal value2 ) noexcept { if ( which == Qt::MaximumSize ) { @@ -88,10 +53,10 @@ qreal QskLayoutHint::combined( int which, qreal value1, qreal value2 ) if ( value2 < 0.0 ) return value1; - return qMin( value1, value2 ); + return std::min( value1, value2 ); } - return qMax( value1, value2 ); + return std::max( value1, value2 ); } #ifndef QT_NO_DEBUG_STREAM @@ -120,3 +85,5 @@ QDebug operator<<( QDebug debug, const QskLayoutHint& hint ) } #endif + +#include "moc_QskLayoutHint.cpp" diff --git a/src/layouts/QskLayoutHint.h b/src/layouts/QskLayoutHint.h index 2733f7e7..f8465d60 100644 --- a/src/layouts/QskLayoutHint.h +++ b/src/layouts/QskLayoutHint.h @@ -8,133 +8,178 @@ #include "QskGlobal.h" #include +#include #include -class QDebug; - class QSK_EXPORT QskLayoutHint { + Q_GADGET + + Q_PROPERTY( qreal minimum READ minimum WRITE setMinimum ) + Q_PROPERTY( qreal preferred READ preferred WRITE setPreferred ) + Q_PROPERTY( qreal maximum READ maximum WRITE setMaximum ) + public: - QskLayoutHint(); - QskLayoutHint( qreal minimum, qreal preferred, qreal maximum ); + constexpr QskLayoutHint() noexcept = default; + constexpr QskLayoutHint( qreal minimum, qreal preferred, qreal maximum ) noexcept; - void normalize(); + void normalize() noexcept; - QskLayoutHint normalized() const; - bool isDefault() const; + QskLayoutHint normalized() const noexcept; + constexpr bool isDefault() const noexcept; - qreal size( int which ) const; - void setSize( int which, qreal size ); + qreal size( int which ) const noexcept; + void setSize( int which, qreal size ) noexcept; - bool operator==( const QskLayoutHint& ) const; - bool operator!=( const QskLayoutHint& ) const; + constexpr bool operator==( const QskLayoutHint& ) const noexcept; + constexpr bool operator!=( const QskLayoutHint& ) const noexcept; - void setMinimum( qreal value ); - qreal minimum() const; + void setMinimum( qreal value ) noexcept; + constexpr qreal minimum() const noexcept; - void setPreferred( qreal value ); - qreal preferred() const; + void setPreferred( qreal value ) noexcept; + constexpr qreal preferred() const noexcept; - void setMaximum( qreal value ); - qreal maximum() const; + void setMaximum( qreal value ) noexcept; + constexpr qreal maximum() const noexcept; - void setSizes( qreal minimum, qreal preferred, qreal maximum ); - void expandTo( const QskLayoutHint& ); + void setSizes( qreal minimum, qreal preferred, qreal maximum ) noexcept; + void expandTo( const QskLayoutHint& ) noexcept; - void expandMinimum( qreal value ); - void expandPreferred( qreal value ); - void expandMaximum( qreal value ); + void expandMinimum( qreal value ) noexcept; + void expandPreferred( qreal value ) noexcept; + void expandMaximum( qreal value ) noexcept; - static qreal combined( int which, qreal value1, qreal value2 ); + static qreal combined( int which, qreal value1, qreal value2 ) noexcept; static constexpr qreal unlimited = std::numeric_limits< float >::max(); private: - qreal m_minimum; - qreal m_preferred; - qreal m_maximum; + qreal m_minimum = 0.0; + qreal m_preferred = 0.0; + qreal m_maximum = QskLayoutHint::unlimited; }; -inline qreal QskLayoutHint::minimum() const +Q_DECLARE_TYPEINFO( QskLayoutHint, Q_MOVABLE_TYPE ); +Q_DECLARE_METATYPE( QskLayoutHint ) + +QT_WARNING_PUSH +QT_WARNING_DISABLE_CLANG("-Wfloat-equal") +QT_WARNING_DISABLE_GCC("-Wfloat-equal") +QT_WARNING_DISABLE_INTEL(1572) + +inline constexpr QskLayoutHint::QskLayoutHint( + qreal minimum, qreal preferred, qreal maximum ) noexcept + : m_minimum( minimum ) + , m_preferred( preferred ) + , m_maximum( maximum ) +{ +} + +inline constexpr qreal QskLayoutHint::minimum() const noexcept { return m_minimum; } -inline void QskLayoutHint::setMinimum( qreal value ) +inline void QskLayoutHint::setMinimum( qreal value ) noexcept { m_minimum = value; } -inline qreal QskLayoutHint::preferred() const +inline constexpr qreal QskLayoutHint::preferred() const noexcept { return m_preferred; } -inline void QskLayoutHint::setPreferred( qreal value ) +inline void QskLayoutHint::setPreferred( qreal value ) noexcept { m_preferred = value; } -inline qreal QskLayoutHint::maximum() const +inline constexpr qreal QskLayoutHint::maximum() const noexcept { return m_maximum; } -inline void QskLayoutHint::setMaximum( qreal value ) +inline void QskLayoutHint::setMaximum( qreal value ) noexcept { m_maximum = value; } -inline void QskLayoutHint::expandMinimum( qreal value ) +inline void QskLayoutHint::expandMinimum( qreal value ) noexcept { if ( value > m_minimum ) m_minimum = value; } -inline void QskLayoutHint::expandPreferred( qreal value ) +inline void QskLayoutHint::expandPreferred( qreal value ) noexcept { if ( value > m_preferred ) m_preferred = value; } -inline void QskLayoutHint::expandMaximum( qreal value ) +inline void QskLayoutHint::expandMaximum( qreal value ) noexcept { if ( value > m_maximum ) m_maximum = value; } inline void QskLayoutHint::setSizes( - qreal minimum, qreal preferred, qreal maximum ) + qreal minimum, qreal preferred, qreal maximum ) noexcept { m_minimum = minimum; m_preferred = preferred; m_maximum = maximum; } -inline bool QskLayoutHint::operator==( const QskLayoutHint& other ) const +inline qreal QskLayoutHint::size( int which ) const noexcept +{ + switch( which ) + { + case Qt::MinimumSize: + return m_minimum; + + case Qt::PreferredSize: + return m_preferred; + + case Qt::MaximumSize: + return m_maximum; + } + + return 0.0; +} + +inline constexpr bool QskLayoutHint::isDefault() const noexcept +{ + return ( m_minimum == 0.0 ) && ( m_preferred == 0.0 ) + && ( m_maximum == QskLayoutHint::unlimited ); +} + +inline constexpr bool QskLayoutHint::operator==( const QskLayoutHint& other ) const noexcept { return ( m_preferred == other.m_preferred ) && ( m_minimum == other.m_minimum ) && ( m_maximum == other.m_maximum ); } -inline bool QskLayoutHint::operator!=( const QskLayoutHint& other ) const +inline constexpr bool QskLayoutHint::operator!=( const QskLayoutHint& other ) const noexcept { return !( *this == other ); } -inline QskLayoutHint QskLayoutHint::normalized() const +inline QskLayoutHint QskLayoutHint::normalized() const noexcept { auto hint = *this; hint.normalize(); return hint; } +QT_WARNING_POP + #ifndef QT_NO_DEBUG_STREAM +class QDebug; QSK_EXPORT QDebug operator<<( QDebug, const QskLayoutHint& ); #endif -Q_DECLARE_TYPEINFO( QskLayoutHint, Q_MOVABLE_TYPE ); - #endif