QLineF: add intersects() as a replacement for intersect()
QLineF::intersect() does not follow the naming rules for functions. Therefore add a replacement function intersects() instead and also rename the return type from IntersectType to IntersectionType [ChangeLog][QtCore][QLineF] added QLineF::intersects() as a replacement for QLineF::intersect() Change-Id: I744b960ea339cb817facb12f296f78cca3e7d938 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io> Reviewed-by: Konstantin Shegunov <kshegunov@gmail.com>
This commit is contained in:
parent
220028d37c
commit
c530ca1c17
@ -113,15 +113,13 @@ void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem *,
|
||||
QLineF centerLine(myStartItem->pos(), myEndItem->pos());
|
||||
QPolygonF endPolygon = myEndItem->polygon();
|
||||
QPointF p1 = endPolygon.first() + myEndItem->pos();
|
||||
QPointF p2;
|
||||
QPointF intersectPoint;
|
||||
QLineF polyLine;
|
||||
for (int i = 1; i < endPolygon.count(); ++i) {
|
||||
p2 = endPolygon.at(i) + myEndItem->pos();
|
||||
polyLine = QLineF(p1, p2);
|
||||
QLineF::IntersectType intersectType =
|
||||
polyLine.intersect(centerLine, &intersectPoint);
|
||||
if (intersectType == QLineF::BoundedIntersection)
|
||||
QPointF p2 = endPolygon.at(i) + myEndItem->pos();
|
||||
QLineF polyLine = QLineF(p1, p2);
|
||||
QLineF::IntersectionType intersectionType =
|
||||
polyLine.intersects(centerLine, &intersectPoint);
|
||||
if (intersectionType == QLineF::BoundedIntersection)
|
||||
break;
|
||||
p1 = p2;
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ QDataStream &operator>>(QDataStream &stream, QLine &line)
|
||||
function to determine whether the QLineF represents a valid line
|
||||
or a null line.
|
||||
|
||||
The intersect() function determines the IntersectType for this
|
||||
The intersects() function determines the IntersectionType for this
|
||||
line and a given line, while the angleTo() function returns the
|
||||
angle between the lines. In addition, the unitVector() function
|
||||
returns a line that has the same starting point as this line, but
|
||||
@ -370,6 +370,11 @@ QDataStream &operator>>(QDataStream &stream, QLine &line)
|
||||
|
||||
/*!
|
||||
\enum QLineF::IntersectType
|
||||
\obsolete Use QLineF::IntersectionType instead
|
||||
*/
|
||||
|
||||
/*!
|
||||
\enum QLineF::IntersectionType
|
||||
|
||||
Describes the intersection between two lines.
|
||||
|
||||
@ -657,8 +662,10 @@ QLineF QLineF::unitVector() const
|
||||
return f;
|
||||
}
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 14)
|
||||
/*!
|
||||
\fn QLineF::IntersectType QLineF::intersect(const QLineF &line, QPointF *intersectionPoint) const
|
||||
\obsolete Use intersects() instead
|
||||
|
||||
Returns a value indicating whether or not \e this line intersects
|
||||
with the given \a line.
|
||||
@ -669,6 +676,23 @@ QLineF QLineF::unitVector() const
|
||||
*/
|
||||
|
||||
QLineF::IntersectType QLineF::intersect(const QLineF &l, QPointF *intersectionPoint) const
|
||||
{
|
||||
return intersects(l, intersectionPoint);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*!
|
||||
\fn QLineF::IntersectionType QLineF::intersects(const QLineF &line, QPointF *intersectionPoint) const
|
||||
\since 5.14
|
||||
|
||||
Returns a value indicating whether or not \e this line intersects
|
||||
with the given \a line.
|
||||
|
||||
The actual intersection point is extracted to \a intersectionPoint
|
||||
(if the pointer is valid). If the lines are parallel, the
|
||||
intersection point is undefined.
|
||||
*/
|
||||
QLineF::IntersectionType QLineF::intersects(const QLineF &l, QPointF *intersectionPoint) const
|
||||
{
|
||||
// ipmlementation is based on Graphics Gems III's "Faster Line Segment Intersection"
|
||||
const QPointF a = pt2 - pt1;
|
||||
|
@ -215,6 +215,7 @@ class Q_CORE_EXPORT QLineF {
|
||||
public:
|
||||
|
||||
enum IntersectType { NoIntersection, BoundedIntersection, UnboundedIntersection };
|
||||
using IntersectionType = IntersectType;
|
||||
|
||||
Q_DECL_CONSTEXPR inline QLineF();
|
||||
Q_DECL_CONSTEXPR inline QLineF(const QPointF &pt1, const QPointF &pt2);
|
||||
@ -248,10 +249,11 @@ public:
|
||||
Q_REQUIRED_RESULT QLineF unitVector() const;
|
||||
Q_REQUIRED_RESULT Q_DECL_CONSTEXPR inline QLineF normalVector() const;
|
||||
|
||||
// ### Qt 6: rename intersects() or intersection() and rename IntersectType IntersectionType
|
||||
IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const;
|
||||
IntersectionType intersects(const QLineF &l, QPointF *intersectionPoint) const;
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 14)
|
||||
QT_DEPRECATED_VERSION_X(5, 14, "Use intersects() instead")
|
||||
IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const;
|
||||
QT_DEPRECATED_X("Use angleTo() instead, take care that the return value is between 0 and 360 degree.")
|
||||
qreal angle(const QLineF &l) const;
|
||||
#endif
|
||||
|
@ -456,7 +456,7 @@ void QStroker::joinPoints(qfixed focal_x, qfixed focal_y, const QLineF &nextLine
|
||||
QLineF prevLine(qt_fixed_to_real(m_back2X), qt_fixed_to_real(m_back2Y),
|
||||
qt_fixed_to_real(m_back1X), qt_fixed_to_real(m_back1Y));
|
||||
QPointF isect;
|
||||
QLineF::IntersectType type = prevLine.intersect(nextLine, &isect);
|
||||
QLineF::IntersectionType type = prevLine.intersects(nextLine, &isect);
|
||||
|
||||
if (join == FlatJoin) {
|
||||
QLineF shortCut(prevLine.p2(), nextLine.p1());
|
||||
|
@ -205,7 +205,7 @@ void tst_QLine::testIntersection()
|
||||
|
||||
|
||||
QPointF ip;
|
||||
QLineF::IntersectType itype = a.intersect(b, &ip);
|
||||
QLineF::IntersectionType itype = a.intersect(b, &ip);
|
||||
|
||||
QCOMPARE(int(itype), type);
|
||||
if (type != QLineF::NoIntersection) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user