Clip center control point inside ellipse using QTransform.

This commit is contained in:
Tats
2014-03-02 20:50:27 -05:00
parent 755b7cfa94
commit 5de7162a59
+14 -1
View File
@@ -463,8 +463,21 @@ void Ellipse::setVertex(int i, const QPointF& v)
}
// Center control point (make sure it stays inside!).
else {
else
{
if (includesPoint(v))
Shape::setVertex(i, v);
else
{
// Map point as vector on a unit circle.
QVector2D vector(toUnitCircle().map(v));
// Normalize it.
vector.normalize();
// Remap it to ellipse.
Shape::setVertex(4, fromUnitCircle().map(vector.toPointF()));
}
}
}