parent
4bf082bbe5
commit
3c5d6aa500
375
src/app/share/collection/bugs/Issue_#515.val
Normal file
375
src/app/share/collection/bugs/Issue_#515.val
Normal file
File diff suppressed because one or more lines are too long
26
src/app/share/collection/bugs/Issue_#515.vit
Normal file
26
src/app/share/collection/bugs/Issue_#515.vit
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<vit>
|
||||
<!--Measurements created with Valentina (http://www.valentina-project.org/).-->
|
||||
<version>0.3.3</version>
|
||||
<read-only>false</read-only>
|
||||
<notes/>
|
||||
<unit>cm</unit>
|
||||
<pm_system>998</pm_system>
|
||||
<personal>
|
||||
<family-name/>
|
||||
<given-name/>
|
||||
<birth-date>1800-01-01</birth-date>
|
||||
<gender>unknown</gender>
|
||||
<email/>
|
||||
</personal>
|
||||
<body-measurements>
|
||||
<m name="height_waist_side" value="107"/>
|
||||
<m name="height_knee" value="50"/>
|
||||
<m name="waist_circ" value="84"/>
|
||||
<m name="hip_circ" value="100"/>
|
||||
<m name="leg_crotch_to_floor" value="83"/>
|
||||
<m name="leg_knee_circ" value="50"/>
|
||||
<m name="leg_ankle_high_circ" value="28"/>
|
||||
<m name="leg_ankle_circ" value="28"/>
|
||||
</body-measurements>
|
||||
</vit>
|
|
@ -310,12 +310,6 @@ QVector<QPointF> VAbstractDetail::CheckLoops(const QVector<QPointF> &points)
|
|||
return points;
|
||||
}
|
||||
|
||||
bool closed = false;
|
||||
if (points.first() == points.last())
|
||||
{
|
||||
closed = true;
|
||||
}
|
||||
|
||||
QVector<QPointF> ekvPoints;
|
||||
|
||||
qint32 i, j;
|
||||
|
@ -323,7 +317,7 @@ QVector<QPointF> VAbstractDetail::CheckLoops(const QVector<QPointF> &points)
|
|||
{
|
||||
/*Last three points no need check.*/
|
||||
/*Triangle has not contain loops*/
|
||||
if (i >= count-3)
|
||||
if (i > count-3)
|
||||
{
|
||||
ekvPoints.append(points.at(i));
|
||||
continue;
|
||||
|
@ -336,9 +330,11 @@ QVector<QPointF> VAbstractDetail::CheckLoops(const QVector<QPointF> &points)
|
|||
const QLineF line1(points.at(i), points.at(i+1));
|
||||
// Because a path can contains several loops we will seek the last and only then remove the loop(s)
|
||||
// That's why we parse from the end
|
||||
for (j = count-2; j >= i+2; --j)
|
||||
for (j = count-1; j >= i+2; --j)
|
||||
{
|
||||
const QLineF line2(points.at(j), points.at(j+1));
|
||||
QLineF line2;
|
||||
j == count-1 ? line2 = QLineF(points.at(j), points.at(0)) : line2 = QLineF(points.at(j), points.at(j+1));
|
||||
|
||||
const QLineF::IntersectType intersect = line1.intersect(line2, &crosPoint);
|
||||
if (intersect == QLineF::NoIntersection)
|
||||
{ // According to the documentation QLineF::NoIntersection indicates that the lines do not intersect;
|
||||
|
@ -372,7 +368,7 @@ QVector<QPointF> VAbstractDetail::CheckLoops(const QVector<QPointF> &points)
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (intersect == QLineF::BoundedIntersection && not (i == 0 && j+1 == count-1 && closed))
|
||||
else if (intersect == QLineF::BoundedIntersection && not (i == 0 && j == count-1))
|
||||
{ // Break, but not if intersects the first edge and the last edge in closed path
|
||||
if (line1.p1() != crosPoint && line1.p2() != crosPoint &&
|
||||
line2.p1() != crosPoint && line2.p2() != crosPoint)
|
||||
|
|
|
@ -237,6 +237,160 @@ void TST_VAbstractDetail::PathRemoveLoop_data() const
|
|||
|
||||
// See the file "collection/bugs/Issue_#493.val"
|
||||
QTest::newRow("Test case issue #493") << path << res;
|
||||
|
||||
path.clear();
|
||||
path << QPointF(-656.9465284876832, -3606.6183279948636);
|
||||
path << QPointF(-656.5996104603414, -3606.6000783462687);
|
||||
path << QPointF(-655.7439133016985, -3607.1236310612317);
|
||||
path << QPointF(-654.129780081666, -3609.0558393168476);
|
||||
path << QPointF(-651.3154902471701, -3613.939306009108);
|
||||
path << QPointF(-647.8207651830382, -3621.2084054506768);
|
||||
path << QPointF(-641.4701586077349, -3636.0289997859454);
|
||||
path << QPointF(-630.9244502073004, -3663.23035747934);
|
||||
path << QPointF(-618.4465305467888, -3697.4982896415795);
|
||||
path << QPointF(-604.3873016966293, -3737.732371148936);
|
||||
path << QPointF(-581.1891087215608, -3806.460957656939);
|
||||
path << QPointF(-547.7936207285052, -3909.520915257629);
|
||||
path << QPointF(-514.3891332445846, -4016.6378180116963);
|
||||
path << QPointF(-491.17181635142833, -4093.9874129706236);
|
||||
path << QPointF(-477.094588519539, -4142.335384784734);
|
||||
path << QPointF(-464.5941701318652, -4186.745679830414);
|
||||
path << QPointF(-454.0214632588362, -4226.117872983938);
|
||||
path << QPointF(-449.6699112298347, -4243.2921010175705);
|
||||
path << QPointF(-576.966638263205, -3606.6183279948636);
|
||||
|
||||
res.clear();
|
||||
res << QPointF(-656.9465284876832, -3606.6183279948636);
|
||||
res << QPointF(-656.5996104603414, -3606.6000783462687);
|
||||
res << QPointF(-656.5697831440032, -3606.6183279948636);
|
||||
|
||||
// See the file "collection/bugs/Issue_#515.val"
|
||||
// Check a countur path.
|
||||
// The curve that causes the issue is the first in the list.
|
||||
QTest::newRow("Test case issue #515. Big loop in countur path.") << path << res;
|
||||
|
||||
path.clear();
|
||||
path << QPointF(-449.6699112298347, -4243.2921010175705);
|
||||
path << QPointF(-576.966638263205, -3606.6183279948636);
|
||||
path << QPointF(-656.9465284876832, -3606.6183279948636);
|
||||
path << QPointF(-656.5996104603414, -3606.6000783462687);
|
||||
path << QPointF(-655.7439133016985, -3607.1236310612317);
|
||||
path << QPointF(-654.129780081666, -3609.0558393168476);
|
||||
path << QPointF(-651.3154902471701, -3613.939306009108);
|
||||
path << QPointF(-647.8207651830382, -3621.2084054506768);
|
||||
path << QPointF(-641.4701586077349, -3636.0289997859454);
|
||||
path << QPointF(-630.9244502073004, -3663.23035747934);
|
||||
path << QPointF(-618.4465305467888, -3697.4982896415795);
|
||||
path << QPointF(-604.3873016966293, -3737.732371148936);
|
||||
path << QPointF(-581.1891087215608, -3806.460957656939);
|
||||
path << QPointF(-547.7936207285052, -3909.520915257629);
|
||||
path << QPointF(-514.3891332445846, -4016.6378180116963);
|
||||
path << QPointF(-491.17181635142833, -4093.9874129706236);
|
||||
path << QPointF(-477.094588519539, -4142.335384784734);
|
||||
path << QPointF(-464.5941701318652, -4186.745679830414);
|
||||
path << QPointF(-454.0214632588362, -4226.117872983938);
|
||||
|
||||
res.clear();
|
||||
res << QPointF(-449.6699112298347, -4243.2921010175705);
|
||||
res << QPointF(-576.966638263205, -3606.6183279948636);
|
||||
res << QPointF(-656.5697831440032, -3606.6183279948636);
|
||||
res << QPointF(-655.7439133016985, -3607.1236310612317);
|
||||
res << QPointF(-654.129780081666, -3609.0558393168476);
|
||||
res << QPointF(-651.3154902471701, -3613.939306009108);
|
||||
res << QPointF(-647.8207651830382, -3621.2084054506768);
|
||||
res << QPointF(-641.4701586077349, -3636.0289997859454);
|
||||
res << QPointF(-630.9244502073004, -3663.23035747934);
|
||||
res << QPointF(-618.4465305467888, -3697.4982896415795);
|
||||
res << QPointF(-604.3873016966293, -3737.732371148936);
|
||||
res << QPointF(-581.1891087215608, -3806.460957656939);
|
||||
res << QPointF(-547.7936207285052, -3909.520915257629);
|
||||
res << QPointF(-514.3891332445846, -4016.6378180116963);
|
||||
res << QPointF(-491.17181635142833, -4093.9874129706236);
|
||||
res << QPointF(-477.094588519539, -4142.335384784734);
|
||||
res << QPointF(-464.5941701318652, -4186.745679830414);
|
||||
res << QPointF(-454.0214632588362, -4226.117872983938);
|
||||
|
||||
// See the file "collection/bugs/Issue_#515.val"
|
||||
// Check a countur path.
|
||||
// The curve that causes the issue is the last in the list.
|
||||
QTest::newRow("Test case issue #515. Small loop in countur path.") << path << res;
|
||||
|
||||
path.clear();
|
||||
path << QPointF(-656.9465284876832, -3606.6183279948636);
|
||||
path << QPointF(-656.5996104603414, -3606.6000783462687);
|
||||
path << QPointF(-655.7439133016985, -3607.1236310612317);
|
||||
path << QPointF(-654.129780081666, -3609.0558393168476);
|
||||
path << QPointF(-651.3154902471701, -3613.939306009108);
|
||||
path << QPointF(-647.8207651830382, -3621.2084054506768);
|
||||
path << QPointF(-641.4701586077349, -3636.0289997859454);
|
||||
path << QPointF(-630.9244502073004, -3663.23035747934);
|
||||
path << QPointF(-618.4465305467888, -3697.4982896415795);
|
||||
path << QPointF(-604.3873016966293, -3737.732371148936);
|
||||
path << QPointF(-581.1891087215608, -3806.460957656939);
|
||||
path << QPointF(-547.7936207285052, -3909.520915257629);
|
||||
path << QPointF(-514.3891332445846, -4016.6378180116963);
|
||||
path << QPointF(-491.17181635142833, -4093.9874129706236);
|
||||
path << QPointF(-477.094588519539, -4142.335384784734);
|
||||
path << QPointF(-464.5941701318652, -4186.745679830414);
|
||||
path << QPointF(-454.0214632588362, -4226.117872983938);
|
||||
path << QPointF(-449.6699112298347, -4243.2921010175705);
|
||||
path << QPointF(-576.966638263205, -3606.6183279948636);
|
||||
|
||||
res.clear();
|
||||
res << QPointF(-656.9465284876832, -3606.6183279948636);
|
||||
res << QPointF(-656.5996104603414, -3606.6000783462687);
|
||||
res << QPointF(-656.5697831440032, -3606.6183279948636);
|
||||
|
||||
// See the file "collection/bugs/Issue_#515.val"
|
||||
// Check a seam allowance path.
|
||||
// The curve that causes the issue is the first in the list.
|
||||
QTest::newRow("Test case issue #515. Big loop in seam allowance path.") << path << res;
|
||||
|
||||
path.clear();
|
||||
path << QPointF(-449.6699112298347, -4243.2921010175705);
|
||||
path << QPointF(-576.966638263205, -3606.6183279948636);
|
||||
path << QPointF(-656.9465284876832, -3606.6183279948636);
|
||||
path << QPointF(-656.5996104603414, -3606.6000783462687);
|
||||
path << QPointF(-655.7439133016985, -3607.1236310612317);
|
||||
path << QPointF(-654.129780081666, -3609.0558393168476);
|
||||
path << QPointF(-651.3154902471701, -3613.939306009108);
|
||||
path << QPointF(-647.8207651830382, -3621.2084054506768);
|
||||
path << QPointF(-641.4701586077349, -3636.0289997859454);
|
||||
path << QPointF(-630.9244502073004, -3663.23035747934);
|
||||
path << QPointF(-618.4465305467888, -3697.4982896415795);
|
||||
path << QPointF(-604.3873016966293, -3737.732371148936);
|
||||
path << QPointF(-581.1891087215608, -3806.460957656939);
|
||||
path << QPointF(-547.7936207285052, -3909.520915257629);
|
||||
path << QPointF(-514.3891332445846, -4016.6378180116963);
|
||||
path << QPointF(-491.17181635142833, -4093.9874129706236);
|
||||
path << QPointF(-477.094588519539, -4142.335384784734);
|
||||
path << QPointF(-464.5941701318652, -4186.745679830414);
|
||||
path << QPointF(-454.0214632588362, -4226.117872983938);
|
||||
|
||||
res.clear();
|
||||
res << QPointF(-449.6699112298347, -4243.2921010175705);
|
||||
res << QPointF(-576.966638263205, -3606.6183279948636);
|
||||
res << QPointF(-656.5697831440032, -3606.6183279948636);
|
||||
res << QPointF(-655.7439133016985, -3607.1236310612317);
|
||||
res << QPointF(-654.129780081666, -3609.0558393168476);
|
||||
res << QPointF(-651.3154902471701, -3613.939306009108);
|
||||
res << QPointF(-647.8207651830382, -3621.2084054506768);
|
||||
res << QPointF(-641.4701586077349, -3636.0289997859454);
|
||||
res << QPointF(-630.9244502073004, -3663.23035747934);
|
||||
res << QPointF(-618.4465305467888, -3697.4982896415795);
|
||||
res << QPointF(-604.3873016966293, -3737.732371148936);
|
||||
res << QPointF(-581.1891087215608, -3806.460957656939);
|
||||
res << QPointF(-547.7936207285052, -3909.520915257629);
|
||||
res << QPointF(-514.3891332445846, -4016.6378180116963);
|
||||
res << QPointF(-491.17181635142833, -4093.9874129706236);
|
||||
res << QPointF(-477.094588519539, -4142.335384784734);
|
||||
res << QPointF(-464.5941701318652, -4186.745679830414);
|
||||
res << QPointF(-454.0214632588362, -4226.117872983938);
|
||||
|
||||
// See the file "collection/bugs/Issue_#515.val"
|
||||
// Check a seam allowance path.
|
||||
// The curve that causes the issue is the last in the list.
|
||||
QTest::newRow("Test case issue #515. Small loop in seam allowance path.") << path << res;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue
Block a user