diff --git a/src/common/QskGradient.cpp b/src/common/QskGradient.cpp index 55018c1d..77acd0c3 100644 --- a/src/common/QskGradient.cpp +++ b/src/common/QskGradient.cpp @@ -77,26 +77,31 @@ static inline QTransform qskTransformForRect( int stretch, const QRectF& rect ) } QskGradient::QskGradient( const QColor& color ) + : QskGradient() { setStops( color ); } QskGradient::QskGradient( const QColor& color1, const QColor& color2 ) + : QskGradient() { setStops( color1, color2 ); } QskGradient::QskGradient( QGradient::Preset preset ) + : QskGradient() { setStops( qskBuildGradientStops( QGradient( preset ).stops() ) ); } QskGradient::QskGradient( const QVector< QskGradientStop >& stops ) + : QskGradient() { setStops( stops ); } QskGradient::QskGradient( const QGradient& qGradient ) + : QskGradient() { switch( qGradient.type() ) { @@ -421,8 +426,7 @@ void QskGradient::stretchTo( const QRectF& rect ) transform.map( m_values[0], m_values[1], &m_values[0], &m_values[1] ); #if 1 - const auto radius = transform.map( QPointF( m_values[2], m_values[2] ) ); - m_values[2] = qMin( radius.x(), radius.y() ); + m_values[2] *= qMin( rect.width(), rect.height() ); #endif break; diff --git a/src/common/QskGradient.h b/src/common/QskGradient.h index ac7b96ee..2b8d866d 100644 --- a/src/common/QskGradient.h +++ b/src/common/QskGradient.h @@ -69,7 +69,7 @@ class QSK_EXPORT QskGradient }; Q_ENUM( StretchMode ) - QskGradient() noexcept = default; + QskGradient() noexcept; QskGradient( Qt::GlobalColor ); QskGradient( QRgb ); @@ -177,18 +177,29 @@ class QSK_EXPORT QskGradient */ qreal m_values[4] = {}; - Type m_type = Stops; - SpreadMode m_spreadMode = PadSpread; - StretchMode m_stretchMode = StretchToSize; + unsigned int m_type : 3; + unsigned int m_spreadMode : 3; + unsigned int m_stretchMode : 3; - mutable bool m_isDirty = false; - mutable bool m_isValid = false; - mutable bool m_isMonchrome = true; - mutable bool m_isVisible = false; + mutable bool m_isDirty : 1; + mutable bool m_isValid : 1; + mutable bool m_isMonchrome : 1; + mutable bool m_isVisible : 1; }; Q_DECLARE_METATYPE( QskGradient ) +inline QskGradient::QskGradient() noexcept + : m_type( Stops ) + , m_spreadMode( PadSpread ) + , m_stretchMode( StretchToSize ) + , m_isDirty( false ) + , m_isValid( false ) + , m_isMonchrome( true ) + , m_isVisible( false ) +{ +} + inline QskGradient::QskGradient( Qt::GlobalColor color ) : QskGradient( QColor( color ) ) { @@ -206,7 +217,7 @@ inline bool QskGradient::operator!=( const QskGradient& other ) const noexcept inline QskGradient::Type QskGradient::type() const noexcept { - return m_type; + return static_cast< Type >( m_type ); } inline const QskGradientStops& QskGradient::stops() const noexcept @@ -255,12 +266,12 @@ inline QRgb QskGradient::rgbEnd() const inline QskGradient::SpreadMode QskGradient::spreadMode() const noexcept { - return m_spreadMode; + return static_cast< SpreadMode >( m_spreadMode ); } inline QskGradient::StretchMode QskGradient::stretchMode() const noexcept { - return m_stretchMode; + return static_cast< StretchMode >( m_stretchMode ); } #ifndef QT_NO_DEBUG_STREAM