diff --git a/src/common/QskBoxBorderMetrics.h b/src/common/QskBoxBorderMetrics.h index 2dd830a1..0c6ab370 100644 --- a/src/common/QskBoxBorderMetrics.h +++ b/src/common/QskBoxBorderMetrics.h @@ -19,9 +19,11 @@ class QVariant; class QSK_EXPORT QskBoxBorderMetrics { public: - QskBoxBorderMetrics(); - QskBoxBorderMetrics( qreal width, Qt::SizeMode = Qt::AbsoluteSize ); - QskBoxBorderMetrics( const QskMargins& widths, Qt::SizeMode sizeMode = Qt::AbsoluteSize ); + constexpr QskBoxBorderMetrics(); + constexpr QskBoxBorderMetrics( qreal width, Qt::SizeMode = Qt::AbsoluteSize ); + constexpr QskBoxBorderMetrics( qreal left, qreal top, + qreal right, qreal bottom, Qt::SizeMode = Qt::AbsoluteSize ); + constexpr QskBoxBorderMetrics( const QskMargins& widths, Qt::SizeMode sizeMode = Qt::AbsoluteSize ); ~QskBoxBorderMetrics(); @@ -52,24 +54,31 @@ private: Qt::SizeMode m_sizeMode : 2; }; -inline QskBoxBorderMetrics::QskBoxBorderMetrics(): +inline constexpr QskBoxBorderMetrics::QskBoxBorderMetrics(): m_sizeMode( Qt::AbsoluteSize ) { } -inline QskBoxBorderMetrics::QskBoxBorderMetrics( qreal width, Qt::SizeMode sizeMode ): +inline constexpr QskBoxBorderMetrics::QskBoxBorderMetrics( qreal width, Qt::SizeMode sizeMode ): m_widths( width ), m_sizeMode( sizeMode ) { } -inline QskBoxBorderMetrics::QskBoxBorderMetrics( +inline constexpr QskBoxBorderMetrics::QskBoxBorderMetrics( const QskMargins& widths, Qt::SizeMode sizeMode ): m_widths( widths ), m_sizeMode( sizeMode ) { } +inline constexpr QskBoxBorderMetrics::QskBoxBorderMetrics( qreal left, qreal top, + qreal right, qreal bottom, Qt::SizeMode sizeMode ): + m_widths( left, top, right, bottom ), + m_sizeMode( sizeMode ) +{ +} + inline bool QskBoxBorderMetrics::operator!=( const QskBoxBorderMetrics& other ) const { return !( *this == other ); diff --git a/src/common/QskBoxShapeMetrics.h b/src/common/QskBoxShapeMetrics.h index e2e82ddd..78c0a8c4 100644 --- a/src/common/QskBoxShapeMetrics.h +++ b/src/common/QskBoxShapeMetrics.h @@ -19,7 +19,10 @@ class QMarginsF; class QSK_EXPORT QskBoxShapeMetrics { public: - QskBoxShapeMetrics(); + constexpr QskBoxShapeMetrics(); + constexpr QskBoxShapeMetrics( qreal topLeft, qreal topRight, + qreal bottomLeft, qreal bottomRight, Qt::SizeMode = Qt::AbsoluteSize ); + QskBoxShapeMetrics( qreal radius, Qt::SizeMode = Qt::AbsoluteSize ); QskBoxShapeMetrics( qreal radiusX, qreal radiusY, Qt::SizeMode = Qt::AbsoluteSize ); @@ -72,9 +75,10 @@ public: const QskBoxShapeMetrics&, qreal progress ); private: - QskBoxShapeMetrics( Qt::SizeMode sizeMode, const QSizeF radii[4] ): + inline constexpr QskBoxShapeMetrics( Qt::SizeMode sizeMode, const QSizeF radii[4] ): m_radii( { radii[0], radii[1], radii[2], radii[3] } ), - m_sizeMode( sizeMode ) + m_sizeMode( sizeMode ), + m_aspectRatioMode( Qt::KeepAspectRatio ) { } @@ -83,9 +87,10 @@ private: Qt::AspectRatioMode m_aspectRatioMode : 2; }; -inline QskBoxShapeMetrics::QskBoxShapeMetrics(): +inline constexpr QskBoxShapeMetrics::QskBoxShapeMetrics(): m_radii( { { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 }, { 0.0, 0.0 } } ), - m_sizeMode( Qt::AbsoluteSize ) + m_sizeMode( Qt::AbsoluteSize ), + m_aspectRatioMode( Qt::KeepAspectRatio ) { } @@ -94,6 +99,15 @@ inline QskBoxShapeMetrics::QskBoxShapeMetrics( qreal radius, Qt::SizeMode sizeMo { } +inline constexpr QskBoxShapeMetrics::QskBoxShapeMetrics( qreal topLeft, qreal topRight, + qreal bottomLeft, qreal bottomRight, Qt::SizeMode sizeMode ): + m_radii( { { topLeft, topLeft }, { topRight, topRight }, + { bottomLeft, bottomLeft }, { bottomRight, bottomRight } } ), + m_sizeMode( sizeMode ), + m_aspectRatioMode( Qt::KeepAspectRatio ) +{ +} + inline bool QskBoxShapeMetrics::operator!=( const QskBoxShapeMetrics& other ) const { return !( *this == other );