QskLinearDirection::valueAt fixed

This commit is contained in:
Uwe Rathmann 2023-01-24 20:26:23 +01:00
parent 910a8a730f
commit f78416fc63

View File

@ -71,10 +71,10 @@ class QSK_EXPORT QskLinearDirection
/* /*
In direction of the gradient vector, where 0.0 corresponds to In direction of the gradient vector, where 0.0 corresponds to
points on the perpendicular at the start and 1.0 to points on points on the perpendicular at the start and 1.0 to points on
the perpendicular of the end point ( normalized projection ). the perpendicular of the end point.
Also corresponds to the positions of the color stops and can be Also corresponds to the positions of the color stops and can be
used it calculate the color at a specific position. used to calculate the color at a specific position.
*/ */
qreal valueAt( const QPointF& ) const; qreal valueAt( const QPointF& ) const;
qreal valueAt( qreal x, qreal y ) const; qreal valueAt( qreal x, qreal y ) const;
@ -262,8 +262,12 @@ inline qreal QskLinearDirection::valueAt( const QPointF& pos ) const
inline qreal QskLinearDirection::valueAt( qreal x, qreal y ) const inline qreal QskLinearDirection::valueAt( qreal x, qreal y ) const
{ {
const qreal d = ( m_x2 - m_x1 ) * ( m_y2 - m_y1 ); // we could cache these values TODO ..
return ( ( x - m_x1 ) * ( y - m_y1 ) + d ) / ( d + d ); const qreal dx = m_x2 - m_x1;
const qreal dy = m_y2 - m_y1;
const qreal dot = dx * dx + dy * dy;
return ( ( x - m_x1 ) * dx + ( y - m_y1 ) * dy ) / dot;
} }
inline constexpr QskConicDirection::QskConicDirection( inline constexpr QskConicDirection::QskConicDirection(