From f03007e7b873b9443e3a0752a930fc6495c856f9 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Mon, 13 Jun 2022 08:43:28 +0200 Subject: [PATCH] QskShadowMetrics added to QskSkinHintTableEditor --- src/common/QskShadowMetrics.h | 15 +++++++++-- src/controls/QskSkinHintTableEditor.cpp | 35 ++++++++++++++++++++++--- src/controls/QskSkinHintTableEditor.h | 13 +++++++++ 3 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/common/QskShadowMetrics.h b/src/common/QskShadowMetrics.h index 8dd4a5a2..f8a232a4 100644 --- a/src/common/QskShadowMetrics.h +++ b/src/common/QskShadowMetrics.h @@ -27,8 +27,10 @@ class QSK_EXPORT QskShadowMetrics public: constexpr QskShadowMetrics( const QPointF& offset = QPointF() ) noexcept; + constexpr QskShadowMetrics( qreal spreadRadius, qreal blurRadius ) noexcept; + constexpr QskShadowMetrics( qreal spreadRadius, qreal blurRadius, - const QPointF& offset = QPointF() ) noexcept; + const QPointF& offset, Qt::SizeMode = Qt::AbsoluteSize ) noexcept; constexpr bool operator==( const QskShadowMetrics& ) const noexcept; constexpr bool operator!=( const QskShadowMetrics& ) const noexcept; @@ -74,10 +76,19 @@ inline constexpr QskShadowMetrics::QskShadowMetrics( const QPointF& offset ) noe } inline constexpr QskShadowMetrics::QskShadowMetrics( - qreal spreadRadius, qreal blurRadius, const QPointF& offset ) noexcept + qreal spreadRadius, qreal blurRadius ) noexcept + : m_spreadRadius( spreadRadius ) + , m_blurRadius( blurRadius ) +{ +} + +inline constexpr QskShadowMetrics::QskShadowMetrics( + qreal spreadRadius, qreal blurRadius, + const QPointF& offset, Qt::SizeMode sizeMode ) noexcept : m_offset( offset ) , m_spreadRadius( spreadRadius ) , m_blurRadius( blurRadius ) + , m_sizeMode( sizeMode ) { } diff --git a/src/controls/QskSkinHintTableEditor.cpp b/src/controls/QskSkinHintTableEditor.cpp index 91fc8f78..ef2cf17f 100644 --- a/src/controls/QskSkinHintTableEditor.cpp +++ b/src/controls/QskSkinHintTableEditor.cpp @@ -11,6 +11,7 @@ #include "QskBoxShapeMetrics.h" #include "QskBoxBorderMetrics.h" #include "QskBoxBorderColors.h" +#include "QskShadowMetrics.h" #include "QskGradient.h" namespace @@ -114,6 +115,11 @@ namespace { return aspect | QskAspect::Border; } + + inline QskAspect aspectShadow( QskAspect aspect ) + { + return aspect | QskAspect::Shadow; + } } QskSkinHintTableEditor::QskSkinHintTableEditor( QskSkinHintTable* table ) @@ -471,13 +477,12 @@ void QskSkinHintTableEditor::setBoxBorderColors( setColorHint( aspectBorder( aspect ), borderColors, combination ); } -void QskSkinHintTableEditor::setBoxBorderColors(QskAspect aspect, +void QskSkinHintTableEditor::setBoxBorderColors( QskAspect aspect, const QskGradient& left, const QskGradient& top, const QskGradient& right, const QskGradient& bottom, QskStateCombination combination ) { setColorHint( aspectBorder( aspect ), - QskBoxBorderColors( left, top, right, bottom ), - combination ); + QskBoxBorderColors( left, top, right, bottom ), combination ); } bool QskSkinHintTableEditor::removeBoxBorderColors( @@ -491,6 +496,30 @@ QskBoxBorderColors QskSkinHintTableEditor::boxBorderColors( QskAspect aspect ) c return colorHint< QskBoxBorderColors >( aspectBorder( aspect ) ); } +void QskSkinHintTableEditor::setShadowMetrics( QskAspect aspect, + qreal spreadRadius, qreal blurRadius, const QPointF& offset, Qt::SizeMode sizeMode ) +{ + setMetricHint( aspectShadow( aspect ), + QskShadowMetrics( spreadRadius, blurRadius, offset, sizeMode ) ); +} + +void QskSkinHintTableEditor::setShadowMetrics( QskAspect aspect, + const QskShadowMetrics& metrics, QskStateCombination combination ) +{ + setMetricHint( aspectShadow( aspect ), metrics, combination ); +} + +bool QskSkinHintTableEditor::removeShadowMetric( + QskAspect aspect, QskStateCombination combination ) +{ + return removeMetricHint( aspectShadow( aspect ), combination ); +} + +QskShadowMetrics QskSkinHintTableEditor::shadowMetrics( QskAspect aspect ) const +{ + return metricHint< QskShadowMetrics >( aspectShadow( aspect ) ); +} + void QskSkinHintTableEditor::setArcMetrics( QskAspect aspect, qreal width, qreal startAngle, qreal spanAngle, Qt::SizeMode sizeMode ) { diff --git a/src/controls/QskSkinHintTableEditor.h b/src/controls/QskSkinHintTableEditor.h index ce1b25cc..6b45df6d 100644 --- a/src/controls/QskSkinHintTableEditor.h +++ b/src/controls/QskSkinHintTableEditor.h @@ -20,6 +20,7 @@ class QskGradient; class QskBoxShapeMetrics; class QskBoxBorderMetrics; class QskBoxBorderColors; +class QskShadowMetrics; class QSK_EXPORT QskSkinHintTableEditor { @@ -234,6 +235,18 @@ class QSK_EXPORT QskSkinHintTableEditor bool removeBoxBorderColors( QskAspect, QskStateCombination = QskStateCombination() ); QskBoxBorderColors boxBorderColors( QskAspect ) const; + // shadowMetrics + + void setShadowMetrics( QskAspect, qreal, qreal, + const QPointF&, Qt::SizeMode = Qt::AbsoluteSize ); + + void setShadowMetrics( QskAspect, const QskShadowMetrics&, + QskStateCombination = QskStateCombination() ); + + bool removeShadowMetric( QskAspect, QskStateCombination = QskStateCombination() ); + + QskShadowMetrics shadowMetrics( QskAspect ) const; + // arcMetrics void setArcMetrics( QskAspect, qreal, qreal, qreal, Qt::SizeMode = Qt::AbsoluteSize );