reducing the memory used for QskGradient

This commit is contained in:
Uwe Rathmann 2022-12-22 17:50:19 +01:00
parent 4670e3b5d3
commit 6ce73136ce
2 changed files with 28 additions and 13 deletions

View File

@ -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;

View File

@ -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