QGradint converters fixed

This commit is contained in:
Uwe Rathmann 2022-12-09 11:23:32 +01:00
parent 5f6ab6db42
commit af1f5b8757
2 changed files with 27 additions and 30 deletions

View File

@ -76,18 +76,15 @@ QskGradient::QskGradient( const QVector< QskGradientStop >& stops )
setStops( stops ); setStops( stops );
} }
QskGradient::QskGradient( const QGradient* qGradient ) QskGradient::QskGradient( const QGradient& qGradient )
{ {
if ( qGradient == nullptr ) switch( qGradient.type() )
return;
switch( qGradient->type() )
{ {
case QGradient::LinearGradient: case QGradient::LinearGradient:
{ {
m_type = Linear; m_type = Linear;
const auto g = static_cast< const QLinearGradient* >( qGradient ); const auto g = static_cast< const QLinearGradient* >( &qGradient );
m_values[0] = g->start().x(); m_values[0] = g->start().x();
m_values[1] = g->start().y(); m_values[1] = g->start().y();
@ -100,7 +97,7 @@ QskGradient::QskGradient( const QGradient* qGradient )
{ {
m_type = Radial; m_type = Radial;
const auto g = static_cast< const QRadialGradient* >( qGradient ); const auto g = static_cast< const QRadialGradient* >( &qGradient );
if ( ( g->center() != g->focalPoint() ) || ( g->radius() != g->focalRadius() ) ) if ( ( g->center() != g->focalPoint() ) || ( g->radius() != g->focalRadius() ) )
qWarning() << "QskGradient: extended radial gradients are not supported."; qWarning() << "QskGradient: extended radial gradients are not supported.";
@ -116,7 +113,7 @@ QskGradient::QskGradient( const QGradient* qGradient )
{ {
m_type = Conic; m_type = Conic;
const auto g = static_cast< const QConicalGradient* >( qGradient ); const auto g = static_cast< const QConicalGradient* >( &qGradient );
m_values[0] = g->center().x(); m_values[0] = g->center().x();
m_values[1] = g->center().y(); m_values[1] = g->center().y();
@ -132,8 +129,8 @@ QskGradient::QskGradient( const QGradient* qGradient )
} }
} }
m_spread = static_cast< Spread >( qGradient->spread() ); m_spread = static_cast< Spread >( qGradient.spread() );
m_stops = qskBuildGradientStops( qGradient->stops() ); setStops( qskBuildGradientStops( qGradient.stops() ) );
} }
QskGradient::QskGradient( const QskGradient& other ) noexcept QskGradient::QskGradient( const QskGradient& other ) noexcept
@ -594,26 +591,26 @@ void QskGradient::resetDirection()
m_values[0] = m_values[1] = m_values[2] = m_values[3] = 0.0; m_values[0] = m_values[1] = m_values[2] = m_values[3] = 0.0;
} }
QGradient* QskGradient::toQGradient() const QGradient QskGradient::toQGradient() const
{ {
QGradient* qGradient = nullptr;
switch( m_type ) switch( m_type )
{ {
case Linear: case Linear:
{ {
qGradient = new QLinearGradient( QLinearGradient g( m_values[0], m_values[1], m_values[2], m_values[3] );
m_values[0], m_values[1], m_values[2], m_values[3] ); g.setSpread( static_cast< QGradient::Spread >( m_spread ) );
g.setStops( qskToQGradientStops( m_stops ) );
break; return g;
} }
case Radial: case Radial:
{ {
qGradient = new QRadialGradient( QRadialGradient g( m_values[0], m_values[1], m_values[2] );
m_values[0], m_values[1], m_values[2] ); g.setSpread( static_cast< QGradient::Spread >( m_spread ) );
g.setStops( qskToQGradientStops( m_stops ) );
break; return g;
} }
case Conic: case Conic:
@ -624,22 +621,22 @@ QGradient* QskGradient::toQGradient() const
"QskGradient: spanAngle got lost, when converting to QConicalGradient"; "QskGradient: spanAngle got lost, when converting to QConicalGradient";
} }
qGradient = new QConicalGradient( QConicalGradient g( m_values[0], m_values[1], m_values[2] );
m_values[0], m_values[1], m_values[2] ); g.setSpread( static_cast< QGradient::Spread >( m_spread ) );
g.setStops( qskToQGradientStops( m_stops ) );
break; return g;
} }
default: default:
{ {
qGradient = new QGradient(); QGradient g;
g.setSpread( static_cast< QGradient::Spread >( m_spread ) );
g.setStops( qskToQGradientStops( m_stops ) );
return g;
} }
} }
qGradient->setSpread( static_cast< QGradient::Spread >( m_spread ) );
qGradient->setStops( qskToQGradientStops( m_stops ) );
return qGradient;
} }
#ifndef QT_NO_DEBUG_STREAM #ifndef QT_NO_DEBUG_STREAM

View File

@ -66,7 +66,7 @@ class QSK_EXPORT QskGradient
QskGradient( QGradient::Preset ); QskGradient( QGradient::Preset );
QskGradient( const QskGradientStops& ); QskGradient( const QskGradientStops& );
QskGradient( const QGradient* ); QskGradient( const QGradient& );
QskGradient( const QskGradient& ) noexcept; QskGradient( const QskGradient& ) noexcept;
@ -143,7 +143,7 @@ class QSK_EXPORT QskGradient
int stepCount() const noexcept; int stepCount() const noexcept;
QGradient* toQGradient() const; QGradient toQGradient() const;
private: private:
void updateStatusBits() const; void updateStatusBits() const;