Do not remove a loop created by intersection point when it is the first or
the last point of lines that intersect. --HG-- branch : develop
This commit is contained in:
parent
f240a3d599
commit
ac5c8d8201
|
@ -338,7 +338,11 @@ QVector<QPointF> VAbstractDetail::CheckLoops(const QVector<QPointF> &points)
|
||||||
intersect = line1.intersect(line2, &crosPoint);
|
intersect = line1.intersect(line2, &crosPoint);
|
||||||
if (intersect == QLineF::BoundedIntersection && not (i == 0 && j+1 == count-1 && closed))
|
if (intersect == QLineF::BoundedIntersection && not (i == 0 && j+1 == count-1 && closed))
|
||||||
{ // Break, but not if intersects the first edge and the last edge in closed path
|
{ // Break, but not if intersects the first edge and the last edge in closed path
|
||||||
break;
|
if (line1.p1() != crosPoint && line1.p2() != crosPoint &&
|
||||||
|
line2.p1() != crosPoint && line2.p2() != crosPoint)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
intersect = QLineF::NoIntersection;
|
intersect = QLineF::NoIntersection;
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,6 +172,33 @@ void TST_VAbstractDetail::PathRemoveLoop_data() const
|
||||||
path.removeLast();
|
path.removeLast();
|
||||||
res.removeLast();
|
res.removeLast();
|
||||||
QTest::newRow("One loop, the second loop, unclosed a path (six unique points)") << path << res;
|
QTest::newRow("One loop, the second loop, unclosed a path (six unique points)") << path << res;
|
||||||
|
|
||||||
|
path.clear();
|
||||||
|
path << QPointF(20, 10);
|
||||||
|
path << QPointF(10, 10);
|
||||||
|
path << QPointF(20, 15);
|
||||||
|
path << QPointF(10, 20);
|
||||||
|
path << QPointF(20, 20);
|
||||||
|
path << QPointF(20, 10);
|
||||||
|
QTest::newRow("Correct closed a path, point on line (four unique points)") << path << path;
|
||||||
|
|
||||||
|
path.removeLast();
|
||||||
|
QTest::newRow("Corect unclosed a path, point on line (four unique points)") << path << path;
|
||||||
|
|
||||||
|
path.clear();
|
||||||
|
path << QPointF(20, 10);
|
||||||
|
path << QPointF(10, 10);
|
||||||
|
path << QPointF(0, 10);
|
||||||
|
path << QPointF(10, 15);
|
||||||
|
path << QPointF(0, 20);
|
||||||
|
path << QPointF(10, 20);
|
||||||
|
path << QPointF(20, 20);
|
||||||
|
path << QPointF(10, 15);
|
||||||
|
path << QPointF(20, 10);
|
||||||
|
QTest::newRow("Correct closed a path, point on line (six unique points)") << path << path;
|
||||||
|
|
||||||
|
path.removeLast();
|
||||||
|
QTest::newRow("Corect unclosed a path, point on line (six unique points)") << path << path;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue
Block a user