using QskMargins

This commit is contained in:
Uwe Rathmann 2020-12-17 16:44:54 +01:00
parent a49ef1daa4
commit 4d40a9bd12

View File

@ -778,7 +778,7 @@ const char* QskSkinnable::skinStateAsPrintable( QskAspect::State state ) const
return bytes[ counter ].constData(); return bytes[ counter ].constData();
} }
static inline QMarginsF qskEffectivePadding( const QskSkinnable* skinnable, static inline QskMargins qskEffectivePadding( const QskSkinnable* skinnable,
QskAspect::Aspect aspect, const QSizeF& size, bool inner ) QskAspect::Aspect aspect, const QSizeF& size, bool inner )
{ {
const auto shape = skinnable->boxShapeHint( aspect ).toAbsolute( size ); const auto shape = skinnable->boxShapeHint( aspect ).toAbsolute( size );
@ -796,7 +796,7 @@ static inline QMarginsF qskEffectivePadding( const QskSkinnable* skinnable,
const qreal bottom = qMax( shape.radius( Qt::BottomLeftCorner ).height(), const qreal bottom = qMax( shape.radius( Qt::BottomLeftCorner ).height(),
shape.radius( Qt::BottomRightCorner ).height() ); shape.radius( Qt::BottomRightCorner ).height() );
QMarginsF padding( left, top, right, bottom ); QskMargins padding( left, top, right, bottom );
// half of the border goes to the inner side // half of the border goes to the inner side
const auto borderMargins = borderMetrics.toAbsolute( size ).widths() * 0.5; const auto borderMargins = borderMetrics.toAbsolute( size ).widths() * 0.5;
@ -816,7 +816,7 @@ static inline QMarginsF qskEffectivePadding( const QskSkinnable* skinnable,
const auto paddingHint = skinnable->paddingHint( aspect ); const auto paddingHint = skinnable->paddingHint( aspect );
return QMarginsF( return QskMargins(
qMax( padding.left(), paddingHint.left() ), qMax( padding.left(), paddingHint.left() ),
qMax( padding.top(), paddingHint.top() ), qMax( padding.top(), paddingHint.top() ),
qMax( padding.right(), paddingHint.right() ), qMax( padding.right(), paddingHint.right() ),
@ -833,26 +833,27 @@ QMarginsF QskSkinnable::innerPadding(
QSizeF QskSkinnable::innerBoxSize( QSizeF QskSkinnable::innerBoxSize(
QskAspect::Aspect aspect, const QSizeF& outerBoxSize ) const QskAspect::Aspect aspect, const QSizeF& outerBoxSize ) const
{ {
const QMarginsF m = qskEffectivePadding( this, aspect, outerBoxSize, true ); const auto pd = qskEffectivePadding( this, aspect, outerBoxSize, true );
return QSizeF( outerBoxSize.width() - m.left() - m.right(), return QSizeF( outerBoxSize.width() - pd.width(),
outerBoxSize.height() - m.top() - m.bottom() ); outerBoxSize.height() - pd.height() );
} }
QRectF QskSkinnable::innerBox( QRectF QskSkinnable::innerBox(
QskAspect::Aspect aspect, const QRectF& outerBox ) const QskAspect::Aspect aspect, const QRectF& outerBox ) const
{ {
const QMarginsF m = qskEffectivePadding( this, aspect, outerBox.size(), true ); const auto pd = qskEffectivePadding( this, aspect, outerBox.size(), true );
return outerBox.marginsRemoved( m ); return outerBox.marginsRemoved( pd );
} }
QSizeF QskSkinnable::outerBoxSize( QSizeF QskSkinnable::outerBoxSize(
QskAspect::Aspect aspect, const QSizeF& innerBoxSize ) const QskAspect::Aspect aspect, const QSizeF& innerBoxSize ) const
{ {
const QMarginsF m = qskEffectivePadding( this, aspect, innerBoxSize, false ); const auto pd = qskEffectivePadding( this, aspect, innerBoxSize, false );
return QSizeF( innerBoxSize.width() + m.left() + m.right(), // since Qt 5.14 we would have QSizeF::grownBy !
innerBoxSize.height() + m.top() + m.bottom() ); return QSizeF( innerBoxSize.width() + pd.width(),
innerBoxSize.height() + pd.height() );
} }
QRectF QskSkinnable::outerBox( QRectF QskSkinnable::outerBox(