From ad5d2ddf66b22b92921275351f7492318ed7732e Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Sun, 3 Sep 2017 14:56:39 +0200 Subject: [PATCH] QskBorderMetrics::rotated + QskBoxColors::rotated added --- src/common/QskBorderMetrics.cpp | 15 +++++++++++++++ src/common/QskBorderMetrics.h | 1 + src/common/QskBoxColors.cpp | 17 +++++++++++++++++ src/common/QskBoxColors.h | 4 +++- 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/common/QskBorderMetrics.cpp b/src/common/QskBorderMetrics.cpp index b5e448dd..11b42d08 100644 --- a/src/common/QskBorderMetrics.cpp +++ b/src/common/QskBorderMetrics.cpp @@ -106,6 +106,21 @@ void QskBorderMetrics::setRadius( Qt::Corner corner, qreal radiusX, qreal radius } } +QskBorderMetrics QskBorderMetrics::rotated() const +{ + QskBorderMetrics other; + + other.m_widths = m_widths.rotated(); + + for ( int i = 0; i < 4; i++ ) + other.m_radii[i] = m_radii[i].transposed(); + + other.m_widthIsRelative = m_widthIsRelative; + other.m_radiusIsRelative = m_radiusIsRelative; + + return other; +} + QskBorderMetrics QskBorderMetrics::toAbsolute( const QSizeF& size ) const { if ( !( m_radiusIsRelative || m_widthIsRelative ) ) diff --git a/src/common/QskBorderMetrics.h b/src/common/QskBorderMetrics.h index 2fc9d8b6..75152d35 100644 --- a/src/common/QskBorderMetrics.h +++ b/src/common/QskBorderMetrics.h @@ -65,6 +65,7 @@ public: QskBorderMetrics interpolated( const QskBorderMetrics&, qreal value ) const; QskBorderMetrics toAbsolute ( const QSizeF& ) const; + QskBorderMetrics rotated() const; static QVariant interpolate( const QskBorderMetrics&, const QskBorderMetrics&, qreal progress ); diff --git a/src/common/QskBoxColors.cpp b/src/common/QskBoxColors.cpp index 9a136df3..291b4439 100644 --- a/src/common/QskBoxColors.cpp +++ b/src/common/QskBoxColors.cpp @@ -217,6 +217,23 @@ QskBoxColors QskBoxColors::mirrored( Qt::Orientations orientations ) const return c; } +QskBoxColors QskBoxColors::rotated() const +{ + QskBoxColors c; + + c.m_border[ Qsk::Left ] = m_border[ Qsk::Top ]; + c.m_border[ Qsk::Top ] = m_border[ Qsk::Right ]; + c.m_border[ Qsk::Right ] = m_border[ Qsk::Bottom ]; + c.m_border[ Qsk::Bottom ] = m_border[ Qsk::Right ]; + + c.m_fill[ Qt::TopLeftCorner ] = m_fill[ Qt::TopRightCorner ]; + c.m_fill[ Qt::TopRightCorner ] = m_fill[ Qt::BottomRightCorner ]; + c.m_fill[ Qt::BottomLeftCorner ] = m_fill[ Qt::TopLeftCorner ]; + c.m_fill[ Qt::BottomRightCorner ] = m_fill[ Qt::BottomLeftCorner ]; + + return c; +} + QskBoxColors QskBoxColors::interpolated( const QskBoxColors& to, qreal ratio ) const { QskBoxColors colors; diff --git a/src/common/QskBoxColors.h b/src/common/QskBoxColors.h index 0fa5cbeb..b9999db8 100644 --- a/src/common/QskBoxColors.h +++ b/src/common/QskBoxColors.h @@ -45,9 +45,11 @@ public: QColor fillColor( Qt::Corner ) const; QskBoxColors interpolated( const QskBoxColors&, qreal value ) const; - QskBoxColors mirrored( Qt::Orientations ) const; QskBoxColors shaded( uint alpha ) const; + QskBoxColors mirrored( Qt::Orientations ) const; + QskBoxColors rotated() const; + static QVariant interpolate( const QskBoxColors&, const QskBoxColors&, qreal ratio );