From 0925b40b7a71b3c2db6cce84fe165f0b7ed773c0 Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Thu, 1 Dec 2022 12:03:36 +0100 Subject: [PATCH] QGradient::Spread -> QskGradient::Spread --- playground/shapes/main.cpp | 18 +++++++++--------- qmlexport/QskQml.cpp | 9 +++++++++ src/common/QskGradient.cpp | 8 ++++---- src/common/QskGradient.h | 33 +++++++++++++++++++-------------- src/nodes/QskColorRamp.cpp | 16 ++++++++-------- src/nodes/QskColorRamp.h | 6 ++---- src/nodes/QskGradientMaterial.h | 10 +++++----- 7 files changed, 56 insertions(+), 44 deletions(-) diff --git a/playground/shapes/main.cpp b/playground/shapes/main.cpp index 4d757b41..50510fa1 100644 --- a/playground/shapes/main.cpp +++ b/playground/shapes/main.cpp @@ -65,7 +65,7 @@ namespace QskGradient gradient( QGradient::PhoenixStart ); gradient.setLinearDirection( 0.0, 0.0, 0.2, 0.5 ); - gradient.setSpread( QGradient::ReflectSpread ); + gradient.setSpread( QskGradient::ReflectSpread ); shapeItem->setGradient( gradient ); } @@ -79,7 +79,7 @@ namespace QskGradient gradient( stops ); gradient.setLinearDirection( 0.0, 0.0, 0.05, 0.1 ); - gradient.setSpread( QGradient::RepeatSpread ); + gradient.setSpread( QskGradient::RepeatSpread ); shapeItem->setGradient( gradient ); } @@ -112,7 +112,7 @@ namespace QskGradient gradient( QskRgb::LightYellow, QskRgb::MidnightBlue ); gradient.setRadialDirection( QskRadialDirection() ); - gradient.setSpread( QGradient::PadSpread ); + gradient.setSpread( QskGradient::PadSpread ); shapeItem->setGradient( gradient ); } @@ -137,7 +137,7 @@ namespace QskGradient gradient( stops ); gradient.setDirection( QskGradient::Radial ); - gradient.setSpread( QGradient::PadSpread ); + gradient.setSpread( QskGradient::PadSpread ); shapeItem->setGradient( gradient ); } @@ -149,7 +149,7 @@ namespace QskGradient gradient( QGradient::LilyMeadow ); gradient.setRadialDirection( 0.5, 0.7, 0.25 ); - gradient.setSpread( QGradient::RepeatSpread ); + gradient.setSpread( QskGradient::RepeatSpread ); shapeItem->setGradient( gradient ); } @@ -161,7 +161,7 @@ namespace QskGradient gradient( Qt::red, Qt::blue ); gradient.setRadialDirection( 0.6, 0.4, 0.1 ); - gradient.setSpread( QGradient::ReflectSpread ); + gradient.setSpread( QskGradient::ReflectSpread ); shapeItem->setGradient( gradient ); } @@ -181,7 +181,7 @@ namespace QskGradient gradient( QGradient::JuicyPeach ); gradient.setConicDirection( 0.5, 0.5, 30.0, 60.0 ); - gradient.setSpread( QGradient::ReflectSpread ); + gradient.setSpread( QskGradient::ReflectSpread ); shapeItem->setGradient( gradient ); } @@ -192,7 +192,7 @@ namespace QskGradient gradient( QGradient::WinterNeva ); gradient.setConicDirection( 0.5, 0.5, 30.0, 60.0 ); - gradient.setSpread( QGradient::RepeatSpread ); + gradient.setSpread( QskGradient::RepeatSpread ); shapeItem->setGradient( gradient ); } @@ -213,7 +213,7 @@ namespace QskGradient gradient( QGradient::FabledSunset ); gradient.setConicDirection( 0.5, 0.5, 45.0, 180.0 ); - gradient.setSpread( QGradient::ReflectSpread ); + gradient.setSpread( QskGradient::ReflectSpread ); shapeItem->setGradient( gradient ); } diff --git a/qmlexport/QskQml.cpp b/qmlexport/QskQml.cpp index 0b6a0cc2..9e2ed07e 100644 --- a/qmlexport/QskQml.cpp +++ b/qmlexport/QskQml.cpp @@ -151,6 +151,15 @@ namespace } } } + else if ( v.isNumber() ) + { + if ( it.name() == QStringLiteral( "spread" ) ) + { + const auto s = v.toNumber(); + if ( s >= QskGradient::PadSpread && s <= QskGradient::RepeatSpread ) + gradient.setSpread( static_cast< QskGradient::Spread >( s ) ); + } + } } return gradient; diff --git a/src/common/QskGradient.cpp b/src/common/QskGradient.cpp index 027367ae..1c695b04 100644 --- a/src/common/QskGradient.cpp +++ b/src/common/QskGradient.cpp @@ -288,7 +288,7 @@ void QskGradient::setAlpha( int alpha ) m_isDirty = true; } -void QskGradient::setSpread( QGradient::Spread spread ) +void QskGradient::setSpread( Spread spread ) { m_spread = spread; } @@ -612,15 +612,15 @@ QDebug operator<<( QDebug debug, const QskGradient& gradient ) switch( gradient.spread() ) { - case QGradient::RepeatSpread: + case QskGradient::RepeatSpread: debug << " RP"; break; - case QGradient::ReflectSpread: + case QskGradient::ReflectSpread: debug << " RF"; break; - case QGradient::PadSpread: + case QskGradient::PadSpread: break; } diff --git a/src/common/QskGradient.h b/src/common/QskGradient.h index 26dacfb7..bcac4b55 100644 --- a/src/common/QskGradient.h +++ b/src/common/QskGradient.h @@ -17,11 +17,6 @@ class QskConicDirection; class QVariant; -/* - Don't use QskGradientStops for definitions seen by moc - Otherwise exporting these interfaces to QML does not work. - */ - class QSK_EXPORT QskGradient { Q_GADGET @@ -32,7 +27,9 @@ class QSK_EXPORT QskGradient Q_PROPERTY( QskConicDirection conic READ conicDirection WRITE setConicDirection ) Q_PROPERTY( QskRadialDirection radial READ radialDirection WRITE setRadialDirection ) - Q_PROPERTY( QVector< QskGradientStop > stops READ stops WRITE setStops ) + Q_PROPERTY( QskGradientStops stops READ stops WRITE setStops ) + + Q_PROPERTY( Spread spread READ spread WRITE setSpread ) Q_PROPERTY( bool valid READ isValid ) Q_PROPERTY( bool visible READ isVisible ) @@ -51,6 +48,14 @@ class QSK_EXPORT QskGradient }; Q_ENUM( Type ) + enum Spread + { + PadSpread, + ReflectSpread, + RepeatSpread + }; + Q_ENUM( Spread ) + QskGradient() noexcept = default; QskGradient( Qt::GlobalColor ); @@ -58,7 +63,7 @@ class QSK_EXPORT QskGradient QskGradient( const QColor& ); QskGradient( const QColor&, const QColor& ); QskGradient( QGradient::Preset ); - QskGradient( const QVector< QskGradientStop >& ); + QskGradient( const QskGradientStops& ); QskGradient( const QskGradient& ) noexcept; @@ -92,8 +97,8 @@ class QSK_EXPORT QskGradient bool isMonochrome() const noexcept; bool isVisible() const noexcept; - void setStops( const QVector< QskGradientStop >& ); - const QVector< QskGradientStop >& stops() const noexcept; + void setStops( const QskGradientStops& ); + const QskGradientStops& stops() const noexcept; void setStops( const QRgb ); void setStops( Qt::GlobalColor ); @@ -114,8 +119,8 @@ class QSK_EXPORT QskGradient void setAlpha( int alpha ); - void setSpread( QGradient::Spread ); - QGradient::Spread spread() const noexcept; + void setSpread( Spread ); + Spread spread() const noexcept; void reverse(); QskGradient reversed() const; @@ -139,7 +144,7 @@ class QSK_EXPORT QskGradient void updateStatusBits() const; private: - QVector< QskGradientStop > m_stops; + QskGradientStops m_stops; /* Linear: x1, y1, x2, y2 @@ -149,7 +154,7 @@ class QSK_EXPORT QskGradient qreal m_values[4] = {}; Type m_type = Stops; - QGradient::Spread m_spread = QGradient::PadSpread; + Spread m_spread = PadSpread; mutable bool m_isDirty = false; mutable bool m_isValid = false; @@ -223,7 +228,7 @@ inline QRgb QskGradient::rgbEnd() const return m_stops.isEmpty() ? qRgba( 0, 0, 0, 255 ) : m_stops.last().rgb(); } -inline QGradient::Spread QskGradient::spread() const noexcept +inline QskGradient::Spread QskGradient::spread() const noexcept { return m_spread; } diff --git a/src/nodes/QskColorRamp.cpp b/src/nodes/QskColorRamp.cpp index 49f421e8..62535a8e 100644 --- a/src/nodes/QskColorRamp.cpp +++ b/src/nodes/QskColorRamp.cpp @@ -18,7 +18,7 @@ namespace class Texture : public QSGPlainTexture { public: - Texture( const QskGradientStops& stops, QGradient::Spread spread ) + Texture( const QskGradientStops& stops, QskGradient::Spread spread ) { /* Qt creates tables of 1024 colors, while Chrome, Firefox, and Android @@ -37,14 +37,14 @@ namespace }; private: - static inline QSGTexture::WrapMode wrapMode( QGradient::Spread spread ) + static inline QSGTexture::WrapMode wrapMode( QskGradient::Spread spread ) { switch ( spread ) { - case QGradient::RepeatSpread: + case QskGradient::RepeatSpread: return QSGTexture::Repeat; - case QGradient::ReflectSpread: + case QskGradient::ReflectSpread: return QSGTexture::MirroredRepeat; default: @@ -63,7 +63,7 @@ namespace const void* rhi; const QskGradientStops stops; - const QGradient::Spread spread; + const QskGradient::Spread spread; }; inline size_t qHash( const HashKey& key, size_t seed = 0 ) @@ -84,7 +84,7 @@ namespace void cleanupRhi( const QRhi* ); Texture* texture( const void* rhi, - const QskGradientStops&, QGradient::Spread ); + const QskGradientStops&, QskGradient::Spread ); private: QHash< HashKey, Texture* > m_hashTable; @@ -107,7 +107,7 @@ static void qskCleanupRhi( const QRhi* rhi ) } Texture* Cache::texture( const void* rhi, - const QskGradientStops& stops, QGradient::Spread spread ) + const QskGradientStops& stops, QskGradient::Spread spread ) { const HashKey key { rhi, stops, spread }; @@ -151,7 +151,7 @@ void Cache::cleanupRhi( const QRhi* rhi ) } QSGTexture* QskColorRamp::texture( const void* rhi, - const QskGradientStops& stops, QGradient::Spread spread ) + const QskGradientStops& stops, QskGradient::Spread spread ) { if ( s_cache == nullptr ) { diff --git a/src/nodes/QskColorRamp.h b/src/nodes/QskColorRamp.h index 41d173f7..aa51d9a6 100644 --- a/src/nodes/QskColorRamp.h +++ b/src/nodes/QskColorRamp.h @@ -7,15 +7,13 @@ #define QSK_COLOR_RAMP_H #include "QskGlobal.h" -#include "QskGradientStop.h" - -#include +#include "QskGradient.h" class QSGTexture; namespace QskColorRamp { - QSGTexture* texture( const void* rhi, const QskGradientStops&, QGradient::Spread ); + QSGTexture* texture( const void* rhi, const QskGradientStops&, QskGradient::Spread ); } #endif diff --git a/src/nodes/QskGradientMaterial.h b/src/nodes/QskGradientMaterial.h index 7ba60ebd..6079936b 100644 --- a/src/nodes/QskGradientMaterial.h +++ b/src/nodes/QskGradientMaterial.h @@ -19,19 +19,19 @@ class QSK_EXPORT QskGradientMaterial : public QSGMaterial QskGradient::Type gradientType() const; const QskGradientStops& stops() const; - QGradient::Spread spread() const; + QskGradient::Spread spread() const; protected: QskGradientMaterial( QskGradient::Type ); void setStops( const QskGradientStops& ); - void setSpread( QGradient::Spread ); + void setSpread( QskGradient::Spread ); private: const QskGradient::Type m_gradientType; QskGradientStops m_stops; - QGradient::Spread m_spread = QGradient::PadSpread; + QskGradient::Spread m_spread = QskGradient::PadSpread; }; inline QskGradient::Type QskGradientMaterial::gradientType() const @@ -44,7 +44,7 @@ inline void QskGradientMaterial::setStops( const QskGradientStops& stops ) m_stops = stops; } -inline void QskGradientMaterial::setSpread( QGradient::Spread spread ) +inline void QskGradientMaterial::setSpread( QskGradient::Spread spread ) { m_spread = spread; } @@ -54,7 +54,7 @@ inline const QskGradientStops& QskGradientMaterial::stops() const return m_stops; } -inline QGradient::Spread QskGradientMaterial::spread() const +inline QskGradient::Spread QskGradientMaterial::spread() const { return m_spread; }