diff --git a/src/libs/vlayout/vlayoutpiece.cpp b/src/libs/vlayout/vlayoutpiece.cpp index 1ddb6fc8e..8e786e279 100644 --- a/src/libs/vlayout/vlayoutpiece.cpp +++ b/src/libs/vlayout/vlayoutpiece.cpp @@ -299,14 +299,13 @@ QVector CorrectPosition(const QRectF &parentBoundingRect, QVector RoundPoints(const QVector &points) +QVector RoundPoints(QVector points) { - QVector p; for (int i=0; i < points.size(); ++i) { - p.append(QPointF(qRound(points.at(i).x()), qRound(points.at(i).y()))); + points[i] = QPointF(qRound(points.at(i).x()), qRound(points.at(i).y())); } - return p; + return points; } //--------------------------------------------------------------------------------------------------------------------- @@ -385,6 +384,7 @@ VLayoutPiece VLayoutPiece::Create(const VPiece &piece, const VContainer *pattern det.SetCountourPoints(piece.MainPathPoints(pattern)); det.SetSeamAllowancePoints(piece.SeamAllowancePoints(pattern), piece.IsSeamAllowance()); det.SetInternalPaths(ConvertInternalPaths(piece, pattern)); + det.SetPassmarks(piece.PassmarksLines(pattern)); det.SetName(piece.GetName()); @@ -803,6 +803,21 @@ void VLayoutPiece::SetLayoutAllowancePoints() } } +//--------------------------------------------------------------------------------------------------------------------- +QVector VLayoutPiece::GetPassmarks() const +{ + return Map(d->passmarks); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VLayoutPiece::SetPassmarks(const QVector &passmarks) +{ + if (IsSeamAllowance()) + { + d->passmarks = passmarks; + } +} + //--------------------------------------------------------------------------------------------------------------------- QVector VLayoutPiece::GetInternalPaths() const { @@ -816,9 +831,10 @@ void VLayoutPiece::SetInternalPaths(const QVector &internalPat } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::Map(const QVector &points) const +template +QVector VLayoutPiece::Map(const QVector &points) const { - QVector p; + QVector p; for (int i = 0; i < points.size(); ++i) { p.append(d->matrix.map(points.at(i))); @@ -826,7 +842,7 @@ QVector VLayoutPiece::Map(const QVector &points) const if (d->mirror) { - QList list = p.toList(); + QList list = p.toList(); for (int k=0, s=list.size(), max=(s/2); k passmarks = GetPassmarks(); + QPainterPath passmaksPath; + for (qint32 i = 0; i < passmarks.count(); ++i) + { + passmaksPath.moveTo(passmarks.at(i).p1()); + passmaksPath.lineTo(passmarks.at(i).p2()); + } + + path.addPath(passmaksPath); path.setFillRule(Qt::WindingFill); } diff --git a/src/libs/vlayout/vlayoutpiece.h b/src/libs/vlayout/vlayoutpiece.h index aac2b78f8..cab060636 100644 --- a/src/libs/vlayout/vlayoutpiece.h +++ b/src/libs/vlayout/vlayoutpiece.h @@ -73,6 +73,9 @@ public: QVector GetLayoutAllowancePoints() const; void SetLayoutAllowancePoints(); + QVector GetPassmarks() const; + void SetPassmarks(const QVector &passmarks); + QVector GetInternalPaths() const; void SetInternalPaths(const QVector &internalPaths); @@ -128,7 +131,8 @@ private: void CreateInternalPathItem(int i, QGraphicsItem *parent) const; void CreateGrainlineItem(QGraphicsItem *parent) const; - QVector Map(const QVector &points) const; + template + QVector Map(const QVector &points) const; QLineF Edge(const QVector &path, int i) const; int EdgeByPoint(const QVector &path, const QPointF &p1) const; diff --git a/src/libs/vlayout/vlayoutpiece_p.h b/src/libs/vlayout/vlayoutpiece_p.h index 40e91832e..f00a1dc67 100644 --- a/src/libs/vlayout/vlayoutpiece_p.h +++ b/src/libs/vlayout/vlayoutpiece_p.h @@ -52,6 +52,7 @@ public: : contour(), seamAllowance(), layoutAllowance(), + passmarks(), m_internalPaths(), matrix(), layoutWidth(0), @@ -68,6 +69,7 @@ public: contour(detail.contour), seamAllowance(detail.seamAllowance), layoutAllowance(detail.layoutAllowance), + passmarks(detail.passmarks), m_internalPaths(detail.m_internalPaths), matrix(detail.matrix), layoutWidth(detail.layoutWidth), @@ -90,6 +92,9 @@ public: /** @brief layoutAllowance list of layout allowance points. */ QVector layoutAllowance; + /** @brief passmarks list of passmakrs. */ + QVector passmarks; + /** @brief m_internalPaths list of internal paths. */ QVector m_internalPaths;