fallback code reorganized
This commit is contained in:
parent
5cda13568d
commit
d7eca19685
|
@ -30,6 +30,31 @@
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
QConicalGradient qskQConicalGradient(
|
||||||
|
const QskGradientStops& stops, qreal startAngle, qreal spanAngle )
|
||||||
|
{
|
||||||
|
QskGradientStops scaledStops;
|
||||||
|
scaledStops.reserve( stops.size() );
|
||||||
|
|
||||||
|
const auto ratio = qAbs( spanAngle ) / 360.0;
|
||||||
|
|
||||||
|
if ( spanAngle > 0.0 )
|
||||||
|
{
|
||||||
|
for ( auto it = stops.cbegin(); it != stops.cend(); ++it )
|
||||||
|
scaledStops += { ratio * it->position(), it->color() };
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for ( auto it = stops.crbegin(); it != stops.crend(); ++it )
|
||||||
|
scaledStops += { 1.0 - ratio * it->position(), it->color() };
|
||||||
|
}
|
||||||
|
|
||||||
|
QConicalGradient qGradient( QPointF(), startAngle );
|
||||||
|
qGradient.setStops( qskToQGradientStops( scaledStops ) );
|
||||||
|
|
||||||
|
return qGradient;
|
||||||
|
}
|
||||||
|
|
||||||
class PaintedArcNode : public QskPaintedNode
|
class PaintedArcNode : public QskPaintedNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -98,26 +123,8 @@ namespace
|
||||||
QBrush PaintedArcNode::fillBrush( const QskGradient& gradient,
|
QBrush PaintedArcNode::fillBrush( const QskGradient& gradient,
|
||||||
const QRectF& rect, qreal startAngle, qreal spanAngle ) const
|
const QRectF& rect, qreal startAngle, qreal spanAngle ) const
|
||||||
{
|
{
|
||||||
const auto stops = gradient.stops();
|
const auto qGradient = qskQConicalGradient(
|
||||||
|
gradient.stops(), startAngle, spanAngle );
|
||||||
QskGradientStops scaledStops;
|
|
||||||
scaledStops.reserve( gradient.stops().size() );
|
|
||||||
|
|
||||||
const auto ratio = qAbs( spanAngle ) / 360.0;
|
|
||||||
|
|
||||||
if ( spanAngle > 0.0 )
|
|
||||||
{
|
|
||||||
for ( auto it = stops.cbegin(); it != stops.cend(); ++it )
|
|
||||||
scaledStops += { ratio* it->position(), it->color() };
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for ( auto it = stops.crbegin(); it != stops.crend(); ++it )
|
|
||||||
scaledStops += { 1.0 - ratio * it->position(), it->color() };
|
|
||||||
}
|
|
||||||
|
|
||||||
QConicalGradient qGradient( QPointF(), startAngle );
|
|
||||||
qGradient.setStops( qskToQGradientStops( scaledStops ) );
|
|
||||||
|
|
||||||
const qreal sz = qMax( rect.width(), rect.height() );
|
const qreal sz = qMax( rect.width(), rect.height() );
|
||||||
const qreal sx = rect.width() / sz;
|
const qreal sx = rect.width() / sz;
|
||||||
|
|
Loading…
Reference in New Issue