QskMargins improved

This commit is contained in:
Uwe Rathmann 2020-12-27 11:15:34 +01:00
parent b8bbd3a135
commit bb3ffc454f
3 changed files with 36 additions and 15 deletions

View File

@ -41,7 +41,12 @@ class QSK_EXPORT QskMargins : public QMarginsF
constexpr QskMargins rotated() const noexcept;
constexpr QskMargins translated( qreal dx, qreal dy ) const noexcept;
constexpr QskMargins expanded( qreal dx, qreal dy ) const noexcept;
constexpr QskMargins grownBy( qreal dx, qreal dy ) const noexcept;
constexpr QskMargins shrunkBy( qreal dx, qreal dy ) const noexcept;
constexpr QskMargins expandedTo( const QskMargins& ) const noexcept;
constexpr QskMargins boundedTo( const QskMargins& ) const noexcept;
void setMargins( qreal margin ) noexcept;
void setMargins( qreal horizontal, qreal vertical ) noexcept;
@ -132,11 +137,35 @@ constexpr inline QskMargins QskMargins::translated( qreal dx, qreal dy ) const n
return QskMargins( left() + dx, top() + dy, right() - dx, bottom() - dy );
}
constexpr inline QskMargins QskMargins::expanded( qreal dx, qreal dy ) const noexcept
constexpr inline QskMargins QskMargins::grownBy( qreal dx, qreal dy ) const noexcept
{
return QskMargins( left() + dx, top() + dy, right() + dx, bottom() + dy );
}
constexpr inline QskMargins QskMargins::shrunkBy( qreal dx, qreal dy ) const noexcept
{
return QskMargins( left() - dx, top() - dy, right() - dx, bottom() - dy );
}
constexpr inline QskMargins QskMargins::expandedTo( const QskMargins& other ) const noexcept
{
return QskMargins(
qMax( left(), other.left() ),
qMax( top(), other.top() ),
qMax( right(), other.right() ),
qMax( bottom(), other.bottom() )
);
}
constexpr inline QskMargins QskMargins::boundedTo( const QskMargins& other ) const noexcept
{
return QskMargins(
qMin( left(), other.left() ),
qMin( top(), other.top() ),
qMin( right(), other.right() ),
qMin( bottom(), other.bottom() )
);
}
constexpr inline qreal QskMargins::extent( Qt::Orientation orientation ) const noexcept
{
return ( orientation == Qt::Horizontal ) ? width() : height();

View File

@ -42,16 +42,12 @@ bool QskBox::hasPanel() const
void QskBox::setPadding( qreal padding )
{
setPadding( QMarginsF( padding, padding, padding, padding ) );
setPadding( QskMargins( padding ) );
}
void QskBox::setPadding( const QMarginsF& padding )
{
const QMarginsF pd(
qMax( qreal( padding.left() ), qreal( 0.0 ) ),
qMax( qreal( padding.top() ), qreal( 0.0 ) ),
qMax( qreal( padding.right() ), qreal( 0.0 ) ),
qMax( qreal( padding.bottom() ), qreal( 0.0 ) ) );
const auto pd = QskMargins().expandedTo( padding );
if ( pd != paddingHint( Panel ) )
{
@ -74,7 +70,7 @@ void QskBox::resetPadding()
if ( polishOnResize() || autoLayoutChildren() )
polish();
Q_EMIT paddingChanged( padding() );
Q_EMIT paddingChanged( paddingHint( Panel ) );
}
}

View File

@ -172,16 +172,12 @@ QskGradient QskControl::background() const
void QskControl::setMargins( qreal margin )
{
setMargins( QMarginsF( margin, margin, margin, margin ) );
setMargins( QskMargins( margin ) );
}
void QskControl::setMargins( const QMarginsF& margins )
{
const QMarginsF m(
qMax( qreal( margins.left() ), qreal( 0.0 ) ),
qMax( qreal( margins.top() ), qreal( 0.0 ) ),
qMax( qreal( margins.right() ), qreal( 0.0 ) ),
qMax( qreal( margins.bottom() ), qreal( 0.0 ) ) );
const auto m = QskMargins().expandedTo( margins );
if ( m != this->margins() )
{