diff --git a/src/common/QskBoxBorderMetrics.cpp b/src/common/QskBoxBorderMetrics.cpp index 18178062..9d96c82b 100644 --- a/src/common/QskBoxBorderMetrics.cpp +++ b/src/common/QskBoxBorderMetrics.cpp @@ -7,6 +7,7 @@ #include #include +#include static void qskRegisterBoxBorderMetrics() { @@ -79,6 +80,15 @@ QskBoxBorderMetrics QskBoxBorderMetrics::toAbsolute( const QSizeF& size ) const return absoluted; } +QRectF QskBoxBorderMetrics::adjustedRect( const QRectF& rect ) const +{ + if ( m_sizeMode == Qt::AbsoluteSize ) + return rect.marginsRemoved( m_widths ); + + const auto m = toAbsolute( rect.size() ); + return rect.marginsRemoved( m.m_widths ); +} + QskBoxBorderMetrics QskBoxBorderMetrics::interpolated( const QskBoxBorderMetrics& to, qreal ratio ) const noexcept { diff --git a/src/common/QskBoxBorderMetrics.h b/src/common/QskBoxBorderMetrics.h index 189eb30c..8d6d277b 100644 --- a/src/common/QskBoxBorderMetrics.h +++ b/src/common/QskBoxBorderMetrics.h @@ -77,6 +77,8 @@ class QSK_EXPORT QskBoxBorderMetrics constexpr bool isEquidistant() const noexcept; + QRectF adjustedRect( const QRectF& )const ; + private: QskMargins m_widths; Qt::SizeMode m_sizeMode;