Fix piece mirroring.

Function expects not closed path.
This commit is contained in:
Roman Telezhynskyi 2024-06-25 12:23:19 +03:00
parent b701e0f03b
commit 62fd0b6694

View file

@ -188,8 +188,7 @@ public:
template <class T> static auto MirrorPath(const QVector<T> &points, const QLineF &mirrorLine) -> QVector<T>;
template <class T>
static auto FullSeamPath(const QVector<T> &points, const QLineF &mirrorLine, const QString &pieceName)
-> QVector<T>;
static auto FullSeamPath(QVector<T> points, const QLineF &mirrorLine, const QString &pieceName) -> QVector<T>;
template <class T>
static auto FullSeamAllowancePath(const QVector<T> &points, const QLineF &mirrorLine, const QString &pieceName)
-> QVector<T>;
@ -867,7 +866,7 @@ inline auto VAbstractPiece::MirrorPath<VLayoutPoint>(const QVector<VLayoutPoint>
//---------------------------------------------------------------------------------------------------------------------
template <class T>
inline auto VAbstractPiece::FullSeamPath(const QVector<T> &points, const QLineF &mirrorLine, const QString &pieceName)
inline auto VAbstractPiece::FullSeamPath(QVector<T> points, const QLineF &mirrorLine, const QString &pieceName)
-> QVector<T>
{
// DumpVector(points, QStringLiteral("input.json.XXXXXX")); // Uncomment for dumping test data
@ -882,6 +881,12 @@ inline auto VAbstractPiece::FullSeamPath(const QVector<T> &points, const QLineF
return points;
}
// Function expects not closed path
if (points.constFirst() == points.constLast())
{
points.removeLast();
}
QVector<T> base;
base.reserve(points.size());