using QTransform
This commit is contained in:
parent
5725be4470
commit
b98791c421
|
@ -650,10 +650,7 @@ QGradient QskGradient::toQGradient( const QRectF& rect ) const
|
||||||
if ( qGradient.coordinateMode() != QGradient::ObjectMode )
|
if ( qGradient.coordinateMode() != QGradient::ObjectMode )
|
||||||
return qGradient;
|
return qGradient;
|
||||||
|
|
||||||
const qreal x = rect.x();
|
const QTransform transform( rect.width(), 0, 0, rect.height(), rect.x(), rect.y() );
|
||||||
const qreal y = rect.y();
|
|
||||||
const qreal w = rect.width();
|
|
||||||
const qreal h = rect.height();
|
|
||||||
|
|
||||||
switch( qGradient.type() )
|
switch( qGradient.type() )
|
||||||
{
|
{
|
||||||
|
@ -661,13 +658,8 @@ QGradient QskGradient::toQGradient( const QRectF& rect ) const
|
||||||
{
|
{
|
||||||
auto& g = *static_cast< QLinearGradient* >( &qGradient );
|
auto& g = *static_cast< QLinearGradient* >( &qGradient );
|
||||||
|
|
||||||
const auto x1 = x + g.start().x() * w;
|
g.setStart( transform.map( g.start() ) );
|
||||||
const auto y1 = y + g.start().y() * h;
|
g.setFinalStop( transform.map( g.finalStop() ) );
|
||||||
const auto x2 = x + g.finalStop().x() * w;
|
|
||||||
const auto y2 = y + g.finalStop().y() * h;
|
|
||||||
|
|
||||||
g.setStart( x1, y1 );
|
|
||||||
g.setFinalStop( x2, y2 );
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -675,28 +667,23 @@ QGradient QskGradient::toQGradient( const QRectF& rect ) const
|
||||||
{
|
{
|
||||||
auto& g = *static_cast< QRadialGradient* >( &qGradient );
|
auto& g = *static_cast< QRadialGradient* >( &qGradient );
|
||||||
|
|
||||||
const qreal x0 = x + g.center().x() * w;
|
const auto center = transform.map( g.center() );
|
||||||
const qreal y0 = y + g.center().y() * h;
|
|
||||||
|
|
||||||
const qreal rx = w * g.radius() * w;
|
const qreal radius = qMin( g.radius() * rect.width(),
|
||||||
const qreal ry = w * g.radius() * h;
|
g.radius() * rect.height() );
|
||||||
|
|
||||||
g.setCenter( x0, y0 );
|
g.setCenter( center );
|
||||||
g.setFocalPoint( x0, y0 );
|
g.setFocalPoint( center );
|
||||||
|
|
||||||
g.setCenterRadius( qMin( rx, ry ) );
|
g.setCenterRadius( radius );
|
||||||
g.setFocalRadius( qMin( rx, ry ) );
|
g.setFocalRadius( radius );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case QGradient::ConicalGradient:
|
case QGradient::ConicalGradient:
|
||||||
{
|
{
|
||||||
auto& g = *static_cast< QConicalGradient* >( &qGradient );
|
auto& g = *static_cast< QConicalGradient* >( &qGradient );
|
||||||
|
g.setCenter( transform.map( g.center() ) );
|
||||||
const qreal x0 = x + g.center().x() * w;
|
|
||||||
const qreal y0 = y + g.center().y() * h;
|
|
||||||
|
|
||||||
g.setCenter( x0, y0 );
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue