QGradient replaces when adding a stop at the same position, instaed of

appending it - like how it is with CSS or Qsk. As a workaround we
increase the positon by a small epsilon.
This commit is contained in:
Uwe Rathmann 2022-12-20 15:49:09 +01:00
parent 03d2dad7ca
commit 4ec304fe91

View File

@ -387,12 +387,25 @@ QskGradientStops qskBuildGradientStops( const QVector< QColor >& colors, bool di
QGradientStops qskToQGradientStops( const QskGradientStops& stops )
{
QGradientStops qstops;
qstops.reserve( stops.count() );
QGradientStops qStops;
qStops.reserve( stops.count() );
for ( const auto& stop : stops )
qstops += { stop.position(), stop.color() };
{
QPair<qreal, QColor> qStop = { stop.position(), stop.color() };
return qstops;
if ( !qStops.isEmpty() && qStops.last().first == qStop.first )
{
/*
QGradient removes stops at the same position. So we have to insert
an invisible dummy offset
*/
qStop.first += 0.00001;
}
qStops += qStop;
}
return qStops;
}