diff --git a/ChangeLog.txt b/ChangeLog.txt index 8a5f2ae93..cc04ef6a6 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -6,6 +6,7 @@ - Fix export measurement separator to CSV. - Fix option Hide labels. - Improve segmenting a curve for calculating a piece path. +- [smart-pattern/valentina#184] Fix incorrect seam allowance. # Valentina 0.7.52 September 12, 2022 - Fix crash when default locale is ru. diff --git a/src/app/puzzle/layout/vppiece.cpp b/src/app/puzzle/layout/vppiece.cpp index 775300376..e3f166948 100644 --- a/src/app/puzzle/layout/vppiece.cpp +++ b/src/app/puzzle/layout/vppiece.cpp @@ -33,6 +33,7 @@ #include "vplayout.h" #include "../vlayout/vtextmanager.h" #include "../vlayout/vlayoutpiecepath.h" +#include "../vgeometry/vlayoutplacelabel.h" #include #include @@ -408,7 +409,8 @@ auto VPPiece::StickyPosition(qreal &dx, qreal &dy) const -> bool return false; } - QVector path = GetMappedExternalContourPoints(); + QVector path; + CastTo(GetMappedExternalContourPoints(), path); QRectF boundingRect = VLayoutPiece::BoundingRect(path); const qreal stickyDistance = pieceGap+minStickyDistance; QRectF stickyZone = QRectF(boundingRect.topLeft().x()-stickyDistance, boundingRect.topLeft().y()-stickyDistance, @@ -424,7 +426,8 @@ auto VPPiece::StickyPosition(qreal &dx, qreal &dy) const -> bool continue; } - QVector piecePath = piece->GetMappedExternalContourPoints(); + QVector piecePath; + CastTo(piece->GetMappedExternalContourPoints(), piecePath); QRectF pieceBoundingRect = VLayoutPiece::BoundingRect(piecePath); if (stickyZone.intersects(pieceBoundingRect) || pieceBoundingRect.contains(stickyZone) || diff --git a/src/app/puzzle/layout/vpsheet.cpp b/src/app/puzzle/layout/vpsheet.cpp index 27a1bbf7e..3504a3f80 100644 --- a/src/app/puzzle/layout/vpsheet.cpp +++ b/src/app/puzzle/layout/vpsheet.cpp @@ -507,7 +507,8 @@ void VPSheet::ValidateSuperpositionOfPieces() const } const bool oldSuperpositionOfPieces = piece->HasSuperpositionWithPieces(); - QVector path1 = piece->GetMappedExternalContourPoints(); + QVector path1; + CastTo(piece->GetMappedExternalContourPoints(), path1); bool hasSuperposition = false; for (const auto &p : pieces) @@ -517,7 +518,8 @@ void VPSheet::ValidateSuperpositionOfPieces() const continue; } - QVector path2 = p->GetMappedExternalContourPoints(); + QVector path2; + CastTo(p->GetMappedExternalContourPoints(), path2); bool superposition = VPPiece::PathsSuperposition(path1, path2); if (superposition) diff --git a/src/app/puzzle/scene/vpgraphicspiece.cpp b/src/app/puzzle/scene/vpgraphicspiece.cpp index 3ce6de00f..a78ded1c4 100644 --- a/src/app/puzzle/scene/vpgraphicspiece.cpp +++ b/src/app/puzzle/scene/vpgraphicspiece.cpp @@ -42,14 +42,14 @@ #include "../layout/vppiece.h" #include "../layout/vplayout.h" #include "../layout/vpsheet.h" - #include "../vlayout/vtextmanager.h" #include "../vpapplication.h" #include "compatibility.h" #include "vlayoutpiecepath.h" -#include "vplacelabelitem.h" + +#include "../vgeometry/vlayoutplacelabel.h" #include "undocommands/vpundopiecemove.h" #include "undocommands/vpundomovepieceonsheet.h" @@ -494,7 +494,7 @@ void VPGraphicsPiece::PaintSeamLine(QPainter *painter, const VPPiecePtr &piece) { if (not piece->IsHideMainPath() || not piece->IsSeamAllowance()) { - QVector seamLinePoints = piece->GetMappedContourPoints(); + QVector seamLinePoints = piece->GetMappedContourPoints(); if(!seamLinePoints.isEmpty()) { m_seamLine.moveTo(ConstFirst(seamLinePoints)); @@ -519,7 +519,7 @@ void VPGraphicsPiece::PaintCuttingLine(QPainter *painter, const VPPiecePtr &piec { if (piece->IsSeamAllowance() && not piece->IsSeamAllowanceBuiltIn()) { - QVector cuttingLinepoints = piece->GetMappedSeamAllowancePoints(); + QVector cuttingLinepoints = piece->GetMappedSeamAllowancePoints(); if(!cuttingLinepoints.isEmpty()) { m_cuttingLine.moveTo(ConstFirst(cuttingLinepoints)); @@ -617,10 +617,11 @@ void VPGraphicsPiece::PaintPassmarks(QPainter *painter, const VPPiecePtr &piece) //--------------------------------------------------------------------------------------------------------------------- void VPGraphicsPiece::PaintPlaceLabels(QPainter *painter, const VPPiecePtr &piece) { - QVector placeLabels = piece->GetMappedPlaceLabels(); + QVector placeLabels = piece->GetPlaceLabels(); for(auto &placeLabel : placeLabels) { - QPainterPath path = VPlaceLabelItem::LabelShapePath(placeLabel.shape); + QPainterPath path = + VAbstractPiece::LabelShapePath(piece->MapPlaceLabelShape(VAbstractPiece::PlaceLabelShape(placeLabel))); if (painter != nullptr) { @@ -708,7 +709,7 @@ void VPGraphicsPiece::GroupMove(const QPointF &pos) QVector path; if (not p.isNull() && p->StickyPosition(m_stickyTranslateX, m_stickyTranslateY)) { - path = p->GetMappedExternalContourPoints(); + CastTo(p->GetMappedExternalContourPoints(), path); QTransform m; m.translate(m_stickyTranslateX, m_stickyTranslateY); path = m.map(path); diff --git a/src/app/puzzle/scene/vpmaingraphicsview.cpp b/src/app/puzzle/scene/vpmaingraphicsview.cpp index 958a053e9..18d8076f7 100644 --- a/src/app/puzzle/scene/vpmaingraphicsview.cpp +++ b/src/app/puzzle/scene/vpmaingraphicsview.cpp @@ -521,7 +521,7 @@ void VPMainGraphicsView::TranslatePiecesOn(qreal dx, qreal dy) QVector path; if (not p.isNull() && p->StickyPosition(m_stickyTranslateX, m_stickyTranslateY)) { - path = p->GetMappedExternalContourPoints(); + CastTo(p->GetMappedExternalContourPoints(), path); QTransform m; m.translate(m_stickyTranslateX, m_stickyTranslateY); path = m.map(path); diff --git a/src/app/puzzle/xml/vplayoutfilereader.cpp b/src/app/puzzle/xml/vplayoutfilereader.cpp index 5ca1aa484..3935a3722 100644 --- a/src/app/puzzle/xml/vplayoutfilereader.cpp +++ b/src/app/puzzle/xml/vplayoutfilereader.cpp @@ -39,6 +39,7 @@ #include "../ifc/exception/vexceptionconversionerror.h" #include "../vpatterndb/floatItemData/floatitemdef.h" #include "../vgeometry/vgeometrydef.h" +#include "../vgeometry/vlayoutplacelabel.h" #include "../layout/vplayout.h" #include "../layout/vppiece.h" @@ -169,20 +170,6 @@ auto StringToRect(const QString &string) -> QRectF return {}; } - -//--------------------------------------------------------------------------------------------------------------------- -auto StringToMarkerShape(const QString &string) -> PlaceLabelImg -{ - PlaceLabelImg shape; - QStringList paths = string.split(ML::itemsSep); - shape.reserve(paths.size()); - for (const auto& path : paths) - { - shape.append(StringToPath(path)); - } - - return shape; -} } // namespace //--------------------------------------------------------------------------------------------------------------------- @@ -499,7 +486,7 @@ void VPLayoutFileReader::ReadPiece(const VPPiecePtr &piece) switch (tags.indexOf(name().toString())) { case 0: // seam line - piece->SetCountourPoints(StringToPath(readElementText())); + ReadSeamLine(piece); break; case 1: // seam allowance ReadSeamAllowance(piece); @@ -527,6 +514,50 @@ void VPLayoutFileReader::ReadPiece(const VPPiecePtr &piece) } } +//--------------------------------------------------------------------------------------------------------------------- +VLayoutPoint VPLayoutFileReader::ReadLayoutPoint() +{ + AssertRootTag(ML::TagPoint); + + VLayoutPoint point; + + QXmlStreamAttributes attribs = attributes(); + point.setX(ReadAttributeDouble(attribs, ML::AttrX, QChar('0'))); + point.setY(ReadAttributeDouble(attribs, ML::AttrY, QChar('0'))); + point.SetTurnPoint(ReadAttributeBool(attribs, ML::AttrTurnPoint, falseStr)); + point.SetCurvePoint(ReadAttributeBool(attribs, ML::AttrCurvePoint, falseStr)); + + return point; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VPLayoutFileReader::ReadLayoutPoints() -> QVector +{ + QVector points; + + while (readNextStartElement()) + { + if (name() == ML::TagPoint) + { + points.append(ReadLayoutPoint()); + } + else + { + qCDebug(MLReader, "Ignoring tag %s", qUtf8Printable(name().toString())); + skipCurrentElement(); + } + } + + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPLayoutFileReader::ReadSeamLine(const VPPiecePtr &piece) +{ + AssertRootTag(ML::TagSeamLine); + piece->SetCountourPoints(ReadLayoutPoints()); +} + //--------------------------------------------------------------------------------------------------------------------- void VPLayoutFileReader::ReadSeamAllowance(const VPPiecePtr &piece) { @@ -537,18 +568,15 @@ void VPLayoutFileReader::ReadSeamAllowance(const VPPiecePtr &piece) piece->SetSeamAllowance(enabled); bool builtIn = ReadAttributeBool(attribs, ML::AttrBuiltIn, falseStr); - QVector path = StringToPath(readElementText()); - if (enabled) + if (enabled && not builtIn) { - if (not builtIn) + QVector path = ReadLayoutPoints(); + if (path.isEmpty()) { - if (path.isEmpty()) - { - throw VException(tr("Error in line %1. Seam allowance is empty.").arg(lineNumber())); - } - piece->SetSeamAllowancePoints(path); + throw VException(tr("Error in line %1. Seam allowance is empty.").arg(lineNumber())); } + piece->SetSeamAllowancePoints(path); } } @@ -658,7 +686,7 @@ auto VPLayoutFileReader::ReadInternalPath() -> VLayoutPiecePath path.SetCutPath(ReadAttributeBool(attribs, ML::AttrCut, falseStr)); path.SetPenStyle(LineStyleToPenStyle(ReadAttributeString(attribs, ML::AttrPenStyle, TypeLineLine))); - QVector shape = StringToPath(readElementText()); + QVector shape = ReadLayoutPoints(); if (shape.isEmpty()) { throw VException(tr("Error in line %1. Internal path shape is empty.").arg(lineNumber())); @@ -705,19 +733,11 @@ auto VPLayoutFileReader::ReadMarker() -> VLayoutPlaceLabel QXmlStreamAttributes attribs = attributes(); QString matrix = ReadAttributeEmptyString(attribs, ML::AttrTransform); - marker.rotationMatrix = StringToTransfrom(matrix); + marker.SetRotationMatrix(StringToTransfrom(matrix)); - marker.type = static_cast(ReadAttributeUInt(attribs, ML::AttrType, QChar('0'))); - marker.center = StringToPoint(ReadAttributeEmptyString(attribs, ML::AttrCenter)); - marker.box = StringToRect(ReadAttributeEmptyString(attribs, ML::AttrBox)); - - PlaceLabelImg shape = StringToMarkerShape(readElementText()); - if (shape.isEmpty()) - { - throw VException(tr("Error in line %1. Marker shape is empty.").arg(lineNumber())); - } - - marker.shape = shape; + marker.SetType(static_cast(ReadAttributeUInt(attribs, ML::AttrType, QChar('0')))); + marker.SetCenter(StringToPoint(ReadAttributeEmptyString(attribs, ML::AttrCenter))); + marker.SetBox(StringToRect(ReadAttributeEmptyString(attribs, ML::AttrBox))); // cppcheck-suppress unknownMacro QT_WARNING_POP diff --git a/src/app/puzzle/xml/vplayoutfilereader.h b/src/app/puzzle/xml/vplayoutfilereader.h index 33adf99fa..e8d0420c8 100644 --- a/src/app/puzzle/xml/vplayoutfilereader.h +++ b/src/app/puzzle/xml/vplayoutfilereader.h @@ -43,6 +43,7 @@ struct VLayoutPassmark; struct VLayoutPlaceLabel; class VLayoutPiecePath; class VTextManager; +class VLayoutPoint; class VPLayoutFileReader : public QXmlStreamReader { @@ -67,6 +68,9 @@ private: void ReadSheet(const VPLayoutPtr &layout); void ReadPieces(const VPLayoutPtr &layout, const VPSheetPtr &sheet=VPSheetPtr()); void ReadPiece(const VPPiecePtr &piece); + auto ReadLayoutPoint() -> VLayoutPoint; + auto ReadLayoutPoints() -> QVector; + void ReadSeamLine(const VPPiecePtr &piece); void ReadSeamAllowance(const VPPiecePtr &piece); void ReadGrainline(const VPPiecePtr &piece); void ReadNotches(const VPPiecePtr &piece); @@ -82,6 +86,7 @@ private: auto ReadLabelLine() -> TextLine; void ReadWatermark(const VPLayoutPtr &layout); + void ReadLayoutMargins(const VPLayoutPtr &layout); void ReadSheetMargins(const VPSheetPtr &sheet); auto ReadSize() -> QSizeF; diff --git a/src/app/puzzle/xml/vplayoutfilewriter.cpp b/src/app/puzzle/xml/vplayoutfilewriter.cpp index 974cac5dd..b98144b97 100644 --- a/src/app/puzzle/xml/vplayoutfilewriter.cpp +++ b/src/app/puzzle/xml/vplayoutfilewriter.cpp @@ -35,6 +35,7 @@ #include "../vmisc/projectversion.h" #include "../vlayout/vlayoutpiecepath.h" #include "../vlayout/vtextmanager.h" +#include "../vgeometry/vlayoutplacelabel.h" namespace { @@ -93,18 +94,6 @@ auto RectToString(const QRectF &r) -> QString NumberToString(r.height()); } -//--------------------------------------------------------------------------------------------------------------------- -auto MarkerShapeToString(const PlaceLabelImg &shape) -> QString -{ - QStringList s; - s.reserve(shape.size()); - for (const auto& path : shape) - { - s.append(PathToString(path)); - } - return s.join(ML::itemsSep); -} - //--------------------------------------------------------------------------------------------------------------------- auto LineToString(const QLineF &line) -> QString { @@ -284,7 +273,11 @@ void VPLayoutFileWriter::WritePiece(const VPPiecePtr &piece) [](qreal z) noexcept {return VFuzzyComparePossibleNulls(z, 1.0);}); writeStartElement(ML::TagSeamLine); - writeCharacters(PathToString(piece->GetContourPoints())); + QVector contourPoints = piece->GetContourPoints(); + for (auto &point : contourPoints) + { + WriteLayoutPoint(point); + } writeEndElement(); writeStartElement(ML::TagSeamAllowance); @@ -294,7 +287,11 @@ void VPLayoutFileWriter::WritePiece(const VPPiecePtr &piece) [](bool builtin) noexcept {return not builtin;}); if (piece->IsSeamAllowance() && not piece->IsSeamAllowanceBuiltIn()) { - writeCharacters(PathToString(piece->GetSeamAllowancePoints())); + QVector seamAllowancePoints = piece->GetSeamAllowancePoints(); + for (auto &point : seamAllowancePoints) + { + WriteLayoutPoint(point); + } } writeEndElement(); @@ -329,7 +326,13 @@ void VPLayoutFileWriter::WritePiece(const VPPiecePtr &piece) writeStartElement(ML::TagInternalPath); SetAttribute(ML::AttrCut, path.IsCutPath()); SetAttribute(ML::AttrPenStyle, PenStyleToLineStyle(path.PenStyle())); - writeCharacters(PathToString(path.Points())); + + QVector points = path.Points(); + for (auto &point : points) + { + WriteLayoutPoint(point); + } + writeEndElement(); } writeEndElement(); @@ -339,12 +342,10 @@ void VPLayoutFileWriter::WritePiece(const VPPiecePtr &piece) for (const auto& label : placelabels) { writeStartElement(ML::TagMarker); - SetAttribute(ML::AttrTransform, TransformToString(label.rotationMatrix)); - SetAttribute(ML::AttrType, static_cast(label.type)); - SetAttribute(ML::AttrCenter, PointToString(label.center)); - SetAttribute(ML::AttrBox, RectToString(label.box)); - writeCharacters(MarkerShapeToString(label.shape)); - + SetAttribute(ML::AttrTransform, TransformToString(label.RotationMatrix())); + SetAttribute(ML::AttrType, static_cast(label.Type())); + SetAttribute(ML::AttrCenter, PointToString(label.Center())); + SetAttribute(ML::AttrBox, RectToString(label.Box())); writeEndElement(); } writeEndElement(); @@ -425,3 +426,14 @@ void VPLayoutFileWriter::WriteSize(QSizeF size) SetAttribute(ML::AttrLength, length); writeEndElement(); // size } + +//--------------------------------------------------------------------------------------------------------------------- +auto VPLayoutFileWriter::WriteLayoutPoint(const VLayoutPoint &point) -> void +{ + writeStartElement(ML::TagPoint); + SetAttribute(ML::AttrX, point.x()); + SetAttribute(ML::AttrY, point.y()); + SetAttributeOrRemoveIf(ML::AttrTurnPoint, point.TurnPoint(), [](bool val) noexcept {return val;}); + SetAttributeOrRemoveIf(ML::AttrCurvePoint, point.CurvePoint(), [](bool val) noexcept {return val;}); + writeEndElement(); +} diff --git a/src/app/puzzle/xml/vplayoutfilewriter.h b/src/app/puzzle/xml/vplayoutfilewriter.h index 93099a2a9..65014875f 100644 --- a/src/app/puzzle/xml/vplayoutfilewriter.h +++ b/src/app/puzzle/xml/vplayoutfilewriter.h @@ -46,6 +46,7 @@ class VPPiece; class QFile; class QMarginsF; class VTextManager; +class VLayoutPoint; class VPLayoutFileWriter : public QXmlStreamWriter { @@ -68,6 +69,7 @@ private: void WritePiece(const VPPiecePtr &piece); void WriteLabel(const QVector &labelShape, const VTextManager &tm, const QString &tagName); void WriteLabelLines(const VTextManager &tm); + auto WriteLayoutPoint(const VLayoutPoint &point) -> void; void WriteMargins(const QMarginsF &margins, bool ignore); void WriteSize(QSizeF size); diff --git a/src/app/puzzle/xml/vplayoutliterals.cpp b/src/app/puzzle/xml/vplayoutliterals.cpp index e2b46d682..adebd9e8e 100644 --- a/src/app/puzzle/xml/vplayoutliterals.cpp +++ b/src/app/puzzle/xml/vplayoutliterals.cpp @@ -60,6 +60,7 @@ const QString TagLines = QStringLiteral("lines"); // NOLINT(cert-e const QString TagLine = QStringLiteral("line"); // NOLINT(cert-err58-cpp) const QString TagScale = QStringLiteral("scale"); // NOLINT(cert-err58-cpp) const QString TagWatermark = QStringLiteral("watermark"); // NOLINT(cert-err58-cpp) +const QString TagPoint = QStringLiteral("point"); // NOLINT(cert-err58-cpp) const QString AttrWarningSuperposition = QStringLiteral("warningSuperposition"); // NOLINT(cert-err58-cpp) const QString AttrWarningOutOfBound = QStringLiteral("warningOutOfBound"); // NOLINT(cert-err58-cpp) @@ -108,6 +109,10 @@ const QString AttrShowPreview = QStringLiteral("showPreview"); // NOLIN const QString AttrPrintScheme = QStringLiteral("printScheme"); // NOLINT(cert-err58-cpp) const QString AttrTileNumber = QStringLiteral("tileNumber"); // NOLINT(cert-err58-cpp) const QString AttrZValue = QStringLiteral("zValue"); // NOLINT(cert-err58-cpp) +const QString AttrX = QStringLiteral("x"); // NOLINT(cert-err58-cpp) +const QString AttrY = QStringLiteral("y"); // NOLINT(cert-err58-cpp) +const QString AttrTurnPoint = QStringLiteral("turnPoint"); // NOLINT(cert-err58-cpp) +const QString AttrCurvePoint = QStringLiteral("curvePoint"); // NOLINT(cert-err58-cpp) const QString atFrontStr = QStringLiteral("atFront"); // NOLINT(cert-err58-cpp) const QString atRearStr = QStringLiteral("atRear"); // NOLINT(cert-err58-cpp) diff --git a/src/app/puzzle/xml/vplayoutliterals.h b/src/app/puzzle/xml/vplayoutliterals.h index 818dbbb2e..3dd646a45 100644 --- a/src/app/puzzle/xml/vplayoutliterals.h +++ b/src/app/puzzle/xml/vplayoutliterals.h @@ -65,6 +65,7 @@ extern const QString TagLines; extern const QString TagLine; extern const QString TagScale; extern const QString TagWatermark; +extern const QString TagPoint; extern const QString AttrWarningSuperposition; extern const QString AttrWarningOutOfBound; @@ -113,6 +114,10 @@ extern const QString AttrShowPreview; extern const QString AttrPrintScheme; extern const QString AttrTileNumber; extern const QString AttrZValue; +extern const QString AttrX; +extern const QString AttrY; +extern const QString AttrTurnPoint; +extern const QString AttrCurvePoint; extern const QString atFrontStr; extern const QString atRearStr; diff --git a/src/app/share/collection/bugs/smart_pattern_#184_case1.val b/src/app/share/collection/bugs/smart_pattern_#184_case1.val new file mode 100644 index 000000000..03220800f --- /dev/null +++ b/src/app/share/collection/bugs/smart_pattern_#184_case1.val @@ -0,0 +1,1387 @@ + + + + 0.9.2 + cm + Jeans mit gerader Seitennaht +Müller u. Sohn Zeitschrift Ausgabe 10.20 , Seite 47-50 vom PDf (bzw. 14 - 17 vom Herrenteil) + 17.10.20: +Anpassugen für die Kurzhose -> enger am Saum (-3.5) +Hosenschlitzuntertritt gerade an der oberen Kante + Jeans Selvedge + #4 + CrazyRori + + 2000-01-01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/share/collection/bugs/smart_pattern_#184_case1.vit b/src/app/share/collection/bugs/smart_pattern_#184_case1.vit new file mode 100644 index 000000000..5cb510489 --- /dev/null +++ b/src/app/share/collection/bugs/smart_pattern_#184_case1.vit @@ -0,0 +1,47 @@ + + + + 0.5.1 + false + Nach Messung wegen Büste am 16.03.2021 +Brustumfang : 88 -> 86 +Taille: 79 -> 76 +Hüfte: 92 -> 94 +Halsumfang: 39.5 -> 37 + cm + 998 + + Ronan + 1987-04-03 + male + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/share/collection/bugs/smart_pattern_#184_case2.val b/src/app/share/collection/bugs/smart_pattern_#184_case2.val new file mode 100644 index 000000000..b078872c3 --- /dev/null +++ b/src/app/share/collection/bugs/smart_pattern_#184_case2.val @@ -0,0 +1,913 @@ + + + + 0.9.2 + cm + Jeans mit gerader Seitennaht +Müller u. Sohn Zeitschrift Ausgabe 10.20 , Seite 47-50 vom PDf (bzw. 14 - 17 vom Herrenteil) + 17.10.20: +Anpassugen für die Kurzhose -> enger am Saum (-3.5) +Hosenschlitzuntertritt gerade an der oberen Kante + Jeans Selvedge + #4 + CrazyRori + + 2000-01-01 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/share/collection/bugs/smart_pattern_#184_case2.vit b/src/app/share/collection/bugs/smart_pattern_#184_case2.vit new file mode 100644 index 000000000..5cb510489 --- /dev/null +++ b/src/app/share/collection/bugs/smart_pattern_#184_case2.vit @@ -0,0 +1,47 @@ + + + + 0.5.1 + false + Nach Messung wegen Büste am 16.03.2021 +Brustumfang : 88 -> 86 +Taille: 79 -> 76 +Hüfte: 92 -> 94 +Halsumfang: 39.5 -> 37 + cm + 998 + + Ronan + 1987-04-03 + male + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libs/ifc/schema.qrc b/src/libs/ifc/schema.qrc index 4b23cbc4d..48cca4f04 100644 --- a/src/libs/ifc/schema.qrc +++ b/src/libs/ifc/schema.qrc @@ -67,6 +67,7 @@ schema/pattern/v0.8.13.xsd schema/pattern/v0.9.0.xsd schema/pattern/v0.9.1.xsd + schema/pattern/v0.9.2.xsd schema/multisize_measurements/v0.3.0.xsd schema/multisize_measurements/v0.4.0.xsd schema/multisize_measurements/v0.4.1.xsd diff --git a/src/libs/ifc/schema/layout/v0.1.3.xsd b/src/libs/ifc/schema/layout/v0.1.3.xsd new file mode 100644 index 000000000..e2e2c8d2b --- /dev/null +++ b/src/libs/ifc/schema/layout/v0.1.3.xsd @@ -0,0 +1,563 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libs/ifc/schema/pattern/v0.9.2.xsd b/src/libs/ifc/schema/pattern/v0.9.2.xsd new file mode 100644 index 000000000..2e2c0f442 --- /dev/null +++ b/src/libs/ifc/schema/pattern/v0.9.2.xsd @@ -0,0 +1,1181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libs/ifc/xml/vabstractpattern.cpp b/src/libs/ifc/xml/vabstractpattern.cpp index bcc2aed64..1e2710584 100644 --- a/src/libs/ifc/xml/vabstractpattern.cpp +++ b/src/libs/ifc/xml/vabstractpattern.cpp @@ -129,6 +129,7 @@ const QString VAbstractPattern::AttrNodePassmark = QStringLiteral("passmark const QString VAbstractPattern::AttrNodePassmarkLine = QStringLiteral("passmarkLine"); const QString VAbstractPattern::AttrNodePassmarkAngle = QStringLiteral("passmarkAngle"); const QString VAbstractPattern::AttrNodeShowSecondPassmark = QStringLiteral("showSecondPassmark"); +const QString VAbstractPattern::AttrNodeTurnPoint = QStringLiteral("turnPoint"); const QString VAbstractPattern::AttrSABefore = QStringLiteral("before"); const QString VAbstractPattern::AttrSAAfter = QStringLiteral("after"); const QString VAbstractPattern::AttrStart = QStringLiteral("start"); @@ -811,6 +812,9 @@ VPieceNode VAbstractPattern::ParseSANode(const QDomElement &domElement) const QString passmarkLength = VDomDocument::GetParametrEmptyString(domElement, VAbstractPattern::AttrPassmarkLength); + const bool turnPoint = + VDomDocument::GetParametrBool(domElement, VAbstractPattern::AttrNodeTurnPoint, trueStr); + const QString t = VDomDocument::GetParametrString(domElement, AttrType, VAbstractPattern::NodePoint); Tool tool; @@ -841,8 +845,7 @@ VPieceNode VAbstractPattern::ParseSANode(const QDomElement &domElement) tool = Tool::NodeElArc; break; default: - VException e(QObject::tr("Wrong tag name '%1'.").arg(t)); - throw e; + throw VException(tr("Wrong tag name '%1'.").arg(t)); } VPieceNode node(id, tool, reverse); node.SetFormulaSABefore(saBefore); @@ -856,6 +859,7 @@ VPieceNode VAbstractPattern::ParseSANode(const QDomElement &domElement) node.SetPassmarkAngleType(passmarkAngle); node.SetManualPassmarkLength(manualPassmarkLength); node.SetFormulaPassmarkLength(passmarkLength); + node.SetTurnPoint(turnPoint); return node; } diff --git a/src/libs/ifc/xml/vabstractpattern.h b/src/libs/ifc/xml/vabstractpattern.h index 97f59f4f7..bc17b2418 100644 --- a/src/libs/ifc/xml/vabstractpattern.h +++ b/src/libs/ifc/xml/vabstractpattern.h @@ -324,6 +324,7 @@ public: static const QString AttrNodePassmarkLine; static const QString AttrNodePassmarkAngle; static const QString AttrNodeShowSecondPassmark; + static const QString AttrNodeTurnPoint; static const QString AttrSABefore; static const QString AttrSAAfter; static const QString AttrStart; diff --git a/src/libs/ifc/xml/vlayoutconverter.cpp b/src/libs/ifc/xml/vlayoutconverter.cpp index 4234dbad3..ae29df999 100644 --- a/src/libs/ifc/xml/vlayoutconverter.cpp +++ b/src/libs/ifc/xml/vlayoutconverter.cpp @@ -28,6 +28,7 @@ #include "vlayoutconverter.h" #include "../exception/vexception.h" #include "ifcdef.h" +#include "../vlayout/vlayoutpoint.h" /* * Version rules: @@ -38,12 +39,61 @@ */ const QString VLayoutConverter::LayoutMinVerStr = QStringLiteral("0.1.0"); -const QString VLayoutConverter::LayoutMaxVerStr = QStringLiteral("0.1.2"); -const QString VLayoutConverter::CurrentSchema = QStringLiteral("://schema/layout/v0.1.2.xsd"); +const QString VLayoutConverter::LayoutMaxVerStr = QStringLiteral("0.1.3"); +const QString VLayoutConverter::CurrentSchema = QStringLiteral("://schema/layout/v0.1.3.xsd"); //VLayoutConverter::LayoutMinVer; // <== DON'T FORGET TO UPDATE TOO!!!! //VLayoutConverter::LayoutMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!! +namespace +{ +// The list of all string we use for conversion +// Better to use global variables because repeating QStringLiteral blows up code size +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strPieceTag, (QLatin1String("piece"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strSeamLineTag, (QLatin1String("seamLine"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strSeamAllowanceTag, (QLatin1String("seamAllowance"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strInternalPathsTag, (QLatin1String("internalPaths"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strInternalPathTag, (QLatin1String("internalPath"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strMarkersTag, (QLatin1String("markers"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strMarkerTag, (QLatin1String("marker"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strPointTag, (QLatin1String("point"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strAttrX, (QLatin1String("x"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strAttrY, (QLatin1String("y"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strAttrTurnPoint, (QLatin1String("turnPoint"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const QString, strAttrCurvePoint, (QLatin1String("curvePoint"))) // NOLINT + +//const QChar groupSep = QLatin1Char(';'); +const QChar coordintatesSep = QLatin1Char(','); +const QChar pointsSep = QLatin1Char(' '); +//const QChar itemsSep = QLatin1Char('*'); + +//--------------------------------------------------------------------------------------------------------------------- +auto StringV0_1_2ToPoint(const QString &point) -> QPointF +{ + QStringList coordinates = point.split(coordintatesSep); + if (coordinates.count() == 2) + { + return {coordinates.at(0).toDouble(), coordinates.at(1).toDouble()}; + } + + return {}; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto StringV0_1_2ToPath(const QString &path) -> QVector +{ + QVector p; + QStringList points = path.split(pointsSep); + p.reserve(points.size()); + for (const auto& point : points) + { + p.append(StringV0_1_2ToPoint(point)); + } + + return p; +} +} // namespace + //--------------------------------------------------------------------------------------------------------------------- VLayoutConverter::VLayoutConverter(const QString &fileName) : VAbstractConverter(fileName) @@ -90,7 +140,8 @@ auto VLayoutConverter::XSDSchema(unsigned ver) const -> QString { std::make_pair(FormatVersion(0, 1, 0), QStringLiteral("://schema/layout/v0.1.0.xsd")), std::make_pair(FormatVersion(0, 1, 1), QStringLiteral("://schema/layout/v0.1.1.xsd")), - std::make_pair(FormatVersion(0, 1, 2), CurrentSchema), + std::make_pair(FormatVersion(0, 1, 2), QStringLiteral("://schema/layout/v0.1.2.xsd")), + std::make_pair(FormatVersion(0, 1, 3), CurrentSchema), }; if (schemas.contains(ver)) @@ -108,10 +159,11 @@ void VLayoutConverter::ApplyPatches() { case (FormatVersion(0, 1, 0)): case (FormatVersion(0, 1, 1)): - ToV0_1_2(); - ValidateXML(XSDSchema(FormatVersion(0, 1, 2))); - Q_FALLTHROUGH(); case (FormatVersion(0, 1, 2)): + ToV0_1_3(); + ValidateXML(XSDSchema(FormatVersion(0, 1, 3))); + Q_FALLTHROUGH(); + case (FormatVersion(0, 1, 3)): break; default: InvalidVersion(m_ver); @@ -132,12 +184,78 @@ auto VLayoutConverter::IsReadOnly() const -> bool } //--------------------------------------------------------------------------------------------------------------------- -void VLayoutConverter::ToV0_1_2() +void VLayoutConverter::ConvertPiecesToV0_1_3() { - // TODO. Delete if minimal supported version is 0.1.2 - Q_STATIC_ASSERT_X(VLayoutConverter::LayoutMinVer < FormatVersion(0, 1, 2), + // TODO. Delete if minimal supported version is 0.1.3 + Q_STATIC_ASSERT_X(VLayoutConverter::LayoutMinVer < FormatVersion(0, 1, 3), "Time to refactor the code."); - SetVersion(QStringLiteral("0.1.2")); + const QStringList types + { + *strSeamLineTag, + *strSeamAllowanceTag, + *strInternalPathTag + }; + + for (const auto &tagType : types) + { + QDomNodeList tags = elementsByTagName(tagType); + for (int i=0; i < tags.size(); ++i) + { + QDomElement node = tags.at(i).toElement(); + ConvertPathToV0_1_3(node); + } + } + + QDomNodeList tags = elementsByTagName(*strMarkerTag); + for (int i=0; i < tags.size(); ++i) + { + QDomElement node = tags.at(i).toElement(); + RemoveAllChildren(node); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void VLayoutConverter::ConvertPathToV0_1_3(QDomElement &node) +{ + QString oldPath = node.text(); + if (oldPath.isEmpty()) + { + return; + } + + RemoveAllChildren(node); + QVector path; + CastTo(StringV0_1_2ToPath(oldPath), path); + + for (auto &point : path) + { + QDomElement pointTag = createElement(*strPointTag); + SetAttribute(pointTag, *strAttrX, point.x()); + SetAttribute(pointTag, *strAttrY, point.y()); + + if (point.TurnPoint()) + { + SetAttribute(pointTag, *strAttrTurnPoint, point.TurnPoint()); + } + + if (point.CurvePoint()) + { + SetAttribute(pointTag, *strAttrCurvePoint, point.CurvePoint()); + } + + node.appendChild(pointTag); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void VLayoutConverter::ToV0_1_3() +{ + // TODO. Delete if minimal supported version is 0.1.3 + Q_STATIC_ASSERT_X(VLayoutConverter::LayoutMinVer < FormatVersion(0, 1, 3), + "Time to refactor the code."); + + ConvertPiecesToV0_1_3(); + SetVersion(QStringLiteral("0.1.3")); Save(); } diff --git a/src/libs/ifc/xml/vlayoutconverter.h b/src/libs/ifc/xml/vlayoutconverter.h index 13faba11d..50a18caa1 100644 --- a/src/libs/ifc/xml/vlayoutconverter.h +++ b/src/libs/ifc/xml/vlayoutconverter.h @@ -44,7 +44,7 @@ public: static const QString LayoutMaxVerStr; static const QString CurrentSchema; static Q_DECL_CONSTEXPR const unsigned LayoutMinVer = FormatVersion(0, 1, 0); - static Q_DECL_CONSTEXPR const unsigned LayoutMaxVer = FormatVersion(0, 1, 2); + static Q_DECL_CONSTEXPR const unsigned LayoutMaxVer = FormatVersion(0, 1, 3); protected: void SetVersion(const QString &version) override; @@ -61,7 +61,11 @@ protected: auto IsReadOnly() const -> bool override; - void ToV0_1_2(); + void ConvertPiecesToV0_1_3(); + void ConvertPieceToV0_1_3(const QDomElement &piece); + void ConvertPathToV0_1_3(QDomElement &node); + + void ToV0_1_3(); private: Q_DISABLE_COPY_MOVE(VLayoutConverter) // NOLINT diff --git a/src/libs/ifc/xml/vpatternconverter.cpp b/src/libs/ifc/xml/vpatternconverter.cpp index 5ec5b5254..b55095018 100644 --- a/src/libs/ifc/xml/vpatternconverter.cpp +++ b/src/libs/ifc/xml/vpatternconverter.cpp @@ -60,8 +60,8 @@ class QDomElement; */ const QString VPatternConverter::PatternMinVerStr = QStringLiteral("0.1.4"); -const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.9.1"); -const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.9.1.xsd"); +const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.9.2"); +const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.9.2.xsd"); //VPatternConverter::PatternMinVer; // <== DON'T FORGET TO UPDATE TOO!!!! //VPatternConverter::PatternMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!! @@ -266,7 +266,8 @@ auto VPatternConverter::XSDSchema(unsigned ver) const -> QString std::make_pair(FormatVersion(0, 8, 12), QStringLiteral("://schema/pattern/v0.8.12.xsd")), std::make_pair(FormatVersion(0, 8, 13), QStringLiteral("://schema/pattern/v0.8.13.xsd")), std::make_pair(FormatVersion(0, 9, 0), QStringLiteral("://schema/pattern/v0.9.0.xsd")), - std::make_pair(FormatVersion(0, 9, 1), CurrentSchema) + std::make_pair(FormatVersion(0, 9, 1), QStringLiteral("://schema/pattern/v0.9.1.xsd")), + std::make_pair(FormatVersion(0, 9, 2), CurrentSchema) }; if (schemas.contains(ver)) @@ -374,6 +375,10 @@ void VPatternConverter::ApplyPatches() ValidateXML(CurrentSchema); Q_FALLTHROUGH(); case (FormatVersion(0, 9, 1)): + ToV0_9_2(); + ValidateXML(CurrentSchema); + Q_FALLTHROUGH(); + case (FormatVersion(0, 9, 2)): break; default: InvalidVersion(m_ver); @@ -391,7 +396,7 @@ void VPatternConverter::DowngradeToCurrentMaxVersion() bool VPatternConverter::IsReadOnly() const { // Check if attribute readOnly was not changed in file format - Q_STATIC_ASSERT_X(VPatternConverter::PatternMaxVer == FormatVersion(0, 9, 1), + Q_STATIC_ASSERT_X(VPatternConverter::PatternMaxVer == FormatVersion(0, 9, 2), "Check attribute readOnly."); // Possibly in future attribute readOnly will change position etc. @@ -562,6 +567,17 @@ void VPatternConverter::ToV0_9_1() Save(); } +//--------------------------------------------------------------------------------------------------------------------- +void VPatternConverter::ToV0_9_2() +{ + // TODO. Delete if minimal supported version is 0.9.2 + Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < FormatVersion(0, 9, 2), + "Time to refactor the code."); + + SetVersion(QStringLiteral("0.9.2")); + Save(); +} + //--------------------------------------------------------------------------------------------------------------------- void VPatternConverter::TagUnitToV0_2_0() { diff --git a/src/libs/ifc/xml/vpatternconverter.h b/src/libs/ifc/xml/vpatternconverter.h index 25bcb2c0a..a0a669938 100644 --- a/src/libs/ifc/xml/vpatternconverter.h +++ b/src/libs/ifc/xml/vpatternconverter.h @@ -53,7 +53,7 @@ public: static const QString PatternMaxVerStr; static const QString CurrentSchema; static Q_DECL_CONSTEXPR const unsigned PatternMinVer = FormatVersion(0, 1, 4); - static Q_DECL_CONSTEXPR const unsigned PatternMaxVer = FormatVersion(0, 9, 1); + static Q_DECL_CONSTEXPR const unsigned PatternMaxVer = FormatVersion(0, 9, 2); protected: void Save() override; @@ -86,6 +86,7 @@ private: void ToV0_8_8(); void ToV0_9_0(); void ToV0_9_1(); + void ToV0_9_2(); void TagUnitToV0_2_0(); void TagIncrementToV0_2_0(); diff --git a/src/libs/vdxf/vdxfengine.cpp b/src/libs/vdxf/vdxfengine.cpp index 058dc41d0..e0439e409 100644 --- a/src/libs/vdxf/vdxfengine.cpp +++ b/src/libs/vdxf/vdxfengine.cpp @@ -53,7 +53,9 @@ #endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "dxiface.h" #include "../vlayout/vlayoutpiece.h" +#include "../vlayout/vlayoutpoint.h" #include "../vgeometry/vgeometrydef.h" +#include "../vgeometry/vlayoutplacelabel.h" static const qreal AAMATextHeight = 2.5; @@ -61,8 +63,8 @@ namespace { Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer0, (UTF8STRING("0"))) // NOLINT Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer1, (UTF8STRING("1"))) // NOLINT -//Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer2, (UTF8STRING("2"))) // NOLINT -//Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer3, (UTF8STRING("3"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer2, (UTF8STRING("2"))) // NOLINT +Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer3, (UTF8STRING("3"))) // NOLINT Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer4, (UTF8STRING("4"))) // NOLINT //Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer5, (UTF8STRING("5"))) // NOLINT //Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer6, (UTF8STRING("6"))) // NOLINT @@ -87,9 +89,9 @@ Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer86, (UTF8STRING("86"))) // NOLI Q_GLOBAL_STATIC_WITH_ARGS(const UTF8STRING, layer87, (UTF8STRING("87"))) // NOLINT //--------------------------------------------------------------------------------------------------------------------- -auto PieceOutline(const VLayoutPiece &detail) -> QVector +auto PieceOutline(const VLayoutPiece &detail) -> QVector { - QVector outline; + QVector outline; if (detail.IsSeamAllowance() && not detail.IsSeamAllowanceBuiltIn()) { outline = detail.GetMappedSeamAllowancePoints(); @@ -692,8 +694,7 @@ auto VDxfEngine::ExportToAAMA(const QVector &details) -> bool return false; } - m_input = QSharedPointer(new dx_iface(GetFileNameForLocale(), m_version, m_varMeasurement, - m_varInsunits)); + m_input = QSharedPointer::create(GetFileNameForLocale(), m_version, m_varMeasurement, m_varInsunits); m_input->AddAAMAHeaderData(); if (m_version > DRW::AC1009) { @@ -705,7 +706,8 @@ auto VDxfEngine::ExportToAAMA(const QVector &details) -> bool for(auto detail : details) { - auto *detailBlock = new dx_ifaceBlock(); + + auto detailBlock = QSharedPointer::create(); QString blockName = detail.GetName(); if (m_version <= DRW::AC1009) @@ -726,80 +728,98 @@ auto VDxfEngine::ExportToAAMA(const QVector &details) -> bool ExportPieceText(detailBlock, detail); ExportAAMADrill(detailBlock, detail); - m_input->AddBlock(detailBlock); + m_input->AddBlock(detailBlock.get()); - auto *insert = new DRW_Insert(); + QScopedPointer insert(new DRW_Insert()); insert->name = blockName.toStdString(); insert->layer = *layer1; - m_input->AddEntity(insert); + m_input->AddEntity(insert.take()); } return m_input->fileExport(m_binary); } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportAAMAOutline(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportAAMAOutline(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { - DRW_Entity *e = AAMAPolygon(PieceOutline(detail), *layer1, true); - if (e) + QVector points = PieceOutline(detail); + + if (DRW_Entity *e = AAMAPolygon(points, *layer1, true)) { detailBlock->ent.push_back(e); } + + ExportTurnPoints(detailBlock, points); + ExportCurvePoints(detailBlock, points); } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportAAMADraw(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportAAMADraw(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { if (detail.IsSeamAllowance() && not detail.IsHideMainPath() && not detail.IsSeamAllowanceBuiltIn()) { + QVector points = detail.GetMappedContourPoints(); if (DRW_Entity *e = AAMAPolygon(detail.GetMappedContourPoints(), *layer8, true)) { detailBlock->ent.push_back(e); } + + ExportTurnPoints(detailBlock, points); + ExportCurvePoints(detailBlock, points); } - const QVector> drawIntCut = detail.MappedInternalPathsForCut(false); - for(const auto &intCut : drawIntCut) + const QVector> drawIntLine = detail.MappedInternalPathsForCut(false); + for(const auto &intLine : drawIntLine) { - if (DRW_Entity *e = AAMAPolygon(intCut, *layer8, false)) + if (DRW_Entity *e = AAMAPolygon(intLine, *layer8, false)) { detailBlock->ent.push_back(e); } + + ExportTurnPoints(detailBlock, intLine); + ExportCurvePoints(detailBlock, intLine); } - const QVector labels = detail.GetMappedPlaceLabels(); + const QVector labels = detail.GetPlaceLabels(); for(const auto &label : labels) { - if (label.type != PlaceLabelType::Doubletree && label.type != PlaceLabelType::Button - && label.type != PlaceLabelType::Circle) + if (label.Type() != PlaceLabelType::Doubletree && label.Type() != PlaceLabelType::Button + && label.Type() != PlaceLabelType::Circle) { - for(const auto &p : qAsConst(label.shape)) + PlaceLabelImg shape = detail.MapPlaceLabelShape(VAbstractPiece::PlaceLabelShape(label)); + for(const auto &points : shape) { - if (DRW_Entity *e = AAMAPolygon(p, *layer8, false)) + if (DRW_Entity *e = AAMAPolygon(points, *layer8, false)) { detailBlock->ent.push_back(e); } + + ExportTurnPoints(detailBlock, points); + ExportCurvePoints(detailBlock, points); } } } } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportAAMAIntcut(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportAAMAIntcut(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { - QVector> drawIntCut = detail.MappedInternalPathsForCut(true); + QVector> drawIntCut = detail.MappedInternalPathsForCut(true); for(auto &intCut : drawIntCut) { if (DRW_Entity *e = AAMAPolygon(intCut, *layer11, false)) { detailBlock->ent.push_back(e); } + + ExportTurnPoints(detailBlock, intCut); + ExportCurvePoints(detailBlock, intCut); } } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportAAMANotch(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportAAMANotch(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { if (detail.IsSeamAllowance()) { @@ -818,7 +838,7 @@ void VDxfEngine::ExportAAMANotch(dx_ifaceBlock *detailBlock, const VLayoutPiece } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportAAMAGrainline(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportAAMAGrainline(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { const QVector grainline = detail.GetMappedGrainline(); if (grainline.count() > 1) @@ -831,7 +851,7 @@ void VDxfEngine::ExportAAMAGrainline(dx_ifaceBlock *detailBlock, const VLayoutPi } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportPieceText(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportPieceText(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { const QStringList list = detail.GetPieceText(); const QPointF startPos = detail.GetPieceTextPosition(); @@ -863,22 +883,17 @@ void VDxfEngine::ExportStyleSystemText(const QSharedPointer &input, co } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportAAMADrill(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportAAMADrill(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { - const QVector labels = detail.GetMappedPlaceLabels(); + const QVector labels = detail.GetPlaceLabels(); for(const auto &label : labels) { - if (label.type == PlaceLabelType::Doubletree || label.type == PlaceLabelType::Button - || label.type == PlaceLabelType::Circle) + if (label.Type() == PlaceLabelType::Doubletree || label.Type() == PlaceLabelType::Button + || label.Type() == PlaceLabelType::Circle) { - const QPointF center = detail.GetMatrix().map(label.center); - auto *point = new DRW_Point(); - point->basePoint = DRW_Coord(FromPixel(center.x(), m_varInsunits), - FromPixel(GetSize().height() - center.y(), m_varInsunits), 0); - point->layer = *layer13; - - detailBlock->ent.push_back(point); + const QPointF center = detail.GetMatrix().map(label.Center()); + detailBlock->ent.push_back(AAMAPoint(center, *layer13)); } } } @@ -906,7 +921,7 @@ auto VDxfEngine::ExportToASTM(const QVector &details) -> bool for(auto detail : details) { - auto *detailBlock = new dx_ifaceBlock(); + auto detailBlock = QSharedPointer::create(); QString blockName = detail.GetName(); if (m_version <= DRW::AC1009) @@ -929,44 +944,45 @@ auto VDxfEngine::ExportToASTM(const QVector &details) -> bool ExportASTMDrill(detailBlock, detail); ExportASTMAnnotationText(detailBlock, detail); - m_input->AddBlock(detailBlock); + m_input->AddBlock(detailBlock.get()); - auto *insert = new DRW_Insert(); + QScopedPointer insert(new DRW_Insert()); insert->name = blockName.toStdString(); insert->layer = *layer1; - m_input->AddEntity(insert); + m_input->AddEntity(insert.take()); } return m_input->fileExport(m_binary); } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportASTMPieceBoundary(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportASTMPieceBoundary(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { - QVector pieceBoundary = PieceOutline(detail); + QVector pieceBoundary = PieceOutline(detail); // Piece boundary - DRW_Entity *e = AAMAPolygon(pieceBoundary, *layer1, true); - if (e) + if (DRW_Entity *e = AAMAPolygon(pieceBoundary, *layer1, true)) { detailBlock->ent.push_back(e); } + ExportTurnPoints(detailBlock, pieceBoundary); + ExportCurvePoints(detailBlock, pieceBoundary); + // Piece boundary quality validation curves - DRW_Entity *q = AAMAPolygon(pieceBoundary, *layer84, true); - if (q) + if (DRW_Entity *q = AAMAPolygon(pieceBoundary, *layer84, true)) { detailBlock->ent.push_back(q); } } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportASTMSewLine(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportASTMSewLine(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { if (detail.IsSeamAllowance() && not detail.IsHideMainPath() && not detail.IsSeamAllowanceBuiltIn()) { - QVector sewLine = detail.GetMappedContourPoints(); + QVector sewLine = detail.GetMappedContourPoints(); // Sew lines if (DRW_Entity *e = AAMAPolygon(sewLine, *layer14, true)) @@ -974,6 +990,9 @@ void VDxfEngine::ExportASTMSewLine(dx_ifaceBlock *detailBlock, const VLayoutPiec detailBlock->ent.push_back(e); } + ExportTurnPoints(detailBlock, sewLine); + ExportCurvePoints(detailBlock, sewLine); + // Sew lines quality validation curves if (DRW_Entity *e = AAMAPolygon(sewLine, *layer87, true)) { @@ -983,31 +1002,35 @@ void VDxfEngine::ExportASTMSewLine(dx_ifaceBlock *detailBlock, const VLayoutPiec } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportASTMInternalLine(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportASTMInternalLine(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { - const QVector> drawIntCut = detail.MappedInternalPathsForCut(false); - for(const auto &intCut : drawIntCut) + const QVector> drawIntLine = detail.MappedInternalPathsForCut(false); + for(const auto &intLine : drawIntLine) { // Internal line - if (DRW_Entity *e = AAMAPolygon(intCut, *layer8, false)) + if (DRW_Entity *e = AAMAPolygon(intLine, *layer8, false)) { detailBlock->ent.push_back(e); } + ExportTurnPoints(detailBlock, intLine); + ExportCurvePoints(detailBlock, intLine); + // Internal lines quality validation curves - if (DRW_Entity *e = AAMAPolygon(intCut, *layer85, false)) + if (DRW_Entity *e = AAMAPolygon(intLine, *layer85, false)) { detailBlock->ent.push_back(e); } } - const QVector labels = detail.GetMappedPlaceLabels(); + const QVector labels = detail.GetPlaceLabels(); for(const auto &label : labels) { - if (label.type != PlaceLabelType::Doubletree && label.type != PlaceLabelType::Button - && label.type != PlaceLabelType::Circle) + if (label.Type() != PlaceLabelType::Doubletree && label.Type() != PlaceLabelType::Button + && label.Type() != PlaceLabelType::Circle) { - for(const auto &p : qAsConst(label.shape)) + PlaceLabelImg shape = detail.MapPlaceLabelShape(VAbstractPiece::PlaceLabelShape(label)); + for(const auto &p : shape) { // Internal line (placelabel) if (DRW_Entity *e = AAMAPolygon(p, *layer8, false)) @@ -1015,6 +1038,9 @@ void VDxfEngine::ExportASTMInternalLine(dx_ifaceBlock *detailBlock, const VLayou detailBlock->ent.push_back(e); } + ExportTurnPoints(detailBlock, p); + ExportCurvePoints(detailBlock, p); + // Internal lines quality validation curves if (DRW_Entity *e = AAMAPolygon(p, *layer85, false)) { @@ -1026,9 +1052,9 @@ void VDxfEngine::ExportASTMInternalLine(dx_ifaceBlock *detailBlock, const VLayou } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportASTMInternalCutout(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportASTMInternalCutout(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { - QVector> drawIntCut = detail.MappedInternalPathsForCut(true); + QVector> drawIntCut = detail.MappedInternalPathsForCut(true); for(auto &intCut : drawIntCut) { // Internal cutout @@ -1037,6 +1063,9 @@ void VDxfEngine::ExportASTMInternalCutout(dx_ifaceBlock *detailBlock, const VLay detailBlock->ent.push_back(e); } + ExportTurnPoints(detailBlock, intCut); + ExportCurvePoints(detailBlock, intCut); + // Internal cutouts quality validation curves if (DRW_Entity *e = AAMAPolygon(intCut, *layer86, false)) { @@ -1046,7 +1075,7 @@ void VDxfEngine::ExportASTMInternalCutout(dx_ifaceBlock *detailBlock, const VLay } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportASTMAnnotationText(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportASTMAnnotationText(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { QString name = detail.GetName(); QPointF textPos = detail.VLayoutPiece::DetailBoundingRect().center(); @@ -1056,22 +1085,17 @@ void VDxfEngine::ExportASTMAnnotationText(dx_ifaceBlock *detailBlock, const VLay } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportASTMDrill(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportASTMDrill(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { - const QVector labels = detail.GetMappedPlaceLabels(); + const QVector labels = detail.GetPlaceLabels(); for(const auto &label : labels) { - if (label.type == PlaceLabelType::Doubletree || label.type == PlaceLabelType::Button - || label.type == PlaceLabelType::Circle) + if (label.Type() == PlaceLabelType::Doubletree || label.Type() == PlaceLabelType::Button + || label.Type() == PlaceLabelType::Circle) { - const QPointF center = detail.GetMatrix().map(label.center); - auto *point = new DRW_Point(); - point->basePoint = DRW_Coord(FromPixel(center.x(), m_varInsunits), - FromPixel(GetSize().height() - center.y(), m_varInsunits), 0); - point->layer = *layer13; - - detailBlock->ent.push_back(point); + const QPointF center = detail.GetMatrix().map(label.Center()); + detailBlock->ent.push_back(AAMAPoint(center, *layer13)); // TODO. Investigate drill category // QPointF pos(center.x(), center.y() - ToPixel(AAMATextHeight, varInsunits)); @@ -1081,7 +1105,7 @@ void VDxfEngine::ExportASTMDrill(dx_ifaceBlock *detailBlock, const VLayoutPiece } //--------------------------------------------------------------------------------------------------------------------- -void VDxfEngine::ExportASTMNotch(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail) +void VDxfEngine::ExportASTMNotch(const QSharedPointer &detailBlock, const VLayoutPiece &detail) { if (detail.IsSeamAllowance()) { @@ -1141,7 +1165,34 @@ void VDxfEngine::ExportASTMNotch(dx_ifaceBlock *detailBlock, const VLayoutPiece } //--------------------------------------------------------------------------------------------------------------------- -auto VDxfEngine::AAMAPolygon(const QVector &polygon, const UTF8STRING &layer, bool forceClosed) -> DRW_Entity * +void VDxfEngine::ExportTurnPoints(const QSharedPointer &detailBlock, + const QVector &points) const +{ + for(const auto &p : qAsConst(points)) + { + if (p.TurnPoint()) + { + detailBlock->ent.push_back(AAMAPoint(p, *layer2)); + } + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void VDxfEngine::ExportCurvePoints(const QSharedPointer &detailBlock, + const QVector &points) const +{ + for(const auto &p : qAsConst(points)) + { + if (p.CurvePoint() && not p.TurnPoint()) + { + detailBlock->ent.push_back(AAMAPoint(p, *layer3)); + } + } +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VDxfEngine::AAMAPolygon(const QVector &polygon, const UTF8STRING &layer, + bool forceClosed) -> DRW_Entity * { if (polygon.isEmpty()) { @@ -1186,6 +1237,16 @@ auto VDxfEngine::AAMAText(const QPointF &pos, const QString &text, const UTF8STR return textLine; } +//--------------------------------------------------------------------------------------------------------------------- +auto VDxfEngine::AAMAPoint(const QPointF &pos, const UTF8STRING &layer) const -> DRW_Point * +{ + auto *point = new DRW_Point(); + point->basePoint = DRW_Coord(FromPixel(pos.x(), m_varInsunits), + FromPixel(GetSize().height() - pos.y(), m_varInsunits), 0); + point->layer = layer; + return point; +} + //--------------------------------------------------------------------------------------------------------------------- auto VDxfEngine::FromUnicodeToCodec(const QString &str, QTextCodec *codec) -> std::string { @@ -1203,8 +1264,9 @@ auto VDxfEngine::GetFileNameForLocale() const -> std::string } //--------------------------------------------------------------------------------------------------------------------- -template -auto VDxfEngine::CreateAAMAPolygon(const QVector &polygon, const UTF8STRING &layer, bool forceClosed) -> P * +template +auto VDxfEngine::CreateAAMAPolygon(const QVector &polygon, const UTF8STRING &layer, + bool forceClosed) -> P * { auto *poly = new P(); poly->layer = layer; @@ -1221,7 +1283,7 @@ auto VDxfEngine::CreateAAMAPolygon(const QVector &polygon, const UTF8ST } } - for (auto p : polygon) + for (const auto &p : polygon) { poly->addVertex(V(FromPixel(p.x(), m_varInsunits), FromPixel(GetSize().height() - p.y(), m_varInsunits))); diff --git a/src/libs/vdxf/vdxfengine.h b/src/libs/vdxf/vdxfengine.h index 2119c5542..2205800d5 100644 --- a/src/libs/vdxf/vdxfengine.h +++ b/src/libs/vdxf/vdxfengine.h @@ -49,6 +49,8 @@ class DRW_Text; class VLayoutPiece; class DRW_Entity; class dx_ifaceBlock; +class VLayoutPoint; +class DRW_Point; class VDxfEngine final : public QPaintEngine { @@ -123,31 +125,37 @@ private: Q_REQUIRED_RESULT auto ToPixel(double val, const VarInsunits &unit) const -> double; auto ExportToAAMA(const QVector &details) -> bool; - void ExportAAMAOutline(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportAAMADraw(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportAAMAIntcut(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportAAMANotch(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportAAMAGrainline(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportPieceText(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); + void ExportAAMAOutline(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportAAMADraw(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportAAMAIntcut(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportAAMANotch(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportAAMAGrainline(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportPieceText(const QSharedPointer &detailBlock, const VLayoutPiece &detail); void ExportStyleSystemText(const QSharedPointer &input, const QVector &details); - void ExportAAMADrill(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); + void ExportAAMADrill(const QSharedPointer &detailBlock, const VLayoutPiece &detail); auto ExportToASTM(const QVector &details) -> bool; - void ExportASTMPieceBoundary(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportASTMSewLine(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportASTMInternalLine(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportASTMInternalCutout(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportASTMAnnotationText(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportASTMDrill(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); - void ExportASTMNotch(dx_ifaceBlock *detailBlock, const VLayoutPiece &detail); + void ExportASTMPieceBoundary(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportASTMSewLine(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportASTMInternalLine(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportASTMInternalCutout(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportASTMAnnotationText(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportASTMDrill(const QSharedPointer &detailBlock, const VLayoutPiece &detail); + void ExportASTMNotch(const QSharedPointer &detailBlock, const VLayoutPiece &detail); - Q_REQUIRED_RESULT auto AAMAPolygon(const QVector &polygon, const UTF8STRING &layer, + void ExportTurnPoints(const QSharedPointer &detailBlock, + const QVector &points) const; + void ExportCurvePoints(const QSharedPointer &detailBlock, + const QVector &points) const; + + Q_REQUIRED_RESULT auto AAMAPolygon(const QVector &polygon, const UTF8STRING &layer, bool forceClosed) -> DRW_Entity *; Q_REQUIRED_RESULT auto AAMALine(const QLineF &line, const UTF8STRING &layer) -> DRW_Entity *; Q_REQUIRED_RESULT auto AAMAText(const QPointF &pos, const QString &text, const UTF8STRING &layer) -> DRW_Entity *; + Q_REQUIRED_RESULT auto AAMAPoint(const QPointF &pos, const UTF8STRING &layer) const -> DRW_Point *; - template - Q_REQUIRED_RESULT auto CreateAAMAPolygon(const QVector &polygon, const UTF8STRING &layer, + template + Q_REQUIRED_RESULT auto CreateAAMAPolygon(const QVector &polygon, const UTF8STRING &layer, bool forceClosed) -> P *; static auto FromUnicodeToCodec(const QString &str, QTextCodec *codec) -> std::string; diff --git a/src/libs/vgeometry/vgeometry.pri b/src/libs/vgeometry/vgeometry.pri index 4c2248b78..77c6eedef 100644 --- a/src/libs/vgeometry/vgeometry.pri +++ b/src/libs/vgeometry/vgeometry.pri @@ -6,6 +6,7 @@ SOURCES += \ $$PWD/vgobject.cpp \ $$PWD/vabstractcurve.cpp \ $$PWD/varc.cpp \ + $$PWD/vlayoutplacelabel.cpp \ $$PWD/vpointf.cpp \ $$PWD/vspline.cpp \ $$PWD/vsplinepath.cpp \ @@ -28,6 +29,7 @@ HEADERS += \ $$PWD/vabstractcurve.h \ $$PWD/varc.h \ $$PWD/varc_p.h \ + $$PWD/vlayoutplacelabel.h \ $$PWD/vpointf.h \ $$PWD/vpointf_p.h \ $$PWD/vspline.h \ diff --git a/src/libs/vgeometry/vgeometrydef.cpp b/src/libs/vgeometry/vgeometrydef.cpp index f87f25d68..e3a7d13d9 100644 --- a/src/libs/vgeometry/vgeometrydef.cpp +++ b/src/libs/vgeometry/vgeometrydef.cpp @@ -93,64 +93,3 @@ QDataStream &operator>>(QDataStream &dataStream, VLayoutPassmark &data) return dataStream; } - -const quint32 VLayoutPlaceLabel::streamHeader = 0xB282E284; // CRC-32Q string "VLayoutPlaceLabel" -const quint16 VLayoutPlaceLabel::classVersion = 1; - -// Friend functions -//--------------------------------------------------------------------------------------------------------------------- -QDataStream& operator<<(QDataStream &dataStream, const VLayoutPlaceLabel &data) -{ - dataStream << VLayoutPlaceLabel::streamHeader << VLayoutPlaceLabel::classVersion; - - // Added in classVersion = 1 - dataStream << data.center; - dataStream << data.type; - dataStream << data.shape; - dataStream << data.rotationMatrix; - dataStream << data.box; - - // Added in classVersion = 2 - - return dataStream; -} - -//--------------------------------------------------------------------------------------------------------------------- -QDataStream& operator>>(QDataStream &dataStream, VLayoutPlaceLabel &data) -{ - quint32 actualStreamHeader = 0; - dataStream >> actualStreamHeader; - - if (actualStreamHeader != VLayoutPlaceLabel::streamHeader) - { - QString message = QCoreApplication::tr("VLayoutPlaceLabel prefix mismatch error: actualStreamHeader = 0x%1 and " - "streamHeader = 0x%2") - .arg(actualStreamHeader, 8, 0x10, QChar('0')) - .arg(VLayoutPlaceLabel::streamHeader, 8, 0x10, QChar('0')); - throw VException(message); - } - - quint16 actualClassVersion = 0; - dataStream >> actualClassVersion; - - if (actualClassVersion > VLayoutPlaceLabel::classVersion) - { - QString message = QCoreApplication::tr("VLayoutPlaceLabel compatibility error: actualClassVersion = %1 and " - "classVersion = %2") - .arg(actualClassVersion).arg(VLayoutPlaceLabel::classVersion); - throw VException(message); - } - - dataStream >> data.center; - dataStream >> data.type; - dataStream >> data.shape; - dataStream >> data.rotationMatrix; - dataStream >> data.box; - -// if (actualClassVersion >= 2) -// { - -// } - - return dataStream; -} diff --git a/src/libs/vgeometry/vgeometrydef.h b/src/libs/vgeometry/vgeometrydef.h index 28571e649..2f7832d32 100644 --- a/src/libs/vgeometry/vgeometrydef.h +++ b/src/libs/vgeometry/vgeometrydef.h @@ -64,24 +64,6 @@ enum class PlaceLabelType : quint8 Circle = 9 }; -typedef QVector PlaceLabelImg; - -struct VLayoutPlaceLabel -{ - QPointF center{}; - PlaceLabelType type{PlaceLabelType::Button}; - PlaceLabelImg shape{}; - QTransform rotationMatrix{}; - QRectF box{}; - - friend QDataStream& operator<<(QDataStream& dataStream, const VLayoutPlaceLabel& data); - friend QDataStream& operator>>(QDataStream& dataStream, VLayoutPlaceLabel& data); -private: - static const quint32 streamHeader; - static const quint16 classVersion; -}; -Q_DECLARE_METATYPE(VLayoutPlaceLabel) - struct VLayoutPassmark { QVector lines{}; diff --git a/src/libs/vgeometry/vlayoutplacelabel.cpp b/src/libs/vgeometry/vlayoutplacelabel.cpp new file mode 100644 index 000000000..b15a79eda --- /dev/null +++ b/src/libs/vgeometry/vlayoutplacelabel.cpp @@ -0,0 +1,104 @@ +/************************************************************************ + ** + ** @file vlayoutplacelabel.cpp + ** @author Roman Telezhynskyi + ** @date 12 10, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2022 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#include "vlayoutplacelabel.h" + +#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) +# include "../vmisc/vdatastreamenum.h" +#endif +#include "../ifc/exception/vexception.h" + +//--------------------------------------------------------------------------------------------------------------------- +VLayoutPlaceLabel::VLayoutPlaceLabel(const VPlaceLabelItem &item) + : m_center(item.toQPointF()), + m_type(item.GetLabelType()), + m_rotationMatrix(item.RotationMatrix()), + m_box(item.Box()) +{} + +// Friend functions +//--------------------------------------------------------------------------------------------------------------------- +auto operator<<(QDataStream &dataStream, const VLayoutPlaceLabel &data) -> QDataStream& +{ + dataStream << VLayoutPlaceLabel::streamHeader << VLayoutPlaceLabel::classVersion; + + // Added in classVersion = 1 + dataStream << data.m_center; + dataStream << data.m_type; + dataStream << data.m_rotationMatrix; + dataStream << data.m_box; + + // Added in classVersion = 2 + + return dataStream; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto operator>>(QDataStream &dataStream, VLayoutPlaceLabel &data) -> QDataStream& +{ + quint32 actualStreamHeader = 0; + dataStream >> actualStreamHeader; + + if (actualStreamHeader != VLayoutPlaceLabel::streamHeader) + { + QString message = QCoreApplication::tr("VLayoutPlaceLabel prefix mismatch error: actualStreamHeader = 0x%1 and " + "streamHeader = 0x%2") + .arg(actualStreamHeader, 8, 0x10, QChar('0')) + .arg(VLayoutPlaceLabel::streamHeader, 8, 0x10, QChar('0')); + throw VException(message); + } + + quint16 actualClassVersion = 0; + dataStream >> actualClassVersion; + + if (actualClassVersion > VLayoutPlaceLabel::classVersion) + { + QString message = QCoreApplication::tr("VLayoutPlaceLabel compatibility error: actualClassVersion = %1 and " + "classVersion = %2") + .arg(actualClassVersion).arg(VLayoutPlaceLabel::classVersion); + throw VException(message); + } + + dataStream >> data.m_center; + dataStream >> data.m_type; + + if (actualClassVersion == 1) + { + QVector shape; + dataStream >> shape; // no longer in use + } + + dataStream >> data.m_rotationMatrix; + dataStream >> data.m_box; + + // if (actualClassVersion >= 2) + // { + + // } + + return dataStream; +} diff --git a/src/libs/vgeometry/vlayoutplacelabel.h b/src/libs/vgeometry/vlayoutplacelabel.h new file mode 100644 index 000000000..ed639b305 --- /dev/null +++ b/src/libs/vgeometry/vlayoutplacelabel.h @@ -0,0 +1,118 @@ +/************************************************************************ + ** + ** @file vlayoutplacelabel.h + ** @author Roman Telezhynskyi + ** @date 12 10, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2022 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#ifndef VLAYOUTPLACELABEL_H +#define VLAYOUTPLACELABEL_H + +#include + +#include "vgeometrydef.h" +#include "vplacelabelitem.h" + +class VLayoutPlaceLabel +{ +public: + VLayoutPlaceLabel() = default; + explicit VLayoutPlaceLabel(const VPlaceLabelItem &item); + + friend auto operator<<(QDataStream& dataStream, const VLayoutPlaceLabel& data) -> QDataStream&; + friend auto operator>>(QDataStream& dataStream, VLayoutPlaceLabel& data) -> QDataStream&; + + auto Center() const -> QPointF; + void SetCenter(QPointF newCenter); + + auto Type() const -> PlaceLabelType; + void SetType(PlaceLabelType newType); + + auto RotationMatrix() const -> const QTransform &; + void SetRotationMatrix(const QTransform &newRotationMatrix); + + auto Box() const -> const QRectF &; + void SetBox(const QRectF &newBox); + +private: + static constexpr quint32 streamHeader = 0xB282E284; // CRC-32Q string "VLayoutPlaceLabel" + static constexpr quint16 classVersion = 2; + + QPointF m_center{}; + PlaceLabelType m_type{PlaceLabelType::Button}; + QTransform m_rotationMatrix{}; + QRectF m_box{}; +}; + +Q_DECLARE_METATYPE(VLayoutPlaceLabel) // NOLINT +Q_DECLARE_TYPEINFO(VLayoutPlaceLabel, Q_MOVABLE_TYPE); // NOLINT + +//--------------------------------------------------------------------------------------------------------------------- +inline auto VLayoutPlaceLabel::Center() const -> QPointF +{ + return m_center; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline void VLayoutPlaceLabel::SetCenter(QPointF newCenter) +{ + m_center = newCenter; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline auto VLayoutPlaceLabel::Type() const -> PlaceLabelType +{ + return m_type; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline void VLayoutPlaceLabel::SetType(PlaceLabelType newType) +{ + m_type = newType; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline auto VLayoutPlaceLabel::RotationMatrix() const -> const QTransform & +{ + return m_rotationMatrix; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline void VLayoutPlaceLabel::SetRotationMatrix(const QTransform &newRotationMatrix) +{ + m_rotationMatrix = newRotationMatrix; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline auto VLayoutPlaceLabel::Box() const -> const QRectF & +{ + return m_box; +} + +//--------------------------------------------------------------------------------------------------------------------- +inline void VLayoutPlaceLabel::SetBox(const QRectF &newBox) +{ + m_box = newBox; +} + +#endif // VLAYOUTPLACELABEL_H diff --git a/src/libs/vgeometry/vplacelabelitem.cpp b/src/libs/vgeometry/vplacelabelitem.cpp index 5fbd4bfeb..db3c5cd22 100644 --- a/src/libs/vgeometry/vplacelabelitem.cpp +++ b/src/libs/vgeometry/vplacelabelitem.cpp @@ -28,7 +28,6 @@ #include "vplacelabelitem.h" #include "vplacelabelitem_p.h" #include "../vpatterndb/vcontainer.h" -#include "varc.h" #include #include @@ -240,198 +239,3 @@ VPlaceLabelItem &VPlaceLabelItem::operator=(VPlaceLabelItem &&item) Q_DECL_NOTHR return *this; } #endif - -//--------------------------------------------------------------------------------------------------------------------- -PlaceLabelImg VPlaceLabelItem::LabelShape() const -{ - QTransform t = RotationMatrix(); - - auto SegmentShape = [t, this]() - { - QPolygonF shape; - shape << QPointF(x(), y() - d->hValue/2.0) << QPointF(x(), y() + d->hValue/2.0); - - return PlaceLabelImg({t.map(shape)}); - }; - - auto RectangleShape = [t, this]() - { - QRectF rect(QPointF(x() - d->wValue/2.0, y() - d->hValue/2.0), - QPointF(x() + d->wValue/2.0, y() + d->hValue/2.0)); - - QPolygonF shape; - shape << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.bottomLeft() << rect.topLeft(); - - return PlaceLabelImg({t.map(shape)}); - }; - - auto CrossShape = [t, this]() - { - QPolygonF shape1; - shape1 << QPointF(x(), y() - d->hValue/2.0) - << QPointF(x(), y() + d->hValue/2.0); - - QPolygonF shape2; - shape2 << QPointF(x() - d->wValue/2.0, y()) - << QPointF(x() + d->wValue/2.0, y()); - - return PlaceLabelImg({t.map(shape1), t.map(shape2)}); - }; - - auto TshapedShape = [t, this]() - { - QPointF center2(x(), y() + d->hValue/2.0); - - QPolygonF shape1; - shape1 << QPointF(x(), y()) << center2; - - QPolygonF shape2; - shape2 << QPointF(center2.x() - d->wValue/2.0, center2.y()) - << QPointF(center2.x() + d->wValue/2.0, center2.y()); - - return PlaceLabelImg({t.map(shape1), t.map(shape2)}); - }; - - auto DoubletreeShape = [t, this]() - { - QRectF rect(QPointF(x() - d->wValue/2.0, y() - d->hValue/2.0), - QPointF(x() + d->wValue/2.0, y() + d->hValue/2.0)); - - QPolygonF shape1; - shape1 << rect.topLeft() << rect.bottomRight(); - - QPolygonF shape2; - shape2 << rect.topRight() << rect.bottomLeft(); - - return PlaceLabelImg({t.map(shape1), t.map(shape2)}); - }; - - auto CornerShape = [t, this]() - { - QPolygonF shape1; - shape1 << QPointF(x(), y()) << QPointF(x(), y() + d->hValue/2.0); - - QPolygonF shape2; - shape2 << QPointF(x() - d->wValue/2.0, y()) << QPointF(x(), y()); - - return PlaceLabelImg({t.map(shape1), t.map(shape2)}); - }; - - auto TriangleShape = [t, this]() - { - QRectF rect(QPointF(x() - d->wValue/2.0, y() - d->hValue/2.0), - QPointF(x() + d->wValue/2.0, y() + d->hValue/2.0)); - - QPolygonF shape; - shape << rect.topLeft() << rect.topRight() << rect.bottomRight() << rect.topLeft(); - - return PlaceLabelImg({t.map(shape)}); - }; - - auto HshapedShape = [t, this]() - { - const QPointF center1 (x(), y() - d->hValue/2.0); - const QPointF center2 (x(), y() + d->hValue/2.0); - - QPolygonF shape1; - shape1 << center1 << center2; - - QPolygonF shape2; - shape2 << QPointF(center1.x() - d->wValue/2.0, center1.y()) - << QPointF(center1.x() + d->wValue/2.0, center1.y()); - - QPolygonF shape3; - shape3 << QPointF(center2.x() - d->wValue/2.0, center2.y()) - << QPointF(center2.x() + d->wValue/2.0, center2.y()); - - return PlaceLabelImg({t.map(shape1), t.map(shape2), t.map(shape3)}); - }; - - auto ButtonShape = [t, this]() - { - const qreal radius = qMin(d->wValue/2.0, d->hValue/2.0); - QPolygonF shape1; - shape1 << QPointF(x(), y() - radius) - << QPointF(x(), y() + radius); - - QPolygonF shape2; - shape2 << QPointF(x() - radius, y()) - << QPointF(x() + radius, y()); - - const qreal circleSize = 0.85; - VArc arc(*this, radius*circleSize, 0, 360); - arc.SetApproximationScale(10); - QPolygonF shape3(arc.GetPoints()); - if (not shape3.isClosed() && not shape3.isEmpty()) - { - shape3 << ConstFirst(shape3); - } - - return PlaceLabelImg({t.map(shape1), t.map(shape2), t.map(shape3)}); - }; - - auto CircleShape = [t, this]() - { - const qreal radius = qMin(d->wValue/2.0, d->hValue/2.0); - VArc arc(*this, radius, 0, 360); - arc.SetApproximationScale(10); - QPolygonF circle(arc.GetPoints()); - if (not circle.isClosed() && not circle.isEmpty()) - { - circle << ConstFirst(circle); - } - - return PlaceLabelImg({t.map(circle)}); - }; - -QT_WARNING_PUSH -QT_WARNING_DISABLE_GCC("-Wswitch-default") - switch(d->type) - { - case PlaceLabelType::Segment: - return SegmentShape(); - case PlaceLabelType::Rectangle: - return RectangleShape(); - case PlaceLabelType::Cross: - return CrossShape(); - case PlaceLabelType::Tshaped: - return TshapedShape(); - case PlaceLabelType::Doubletree: - return DoubletreeShape(); - case PlaceLabelType::Corner: - return CornerShape(); - case PlaceLabelType::Triangle: - return TriangleShape(); - case PlaceLabelType::Hshaped: - return HshapedShape(); - case PlaceLabelType::Button: - return ButtonShape(); - case PlaceLabelType::Circle: - return CircleShape(); - } -// cppcheck-suppress unknownMacro -QT_WARNING_POP - - return PlaceLabelImg(); -} - -//--------------------------------------------------------------------------------------------------------------------- -QPainterPath VPlaceLabelItem::LabelShapePath() const -{ - return LabelShapePath(LabelShape()); -} - -//--------------------------------------------------------------------------------------------------------------------- -QPainterPath VPlaceLabelItem::LabelShapePath(const PlaceLabelImg &shape) -{ - QPainterPath path; - for (const auto &p : shape) - { - if (not p.isEmpty()) - { - path.moveTo(ConstFirst(p)); - path.addPolygon(p); - } - } - return path; -} diff --git a/src/libs/vgeometry/vplacelabelitem.h b/src/libs/vgeometry/vplacelabelitem.h index 47c1639f6..8e77d383f 100644 --- a/src/libs/vgeometry/vplacelabelitem.h +++ b/src/libs/vgeometry/vplacelabelitem.h @@ -83,12 +83,6 @@ public: QTransform RotationMatrix() const; QRectF Box() const; - - PlaceLabelImg LabelShape() const; - QPainterPath LabelShapePath() const; - - static QPainterPath LabelShapePath(const PlaceLabelImg &shape); - private: QSharedDataPointer d; }; diff --git a/src/libs/vlayout/vabstractpiece.cpp b/src/libs/vlayout/vabstractpiece.cpp index 48a3a1031..ae6ce4439 100644 --- a/src/libs/vlayout/vabstractpiece.cpp +++ b/src/libs/vlayout/vabstractpiece.cpp @@ -30,6 +30,8 @@ #include "vabstractpiece_p.h" #include "../vmisc/vabstractvalapplication.h" #include "../vgeometry/vpointf.h" +#include "../vgeometry/vlayoutplacelabel.h" +#include "../vgeometry/varc.h" #include "../ifc/exception/vexception.h" #include "../vmisc/compatibility.h" #include "../vpatterndb/floatItemData/vgrainlinedata.h" @@ -111,7 +113,9 @@ auto AngleByLength(QVector points, QPointF p1, QPointF p2, QPointF { qDebug()<<"Couldn't find intersection with cut line."; } - points.append(px); + VRawSAPoint sp(px, p.CurvePoint(), p.TurnPoint()); + sp.SetPrimary(true); + points.append(sp); cutLine.setAngle(cutLine.angle()-180); type = Intersects(QLineF(sp2, sp3), cutLine, &px); @@ -120,11 +124,13 @@ auto AngleByLength(QVector points, QPointF p1, QPointF p2, QPointF { qDebug()<<"Couldn't find intersection with cut line."; } - points.append(px); + sp = VRawSAPoint(px, p.CurvePoint(), p.TurnPoint()); + sp.SetPrimary(true); + points.append(sp); } else {// The point just fine - points.append(sp2); + points.append(VRawSAPoint(sp2, p.CurvePoint(), p.TurnPoint())); } } else @@ -139,25 +145,25 @@ auto AngleByLength(QVector points, QPointF p1, QPointF p2, QPointF { QLineF loop(bigLine1.p2(), sp2); loop.setLength(loop.length() + accuracyPointOnLine*2.); - points.append(loop.p2()); - points.append(sp2); - points.append(VRawSAPoint(bigLine1.p2(), true)); + points.append(VRawSAPoint(loop.p2(), p.CurvePoint(), p.TurnPoint())); + points.append(VRawSAPoint(sp2, p.CurvePoint(), p.TurnPoint())); + points.append(VRawSAPoint(bigLine1.p2(), p.CurvePoint(), p.TurnPoint(), true)); loop = QLineF(bigLine2.p2(), sp2); loop.setLength(loop.length() + localWidth); - points.append(VRawSAPoint(loop.p2(), true)); + points.append(VRawSAPoint(loop.p2(), p.CurvePoint(), p.TurnPoint(), true)); } else { QLineF loop(sp2, bigLine1.p1()); loop.setLength(accuracyPointOnLine*2.); - points.append(loop.p2()); - points.append(sp2); + points.append(VRawSAPoint(loop.p2(), p.CurvePoint(), p.TurnPoint())); + points.append(VRawSAPoint(sp2, p.CurvePoint(), p.TurnPoint())); loop = QLineF(bigLine1.p1(), sp2); loop.setLength(loop.length() + localWidth); - points.append(VRawSAPoint(loop.p2(), true)); - points.append(VRawSAPoint(bigLine2.p1(), true)); + points.append(VRawSAPoint(loop.p2(), p.CurvePoint(), p.TurnPoint(), true)); + points.append(VRawSAPoint(bigLine2.p1(), p.CurvePoint(), p.TurnPoint(), true)); } } else @@ -168,7 +174,7 @@ auto AngleByLength(QVector points, QPointF p1, QPointF p2, QPointF { bool success = false; QVector temp = points; - temp.append(bigLine1.p2()); + temp.append(VRawSAPoint(bigLine1.p2(), p.CurvePoint(), p.TurnPoint())); temp = VAbstractPiece::RollbackSeamAllowance(temp, bigLine2, &success); if (success) @@ -183,7 +189,7 @@ auto AngleByLength(QVector points, QPointF p1, QPointF p2, QPointF } else { - points.append(sp2); + points.append(VRawSAPoint(sp2, p.CurvePoint(), p.TurnPoint())); } } else @@ -194,16 +200,17 @@ auto AngleByLength(QVector points, QPointF p1, QPointF p2, QPointF QLineF loop1(sp2, sp1); loop1.setLength(loop1.length()*0.2); - points.append(loop1.p2()); // Need for the main path rule + // Need for the main path rule + points.append(VRawSAPoint(loop1.p2(), p.CurvePoint(), p.TurnPoint())); loop1.setAngle(loop1.angle() + 180); loop1.setLength(localWidth); - points.append(loop1.p2()); - points.append(bigLine2.p1()); + points.append(VRawSAPoint(loop1.p2(), p.CurvePoint(), p.TurnPoint())); + points.append(VRawSAPoint(bigLine2.p1(), p.CurvePoint(), p.TurnPoint())); } else { - points.append(sp2); + points.append(VRawSAPoint(sp2, p.CurvePoint(), p.TurnPoint())); } } } @@ -252,13 +259,13 @@ auto AngleByIntersection(const QVector &points, QPointF p1, QPointF { return AngleByLength(points, p1, p2, p3, bigLine1, sp2, bigLine2, p, width, needRollback); } - pointsIntr.append(px); + pointsIntr.append(VRawSAPoint(px, p.CurvePoint(), p.TurnPoint())); } else {// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points bool success = false; QVector temp = pointsIntr; - temp.append(bigLine1.p2()); + temp.append(VRawSAPoint(bigLine1.p2(), p.CurvePoint(), p.TurnPoint())); temp = VAbstractPiece::RollbackSeamAllowance(temp, edge2, &success); if (success) @@ -283,16 +290,16 @@ auto AngleByIntersection(const QVector &points, QPointF p1, QPointF if (IsOutsidePoint(bigLine2.p2(), bigLine2.p1(), px)) { - pointsIntr.append(px); + pointsIntr.append(VRawSAPoint(px, p.CurvePoint(), p.TurnPoint())); } else { - pointsIntr.append(px); + pointsIntr.append(VRawSAPoint(px, p.CurvePoint(), p.TurnPoint())); QLineF allowance(p2, px); allowance.setLength(allowance.length() + localWidth * 3.); - pointsIntr.append(allowance.p2()); - pointsIntr.append(bigLine2.p1()); + pointsIntr.append(VRawSAPoint(allowance.p2(), p.CurvePoint(), p.TurnPoint())); + pointsIntr.append(VRawSAPoint(bigLine2.p1(), p.CurvePoint(), p.TurnPoint())); } return pointsIntr; @@ -343,13 +350,13 @@ auto AngleByFirstSymmetry(const QVector &points, QPointF p1, QPoint if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px1)) { - pointsIntr.append(px1); + pointsIntr.append(VRawSAPoint(px1, p.CurvePoint(), p.TurnPoint())); } else {// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points bool success = false; QVector temp = pointsIntr; - temp.append(bigLine1.p2()); + temp.append(VRawSAPoint(bigLine1.p2(), p.CurvePoint(), p.TurnPoint())); temp = VAbstractPiece::RollbackSeamAllowance(temp, sEdge, &success); if (success) @@ -365,15 +372,15 @@ auto AngleByFirstSymmetry(const QVector &points, QPointF p1, QPoint if (IsOutsidePoint(bigLine2.p2(), bigLine2.p1(), px2)) { - pointsIntr.append(px2); + pointsIntr.append(VRawSAPoint(px2, p.CurvePoint(), p.TurnPoint())); } else { QLineF allowance(px2, p2); allowance.setAngle(allowance.angle() + 90); - pointsIntr.append(px2); - pointsIntr.append(allowance.p2()); - pointsIntr.append(bigLine2.p1()); + pointsIntr.append(VRawSAPoint(px2, p.CurvePoint(), p.TurnPoint())); + pointsIntr.append(VRawSAPoint(allowance.p2(), p.CurvePoint(), p.TurnPoint())); + pointsIntr.append(VRawSAPoint(bigLine2.p1(), p.CurvePoint(), p.TurnPoint())); } return pointsIntr; @@ -425,13 +432,13 @@ auto AngleBySecondSymmetry(const QVector &points, QPointF p1, QPoin if (IsOutsidePoint(bigLine1.p1(), bigLine1.p2(), px1)) { - pointsIntr.append(px1); + pointsIntr.append(VRawSAPoint(px1, p.CurvePoint(), p.TurnPoint())); } else {// Because artificial loop can lead to wrong clipping we must rollback current seam allowance points bool success = false; QVector temp = pointsIntr; - temp.append(bigLine1.p2()); + temp.append(VRawSAPoint(bigLine1.p2(), p.CurvePoint(), p.TurnPoint())); temp = VAbstractPiece::RollbackSeamAllowance(temp, sEdge, &success); if (success) @@ -447,16 +454,16 @@ auto AngleBySecondSymmetry(const QVector &points, QPointF p1, QPoin if (IsOutsidePoint(bigLine2.p2(), bigLine2.p1(), px2)) { - pointsIntr.append(px2); + pointsIntr.append(VRawSAPoint(px2, p.CurvePoint(), p.TurnPoint())); } else { QLineF allowance(p2, px2); allowance.setLength(p.GetSAAfter(width)*0.98); - pointsIntr.append(allowance.p2()); + pointsIntr.append(VRawSAPoint(allowance.p2(), p.CurvePoint(), p.TurnPoint())); allowance.setLength(allowance.length() + localWidth * 3.); - pointsIntr.append(allowance.p2()); - pointsIntr.append(bigLine2.p1()); + pointsIntr.append(VRawSAPoint(allowance.p2(), p.CurvePoint(), p.TurnPoint())); + pointsIntr.append(VRawSAPoint(bigLine2.p1(), p.CurvePoint(), p.TurnPoint())); } return pointsIntr; @@ -500,8 +507,8 @@ auto AngleByFirstRightAngle(const QVector &points, QPointF p1, QPoi { return AngleByLength(points, p1, p2, p3, bigLine1, sp2, bigLine2, p, width, needRollback); } - pointsRA.append(seam.p2()); - pointsRA.append(seam.p1()); + pointsRA.append(VRawSAPoint(seam.p2(), p.CurvePoint(), p.TurnPoint())); + pointsRA.append(VRawSAPoint(seam.p1(), p.CurvePoint(), p.TurnPoint())); } else { @@ -514,7 +521,7 @@ auto AngleByFirstRightAngle(const QVector &points, QPointF p1, QPoi return AngleByLength(points, p1, p2, p3, bigLine1, sp2, bigLine2, p, width, needRollback); } - pointsRA.append(seam.p2()); + pointsRA.append(VRawSAPoint(seam.p2(), p.CurvePoint(), p.TurnPoint())); QLineF loopLine(px, sp2); const qreal length = loopLine.length()*0.98; @@ -523,8 +530,8 @@ auto AngleByFirstRightAngle(const QVector &points, QPointF p1, QPoi QLineF tmp(seam.p2(), seam.p1()); tmp.setLength(tmp.length()+length); - pointsRA.append(tmp.p2()); - pointsRA.append(loopLine.p2()); + pointsRA.append(VRawSAPoint(tmp.p2(), p.CurvePoint(), p.TurnPoint())); + pointsRA.append(VRawSAPoint(loopLine.p2(), p.CurvePoint(), p.TurnPoint())); } return pointsRA; @@ -568,12 +575,12 @@ auto AngleBySecondRightAngle(QVector points, QPointF p1, QPointF p2 { return AngleByLength(points, p1, p2, p3, bigLine1, sp2, bigLine2, p, width, needRollback); } - points.append(px); + points.append(VRawSAPoint(px, p.CurvePoint(), p.TurnPoint())); QLineF seam(px, p3); seam.setAngle(seam.angle()+90); seam.setLength(p.GetSAAfter(width)); - points.append(seam.p2()); + points.append(VRawSAPoint(seam.p2(), p.CurvePoint(), p.TurnPoint())); if (needRollback != nullptr) { @@ -595,7 +602,7 @@ auto AngleBySecondRightAngle(QVector points, QPointF p1, QPointF p2 bool success = false; const int countBefore = points.size(); QVector temp = points; - temp.append(bigLine1.p2()); + temp.append(VRawSAPoint(bigLine1.p2(), p.CurvePoint(), p.TurnPoint())); temp = VAbstractPiece::RollbackSeamAllowance(temp, edge, &success); if (success) @@ -609,7 +616,7 @@ auto AngleBySecondRightAngle(QVector points, QPointF p1, QPointF p2 QLineF seam(px, p3); seam.setAngle(seam.angle()+90); seam.setLength(p.GetSAAfter(width)); - points.append(seam.p2()); + points.append(VRawSAPoint(seam.p2(), p.CurvePoint(), p.TurnPoint())); } else { @@ -619,11 +626,11 @@ auto AngleBySecondRightAngle(QVector points, QPointF p1, QPointF p2 } else if (IsSameDirection(bigLine1.p1(), bigLine1.p2(), px)) { - points.append(px); + points.append(VRawSAPoint(px, p.CurvePoint(), p.TurnPoint())); QLineF seam(px, p3); seam.setAngle(seam.angle()+90); seam.setLength(p.GetSAAfter(width)); - points.append(seam.p2()); + points.append(VRawSAPoint(seam.p2(), p.CurvePoint(), p.TurnPoint())); } } } @@ -756,7 +763,7 @@ void RollbackByLength(QVector &ekvPoints, const QVector & const QLineF bigLine1 = VAbstractPiece::ParallelLine(points.at(points.size()-2), points.at(0), width); QVector temp = ekvPoints; - temp.insert(ekvPoints.size()-1, bigLine1.p2()); + temp.insert(ekvPoints.size()-1, VRawSAPoint(bigLine1.p2(), points.at(0).CurvePoint(), points.at(0).TurnPoint())); bool success = Rollback(temp, VAbstractPiece::ParallelLine(points.at(0), points.at(1), width)); if (success) @@ -773,7 +780,7 @@ void RollbackBySecondEdgeSymmetry(QVector &ekvPoints, const QVector QLineF sEdge(VPointF::FlipPF(axis, bigLine1.p1()), VPointF::FlipPF(axis, bigLine1.p2())); QVector temp = ekvPoints; - temp.insert(ekvPoints.size()-1, bigLine1.p2()); + temp.insert(ekvPoints.size()-1, VRawSAPoint(bigLine1.p2(), points.at(0).CurvePoint(), points.at(0).TurnPoint())); bool success = Rollback(temp, sEdge); if (success) @@ -791,7 +798,7 @@ void RollbackByFirstEdgeSymmetry(QVector &ekvPoints, const QVector< const QLineF bigLine1 = VAbstractPiece::ParallelLine(points.at(points.size()-2), points.at(0), width); QVector temp = ekvPoints; - temp.insert(ekvPoints.size()-1, bigLine1.p2()); + temp.insert(ekvPoints.size()-1, VRawSAPoint(bigLine1.p2(), points.at(0).CurvePoint(), points.at(0).TurnPoint())); bool success = Rollback(temp, sEdge); if (success) @@ -805,7 +812,7 @@ void RollbackByPointsIntersection(QVector &ekvPoints, const QVector { const QLineF bigLine1 = VAbstractPiece::ParallelLine(points.at(points.size()-2), points.at(0), width); QVector temp = ekvPoints; - temp.insert(ekvPoints.size()-1, bigLine1.p2()); + temp.insert(ekvPoints.size()-1, VRawSAPoint(bigLine1.p2(), points.at(0).CurvePoint(), points.at(0).TurnPoint())); bool success = Rollback(temp, QLineF(ConstLast(points), points.at(1))); if (success) @@ -848,7 +855,7 @@ void RollbackBySecondEdgeRightAngle(QVector &ekvPoints, const QVect ekvPoints.removeFirst(); ekvPoints.removeLast(); - ekvPoints.append(crosPoint); + ekvPoints.append(VRawSAPoint(crosPoint, ekvPoints.at(0).CurvePoint(), ekvPoints.at(0).TurnPoint())); } } } @@ -856,7 +863,7 @@ void RollbackBySecondEdgeRightAngle(QVector &ekvPoints, const QVect { bool success = false; QVector temp = ekvPoints; - temp.append(bigLine1.p2()); + temp.append(VRawSAPoint(bigLine1.p2(), ekvPoints.at(0).CurvePoint(), ekvPoints.at(0).TurnPoint())); temp = VAbstractPiece::RollbackSeamAllowance(temp, edge, &success); if (success) @@ -868,7 +875,7 @@ void RollbackBySecondEdgeRightAngle(QVector &ekvPoints, const QVect QLineF seam(px, points.at(1)); seam.setAngle(seam.angle()+90); seam.setLength(points.at(0).GetSAAfter(width)); - ekvPoints.append(seam.p2()); + ekvPoints.append(VRawSAPoint(seam.p2(), ekvPoints.at(0).CurvePoint(), ekvPoints.at(0).TurnPoint())); if (not ekvPoints.isEmpty()) { @@ -885,22 +892,6 @@ void RollbackBySecondEdgeRightAngle(QVector &ekvPoints, const QVect } } } - -//--------------------------------------------------------------------------------------------------------------------- -auto CleanLoopArtifacts(const QVector &points) -> QVector -{ - QVector cleaned; - cleaned.reserve(points.size()); - for (const auto &point : points) - { - if (not point.LoopPoint()) - { - cleaned.append(point); - } - } - - return cleaned; -} } // namespace // Friend functions @@ -1052,7 +1043,7 @@ void VAbstractPiece::SetSAWidth(qreal value) } //--------------------------------------------------------------------------------------------------------------------- -auto VAbstractPiece::Equidistant(QVector points, qreal width, const QString &name) -> QVector +auto VAbstractPiece::Equidistant(QVector points, qreal width, const QString &name) -> QVector { if (width < 0) { @@ -1135,20 +1126,20 @@ auto VAbstractPiece::Equidistant(QVector points, qreal width, const QS QT_WARNING_POP } + QVector cleaned; // Uncomment for debug -// QVector cleaned; -// cleaned.reserve(ekvPoints.size()); -// for (auto &point : ekvPoints) -// { -// cleaned.append(point); -// } +// CastTo(ekvPoints, cleaned); const bool removeFirstAndLast = false; ekvPoints = RemoveDublicates(ekvPoints, removeFirstAndLast); - QVector cleaned = CheckLoops(ekvPoints);//Result path can contain loops + ekvPoints = CheckLoops(ekvPoints); cleaned = CorrectEquidistantPoints(cleaned, removeFirstAndLast); cleaned = CorrectPathDistortion(cleaned); -// DumpVector(cleaned, QStringLiteral("output.json.XXXXXX")); // Uncomment for dumping test data + CastTo(ekvPoints, cleaned);//Result path can contain loops + +// QVector dump; +// CastTo(cleaned, dump); +// DumpVector(dump, QStringLiteral("output.json.XXXXXX")); // Uncomment for dumping test data return cleaned; } @@ -1188,131 +1179,6 @@ auto VAbstractPiece::SumTrapezoids(const QVector &points) -> qreal return res; } -//--------------------------------------------------------------------------------------------------------------------- -auto VAbstractPiece::CheckLoops(const QVector &points) -> QVector -{ - QVector rawPath; - rawPath.reserve(points.size()); - for (const auto &point : points) - { - rawPath.append(point); - } - - return CheckLoops(rawPath); -} - -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief CheckLoops seek and delete loops in equidistant. - * @param points vector of points of equidistant. - * @return vector of points of equidistant. - */ -auto VAbstractPiece::CheckLoops(const QVector &points) -> QVector -{ -// DumpVector(points, QStringLiteral("input.json.XXXXXX")); // Uncomment for dumping test data - - /*If we got less than 4 points no need seek loops.*/ - if (points.size() < 4) - { - return CleanLoopArtifacts(points); - } - - bool loopFound = false; - - auto CheckLoop = [&loopFound](const QVector &points) - { - loopFound = false; - - const bool pathClosed = (ConstFirst(points) == ConstLast(points)); - - QVector ekvPoints; - ekvPoints.reserve(points.size()); - - qint32 i; - for (i = 0; i < points.size(); ++i) - { - /*Last three points no need to check.*/ - /*Triangle can not contain a loop*/ - if (loopFound || i > points.size()-4) - { - ekvPoints.append(points.at(i)); - continue; - } - - enum LoopIntersectType { NoIntersection, BoundedIntersection, ParallelIntersection }; - - QPointF crosPoint; - LoopIntersectType status = NoIntersection; - const QLineF line1(points.at(i), points.at(i+1)); - - const int limit = pathClosed && i == 0 ? 2 : 1; - qint32 j; - for (j = i+2; j < points.size()-limit; ++j) - { - QLineF line2(points.at(j), points.at(j+1)); - - const QLineF::IntersectType intersect = Intersects(line1, line2, &crosPoint); - if (intersect == QLineF::NoIntersection) - { // According to the documentation QLineF::NoIntersection indicates that the lines do not intersect; - // i.e. they are parallel. But parallel also mean they can be on the same line. - // Method IsLineSegmentOnLineSegment will check it. - if (VGObject::IsLineSegmentOnLineSegment(line1, line2)) - {// Now we really sure that segments are on the same line and have real intersections. - status = ParallelIntersection; - break; - } - } - else if (intersect == QLineF::BoundedIntersection) - { - status = BoundedIntersection; - break; - } - } - - switch (status) - { - case ParallelIntersection: - /*We have found a loop.*/ - ekvPoints.append(points.at(i)); - ekvPoints.append(points.at(j+1)); - i = j+1; // Skip a loop - loopFound = true; - break; - case BoundedIntersection: - ekvPoints.append(points.at(i)); - ekvPoints.append(crosPoint); - i = j; - loopFound = true; - break; - case NoIntersection: - /*We have not found loop.*/ - ekvPoints.append(points.at(i)); - break; - default: - break; - } - } - return ekvPoints; - }; - - QVector ekvPoints = points; - qint32 i; - const int maxLoops = 10000; // limit number of loops to be removed - - for (i = 0; i < maxLoops; ++i) - { - ekvPoints = CheckLoop(ekvPoints); - if (not loopFound) - { - break; - } - } - - const QVector cleaned = CleanLoopArtifacts(ekvPoints); -// DumpVector(cleaned, QStringLiteral("output.json.XXXXXX")); // Uncomment for dumping test data - return cleaned; -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief EkvPoint return seam aloowance points in place of intersection two edges. Last points of two edges should be @@ -1342,7 +1208,7 @@ auto VAbstractPiece::EkvPoint(QVector points, const VSAPoint &p1Lin if (VFuzzyComparePoints(bigLine1.p2(), bigLine2.p1())) { - points.append(bigLine1.p2()); + points.append(VRawSAPoint(bigLine1.p2(), p2Line1.CurvePoint(), p2Line1.TurnPoint())); return points; } @@ -1357,16 +1223,16 @@ auto VAbstractPiece::EkvPoint(QVector points, const VSAPoint &p1Lin ray.setLength(width*2); QPointF crosPoint; - QLineF::IntersectType type = Intersects(ray, bigLine1, &crosPoint ); + QLineF::IntersectType type = Intersects(ray, bigLine1, &crosPoint); if (type != QLineF::NoIntersection) { - points.append(crosPoint); + points.append(VRawSAPoint(crosPoint, p2Line1.CurvePoint(), p2Line1.TurnPoint())); } type = Intersects(ray, bigLine2, &crosPoint ); if (type != QLineF::NoIntersection) { - points.append(crosPoint); + points.append(VRawSAPoint(crosPoint, p2Line1.CurvePoint(), p2Line1.TurnPoint())); } return points; } @@ -1378,7 +1244,7 @@ auto VAbstractPiece::EkvPoint(QVector points, const VSAPoint &p1Lin {// There are at least three big cases case (QLineF::BoundedIntersection): // The easiest, real intersection - points.append(crosPoint); + points.append(VRawSAPoint(crosPoint, p2Line1.CurvePoint(), p2Line1.TurnPoint())); return points; case (QLineF::UnboundedIntersection): { // Most common case @@ -1400,8 +1266,8 @@ auto VAbstractPiece::EkvPoint(QVector points, const VSAPoint &p1Lin if (VGObject::IsPointOnLineSegment(p2Line1, p1Line1, p1Line2, ToPixel(0.5, Unit::Mm)) && IsOnLine(p2Line1, bigLine1.p2(), bigLine2.p1(), ToPixel(0.5, Unit::Mm))) { - points.append(bigLine1.p2()); - points.append(bigLine2.p1()); + points.append(VRawSAPoint(bigLine1.p2(), p2Line1.CurvePoint(), p2Line1.TurnPoint())); + points.append(VRawSAPoint(bigLine2.p1(), p2Line1.CurvePoint(), p2Line1.TurnPoint())); return points; } @@ -1473,7 +1339,7 @@ QT_WARNING_POP const QLineF::IntersectType type = Intersects(bigEdge, line, &px); if (type != QLineF::BoundedIntersection && line.length() < QLineF(p2Line1, px).length()) { - points.append(crosPoint); + points.append(VRawSAPoint(crosPoint, p2Line1.CurvePoint(), p2Line1.TurnPoint())); return points; } } @@ -1484,12 +1350,12 @@ QT_WARNING_POP QLineF loop(crosPoint, bigLine1.p1()); loop.setAngle(loop.angle() + 180); loop.setLength(accuracyPointOnLine*2.); - points.append(loop.p2()); - points.append(crosPoint); + points.append(VRawSAPoint(loop.p2(), p2Line1.CurvePoint(), p2Line1.TurnPoint())); + points.append(VRawSAPoint(crosPoint, p2Line1.CurvePoint(), p2Line1.TurnPoint())); loop = QLineF(crosPoint, bigLine1.p1()); loop.setLength(loop.length() + localWidth*2.); - points.append(VRawSAPoint(loop.p2(), true)); + points.append(VRawSAPoint(loop.p2(), p2Line1.CurvePoint(), p2Line1.TurnPoint(), true)); } return points; @@ -1504,20 +1370,20 @@ QT_WARNING_POP {// The cross point is still outside of a piece if (line.length() >= localWidth) { - points.append(crosPoint); + points.append(VRawSAPoint(crosPoint, p2Line1.CurvePoint(), p2Line1.TurnPoint())); return points; } // but not enough far, fix it line.setLength(localWidth); - points.append(line.p2()); + points.append(VRawSAPoint(line.p2(), p2Line1.CurvePoint(), p2Line1.TurnPoint())); return points; } // Wrong cross point, probably inside of a piece. Manually creating correct seam allowance const QLineF bigEdge = SimpleParallelLine(bigLine1.p2(), bigLine2.p1(), localWidth ); - points.append(bigEdge.p1()); - points.append(bigEdge.p2()); + points.append(VRawSAPoint(bigEdge.p1(), p2Line1.CurvePoint(), p2Line1.TurnPoint())); + points.append(VRawSAPoint(bigEdge.p2(), p2Line1.CurvePoint(), p2Line1.TurnPoint())); return points; } } @@ -1525,8 +1391,9 @@ QT_WARNING_POP } case (QLineF::NoIntersection): /*If we have correct lines this means lines lie on a line or parallel.*/ - points.append(bigLine1.p2()); - points.append(bigLine2.p1()); // Second point for parallel line + points.append(VRawSAPoint(bigLine1.p2(), p2Line1.CurvePoint(), p2Line1.TurnPoint())); + // Second point for parallel line + points.append(VRawSAPoint(bigLine2.p1(), p2Line1.CurvePoint(), p2Line1.TurnPoint())); return points; default: break; @@ -1657,10 +1524,8 @@ auto VAbstractPiece::GetUniqueID() const -> QString //--------------------------------------------------------------------------------------------------------------------- auto VSAPoint::toJson() const -> QJsonObject { - QJsonObject pointObject; + QJsonObject pointObject = VLayoutPoint::toJson(); pointObject[QLatin1String("type")] = "VSAPoint"; - pointObject[QLatin1String("x")] = x(); - pointObject[QLatin1String("y")] = y(); if (not VFuzzyComparePossibleNulls(m_before, -1)) { @@ -1698,7 +1563,7 @@ auto VAbstractPiece::RollbackSeamAllowance(QVector points, const QL && VGObject::IsPointOnLineSegment(crosPoint, segment.p1(), segment.p2()) && IsSameDirection(cuttingEdge.p2(), cuttingEdge.p1(), crosPoint)) { - clipped.append(crosPoint); + clipped.append(VRawSAPoint(crosPoint, points.at(i).CurvePoint(), points.at(i).TurnPoint())); for (int j=i-1; j>=0; --j) { clipped.append(points.at(j)); @@ -1717,7 +1582,8 @@ auto VAbstractPiece::RollbackSeamAllowance(QVector points, const QL if (type != QLineF::NoIntersection && IsOutsidePoint(secondLast.p1(), secondLast.p2(), crosPoint)) { - points.append(crosPoint); + points.append(VRawSAPoint(crosPoint, points.at(points.size()-1).CurvePoint(), + points.at(points.size()-1).TurnPoint())); *success = true; } } @@ -1919,20 +1785,275 @@ auto VAbstractPiece::GrainlinePoints(const VGrainlineData &geom, const VContaine } //--------------------------------------------------------------------------------------------------------------------- -auto VAbstractPiece::PainterPath(const QVector &points) -> QPainterPath +auto VAbstractPiece::PlaceLabelShape(const VLayoutPlaceLabel &label) -> PlaceLabelImg { - QPainterPath path; - path.setFillRule(Qt::WindingFill); - - if (not points.isEmpty()) + auto LayoutPoint = [label](QPointF p, bool turnPoint = false, bool curvePoint = false) { - path.moveTo(points.at(0)); - for (qint32 i = 1; i < points.count(); ++i) + VLayoutPoint point(label.RotationMatrix().map(p)); + point.SetTurnPoint(turnPoint); + point.SetCurvePoint(curvePoint); + return point; + }; + + const QPointF pos = label.Center(); + const QRectF box = label.Box(); + + auto SegmentShape = [pos, box, LayoutPoint]() + { + QVector shape { - path.lineTo(points.at(i)); + LayoutPoint(QPointF(pos.x(), pos.y() - box.height()/2.0), true), + LayoutPoint(QPointF(pos.x(), pos.y() + box.height()/2.0), true) + }; + + return PlaceLabelImg{shape}; + }; + + auto RectangleShape = [pos, box, LayoutPoint]() + { + QRectF rect(QPointF(pos.x() - box.width()/2.0, pos.y() - box.height()/2.0), + QPointF(pos.x() + box.width()/2.0, pos.y() + box.height()/2.0)); + + QVector shape + { + LayoutPoint(rect.topLeft(), true), + LayoutPoint(rect.topRight(), true), + LayoutPoint(rect.bottomRight(), true), + LayoutPoint(rect.bottomLeft(), true), + LayoutPoint(rect.topLeft(), true) + }; + + return PlaceLabelImg{shape}; + }; + + auto CrossShape = [pos, box, LayoutPoint]() + { + QVector shape1 + { + LayoutPoint(QPointF(pos.x(), pos.y() - box.height()/2.0), true), + LayoutPoint(QPointF(pos.x(), pos.y() + box.height()/2.0), true) + }; + + QVector shape2 + { + LayoutPoint(QPointF(pos.x() - box.width()/2.0, pos.y()), true), + LayoutPoint(QPointF(pos.x() + box.width()/2.0, pos.y()), true) + }; + + return PlaceLabelImg{shape1, shape2}; + }; + + auto TshapedShape = [pos, box, LayoutPoint]() + { + QPointF center2(pos.x(), pos.y() + box.height()/2.0); + + QVector shape1 + { + LayoutPoint(QPointF(pos.x(), pos.y()), true), + LayoutPoint(center2, true) + }; + + QVector shape2 + { + LayoutPoint(QPointF(center2.x() - box.width()/2.0, center2.y()), true), + LayoutPoint(QPointF(center2.x() + box.width()/2.0, center2.y()), true) + }; + + return PlaceLabelImg{shape1, shape2}; + }; + + auto DoubletreeShape = [pos, box, LayoutPoint]() + { + QRectF rect(QPointF(pos.x() - box.width()/2.0, pos.y() - box.height()/2.0), + QPointF(pos.x() + box.width()/2.0, pos.y() + box.height()/2.0)); + + QVector shape1 + { + LayoutPoint(rect.topLeft(), true), + LayoutPoint(rect.bottomRight(), true) + }; + + QVector shape2 + { + LayoutPoint(rect.topRight(), true), + LayoutPoint(rect.bottomLeft(), true) + }; + + return PlaceLabelImg{shape1, shape2}; + }; + + auto CornerShape = [pos, box, LayoutPoint]() + { + QVector shape1 + { + LayoutPoint(QPointF(pos.x(), pos.y()), true), + LayoutPoint(QPointF(pos.x(), pos.y() + box.height()/2.0), true) + }; + + QVector shape2 + { + LayoutPoint(QPointF(pos.x() - box.width()/2.0, pos.y()), true), + LayoutPoint(QPointF(pos.x(), pos.y()), true) + }; + + return PlaceLabelImg{shape1, shape2}; + }; + + auto TriangleShape = [pos, box, LayoutPoint]() + { + QRectF rect(QPointF(pos.x() - box.width()/2.0, pos.y() - box.height()/2.0), + QPointF(pos.x() + box.width()/2.0, pos.y() + box.height()/2.0)); + + QVector shape + { + LayoutPoint(rect.topLeft(), true), + LayoutPoint(rect.topRight(), true), + LayoutPoint(rect.bottomRight(), true), + LayoutPoint(rect.topLeft(), true) + }; + + return PlaceLabelImg{shape}; + }; + + auto HshapedShape = [pos, box, LayoutPoint]() + { + const QPointF center1 (pos.x(), pos.y() - box.height()/2.0); + const QPointF center2 (pos.x(), pos.y() + box.height()/2.0); + + QVector shape1 + { + LayoutPoint(center1, true), + LayoutPoint(center2, true) + }; + + QVector shape2 + { + LayoutPoint(QPointF(center1.x() - box.width()/2.0, center1.y()), true), + LayoutPoint(QPointF(center1.x() + box.width()/2.0, center1.y()), true) + }; + + QVector shape3 + { + LayoutPoint(QPointF(center2.x() - box.width()/2.0, center2.y()), true), + LayoutPoint(QPointF(center2.x() + box.width()/2.0, center2.y()), true) + }; + + return PlaceLabelImg{shape1, shape2, shape3}; + }; + + auto ButtonShape = [pos, box, LayoutPoint]() + { + const qreal radius = qMin(box.width()/2.0, box.height()/2.0); + QVector shape1 + { + LayoutPoint(QPointF(pos.x(), pos.y() - radius), true), + LayoutPoint(QPointF(pos.x(), pos.y() + radius), true) + }; + + QVector shape2 + { + LayoutPoint(QPointF(pos.x() - radius, pos.y()), true), + LayoutPoint(QPointF(pos.x() + radius, pos.y()), true) + }; + + const qreal circleSize = 0.85; + VArc arc(VPointF(pos), radius*circleSize, 0, 360); + arc.SetApproximationScale(10); + + QVector points = arc.GetPoints(); + if (not points.isEmpty() && ConstFirst(points) != ConstLast(points)) + { + points.append(ConstFirst(points)); } - path.lineTo(points.at(0)); + + QVector shape3; + for (int i=0; i < points.size(); ++i) + { + bool turnPoint = false; + if (i == 0 || i == points.size() -1) + { + turnPoint = true; + } + shape3.append(LayoutPoint(points.at(i), turnPoint, true)); + } + + return PlaceLabelImg{shape1, shape2, shape3}; + }; + + auto CircleShape = [pos, box, LayoutPoint]() + { + const qreal radius = qMin(box.width()/2.0, box.height()/2.0); + VArc arc(VPointF(pos), radius, 0, 360); + arc.SetApproximationScale(10); + + QVector points = arc.GetPoints(); + if (not points.isEmpty() && ConstFirst(points) != ConstLast(points)) + { + points.append(ConstFirst(points)); + } + + QVector circle; + for (int i=0; i < points.size(); ++i) + { + bool turnPoint = false; + if (i == 0 || i == points.size() -1) + { + turnPoint = true; + } + circle.append(LayoutPoint(points.at(i), turnPoint, true)); + } + + return PlaceLabelImg{circle}; + }; + + switch(label.Type()) + { + case PlaceLabelType::Segment: + return SegmentShape(); + case PlaceLabelType::Rectangle: + return RectangleShape(); + case PlaceLabelType::Cross: + return CrossShape(); + case PlaceLabelType::Tshaped: + return TshapedShape(); + case PlaceLabelType::Doubletree: + return DoubletreeShape(); + case PlaceLabelType::Corner: + return CornerShape(); + case PlaceLabelType::Triangle: + return TriangleShape(); + case PlaceLabelType::Hshaped: + return HshapedShape(); + case PlaceLabelType::Button: + return ButtonShape(); + case PlaceLabelType::Circle: + return CircleShape(); + default: + return {}; } + return {}; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VAbstractPiece::LabelShapePath(const VLayoutPlaceLabel &label) -> QPainterPath +{ + return LabelShapePath(PlaceLabelShape(label)); +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VAbstractPiece::LabelShapePath(const PlaceLabelImg &shape) -> QPainterPath +{ + QPainterPath path; + for (const auto &p : shape) + { + if (not p.isEmpty()) + { + path.moveTo(ConstFirst(p)); + QVector polygon; + CastTo(p, polygon); + path.addPolygon(polygon); + } + } return path; } diff --git a/src/libs/vlayout/vabstractpiece.h b/src/libs/vlayout/vabstractpiece.h index b830d147c..6b6dd8761 100644 --- a/src/libs/vlayout/vabstractpiece.h +++ b/src/libs/vlayout/vabstractpiece.h @@ -38,6 +38,7 @@ #include "../vmisc/compatibility.h" #include "../vgeometry/vgobject.h" #include "vsapoint.h" +#include "vrawsapoint.h" #include "testpath.h" class VAbstractPieceData; @@ -45,6 +46,9 @@ class QPainterPath; class VGrainlineData; class VContainer; class VRawSAPoint; +class VLayoutPlaceLabel; + +using PlaceLabelImg = QVector >; class VAbstractPiece { @@ -100,10 +104,10 @@ public: */ virtual auto GetUniqueID() const -> QString; - static auto Equidistant(QVector points, qreal width, const QString &name) -> QVector; + static auto Equidistant(QVector points, qreal width, const QString &name) -> QVector; static auto SumTrapezoids(const QVector &points) -> qreal; - static auto CheckLoops(const QVector &points) -> QVector; - static auto CheckLoops(const QVector &points) -> QVector; + template + static auto CheckLoops(QVector points) -> QVector; static auto EkvPoint(QVector points, const VSAPoint &p1Line1, const VSAPoint &p2Line1, const VSAPoint &p1Line2, const VSAPoint &p2Line2, qreal width, bool *needRollback = nullptr) -> QVector; @@ -122,28 +126,81 @@ public: static auto GrainlinePoints(const VGrainlineData &geom, const VContainer *pattern, const QRectF &boundingRect, qreal &dAng) -> QVector; - static auto PainterPath(const QVector &points) -> QPainterPath; + template + static auto PainterPath(const QVector &points) -> QPainterPath; friend auto operator<< (QDataStream& dataStream, const VAbstractPiece& piece) -> QDataStream&; friend auto operator>> (QDataStream& dataStream, VAbstractPiece& piece) -> QDataStream&; + static auto PlaceLabelShape(const VLayoutPlaceLabel &label) -> PlaceLabelImg; + static auto LabelShapePath(const VLayoutPlaceLabel &label) -> QPainterPath; + static auto LabelShapePath(const PlaceLabelImg &shape) -> QPainterPath; + protected: template static auto RemoveDublicates(const QVector &points, bool removeFirstAndLast = true) -> QVector; static auto IsEkvPointOnLine(const QPointF &iPoint, const QPointF &prevPoint, const QPointF &nextPoint) -> bool; static auto IsEkvPointOnLine(const VSAPoint &iPoint, const VSAPoint &prevPoint, const VSAPoint &nextPoint) -> bool; + template + static auto CheckPointOnLine(QVector &points, const T &iPoint, const T &prevPoint, const T &nextPoint) -> bool; static auto IsItemContained(const QRectF &parentBoundingRect, const QVector &shape, qreal &dX, qreal &dY) -> bool; static auto CorrectPosition(const QRectF &parentBoundingRect, QVector points) -> QVector; static auto FindGrainlineGeometry(const VGrainlineData& geom, const VContainer *pattern, qreal &length, qreal &rotationAngle, QPointF &pos) -> bool; + template + static auto ComparePoints(QVector &points, const T &p1, const T &p2, qreal accuracy) -> bool; + template + static auto CompareFirstAndLastPoints(QVector &points, qreal accuracy) -> void; + template + static auto CheckLoop(const QVector &points, bool &loopFound) -> QVector; + template + static auto IntersectionPoint(QPointF crosPoint, const T &l1p1, const T &l1p2, const T &l2p1, const T &l2p2) -> T; private: QSharedDataPointer d; }; Q_DECLARE_TYPEINFO(VAbstractPiece, Q_MOVABLE_TYPE); // NOLINT +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto VAbstractPiece::CheckPointOnLine(QVector &points, const T &iPoint, const T &prevPoint, + const T &nextPoint) -> bool +{ + if (not IsEkvPointOnLine(iPoint, prevPoint, nextPoint)) + { + points.append(iPoint); + return false; + } + + if (not points.isEmpty() && iPoint.TurnPoint()) + { + points.last().SetTurnPoint(true); + } + + if (not points.isEmpty() && iPoint.CurvePoint()) + { + points.last().SetCurvePoint(true); + } + + return true; +} + +//--------------------------------------------------------------------------------------------------------------------- +template <> +inline auto VAbstractPiece::CheckPointOnLine(QVector &points, const QPointF &iPoint, + const QPointF &prevPoint, const QPointF &nextPoint) -> bool +{ + if (not IsEkvPointOnLine(iPoint, prevPoint, nextPoint)) + { + points.append(iPoint); + return false; + } + + return true; +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief CorrectEquidistantPoints clear equivalent points and remove point on line from equdistant. @@ -151,7 +208,7 @@ Q_DECLARE_TYPEINFO(VAbstractPiece, Q_MOVABLE_TYPE); // NOLINT * @return corrected list. */ template -auto VAbstractPiece::CorrectEquidistantPoints(const QVector &points, bool removeFirstAndLast) -> QVector +inline auto VAbstractPiece::CorrectEquidistantPoints(const QVector &points, bool removeFirstAndLast) -> QVector { // DumpVector(points, QStringLiteral("input.json.XXXXXX")); // Uncomment for dumping test data if (points.size()<4)//Better don't check if only three points. We can destroy equidistant. @@ -174,7 +231,7 @@ auto VAbstractPiece::CorrectEquidistantPoints(const QVector &points, bool rem QVector buf2; //Remove point on line for (qint32 i = 0; i < buf1.size(); ++i) - {// In this case we alwayse will have bounded intersection, so all is need is to check if point i is on line. + {// In this case we alwayse will have bounded intersection, so all is need is to check if point is on line. // Unfortunatelly QLineF::intersect can't be used in this case because of the floating-point accuraccy problem. if (prev == -1) { @@ -213,9 +270,8 @@ auto VAbstractPiece::CorrectEquidistantPoints(const QVector &points, bool rem const T &prevPoint = buf1.at(prev); const T &nextPoint = buf1.at(next); - if (not IsEkvPointOnLine(iPoint, prevPoint, nextPoint)) + if (not CheckPointOnLine(buf2, iPoint, prevPoint, nextPoint)) { - buf2.append(iPoint); prev = -1; } } @@ -233,7 +289,7 @@ auto VAbstractPiece::CorrectEquidistantPoints(const QVector &points, bool rem //--------------------------------------------------------------------------------------------------------------------- template -auto VAbstractPiece::RemoveDublicates(const QVector &points, bool removeFirstAndLast) -> QVector +inline auto VAbstractPiece::RemoveDublicates(const QVector &points, bool removeFirstAndLast) -> QVector { if (points.size() < 4) { @@ -252,9 +308,8 @@ auto VAbstractPiece::RemoveDublicates(const QVector &points, bool removeFirst { for (int j = i+1; j < points.size(); ++j) { - if (not VFuzzyComparePoints(points.at(i), points.at(j), accuracy)) + if (not ComparePoints(p, points.at(i), points.at(j), accuracy)) { - p.append(points.at(j)); i = j-1; break; } @@ -267,10 +322,7 @@ auto VAbstractPiece::RemoveDublicates(const QVector &points, bool removeFirst { // Path can't be closed // See issue #686 - if (VFuzzyComparePoints(ConstFirst(p), ConstLast(p), accuracy)) - { - p.removeLast(); - } + CompareFirstAndLastPoints(p, accuracy); } } @@ -279,7 +331,163 @@ auto VAbstractPiece::RemoveDublicates(const QVector &points, bool removeFirst //--------------------------------------------------------------------------------------------------------------------- template -auto VAbstractPiece::IsInsidePolygon(const QVector &path, const QVector &polygon, qreal accuracy) -> bool +inline auto VAbstractPiece::ComparePoints(QVector &points, const T &p1, const T &p2, qreal accuracy) -> bool +{ + qreal testAccuracy = accuracy; + if (p2.TurnPoint()) + { + testAccuracy = accuracyPointOnLine; + } + + if (not VFuzzyComparePoints(p1, p2, testAccuracy)) + { + points.append(p2); + return false; + } + + if (not points.isEmpty() && p2.TurnPoint()) + { + points.last().SetTurnPoint(true); + } + + if (not points.isEmpty() && p2.CurvePoint()) + { + points.last().SetCurvePoint(true); + } + + return true; +} + +//--------------------------------------------------------------------------------------------------------------------- +template <> +inline auto VAbstractPiece::ComparePoints(QVector &points, const VRawSAPoint &p1, const VRawSAPoint &p2, + qreal accuracy) -> bool +{ + qreal testAccuracy = accuracy; + if ((p1.Primary() && p2.Primary()) || p2.TurnPoint()) + { + testAccuracy = accuracyPointOnLine; + } + + if (not VFuzzyComparePoints(p1, p2, testAccuracy)) + { + points.append(p2); + return false; + } + + if (not points.isEmpty() && p2.TurnPoint()) + { + points.last().SetTurnPoint(true); + } + + if (not points.isEmpty() && p2.CurvePoint()) + { + points.last().SetCurvePoint(true); + } + + return true; +} + +//--------------------------------------------------------------------------------------------------------------------- +template <> +inline auto VAbstractPiece::ComparePoints(QVector &points, const QPointF &p1, const QPointF &p2, + qreal accuracy) -> bool +{ + if (not VFuzzyComparePoints(p1, p2, accuracy)) + { + points.append(p2); + return false; + } + + return true; +} + +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto VAbstractPiece::CompareFirstAndLastPoints(QVector &points, qreal accuracy) -> void +{ + if (points.isEmpty()) + { + return; + } + + const T& first = ConstFirst(points); + const T& last = ConstLast(points); + + qreal testAccuracy = accuracy; + if (last.TurnPoint()) + { + testAccuracy = accuracyPointOnLine; + } + + if (VFuzzyComparePoints(first, last, testAccuracy)) + { + points.removeLast(); + + if (last.TurnPoint()) + { + points.last().SetTurnPoint(true); + } + + if (last.CurvePoint()) + { + points.last().SetCurvePoint(true); + } + } +} + +//--------------------------------------------------------------------------------------------------------------------- +template <> +inline auto VAbstractPiece::CompareFirstAndLastPoints(QVector &points, qreal accuracy) -> void +{ + if (points.isEmpty()) + { + return; + } + + const VRawSAPoint& first = ConstFirst(points); + const VRawSAPoint& last = ConstLast(points); + + qreal testAccuracy = accuracy; + if ((first.Primary() && last.Primary()) || last.TurnPoint()) + { + testAccuracy = accuracyPointOnLine; + } + + if (VFuzzyComparePoints(first, last, testAccuracy)) + { + points.removeLast(); + + if (last.TurnPoint()) + { + points.last().SetTurnPoint(true); + } + + if (last.CurvePoint()) + { + points.last().SetCurvePoint(true); + } + } +} + +//--------------------------------------------------------------------------------------------------------------------- +template <> +inline auto VAbstractPiece::CompareFirstAndLastPoints(QVector &points, qreal accuracy) -> void +{ + if (points.isEmpty()) + { + return; + } + + if (VFuzzyComparePoints(ConstFirst(points), ConstLast(points), accuracy)) + { + points.removeLast(); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto VAbstractPiece::IsInsidePolygon(const QVector &path, const QVector &polygon, qreal accuracy) -> bool { // Edges must not intersect for (auto i = 0; i < path.count(); ++i) @@ -340,4 +548,167 @@ auto VAbstractPiece::IsInsidePolygon(const QVector &path, const QVector &p { return allowancePolygon.containsPoint(point, Qt::WindingFill); }); } +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto VAbstractPiece::PainterPath(const QVector &points) -> QPainterPath +{ + QPainterPath path; + path.setFillRule(Qt::WindingFill); + + if (not points.isEmpty()) + { + path.moveTo(points.at(0)); + for (qint32 i = 1; i < points.count(); ++i) + { + path.lineTo(points.at(i)); + } + path.lineTo(points.at(0)); + } + + return path; +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief CheckLoops seek and delete loops in equidistant. + * @param points vector of points of equidistant. + * @return vector of points of equidistant. + */ +template +inline auto VAbstractPiece::CheckLoops(QVector points) -> QVector +{ +// DumpVector(points, QStringLiteral("input.json.XXXXXX")); // Uncomment for dumping test data + + /*If we got less than 4 points no need seek loops.*/ + if (points.size() < 4) + { + return points; + } + + bool loopFound = false; + qint32 i; + const int maxLoops = 10000; // limit number of loops to be removed + + for (i = 0; i < maxLoops; ++i) + { + points = CheckLoop(points, loopFound); + if (not loopFound) + { + break; + } + } + +// DumpVector(ekvPoints, QStringLiteral("output.json.XXXXXX")); // Uncomment for dumping test data + return points; +} + +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto VAbstractPiece::CheckLoop(const QVector &points, bool &loopFound) -> QVector +{ + loopFound = false; + + const bool pathClosed = (ConstFirst(points) == ConstLast(points)); + + QVector ekvPoints; + ekvPoints.reserve(points.size()); + + qint32 i; + for (i = 0; i < points.size(); ++i) + { + /*Last three points no need to check.*/ + /*Triangle can not contain a loop*/ + if (loopFound || i > points.size()-4) + { + ekvPoints.append(points.at(i)); + continue; + } + + enum LoopIntersectType { NoIntersection, BoundedIntersection, ParallelIntersection }; + + QPointF crosPoint; + LoopIntersectType status = NoIntersection; + const QLineF line1(points.at(i), points.at(i+1)); + + const int limit = pathClosed && i == 0 ? 2 : 1; + qint32 j; + for (j = i+2; j < points.size()-limit; ++j) + { + QLineF line2(points.at(j), points.at(j+1)); + + const QLineF::IntersectType intersect = Intersects(line1, line2, &crosPoint); + if (intersect == QLineF::NoIntersection) + { // According to the documentation QLineF::NoIntersection indicates that the lines do not intersect; + // i.e. they are parallel. But parallel also mean they can be on the same line. + // Method IsLineSegmentOnLineSegment will check it. + if (VGObject::IsLineSegmentOnLineSegment(line1, line2)) + {// Now we really sure that segments are on the same line and have real intersections. + status = ParallelIntersection; + break; + } + } + else if (intersect == QLineF::BoundedIntersection) + { + status = BoundedIntersection; + break; + } + } + + switch (status) + { + case ParallelIntersection: + /*We have found a loop.*/ + ekvPoints.append(points.at(i)); + ekvPoints.append(points.at(j+1)); + i = j+1; // Skip a loop + loopFound = true; + break; + case BoundedIntersection: + ekvPoints.append(points.at(i)); + ekvPoints.append(IntersectionPoint(crosPoint, points.at(i), points.at(i+1), points.at(j), points.at(j+1))); + i = j; + loopFound = true; + break; + case NoIntersection: + /*We have not found loop.*/ + ekvPoints.append(points.at(i)); + break; + default: + break; + } + } + return ekvPoints; +} + +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto VAbstractPiece::IntersectionPoint(QPointF crosPoint, const T &l1p1, const T &l1p2, const T &l2p1, + const T &l2p2) -> T +{ + T point(crosPoint); + + if ((l1p1.CurvePoint() && l1p2.CurvePoint()) || (l2p1.CurvePoint() && l2p2.CurvePoint()) || + (l1p1.CurvePoint() && l2p2.CurvePoint())) + { + point.SetCurvePoint(true); + } + + if ((l1p1.TurnPoint() && l1p2.TurnPoint()) || (l2p1.TurnPoint() && l2p2.TurnPoint()) || + (l1p1.TurnPoint() && l2p2.TurnPoint())) + { + point.SetTurnPoint(true); + } + + return point; +} + +//--------------------------------------------------------------------------------------------------------------------- +template<> +inline auto VAbstractPiece::IntersectionPoint(QPointF crosPoint, const QPointF & /*unused*/, + const QPointF & /*unused*/, const QPointF & /*unused*/, + const QPointF & /*unused*/) -> QPointF +{ + return crosPoint; +} + #endif // VABSTRACTPIECE_H diff --git a/src/libs/vlayout/vlayout.pri b/src/libs/vlayout/vlayout.pri index 8343aa5e1..2f246706f 100644 --- a/src/libs/vlayout/vlayout.pri +++ b/src/libs/vlayout/vlayout.pri @@ -15,6 +15,7 @@ HEADERS += \ $$PWD/vcontour.h \ $$PWD/vcontour_p.h \ $$PWD/vbestsquare.h \ + $$PWD/vlayoutpoint.h \ $$PWD/vposition.h \ $$PWD/vrawlayout.h \ $$PWD/vprintlayout.h \ @@ -38,6 +39,7 @@ SOURCES += \ $$PWD/vbank.cpp \ $$PWD/vcontour.cpp \ $$PWD/vbestsquare.cpp \ + $$PWD/vlayoutpoint.cpp \ $$PWD/vposition.cpp \ $$PWD/vrawlayout.cpp \ $$PWD/vprintlayout.cpp \ diff --git a/src/libs/vlayout/vlayoutdef.h b/src/libs/vlayout/vlayoutdef.h index 21a9dde1c..d52fc2d5e 100644 --- a/src/libs/vlayout/vlayoutdef.h +++ b/src/libs/vlayout/vlayoutdef.h @@ -34,8 +34,6 @@ #include #include -#include "../vmisc/typedef.h" - enum class LayoutExportFormats : qint8 { SVG = 0, diff --git a/src/libs/vlayout/vlayoutpiece.cpp b/src/libs/vlayout/vlayoutpiece.cpp index f4e50746a..ca52896df 100644 --- a/src/libs/vlayout/vlayoutpiece.cpp +++ b/src/libs/vlayout/vlayoutpiece.cpp @@ -45,10 +45,11 @@ #include #include #include +#include #include "../vpatterndb/floatItemData/vpatternlabeldata.h" #include "../vpatterndb/floatItemData/vpiecelabeldata.h" -#include "../vmisc/vmath.h" +#include "../vpatterndb/floatItemData/vgrainlinedata.h" #include "../vmisc/vabstractvalapplication.h" #include "../vmisc/compatibility.h" #include "../vmisc/literals.h" @@ -58,18 +59,15 @@ #include "../vpatterndb/vpiecenode.h" #include "../vgeometry/vpointf.h" #include "../vgeometry/vplacelabelitem.h" -#include "vlayoutdef.h" #include "vlayoutpiece_p.h" #include "vtextmanager.h" #include "vgraphicsfillitem.h" - -const quint32 VLayoutPieceData::streamHeader = 0x80D7D009; // CRC-32Q string "VLayoutPieceData" -const quint16 VLayoutPieceData::classVersion = 3; +#include "../vgeometry/vlayoutplacelabel.h" namespace { //--------------------------------------------------------------------------------------------------------------------- -QVector ConvertInternalPaths(const VPiece &piece, const VContainer *pattern) +auto ConvertInternalPaths(const VPiece &piece, const VContainer *pattern) -> QVector { SCASSERT(pattern != nullptr) @@ -82,7 +80,7 @@ QVector ConvertInternalPaths(const VPiece &piece, const VConta const VPiecePath path = pattern->GetPiecePath(id); if (path.GetType() == PiecePathType::InternalPath && path.IsVisible(pattern->DataVariables())) { - VLayoutPiecePath convertedPath = VLayoutPiecePath(path.PathPoints(pattern, cuttingPath)); + VLayoutPiecePath convertedPath(path.PathPoints(pattern, cuttingPath)); convertedPath.SetCutPath(path.IsCutPath()); convertedPath.SetPenStyle(path.GetPenType()); paths.append(convertedPath); @@ -92,8 +90,8 @@ QVector ConvertInternalPaths(const VPiece &piece, const VConta } //--------------------------------------------------------------------------------------------------------------------- -bool FindLabelGeometry(const VPatternLabelData &labelData, const VContainer *pattern, qreal &rotationAngle, - qreal &labelWidth, qreal &labelHeight, QPointF &pos) +auto FindLabelGeometry(const VPatternLabelData &labelData, const VContainer *pattern, qreal &rotationAngle, + qreal &labelWidth, qreal &labelHeight, QPointF &pos) -> bool { SCASSERT(pattern != nullptr) @@ -170,18 +168,6 @@ bool FindLabelGeometry(const VPatternLabelData &labelData, const VContainer *pat return true; } -//--------------------------------------------------------------------------------------------------------------------- -QVector PrepareAllowance(const QVector &points) -{ - QVector allowancePoints; - allowancePoints.reserve(points.size()); - for(auto &point : points) - { - allowancePoints.append(VSAPoint(point)); - } - return allowancePoints; -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief VLayoutDetail::RotatePoint rotates a point around the center for given angle @@ -190,7 +176,7 @@ QVector PrepareAllowance(const QVector &points) * @param dAng angle of rotation * @return position of point pt after rotating it around the center for dAng radians */ -QPointF RotatePoint(const QPointF &ptCenter, const QPointF& pt, qreal dAng) +auto RotatePoint(const QPointF &ptCenter, const QPointF& pt, qreal dAng) -> QPointF { QPointF ptDest; QPointF ptRel = pt - ptCenter; @@ -201,7 +187,7 @@ QPointF RotatePoint(const QPointF &ptCenter, const QPointF& pt, qreal dAng) } //--------------------------------------------------------------------------------------------------------------------- -QStringList PieceLabelText(const QVector &labelShape, const VTextManager &tm) +auto PieceLabelText(const QVector &labelShape, const VTextManager &tm) -> QStringList { QStringList text; if (labelShape.count() > 2) @@ -217,12 +203,12 @@ QStringList PieceLabelText(const QVector &labelShape, const VTextManage } //--------------------------------------------------------------------------------------------------------------------- -QVector ConvertPlaceLabels(const VPiece &piece, const VContainer *pattern) +auto ConvertPlaceLabels(const VPiece &piece, const VContainer *pattern) -> QVector { QVector labels; const auto placeLabels = piece.GetPlaceLabels(); labels.reserve(placeLabels.size()); - for(auto &placeLabel : placeLabels) + for(const auto &placeLabel : placeLabels) { const auto label = pattern->GeometricObject(placeLabel); if (label->IsVisible()) @@ -231,13 +217,7 @@ QVector ConvertPlaceLabels(const VPiece &piece, const VContai QT_WARNING_DISABLE_GCC("-Wnoexcept") // noexcept-expression evaluates to 'false' because of a call to 'constexpr QPointF::QPointF()' - VLayoutPlaceLabel layoutLabel; - layoutLabel.shape = label->LabelShape(); - layoutLabel.rotationMatrix = label->RotationMatrix(); - layoutLabel.box = label->Box(); - layoutLabel.center = label->toQPointF(); - layoutLabel.type = label->GetLabelType(); - labels.append(layoutLabel); + labels.append(VLayoutPlaceLabel(*label)); QT_WARNING_POP } @@ -246,185 +226,211 @@ QVector ConvertPlaceLabels(const VPiece &piece, const VContai } //--------------------------------------------------------------------------------------------------------------------- -QVector ConvertPassmarks(const VPiece &piece, const VContainer *pattern) +auto PrepareSAPassmark(const VPiece &piece, const VContainer *pattern, const VPassmark &passmark, + PassmarkSide side, bool &ok) -> VLayoutPassmark +{ + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + // noexcept-expression evaluates to 'false' because of a call to 'constexpr QPointF::QPointF()' + + VLayoutPassmark layoutPassmark; + + QT_WARNING_POP + + VPiecePassmarkData pData = passmark.Data(); + const QVector path = piece.GetUnitedPath(pattern); + const int nodeIndex = VPiecePath::indexOfNode(path, pData.id); + if (nodeIndex == -1) + { + const QString errorMsg = + QObject::tr("Passmark '%1' is not part of piece '%2'.") + .arg(pData.nodeName, piece.GetName()); + VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : + qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; + ok = false; + return {}; + } + + QVector baseLines = passmark.SAPassmarkBaseLine(piece, pattern, static_cast(side)); + if (baseLines.isEmpty()) + { + const QString errorMsg = + QObject::tr("Cannot prepare passmark '%1' for piece '%2'. Passmark base line is empty.") + .arg(pData.nodeName, piece.GetName()); + VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : + qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; + ok = false; + return {}; + } + + if (side == PassmarkSide::All || side == PassmarkSide::Right) + { + layoutPassmark.baseLine = ConstFirst(baseLines); + } + else if (side == PassmarkSide::Right) + { + layoutPassmark.baseLine = ConstLast(baseLines); + } + + const QVector lines = passmark.SAPassmark(piece, pattern, side); + if (lines.isEmpty()) + { + const QString errorMsg = + QObject::tr("Cannot prepare passmark '%1' for piece '%2'. Passmark is empty.") + .arg(pData.nodeName, piece.GetName()); + VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : + qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; + ok = false; + return {}; + } + + layoutPassmark.lines = lines; + layoutPassmark.type = pData.passmarkLineType; + layoutPassmark.isBuiltIn = false; + + ok = true; + return layoutPassmark; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto PreapreBuiltInSAPassmark(const VPiece &piece, const VContainer *pattern, const VPassmark &passmark, + bool &ok) -> VLayoutPassmark +{ + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wnoexcept") + // noexcept-expression evaluates to 'false' because of a call to 'constexpr QPointF::QPointF()' + + VLayoutPassmark layoutPassmark; + + QT_WARNING_POP + + VPiecePassmarkData pData = passmark.Data(); + const QVector path = piece.GetUnitedPath(pattern); + const int nodeIndex = VPiecePath::indexOfNode(path, pData.id); + if (nodeIndex == -1) + { + const QString errorMsg = + QObject::tr("Passmark '%1' is not part of piece '%2'.") + .arg(pData.nodeName, piece.GetName()); + VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : + qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; + ok = false; + return {}; + } + + const QVector lines = passmark.BuiltInSAPassmark(piece, pattern); + if (lines.isEmpty()) + { + const QString errorMsg = + QObject::tr("Cannot prepare builtin passmark '%1' for piece '%2'. Passmark is empty.") + .arg(pData.nodeName, piece.GetName()); + VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : + qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; + ok = false; + return {}; + } + + layoutPassmark.lines = lines; + + const QVector baseLines = passmark.BuiltInSAPassmarkBaseLine(piece); + if (baseLines.isEmpty()) + { + const QString errorMsg = + QObject::tr("Cannot prepare builtin passmark '%1' for piece '%2'. Passmark base line is " + "empty.") + .arg(pData.nodeName, piece.GetName()); + VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : + qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; + ok = false; + return {}; + } + + layoutPassmark.baseLine = ConstFirst (baseLines); + layoutPassmark.type = pData.passmarkLineType; + layoutPassmark.isBuiltIn = true; + + ok = true; + return layoutPassmark; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto ConvertPassmarks(const VPiece &piece, const VContainer *pattern) -> QVector { const QVector passmarks = piece.Passmarks(pattern); QVector layoutPassmarks; - for(auto &passmark : passmarks) + layoutPassmarks.reserve(passmarks.size()); + + for(const auto &passmark : passmarks) { - if (not passmark.IsNull()) + if (passmark.IsNull()) { - VPiecePassmarkData pData = passmark.Data(); + continue; + } - auto PreapreBuiltInSAPassmark = [pData, passmark, piece, &layoutPassmarks, pattern]() + auto AddPassmark = [passmark, piece, pattern, &layoutPassmarks](PassmarkSide side) + { + bool ok = false; + VLayoutPassmark layoutPassmark = PrepareSAPassmark(piece, pattern, passmark, side, ok); + if (ok) { - QT_WARNING_PUSH - QT_WARNING_DISABLE_GCC("-Wnoexcept") - // noexcept-expression evaluates to 'false' because of a call to 'constexpr QPointF::QPointF()' - - VLayoutPassmark layoutPassmark; - - QT_WARNING_POP - - const QVector path = piece.GetUnitedPath(pattern); - const int nodeIndex = VPiecePath::indexOfNode(path, pData.id); - if (nodeIndex != -1) - { - const QVector lines = passmark.BuiltInSAPassmark(piece, pattern); - if (lines.isEmpty()) - { - const QString errorMsg = - QObject::tr("Cannot prepare builtin passmark '%1' for piece '%2'. Passmark is empty.") - .arg(pData.nodeName, piece.GetName()); - VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : - qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; - return; - } - - layoutPassmark.lines = lines; - - const QVector baseLines = passmark.BuiltInSAPassmarkBaseLine(piece); - if (baseLines.isEmpty()) - { - const QString errorMsg = - QObject::tr("Cannot prepare builtin passmark '%1' for piece '%2'. Passmark base line is " - "empty.") - .arg(pData.nodeName, piece.GetName()); - VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : - qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; - return; - } - layoutPassmark.baseLine = ConstFirst (baseLines); - - - layoutPassmark.type = pData.passmarkLineType; - layoutPassmark.isBuiltIn = true; - - layoutPassmarks.append(layoutPassmark); - } - else - { - const QString errorMsg = - QObject::tr("Passmark '%1' is not part of piece '%2'.") - .arg(pData.nodeName, piece.GetName()); - VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : - qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; - } - }; - - auto PrepareSAPassmark = [pData, passmark, piece, &layoutPassmarks, pattern](PassmarkSide side) - { - QT_WARNING_PUSH - QT_WARNING_DISABLE_GCC("-Wnoexcept") - // noexcept-expression evaluates to 'false' because of a call to 'constexpr QPointF::QPointF()' - - VLayoutPassmark layoutPassmark; - - QT_WARNING_POP - - const QVector path = piece.GetUnitedPath(pattern); - const int nodeIndex = VPiecePath::indexOfNode(path, pData.id); - if (nodeIndex != -1) - { - QVector baseLines = - passmark.SAPassmarkBaseLine(piece, pattern, static_cast(side)); - if (baseLines.isEmpty()) - { - const QString errorMsg = - QObject::tr("Cannot prepare passmark '%1' for piece '%2'. Passmark base line is empty.") - .arg(pData.nodeName, piece.GetName()); - VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : - qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; - return; - } - - if (side == PassmarkSide::All || side == PassmarkSide::Right) - { - layoutPassmark.baseLine = ConstFirst(baseLines); - } - else if (side == PassmarkSide::Right) - { - layoutPassmark.baseLine = ConstLast(baseLines); - } - - const QVector lines = passmark.SAPassmark(piece, pattern, side); - if (lines.isEmpty()) - { - const QString errorMsg = - QObject::tr("Cannot prepare passmark '%1' for piece '%2'. Passmark is empty.") - .arg(pData.nodeName, piece.GetName()); - VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : - qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; - return; - } - - layoutPassmark.lines = lines; - layoutPassmark.type = pData.passmarkLineType; - layoutPassmark.isBuiltIn = false; - - layoutPassmarks.append(layoutPassmark); - } - else - { - const QString errorMsg = - QObject::tr("Passmark '%1' is not part of piece '%2'.") - .arg(pData.nodeName, piece.GetName()); - VAbstractApplication::VApp()->IsPedantic() ? throw VException(errorMsg) : - qWarning() << VAbstractValApplication::warningMessageSignature + errorMsg; - } - }; - - if (not piece.IsSeamAllowanceBuiltIn()) - { - if (pData.passmarkAngleType == PassmarkAngleType::Straightforward - || pData.passmarkAngleType == PassmarkAngleType::Bisector) - { - PrepareSAPassmark(PassmarkSide::All); - } - else if (pData.passmarkAngleType == PassmarkAngleType::Intersection - || pData.passmarkAngleType == PassmarkAngleType::IntersectionOnlyLeft - || pData.passmarkAngleType == PassmarkAngleType::IntersectionOnlyRight - || pData.passmarkAngleType == PassmarkAngleType::Intersection2 - || pData.passmarkAngleType == PassmarkAngleType::Intersection2OnlyLeft - || pData.passmarkAngleType == PassmarkAngleType::Intersection2OnlyRight) - { - if (pData.passmarkAngleType == PassmarkAngleType::Intersection || - pData.passmarkAngleType == PassmarkAngleType::Intersection2) - { - PrepareSAPassmark(PassmarkSide::Left); - PrepareSAPassmark(PassmarkSide::Right); - } - else if (pData.passmarkAngleType == PassmarkAngleType::IntersectionOnlyLeft || - pData.passmarkAngleType == PassmarkAngleType::Intersection2OnlyLeft) - { - PrepareSAPassmark(PassmarkSide::Left); - } - else if (pData.passmarkAngleType == PassmarkAngleType::IntersectionOnlyRight || - pData.passmarkAngleType == PassmarkAngleType::Intersection2OnlyRight) - { - PrepareSAPassmark(PassmarkSide::Right); - } - } - - if (VAbstractApplication::VApp()->Settings()->IsDoublePassmark() - && (VAbstractApplication::VApp()->Settings()->IsPieceShowMainPath() || - not piece.IsHideMainPath()) - && pData.isMainPathNode - && pData.passmarkAngleType != PassmarkAngleType::Intersection - && pData.passmarkAngleType != PassmarkAngleType::IntersectionOnlyLeft - && pData.passmarkAngleType != PassmarkAngleType::IntersectionOnlyRight - && pData.passmarkAngleType != PassmarkAngleType::Intersection2 - && pData.passmarkAngleType != PassmarkAngleType::Intersection2OnlyLeft - && pData.passmarkAngleType != PassmarkAngleType::Intersection2OnlyRight - && pData.isShowSecondPassmark) - { - PreapreBuiltInSAPassmark(); - } + layoutPassmarks.append(layoutPassmark); } - else + }; + + auto AddBuiltInPassmark = [passmark, piece, pattern, &layoutPassmarks]() + { + bool ok = false; + VLayoutPassmark layoutPassmark = PreapreBuiltInSAPassmark(piece, pattern, passmark, ok); + if (ok) { - PreapreBuiltInSAPassmark(); + layoutPassmarks.append(layoutPassmark); } + }; + + if (piece.IsSeamAllowanceBuiltIn()) + { + AddBuiltInPassmark(); + continue; + } + + VPiecePassmarkData pData = passmark.Data(); + + switch(pData.passmarkAngleType) + { + case PassmarkAngleType::Straightforward: + case PassmarkAngleType::Bisector: + AddPassmark(PassmarkSide::All); + break; + case PassmarkAngleType::Intersection: + case PassmarkAngleType::Intersection2: + AddPassmark(PassmarkSide::Left); + AddPassmark(PassmarkSide::Right); + break; + case PassmarkAngleType::IntersectionOnlyLeft: + case PassmarkAngleType::Intersection2OnlyLeft: + AddPassmark(PassmarkSide::Left); + break; + case PassmarkAngleType::IntersectionOnlyRight: + case PassmarkAngleType::Intersection2OnlyRight: + AddPassmark(PassmarkSide::Right); + break; + default: + break; + } + + if (VAbstractApplication::VApp()->Settings()->IsDoublePassmark() + && (VAbstractApplication::VApp()->Settings()->IsPieceShowMainPath() || + not piece.IsHideMainPath()) + && pData.isMainPathNode + && pData.passmarkAngleType != PassmarkAngleType::Intersection + && pData.passmarkAngleType != PassmarkAngleType::IntersectionOnlyLeft + && pData.passmarkAngleType != PassmarkAngleType::IntersectionOnlyRight + && pData.passmarkAngleType != PassmarkAngleType::Intersection2 + && pData.passmarkAngleType != PassmarkAngleType::Intersection2OnlyLeft + && pData.passmarkAngleType != PassmarkAngleType::Intersection2OnlyRight + && pData.isShowSecondPassmark) + { + AddBuiltInPassmark(); } } @@ -525,19 +531,45 @@ auto PrepareGradationId(const QString &label, const VContainer *pattern) -> QStr const QMap placeholders = PrepareGradationPlaceholders(pattern); return ReplacePlaceholders(placeholders, label); } -} +} // namespace // Friend functions //--------------------------------------------------------------------------------------------------------------------- -QDataStream &operator<<(QDataStream &dataStream, const VLayoutPiece &piece) +auto operator<<(QDataStream &dataStream, const VLayoutPoint &p) -> QDataStream & { - dataStream << static_cast(piece); + dataStream << static_cast(p); // NOLINT(cppcoreguidelines-slicing) + dataStream << p.TurnPoint(); + dataStream << p.CurvePoint(); + return dataStream; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto operator>>(QDataStream &dataStream, VLayoutPoint &p) -> QDataStream & +{ + QPointF tmp; + bool turnPointFlag = false; + bool curvePointFlag = false; + dataStream >> tmp; + dataStream >> turnPointFlag; + dataStream >> curvePointFlag; + + p = VLayoutPoint(tmp); + p.SetTurnPoint(turnPointFlag); + p.SetCurvePoint(curvePointFlag); + + return dataStream; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto operator<<(QDataStream &dataStream, const VLayoutPiece &piece) -> QDataStream & +{ + dataStream << static_cast(piece); // NOLINT(cppcoreguidelines-slicing) dataStream << *piece.d; return dataStream; } //--------------------------------------------------------------------------------------------------------------------- -QDataStream &operator>>(QDataStream &dataStream, VLayoutPiece &piece) +auto operator>>(QDataStream &dataStream, VLayoutPiece &piece) -> QDataStream & { dataStream >> static_cast(piece); dataStream >> *piece.d; @@ -546,16 +578,16 @@ QDataStream &operator>>(QDataStream &dataStream, VLayoutPiece &piece) //--------------------------------------------------------------------------------------------------------------------- VLayoutPiece::VLayoutPiece() - :VAbstractPiece(), d(new VLayoutPieceData) + :d(new VLayoutPieceData) {} //--------------------------------------------------------------------------------------------------------------------- -VLayoutPiece::VLayoutPiece(const VLayoutPiece &detail) +VLayoutPiece::VLayoutPiece(const VLayoutPiece &detail) // NOLINT(modernize-use-equals-default) :VAbstractPiece(detail), d(detail.d) {} //--------------------------------------------------------------------------------------------------------------------- -VLayoutPiece &VLayoutPiece::operator=(const VLayoutPiece &detail) +auto VLayoutPiece::operator=(const VLayoutPiece &detail) -> VLayoutPiece & { if ( &detail == this ) { @@ -573,7 +605,7 @@ VLayoutPiece::VLayoutPiece(VLayoutPiece &&detail) Q_DECL_NOTHROW {} //--------------------------------------------------------------------------------------------------------------------- -VLayoutPiece &VLayoutPiece::operator=(VLayoutPiece &&detail) Q_DECL_NOTHROW +auto VLayoutPiece::operator=(VLayoutPiece &&detail) Q_DECL_NOTHROW -> VLayoutPiece & { VAbstractPiece::operator=(detail); std::swap(d, detail.d); @@ -582,15 +614,16 @@ VLayoutPiece &VLayoutPiece::operator=(VLayoutPiece &&detail) Q_DECL_NOTHROW #endif //--------------------------------------------------------------------------------------------------------------------- -VLayoutPiece::~VLayoutPiece() +VLayoutPiece::~VLayoutPiece() //NOLINT(modernize-use-equals-default) {} //--------------------------------------------------------------------------------------------------------------------- -VLayoutPiece VLayoutPiece::Create(const VPiece &piece, vidtype id, const VContainer *pattern) +auto VLayoutPiece::Create(const VPiece &piece, vidtype id, const VContainer *pattern) -> VLayoutPiece { - QFuture > futureSeamAllowance = QtConcurrent::run(piece, &VPiece::SeamAllowancePoints, pattern); + QFuture > futureSeamAllowance = QtConcurrent::run(piece, &VPiece::SeamAllowancePoints, + pattern); QFuture futureSeamAllowanceValid = QtConcurrent::run(piece, &VPiece::IsSeamAllowanceValid, pattern); - QFuture > futureMainPath = QtConcurrent::run(piece, &VPiece::MainPathPoints, pattern); + QFuture > futureMainPath = QtConcurrent::run(piece, &VPiece::MainPathPoints, pattern); QFuture > futureInternalPaths = QtConcurrent::run(ConvertInternalPaths, piece, pattern); QFuture > futurePassmarks = QtConcurrent::run(ConvertPassmarks, piece, pattern); QFuture > futurePlaceLabels = QtConcurrent::run(ConvertPlaceLabels, piece, pattern); @@ -673,8 +706,8 @@ template auto VLayoutPiece::Map(QVector points) const -> QVector { std::transform(points.begin(), points.end(), points.begin(), - [this](const T &point) { return d->matrix.map(point); }); - if (d->mirror) + [this](const T &point) { return d->m_matrix.map(point); }); + if (d->m_mirror) { std::reverse(points.begin(), points.end()); } @@ -682,74 +715,82 @@ auto VLayoutPiece::Map(QVector points) const -> QVector } //--------------------------------------------------------------------------------------------------------------------- -template <> -QVector VLayoutPiece::Map(QVector points) const +template <> // NOLINTNEXTLINE(readability-inconsistent-declaration-parameter-name) +auto VLayoutPiece::Map(QVector passmarks) const -> QVector { - for (int i = 0; i < points.size(); ++i) + for (auto & passmark : passmarks) { - points[i].shape = Map(points.at(i).shape); - } - - return points; -} - -//--------------------------------------------------------------------------------------------------------------------- -template <> -QVector VLayoutPiece::Map(QVector passmarks) const -{ - for (int i = 0; i < passmarks.size(); ++i) - { - passmarks[i].lines = Map(passmarks.at(i).lines); - passmarks[i].baseLine = d->matrix.map(passmarks.at(i).baseLine); + passmark.lines = Map(passmark.lines); + passmark.baseLine = d->m_matrix.map(passmark.baseLine); } return passmarks; } +//--------------------------------------------------------------------------------------------------------------------- +template <> +auto VLayoutPiece::Map(QVector points) const -> QVector +{ + std::transform(points.begin(), points.end(), points.begin(), [this](VLayoutPoint point) + { + auto p = static_cast(point); // NOLINT(cppcoreguidelines-slicing) + p = d->m_matrix.map(p); + point.rx() = p.x(); + point.ry() = p.y(); + return point; + }); + if (d->m_mirror) + { + std::reverse(points.begin(), points.end()); + } + return points; +} + //--------------------------------------------------------------------------------------------------------------------- // cppcheck-suppress unusedFunction -QVector VLayoutPiece::GetMappedContourPoints() const +auto VLayoutPiece::GetMappedContourPoints() const -> QVector { - return Map(d->contour); + return Map(d->m_contour); } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetContourPoints() const +auto VLayoutPiece::GetContourPoints() const -> QVector { - return d->contour; + return d->m_contour; } //--------------------------------------------------------------------------------------------------------------------- -void VLayoutPiece::SetCountourPoints(const QVector &points, bool hideMainPath) +void VLayoutPiece::SetCountourPoints(const QVector &points, bool hideMainPath) { - d->contour = RemoveDublicates(points, false); + d->m_contour = RemoveDublicates(points, false); SetHideMainPath(hideMainPath); } //--------------------------------------------------------------------------------------------------------------------- // cppcheck-suppress unusedFunction -QVector VLayoutPiece::GetMappedSeamAllowancePoints() const +auto VLayoutPiece::GetMappedSeamAllowancePoints() const -> QVector { - return Map(d->seamAllowance); + return Map(d->m_seamAllowance); } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetSeamAllowancePoints() const +auto VLayoutPiece::GetSeamAllowancePoints() const -> QVector { - return d->seamAllowance; + return d->m_seamAllowance; } //--------------------------------------------------------------------------------------------------------------------- -void VLayoutPiece::SetSeamAllowancePoints(const QVector &points, bool seamAllowance, bool seamAllowanceBuiltIn) +void VLayoutPiece::SetSeamAllowancePoints(const QVector &points, bool seamAllowance, + bool seamAllowanceBuiltIn) { if (seamAllowance) { SetSeamAllowance(seamAllowance); SetSeamAllowanceBuiltIn(seamAllowanceBuiltIn); - d->seamAllowance = points; - if (not d->seamAllowance.isEmpty()) + d->m_seamAllowance = points; + if (not d->m_seamAllowance.isEmpty()) { - d->seamAllowance = RemoveDublicates(d->seamAllowance, false); + d->m_seamAllowance = RemoveDublicates(d->m_seamAllowance, false); } else if (not IsSeamAllowanceBuiltIn()) { @@ -760,34 +801,32 @@ void VLayoutPiece::SetSeamAllowancePoints(const QVector &points, bool s } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetMappedLayoutAllowancePoints() const +auto VLayoutPiece::GetMappedLayoutAllowancePoints() const -> QVector { - return Map(d->layoutAllowance); + return Map(d->m_layoutAllowance); } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetLayoutAllowancePoints() const +auto VLayoutPiece::GetLayoutAllowancePoints() const -> QVector { - return d->layoutAllowance; + return d->m_layoutAllowance; } //--------------------------------------------------------------------------------------------------------------------- -QPointF VLayoutPiece::GetPieceTextPosition() const +auto VLayoutPiece::GetPieceTextPosition() const -> QPointF { - if (d->detailLabel.count() > 2) + if (d->m_detailLabel.count() > 2) { - return d->matrix.map(ConstFirst(d->detailLabel)); - } - else - { - return QPointF(); + return d->m_matrix.map(ConstFirst(d->m_detailLabel)); } + + return {}; } //--------------------------------------------------------------------------------------------------------------------- -QStringList VLayoutPiece::GetPieceText() const +auto VLayoutPiece::GetPieceText() const -> QStringList { - return PieceLabelText(d->detailLabel, d->m_tmDetail); + return PieceLabelText(d->m_detailLabel, d->m_tmDetail); } //--------------------------------------------------------------------------------------------------------------------- @@ -818,7 +857,7 @@ void VLayoutPiece::SetPieceText(const QString& qsName, const VPieceLabelData& da } QScopedPointer item(GetMainPathItem()); - d->detailLabel = CorrectPosition(item->boundingRect(), v); + d->m_detailLabel = CorrectPosition(item->boundingRect(), v); // generate text d->m_tmDetail.SetFont(font); @@ -832,13 +871,13 @@ void VLayoutPiece::SetPieceText(const QString& qsName, const VPieceLabelData& da //--------------------------------------------------------------------------------------------------------------------- auto VLayoutPiece::GetPieceLabelRect() const -> QVector { - return d->detailLabel; + return d->m_detailLabel; } //--------------------------------------------------------------------------------------------------------------------- void VLayoutPiece::SetPieceLabelRect(const QVector &rect) { - d->detailLabel = rect; + d->m_detailLabel = rect; } //--------------------------------------------------------------------------------------------------------------------- @@ -854,22 +893,20 @@ void VLayoutPiece::SetPieceLabelData(const VTextManager &data) } //--------------------------------------------------------------------------------------------------------------------- -QPointF VLayoutPiece::GetPatternTextPosition() const +auto VLayoutPiece::GetPatternTextPosition() const -> QPointF { - if (d->patternInfo.count() > 2) + if (d->m_patternInfo.count() > 2) { - return d->matrix.map(ConstFirst(d->patternInfo)); - } - else - { - return QPointF(); + return d->m_matrix.map(ConstFirst(d->m_patternInfo)); } + + return {}; } //--------------------------------------------------------------------------------------------------------------------- -QStringList VLayoutPiece::GetPatternText() const +auto VLayoutPiece::GetPatternText() const -> QStringList { - return PieceLabelText(d->patternInfo, d->m_tmPattern); + return PieceLabelText(d->m_patternInfo, d->m_tmPattern); } //--------------------------------------------------------------------------------------------------------------------- @@ -898,7 +935,7 @@ void VLayoutPiece::SetPatternInfo(VAbstractPattern* pDoc, const VPatternLabelDat v[i] = RotatePoint(ptCenter, v.at(i), dAng); } QScopedPointer item(GetMainPathItem()); - d->patternInfo = CorrectPosition(item->boundingRect(), v); + d->m_patternInfo = CorrectPosition(item->boundingRect(), v); // Generate text d->m_tmPattern.SetFont(font); @@ -914,13 +951,13 @@ void VLayoutPiece::SetPatternInfo(VAbstractPattern* pDoc, const VPatternLabelDat //--------------------------------------------------------------------------------------------------------------------- auto VLayoutPiece::GetPatternLabelRect() const -> QVector { - return d->patternInfo; + return d->m_patternInfo; } //--------------------------------------------------------------------------------------------------------------------- void VLayoutPiece::SetPatternLabelRect(const QVector &rect) { - d->patternInfo = rect; + d->m_patternInfo = rect; } //--------------------------------------------------------------------------------------------------------------------- @@ -948,92 +985,92 @@ void VLayoutPiece::SetGrainline(const VGrainlineData& geom, const VContainer* pa return; } - d->grainlineEnabled = true; - d->grainlineArrowType = geom.GetArrowType(); - d->grainlineAngle = qRadiansToDegrees(dAng); - d->grainlinePoints = v; + d->m_grainlineEnabled = true; + d->m_grainlineArrowType = geom.GetArrowType(); + d->m_grainlineAngle = qRadiansToDegrees(dAng); + d->m_grainlinePoints = v; } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetMappedGrainline() const +auto VLayoutPiece::GetMappedGrainline() const -> QVector { - return Map(d->grainlinePoints); + return Map(d->m_grainlinePoints); } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetGrainline() const +auto VLayoutPiece::GetGrainline() const -> QVector { - return d->grainlinePoints; + return d->m_grainlinePoints; } //--------------------------------------------------------------------------------------------------------------------- -bool VLayoutPiece::IsGrainlineEnabled() const +auto VLayoutPiece::IsGrainlineEnabled() const -> bool { - return d->grainlineEnabled; + return d->m_grainlineEnabled; } //--------------------------------------------------------------------------------------------------------------------- void VLayoutPiece::SetGrainlineEnabled(bool enabled) { - d->grainlineEnabled = enabled; + d->m_grainlineEnabled = enabled; } //--------------------------------------------------------------------------------------------------------------------- void VLayoutPiece::SetGrainlineAngle(qreal angle) { - d->grainlineAngle = angle; + d->m_grainlineAngle = angle; } //--------------------------------------------------------------------------------------------------------------------- void VLayoutPiece::SetGrainlineArrowType(GrainlineArrowDirection type) { - d->grainlineArrowType = type; + d->m_grainlineArrowType = type; } //--------------------------------------------------------------------------------------------------------------------- void VLayoutPiece::SetGrainlinePoints(const QVector &points) { - d->grainlinePoints = points; + d->m_grainlinePoints = points; } //--------------------------------------------------------------------------------------------------------------------- -qreal VLayoutPiece::GrainlineAngle() const +auto VLayoutPiece::GrainlineAngle() const -> qreal { - return d->grainlineAngle; + return d->m_grainlineAngle; } //--------------------------------------------------------------------------------------------------------------------- -GrainlineArrowDirection VLayoutPiece::GrainlineArrowType() const +auto VLayoutPiece::GrainlineArrowType() const -> GrainlineArrowDirection { - return d->grainlineArrowType; + return d->m_grainlineArrowType; } //--------------------------------------------------------------------------------------------------------------------- -QTransform VLayoutPiece::GetMatrix() const +auto VLayoutPiece::GetMatrix() const -> QTransform { - return d->matrix; + return d->m_matrix; } //--------------------------------------------------------------------------------------------------------------------- void VLayoutPiece::SetMatrix(const QTransform &matrix) { - d->matrix = matrix; + d->m_matrix = matrix; } //--------------------------------------------------------------------------------------------------------------------- -qreal VLayoutPiece::GetLayoutWidth() const +auto VLayoutPiece::GetLayoutWidth() const -> qreal { - return d->layoutWidth; + return d->m_layoutWidth; } //--------------------------------------------------------------------------------------------------------------------- void VLayoutPiece::SetLayoutWidth(qreal value) { - d->layoutWidth = value; + d->m_layoutWidth = value; } //--------------------------------------------------------------------------------------------------------------------- -quint16 VLayoutPiece::GetQuantity() const +auto VLayoutPiece::GetQuantity() const -> quint16 { return d->m_quantity; } @@ -1045,7 +1082,7 @@ void VLayoutPiece::SetQuantity(quint16 value) } //--------------------------------------------------------------------------------------------------------------------- -vidtype VLayoutPiece::GetId() const +auto VLayoutPiece::GetId() const -> vidtype { return d->m_id; } @@ -1067,7 +1104,7 @@ void VLayoutPiece::Translate(const QPointF &p) { QTransform m; m.translate(p.x(), p.y()); - d->matrix *= m; + d->m_matrix *= m; } //--------------------------------------------------------------------------------------------------------------------- @@ -1078,7 +1115,7 @@ void VLayoutPiece::Scale(qreal sx, qreal sy) QTransform m; m.scale(sx, sy); - d->matrix *= m; + d->m_matrix *= m; } //--------------------------------------------------------------------------------------------------------------------- @@ -1088,7 +1125,7 @@ void VLayoutPiece::Rotate(const QPointF &originPoint, qreal degrees) m.translate(originPoint.x(), originPoint.y()); m.rotate(-degrees); m.translate(-originPoint.x(), -originPoint.y()); - d->matrix *= m; + d->m_matrix *= m; } //--------------------------------------------------------------------------------------------------------------------- @@ -1107,21 +1144,21 @@ void VLayoutPiece::Mirror(const QLineF &edge) m.translate(p2.x(), p2.y()); m.rotate(-angle); m.translate(-p2.x(), -p2.y()); - d->matrix *= m; + d->m_matrix *= m; m.reset(); m.translate(p2.x(), p2.y()); m.scale(m.m11(), m.m22()*-1); m.translate(-p2.x(), -p2.y()); - d->matrix *= m; + d->m_matrix *= m; m.reset(); m.translate(p2.x(), p2.y()); m.rotate(-(360-angle)); m.translate(-p2.x(), -p2.y()); - d->matrix *= m; + d->m_matrix *= m; - d->mirror = !d->mirror; + d->m_mirror = !d->m_mirror; } //--------------------------------------------------------------------------------------------------------------------- @@ -1129,82 +1166,76 @@ void VLayoutPiece::Mirror() { QTransform m; m.scale(-1, 1); - d->matrix *= m; - d->mirror = !d->mirror; + d->m_matrix *= m; + d->m_mirror = !d->m_mirror; } //--------------------------------------------------------------------------------------------------------------------- -int VLayoutPiece::DetailEdgesCount() const +auto VLayoutPiece::DetailEdgesCount() const -> int { return DetailPath().count(); } //--------------------------------------------------------------------------------------------------------------------- -int VLayoutPiece::LayoutEdgesCount() const +auto VLayoutPiece::LayoutEdgesCount() const -> int { - const int count = d->layoutAllowance.count(); + const int count = d->m_layoutAllowance.count(); return count > 2 ? count : 0; } //--------------------------------------------------------------------------------------------------------------------- -QLineF VLayoutPiece::LayoutEdge(int i) const +auto VLayoutPiece::LayoutEdge(int i) const -> QLineF { - return Edge(d->layoutAllowance, i); + return Edge(d->m_layoutAllowance, i); } //--------------------------------------------------------------------------------------------------------------------- -int VLayoutPiece::LayoutEdgeByPoint(const QPointF &p1) const +auto VLayoutPiece::LayoutEdgeByPoint(const QPointF &p1) const -> int { - return EdgeByPoint(d->layoutAllowance, p1); + return EdgeByPoint(d->m_layoutAllowance, p1); } //--------------------------------------------------------------------------------------------------------------------- -QRectF VLayoutPiece::MappedDetailBoundingRect() const +auto VLayoutPiece::MappedDetailBoundingRect() const -> QRectF { - return BoundingRect(GetMappedExternalContourPoints()); + QVector points; + CastTo(GetMappedExternalContourPoints(), points); + return BoundingRect(points); } //--------------------------------------------------------------------------------------------------------------------- -QRectF VLayoutPiece::DetailBoundingRect() const +auto VLayoutPiece::DetailBoundingRect() const -> QRectF { - return BoundingRect(GetExternalContourPoints()); + QVector points; + CastTo(GetExternalContourPoints(), points); + return BoundingRect(points); } //--------------------------------------------------------------------------------------------------------------------- -QRectF VLayoutPiece::MappedLayoutBoundingRect() const +auto VLayoutPiece::MappedLayoutBoundingRect() const -> QRectF { return BoundingRect(GetMappedLayoutAllowancePoints()); } //--------------------------------------------------------------------------------------------------------------------- -qreal VLayoutPiece::Diagonal() const +auto VLayoutPiece::Diagonal() const -> qreal { const QRectF rec = MappedLayoutBoundingRect(); return qSqrt(pow(rec.height(), 2) + pow(rec.width(), 2)); } //--------------------------------------------------------------------------------------------------------------------- -bool VLayoutPiece::isNull() const +auto VLayoutPiece::isNull() const -> bool { - if (d->contour.isEmpty() == false && d->layoutWidth > 0) + if (not d->m_contour.isEmpty() && d->m_layoutWidth > 0) { - if (IsSeamAllowance() && not IsSeamAllowanceBuiltIn() && d->seamAllowance.isEmpty() == false) - { - return false; - } - else - { - return true; - } - } - else - { - return true; + return not (IsSeamAllowance() && not IsSeamAllowanceBuiltIn() && not d->m_seamAllowance.isEmpty()); } + return true; } //--------------------------------------------------------------------------------------------------------------------- -qint64 VLayoutPiece::Square() const +auto VLayoutPiece::Square() const -> qint64 { return d->m_square; } @@ -1214,60 +1245,67 @@ void VLayoutPiece::SetLayoutAllowancePoints() { d->m_square = 0; - if (d->layoutWidth > 0) + if (d->m_layoutWidth > 0) { if (IsSeamAllowance() && not IsSeamAllowanceBuiltIn()) { - d->layoutAllowance = Equidistant(PrepareAllowance(GetMappedSeamAllowancePoints()), d->layoutWidth, - GetName()); - if (not d->layoutAllowance.isEmpty()) + QVector seamAllowancePoints; + CastTo(GetMappedSeamAllowancePoints(), seamAllowancePoints); + CastTo(Equidistant(seamAllowancePoints, d->m_layoutWidth, GetName()), d->m_layoutAllowance); + if (not d->m_layoutAllowance.isEmpty()) { - d->layoutAllowance.removeLast(); + d->m_layoutAllowance.removeLast(); - d->m_square = qFloor(qAbs(SumTrapezoids(GetSeamAllowancePoints())/2.0)); + QVector points; + CastTo(GetSeamAllowancePoints(), points); + d->m_square = qFloor(qAbs(SumTrapezoids(points)/2.0)); } } else { - d->layoutAllowance = Equidistant(PrepareAllowance(GetMappedContourPoints()), d->layoutWidth, GetName()); - if (not d->layoutAllowance.isEmpty()) + QVector seamLinePoints; + CastTo(GetMappedContourPoints(), seamLinePoints); + CastTo(Equidistant(seamLinePoints, d->m_layoutWidth, GetName()), d->m_layoutAllowance); + if (not d->m_layoutAllowance.isEmpty()) { - d->layoutAllowance.removeLast(); + d->m_layoutAllowance.removeLast(); - d->m_square = qFloor(qAbs(SumTrapezoids(GetContourPoints())/2.0)); + QVector points; + CastTo(GetContourPoints(), points); + d->m_square = qFloor(qAbs(SumTrapezoids(points)/2.0)); } } } else { - d->layoutAllowance.clear(); + d->m_layoutAllowance.clear(); } } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetMappedExternalContourPoints() const +auto VLayoutPiece::GetMappedExternalContourPoints() const -> QVector { return IsSeamAllowance() && not IsSeamAllowanceBuiltIn() ? GetMappedSeamAllowancePoints() : GetMappedContourPoints(); } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetExternalContourPoints() const +auto VLayoutPiece::GetExternalContourPoints() const -> QVector { return IsSeamAllowance() && not IsSeamAllowanceBuiltIn() ? GetSeamAllowancePoints() : GetContourPoints(); } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetMappedPassmarks() const +auto VLayoutPiece::GetMappedPassmarks() const -> QVector { - return Map(d->passmarks); + return Map(d->m_passmarks); } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetPassmarks() const +auto VLayoutPiece::GetPassmarks() const -> QVector { - return d->passmarks; + return d->m_passmarks; } //--------------------------------------------------------------------------------------------------------------------- @@ -1275,18 +1313,12 @@ void VLayoutPiece::SetPassmarks(const QVector &passmarks) { if (IsSeamAllowance()) { - d->passmarks = passmarks; + d->m_passmarks = passmarks; } } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetMappedPlaceLabels() const -{ - return Map(d->m_placeLabels); -} - -//--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetPlaceLabels() const +auto VLayoutPiece::GetPlaceLabels() const -> QVector { return d->m_placeLabels; } @@ -1298,9 +1330,10 @@ void VLayoutPiece::SetPlaceLabels(const QVector &labels) } //--------------------------------------------------------------------------------------------------------------------- -QVector > VLayoutPiece::MappedInternalPathsForCut(bool cut) const +auto VLayoutPiece::MappedInternalPathsForCut(bool cut) const -> QVector > { - QVector > paths; + QVector > paths; + paths.reserve(d->m_internalPaths.size()); for (const auto &path : d->m_internalPaths) { @@ -1314,7 +1347,7 @@ QVector > VLayoutPiece::MappedInternalPathsForCut(bool cut) con } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::GetInternalPaths() const +auto VLayoutPiece::GetInternalPaths() const -> QVector { return d->m_internalPaths; } @@ -1326,13 +1359,13 @@ void VLayoutPiece::SetInternalPaths(const QVector &internalPat } //--------------------------------------------------------------------------------------------------------------------- -QPainterPath VLayoutPiece::MappedContourPath() const +auto VLayoutPiece::MappedContourPath() const -> QPainterPath { - return d->matrix.map(ContourPath()); + return d->m_matrix.map(ContourPath()); } //--------------------------------------------------------------------------------------------------------------------- -QPainterPath VLayoutPiece::ContourPath() const +auto VLayoutPiece::ContourPath() const -> QPainterPath { QPainterPath path; @@ -1348,7 +1381,7 @@ QPainterPath VLayoutPiece::ContourPath() const if (not IsSeamAllowanceBuiltIn()) { // Draw seam allowance - QVectorpoints = GetSeamAllowancePoints(); + QVector points = GetSeamAllowancePoints(); if (ConstLast(points).toPoint() != ConstFirst(points).toPoint()) { @@ -1385,7 +1418,7 @@ QPainterPath VLayoutPiece::ContourPath() const } //--------------------------------------------------------------------------------------------------------------------- -QPainterPath VLayoutPiece::MappedLayoutAllowancePath() const +auto VLayoutPiece::MappedLayoutAllowancePath() const -> QPainterPath { return PainterPath(GetMappedLayoutAllowancePoints()); } @@ -1410,7 +1443,7 @@ void VLayoutPiece::DrawMiniature(QPainter &painter) const for (const auto &label : d->m_placeLabels) { - painter.drawPath(VPlaceLabelItem::LabelShapePath(label.shape)); + painter.drawPath(LabelShapePath(label)); } QVector gPoints = GetGrainline(); @@ -1427,14 +1460,14 @@ void VLayoutPiece::DrawMiniature(QPainter &painter) const } //--------------------------------------------------------------------------------------------------------------------- -QGraphicsItem *VLayoutPiece::GetItem(bool textAsPaths) const +auto VLayoutPiece::GetItem(bool textAsPaths) const -> QGraphicsItem * { QGraphicsPathItem *item = GetMainItem(); - for (auto &path : d->m_internalPaths) + for (const auto &path : d->m_internalPaths) { auto* pathItem = new QGraphicsPathItem(item); - pathItem->setPath(d->matrix.map(path.GetPainterPath())); + pathItem->setPath(d->m_matrix.map(path.GetPainterPath())); QPen pen = pathItem->pen(); pen.setStyle(path.PenStyle()); @@ -1448,25 +1481,28 @@ QGraphicsItem *VLayoutPiece::GetItem(bool textAsPaths) const QPen pen = pathItem->pen(); pen.setWidthF(VAbstractApplication::VApp()->Settings()->WidthHairLine()); pathItem->setPen(pen); - pathItem->setPath(d->matrix.map(VPlaceLabelItem::LabelShapePath(label.shape))); + pathItem->setPath(d->m_matrix.map(LabelShapePath(PlaceLabelShape(label)))); } - CreateLabelStrings(item, d->detailLabel, d->m_tmDetail, textAsPaths); - CreateLabelStrings(item, d->patternInfo, d->m_tmPattern, textAsPaths); + CreateLabelStrings(item, d->m_detailLabel, d->m_tmDetail, textAsPaths); + CreateLabelStrings(item, d->m_patternInfo, d->m_tmPattern, textAsPaths); CreateGrainlineItem(item); return item; } //--------------------------------------------------------------------------------------------------------------------- -bool VLayoutPiece::IsLayoutAllowanceValid() const +auto VLayoutPiece::IsLayoutAllowanceValid() const -> bool { - QVector base = (IsSeamAllowance() && not IsSeamAllowanceBuiltIn()) ? d->seamAllowance : d->contour; - return VAbstractPiece::IsAllowanceValid(base, d->layoutAllowance); + QVector base = (IsSeamAllowance() && not IsSeamAllowanceBuiltIn()) ? + d->m_seamAllowance : d->m_contour; + QVector points; + CastTo(base, points); + return VAbstractPiece::IsAllowanceValid(points, d->m_layoutAllowance); } //--------------------------------------------------------------------------------------------------------------------- -qreal VLayoutPiece::BiggestEdge() const +auto VLayoutPiece::BiggestEdge() const -> qreal { qreal edge = 0; @@ -1487,8 +1523,20 @@ qreal VLayoutPiece::BiggestEdge() const return edge; } + //--------------------------------------------------------------------------------------------------------------------- -QRectF VLayoutPiece::BoundingRect(QVector points) +auto VLayoutPiece::MapPlaceLabelShape(PlaceLabelImg shape) const -> PlaceLabelImg +{ + for (auto & i : shape) + { + i = Map(i); + } + + return shape; +} + +//--------------------------------------------------------------------------------------------------------------------- +auto VLayoutPiece::BoundingRect(QVector points) -> QRectF { points.append(ConstFirst(points)); return QPolygonF(points).boundingRect(); @@ -1500,93 +1548,94 @@ void VLayoutPiece::CreateLabelStrings(QGraphicsItem *parent, const QVector 2) + if (labelShape.count() <= 2) { - const qreal dW = QLineF(labelShape.at(0), labelShape.at(1)).length(); - const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length(); - const qreal angle = - QLineF(labelShape.at(0), labelShape.at(1)).angle(); - qreal dY = 0; + return; + } - for (int i = 0; i < tm.GetSourceLinesCount(); ++i) + const qreal dW = QLineF(labelShape.at(0), labelShape.at(1)).length(); + const qreal dH = QLineF(labelShape.at(1), labelShape.at(2)).length(); + const qreal angle = - QLineF(labelShape.at(0), labelShape.at(1)).angle(); + qreal dY = 0; + + for (int i = 0; i < tm.GetSourceLinesCount(); ++i) + { + const TextLine& tl = tm.GetSourceLine(i); + QFont fnt = tm.GetFont(); + fnt.setPixelSize(tm.GetFont().pixelSize() + tl.m_iFontSize); + fnt.setBold(tl.m_bold); + fnt.setItalic(tl.m_italic); + + QFontMetrics fm(fnt); + + if (textAsPaths) { + dY += fm.height(); + } - const TextLine& tl = tm.GetSourceLine(i); - QFont fnt = tm.GetFont(); - fnt.setPixelSize(tm.GetFont().pixelSize() + tl.m_iFontSize); - fnt.setBold(tl.m_bold); - fnt.setItalic(tl.m_italic); + if (dY > dH) + { + break; + } - QFontMetrics fm(fnt); + QString qsText = tl.m_qsText; + if (TextWidth(fm, qsText) > dW) + { + qsText = fm.elidedText(qsText, Qt::ElideMiddle, static_cast(dW)); + } - if (textAsPaths) - { - dY += fm.height(); - } + qreal dX = 0; + if (tl.m_eAlign == 0 || (tl.m_eAlign & Qt::AlignLeft) > 0) + { + dX = 0; + } + else if ((tl.m_eAlign & Qt::AlignHCenter) > 0) + { + dX = (dW - TextWidth(fm, qsText))/2; + } + else if ((tl.m_eAlign & Qt::AlignRight) > 0) + { + dX = dW - TextWidth(fm, qsText); + } - if (dY > dH) - { - break; - } + // set up the rotation around top-left corner matrix + QTransform labelMatrix; + labelMatrix.translate(labelShape.at(0).x(), labelShape.at(0).y()); + if (d->m_mirror) + { + labelMatrix.scale(-1, 1); + labelMatrix.rotate(-angle); + labelMatrix.translate(-dW, 0); + labelMatrix.translate(dX, dY); // Each string has own position + } + else + { + labelMatrix.rotate(angle); + labelMatrix.translate(dX, dY); // Each string has own position + } - QString qsText = tl.m_qsText; - if (TextWidth(fm, qsText) > dW) - { - qsText = fm.elidedText(qsText, Qt::ElideMiddle, static_cast(dW)); - } + labelMatrix *= d->m_matrix; - qreal dX = 0; - if (tl.m_eAlign == 0 || (tl.m_eAlign & Qt::AlignLeft) > 0) - { - dX = 0; - } - else if ((tl.m_eAlign & Qt::AlignHCenter) > 0) - { - dX = (dW - TextWidth(fm, qsText))/2; - } - else if ((tl.m_eAlign & Qt::AlignRight) > 0) - { - dX = dW - TextWidth(fm, qsText); - } + if (textAsPaths) + { + QPainterPath path; + path.addText(0, - static_cast(fm.ascent())/6., fnt, qsText); - // set up the rotation around top-left corner matrix - QTransform labelMatrix; - labelMatrix.translate(labelShape.at(0).x(), labelShape.at(0).y()); - if (d->mirror) - { - labelMatrix.scale(-1, 1); - labelMatrix.rotate(-angle); - labelMatrix.translate(-dW, 0); - labelMatrix.translate(dX, dY); // Each string has own position - } - else - { - labelMatrix.rotate(angle); - labelMatrix.translate(dX, dY); // Each string has own position - } + auto* item = new QGraphicsPathItem(parent); + item->setPath(path); + item->setBrush(QBrush(Qt::black)); + item->setTransform(labelMatrix); - labelMatrix *= d->matrix; + dY += tm.GetSpacing(); + } + else + { + auto* item = new QGraphicsSimpleTextItem(parent); + item->setFont(fnt); + item->setText(qsText); + item->setTransform(labelMatrix); - if (textAsPaths) - { - QPainterPath path; - path.addText(0, - static_cast(fm.ascent())/6., fnt, qsText); - - auto* item = new QGraphicsPathItem(parent); - item->setPath(path); - item->setBrush(QBrush(Qt::black)); - item->setTransform(labelMatrix); - - dY += tm.GetSpacing(); - } - else - { - auto* item = new QGraphicsSimpleTextItem(parent); - item->setFont(fnt); - item->setText(qsText); - item->setTransform(labelMatrix); - - dY += (fm.height() + tm.GetSpacing()); - } + dY += (fm.height() + tm.GetSpacing()); } } } @@ -1596,7 +1645,7 @@ void VLayoutPiece::CreateGrainlineItem(QGraphicsItem *parent) const { SCASSERT(parent != nullptr) - if (not d->grainlineEnabled || d->grainlinePoints.count() < 2) + if (not d->m_grainlineEnabled || d->m_grainlinePoints.count() < 2) { return; } @@ -1615,22 +1664,20 @@ void VLayoutPiece::CreateGrainlineItem(QGraphicsItem *parent) const } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiece::DetailPath() const +auto VLayoutPiece::DetailPath() const -> QVector { if (IsSeamAllowance() && not IsSeamAllowanceBuiltIn()) { - return d->seamAllowance; - } - else - { - return d->contour; + return d->m_seamAllowance; } + + return d->m_contour; } //--------------------------------------------------------------------------------------------------------------------- -QGraphicsPathItem *VLayoutPiece::GetMainItem() const +auto VLayoutPiece::GetMainItem() const -> QGraphicsPathItem * { - QGraphicsPathItem *item = new QGraphicsPathItem(); + auto *item = new QGraphicsPathItem(); QPen pen = item->pen(); pen.setWidthF(VAbstractApplication::VApp()->Settings()->WidthHairLine()); item->setPen(pen); @@ -1639,9 +1686,9 @@ QGraphicsPathItem *VLayoutPiece::GetMainItem() const } //--------------------------------------------------------------------------------------------------------------------- -QGraphicsPathItem *VLayoutPiece::GetMainPathItem() const +auto VLayoutPiece::GetMainPathItem() const -> QGraphicsPathItem * { - QGraphicsPathItem *item = new QGraphicsPathItem(); + auto *item = new QGraphicsPathItem(); QPen pen = item->pen(); pen.setWidthF(VAbstractApplication::VApp()->Settings()->WidthHairLine()); item->setPen(pen); @@ -1649,7 +1696,7 @@ QGraphicsPathItem *VLayoutPiece::GetMainPathItem() const QPainterPath path; // contour - QVector points = GetMappedContourPoints(); + QVector points = GetMappedContourPoints(); path.moveTo(points.at(0)); for (qint32 i = 1; i < points.count(); ++i) @@ -1663,15 +1710,15 @@ QGraphicsPathItem *VLayoutPiece::GetMainPathItem() const } //--------------------------------------------------------------------------------------------------------------------- -bool VLayoutPiece::IsMirror() const +auto VLayoutPiece::IsMirror() const -> bool { - return d->mirror; + return d->m_mirror; } //--------------------------------------------------------------------------------------------------------------------- void VLayoutPiece::SetMirror(bool value) { - d->mirror = value; + d->m_mirror = value; } //--------------------------------------------------------------------------------------------------------------------- @@ -1711,11 +1758,11 @@ void VLayoutPiece::SetYScale(qreal ys) } //--------------------------------------------------------------------------------------------------------------------- -QLineF VLayoutPiece::Edge(const QVector &path, int i) const +auto VLayoutPiece::Edge(const QVector &path, int i) const -> QLineF { if (i < 1) { // Doesn't exist such edge - return QLineF(); + return {}; } int i1, i2; @@ -1730,20 +1777,17 @@ QLineF VLayoutPiece::Edge(const QVector &path, int i) const i2 = 0; } - if (d->mirror) + if (d->m_mirror) { QVector newPath = Map(path); - return QLineF(newPath.at(i1), newPath.at(i2)); - } - else - { - return QLineF(d->matrix.map(path.at(i1)), d->matrix.map(path.at(i2))); + return {newPath.at(i1), newPath.at(i2)}; } + return {d->m_matrix.map(path.at(i1)), d->m_matrix.map(path.at(i2))}; } //--------------------------------------------------------------------------------------------------------------------- // NOTE: Once C++17 is made mandatory, this method can further be refactored with std::optional -int VLayoutPiece::EdgeByPoint(const QVector &path, const QPointF &p1) const +auto VLayoutPiece::EdgeByPoint(const QVector &path, const QPointF &p1) const -> int { if (p1.isNull() || path.count() < 3) { @@ -1751,8 +1795,8 @@ int VLayoutPiece::EdgeByPoint(const QVector &path, const QPointF &p1) c } const auto points = Map(path); - const auto posIter = std::find_if(points.cbegin(), points.cend(), - [&p1](const QPointF &point){ return VFuzzyComparePoints(point, p1); }); + const auto *const posIter = std::find_if(points.cbegin(), points.cend(), + [&p1](const QPointF &point){ return VFuzzyComparePoints(point, p1); }); if (posIter != points.cend()) { return static_cast(posIter - points.cbegin() + 1); diff --git a/src/libs/vlayout/vlayoutpiece.h b/src/libs/vlayout/vlayoutpiece.h index 89b504d7f..6a1ff8e2b 100644 --- a/src/libs/vlayout/vlayoutpiece.h +++ b/src/libs/vlayout/vlayoutpiece.h @@ -55,6 +55,7 @@ class VPiece; class VPieceLabelData; class VAbstractPattern; class VPatternLabelData; +class VLayoutPoint; QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Wsuggest-final-types") @@ -67,75 +68,74 @@ public: VLayoutPiece(); VLayoutPiece(const VLayoutPiece &detail); - virtual ~VLayoutPiece() override; + ~VLayoutPiece() override; - VLayoutPiece &operator=(const VLayoutPiece &detail); + auto operator=(const VLayoutPiece &detail) -> VLayoutPiece &; #ifdef Q_COMPILER_RVALUE_REFS VLayoutPiece(VLayoutPiece &&detail) Q_DECL_NOTHROW; - VLayoutPiece &operator=(VLayoutPiece &&detail) Q_DECL_NOTHROW; + auto operator=(VLayoutPiece &&detail) Q_DECL_NOTHROW -> VLayoutPiece &; #endif - static VLayoutPiece Create(const VPiece &piece, vidtype id, const VContainer *pattern); + static auto Create(const VPiece &piece, vidtype id, const VContainer *pattern) -> VLayoutPiece; - virtual auto GetUniqueID() const -> QString override; + auto GetUniqueID() const -> QString override; - QVector GetMappedContourPoints() const; - QVector GetContourPoints() const; - void SetCountourPoints(const QVector &points, bool hideMainPath = false); + auto GetMappedContourPoints() const -> QVector; + auto GetContourPoints() const -> QVector; + void SetCountourPoints(const QVector &points, bool hideMainPath = false); - QVector GetMappedSeamAllowancePoints() const; - QVector GetSeamAllowancePoints() const; - void SetSeamAllowancePoints(const QVector &points, bool seamAllowance = true, + auto GetMappedSeamAllowancePoints() const -> QVector; + auto GetSeamAllowancePoints() const -> QVector; + void SetSeamAllowancePoints(const QVector &points, bool seamAllowance = true, bool seamAllowanceBuiltIn = false); - QVector GetMappedLayoutAllowancePoints() const; - QVector GetLayoutAllowancePoints() const; + auto GetMappedLayoutAllowancePoints() const -> QVector; + auto GetLayoutAllowancePoints() const -> QVector; void SetLayoutAllowancePoints(); - QVector GetMappedExternalContourPoints() const; - QVector GetExternalContourPoints() const; + auto GetMappedExternalContourPoints() const -> QVector; + auto GetExternalContourPoints() const -> QVector; - QVector GetMappedPassmarks() const; - QVector GetPassmarks() const; + auto GetMappedPassmarks() const -> QVector; + auto GetPassmarks() const -> QVector; void SetPassmarks(const QVector &passmarks); - QVector GetMappedPlaceLabels() const; - QVector GetPlaceLabels() const; + auto GetPlaceLabels() const -> QVector; void SetPlaceLabels(const QVector &labels); - QVector> MappedInternalPathsForCut(bool cut) const; - QVector GetInternalPaths() const; + auto MappedInternalPathsForCut(bool cut) const -> QVector >; + auto GetInternalPaths() const -> QVector; void SetInternalPaths(const QVector &internalPaths); - QPointF GetPieceTextPosition() const; - QStringList GetPieceText() const; + auto GetPieceTextPosition() const -> QPointF; + auto GetPieceText() const -> QStringList; void SetPieceText(const QString &qsName, const VPieceLabelData& data, const QFont& font, const VContainer *pattern); - QPointF GetPatternTextPosition() const; - QStringList GetPatternText() const; + auto GetPatternTextPosition() const -> QPointF; + auto GetPatternText() const -> QStringList; void SetPatternInfo(VAbstractPattern *pDoc, const VPatternLabelData& geom, const QFont& font, const VContainer *pattern); void SetGrainline(const VGrainlineData& geom, const VContainer *pattern); - QVector GetMappedGrainline() const; - QVector GetGrainline() const; - bool IsGrainlineEnabled() const; - qreal GrainlineAngle() const; - GrainlineArrowDirection GrainlineArrowType() const; + auto GetMappedGrainline() const -> QVector; + auto GetGrainline() const -> QVector; + auto IsGrainlineEnabled() const -> bool; + auto GrainlineAngle() const -> qreal; + auto GrainlineArrowType() const -> GrainlineArrowDirection; - QTransform GetMatrix() const; - void SetMatrix(const QTransform &matrix); + auto GetMatrix() const -> QTransform; + void SetMatrix(const QTransform &matrix); - qreal GetLayoutWidth() const; - void SetLayoutWidth(qreal value); + auto GetLayoutWidth() const -> qreal; + void SetLayoutWidth(qreal value); - quint16 GetQuantity() const; - void SetQuantity(quint16 value); + auto GetQuantity() const -> quint16; + void SetQuantity(quint16 value); - vidtype GetId() const; - void SetId(vidtype id); + auto GetId() const -> vidtype; + void SetId(vidtype id); - bool IsMirror() const; + auto IsMirror() const -> bool; void SetMirror(bool value); void SetGradationId(const QString &id); @@ -154,36 +154,38 @@ public: void Mirror(const QLineF &edge); void Mirror(); - int DetailEdgesCount() const; - int LayoutEdgesCount() const; + auto DetailEdgesCount() const -> int; + auto LayoutEdgesCount() const -> int; - QLineF LayoutEdge(int i) const; - int LayoutEdgeByPoint(const QPointF &p1) const; + auto LayoutEdge(int i) const -> QLineF; + auto LayoutEdgeByPoint(const QPointF &p1) const -> int; - QRectF MappedDetailBoundingRect() const; - QRectF DetailBoundingRect() const; - QRectF MappedLayoutBoundingRect() const; - qreal Diagonal() const; + auto MappedDetailBoundingRect() const -> QRectF; + auto DetailBoundingRect() const -> QRectF; + auto MappedLayoutBoundingRect() const -> QRectF; + auto Diagonal() const -> qreal; - static QRectF BoundingRect(QVector points); + static auto BoundingRect(QVector points) -> QRectF; - bool isNull() const; - qint64 Square() const; + auto isNull() const -> bool; + auto Square() const -> qint64; - QPainterPath MappedContourPath() const; - QPainterPath ContourPath() const; - QPainterPath MappedLayoutAllowancePath() const; + auto MappedContourPath() const -> QPainterPath; + auto ContourPath() const -> QPainterPath; + auto MappedLayoutAllowancePath() const -> QPainterPath; void DrawMiniature(QPainter &painter) const; - Q_REQUIRED_RESULT QGraphicsItem *GetItem(bool textAsPaths) const; + Q_REQUIRED_RESULT auto GetItem(bool textAsPaths) const -> QGraphicsItem *; - bool IsLayoutAllowanceValid() const; + auto IsLayoutAllowanceValid() const -> bool; - qreal BiggestEdge() const; + auto BiggestEdge() const -> qreal; - friend QDataStream& operator<< (QDataStream& dataStream, const VLayoutPiece& piece); - friend QDataStream& operator>> (QDataStream& dataStream, VLayoutPiece& piece); + friend auto operator<< (QDataStream& dataStream, const VLayoutPiece& piece) -> QDataStream&; + friend auto operator>> (QDataStream& dataStream, VLayoutPiece& piece) -> QDataStream&; + + auto MapPlaceLabelShape(PlaceLabelImg shape) const -> PlaceLabelImg; protected: void SetGrainlineEnabled(bool enabled); @@ -206,20 +208,20 @@ protected: private: QSharedDataPointer d; - QVector DetailPath() const; + auto DetailPath() const -> QVector; - Q_REQUIRED_RESULT QGraphicsPathItem *GetMainItem() const; - Q_REQUIRED_RESULT QGraphicsPathItem *GetMainPathItem() const; + Q_REQUIRED_RESULT auto GetMainItem() const -> QGraphicsPathItem *; + Q_REQUIRED_RESULT auto GetMainPathItem() const -> QGraphicsPathItem *; void CreateLabelStrings(QGraphicsItem *parent, const QVector &labelShape, const VTextManager &tm, bool textAsPaths) const; void CreateGrainlineItem(QGraphicsItem *parent) const; template - QVector Map(QVector points) const; + auto Map(QVector points) const -> QVector; - QLineF Edge(const QVector &path, int i) const; - int EdgeByPoint(const QVector &path, const QPointF &p1) const; + auto Edge(const QVector &path, int i) const -> QLineF; + auto EdgeByPoint(const QVector &path, const QPointF &p1) const -> int; }; QT_WARNING_POP diff --git a/src/libs/vlayout/vlayoutpiece_p.h b/src/libs/vlayout/vlayoutpiece_p.h index fe9476c56..f42e10a19 100644 --- a/src/libs/vlayout/vlayoutpiece_p.h +++ b/src/libs/vlayout/vlayoutpiece_p.h @@ -34,9 +34,7 @@ #include #include -#include "../vpatterndb/floatItemData/vpiecelabeldata.h" -#include "../vpatterndb/floatItemData/vpatternlabeldata.h" -#include "../vpatterndb/floatItemData/vgrainlinedata.h" +#include "../vpatterndb/floatItemData/floatitemdef.h" #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "../vmisc/diagnostic.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) @@ -47,6 +45,8 @@ #include "../vgeometry/vgeometrydef.h" #include "vtextmanager.h" #include "../ifc/exception/vexception.h" +#include "vlayoutpoint.h" +#include "vlayoutplacelabel.h" QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") @@ -55,126 +55,99 @@ QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") class VLayoutPieceData : public QSharedData { public: - VLayoutPieceData() - {} - - VLayoutPieceData(const VLayoutPieceData &detail) - : QSharedData(detail), - contour(detail.contour), - seamAllowance(detail.seamAllowance), - layoutAllowance(detail.layoutAllowance), - passmarks(detail.passmarks), - m_internalPaths(detail.m_internalPaths), - matrix(detail.matrix), - layoutWidth(detail.layoutWidth), - mirror(detail.mirror), - detailLabel(detail.detailLabel), - patternInfo(detail.patternInfo), - grainlinePoints(detail.grainlinePoints), - grainlineArrowType(detail.grainlineArrowType), - grainlineAngle(detail.grainlineAngle), - grainlineEnabled(detail.grainlineEnabled), - m_tmDetail(detail.m_tmDetail), - m_tmPattern(detail.m_tmPattern), - m_placeLabels(detail.m_placeLabels), - m_square(detail.m_square), - m_quantity(detail.m_quantity), - m_id(detail.m_id), - m_gradationId(detail.m_gradationId), - m_xScale(detail.m_xScale), - m_yScale(detail.m_yScale) - {} + VLayoutPieceData(){} // NOLINT(modernize-use-equals-default) + VLayoutPieceData(const VLayoutPieceData &detail) = default; ~VLayoutPieceData() = default; - friend QDataStream& operator<<(QDataStream& dataStream, const VLayoutPieceData& piece); - friend QDataStream& operator>>(QDataStream& dataStream, VLayoutPieceData& piece); + friend auto operator<<(QDataStream& dataStream, const VLayoutPieceData& piece) -> QDataStream&; + friend auto operator>>(QDataStream& dataStream, VLayoutPieceData& piece) -> QDataStream&; /** @brief contour list of contour points. */ - QVector contour{}; + QVector m_contour{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief seamAllowance list of seam allowance points. */ - QVector seamAllowance{}; + QVector m_seamAllowance{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief layoutAllowance list of layout allowance points. */ - QVector layoutAllowance{}; + QVector m_layoutAllowance{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief passmarks list of passmakrs. */ - QVector passmarks{}; + QVector m_passmarks{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief m_internalPaths list of internal paths. */ - QVector m_internalPaths{}; + QVector m_internalPaths{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief matrix transformation matrix*/ - QTransform matrix{}; + QTransform m_matrix{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief layoutWidth value layout allowance width in pixels. */ - qreal layoutWidth{0}; + qreal m_layoutWidth{0}; // NOLINT(misc-non-private-member-variables-in-classes) - bool mirror{false}; + bool m_mirror{false}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief detailLabel detail label rectangle */ - QVector detailLabel{}; + QVector m_detailLabel{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief patternInfo pattern info rectangle */ - QVector patternInfo{}; + QVector m_patternInfo{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief grainlineInfo line */ - QVector grainlinePoints{}; + QVector m_grainlinePoints{}; // NOLINT(misc-non-private-member-variables-in-classes) - GrainlineArrowDirection grainlineArrowType{GrainlineArrowDirection::atFront}; - qreal grainlineAngle{0}; - bool grainlineEnabled{false}; + GrainlineArrowDirection m_grainlineArrowType{GrainlineArrowDirection::atFront}; // NOLINT(misc-non-private-member-variables-in-classes) + qreal m_grainlineAngle{0}; // NOLINT(misc-non-private-member-variables-in-classes) + bool m_grainlineEnabled{false}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief m_tmDetail text manager for laying out detail info */ - VTextManager m_tmDetail{}; + VTextManager m_tmDetail{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief m_tmPattern text manager for laying out pattern info */ - VTextManager m_tmPattern{}; + VTextManager m_tmPattern{}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief m_placeLabels list of place labels. */ - QVector m_placeLabels{}; + QVector m_placeLabels{}; // NOLINT(misc-non-private-member-variables-in-classes) - qint64 m_square{0}; + qint64 m_square{0}; // NOLINT(misc-non-private-member-variables-in-classes) - quint16 m_quantity{1}; + quint16 m_quantity{1}; // NOLINT(misc-non-private-member-variables-in-classes) /** @brief m_id keep id of original piece. */ - vidtype m_id; + vidtype m_id{NULL_ID}; // NOLINT(misc-non-private-member-variables-in-classes) - QString m_gradationId{}; + QString m_gradationId{}; // NOLINT(misc-non-private-member-variables-in-classes) - qreal m_xScale{1.0}; - qreal m_yScale{1.0}; + qreal m_xScale{1.0}; // NOLINT(misc-non-private-member-variables-in-classes) + qreal m_yScale{1.0}; // NOLINT(misc-non-private-member-variables-in-classes) private: - Q_DISABLE_ASSIGN(VLayoutPieceData) + Q_DISABLE_ASSIGN_MOVE(VLayoutPieceData) // NOLINT - static const quint32 streamHeader; - static const quint16 classVersion; + static constexpr quint32 streamHeader{0x80D7D009}; // CRC-32Q string "VLayoutPieceData" + static constexpr quint16 classVersion{4}; }; // Friend functions //--------------------------------------------------------------------------------------------------------------------- -inline QDataStream &operator<<(QDataStream &dataStream, const VLayoutPieceData &piece) +inline auto operator<<(QDataStream &dataStream, const VLayoutPieceData &piece) -> QDataStream & { dataStream << VLayoutPieceData::streamHeader << VLayoutPieceData::classVersion; // Added in classVersion = 1 - dataStream << piece.contour; - dataStream << piece.seamAllowance; - dataStream << piece.layoutAllowance; - dataStream << piece.passmarks; + dataStream << piece.m_contour; + dataStream << piece.m_seamAllowance; + dataStream << piece.m_layoutAllowance; + dataStream << piece.m_passmarks; dataStream << piece.m_internalPaths; - dataStream << piece.matrix; - dataStream << piece.layoutWidth; - dataStream << piece.mirror; - dataStream << piece.detailLabel; - dataStream << piece.patternInfo; - dataStream << piece.grainlinePoints; - dataStream << piece.grainlineArrowType; - dataStream << piece.grainlineAngle; - dataStream << piece.grainlineEnabled; + dataStream << piece.m_matrix; + dataStream << piece.m_layoutWidth; + dataStream << piece.m_mirror; + dataStream << piece.m_detailLabel; + dataStream << piece.m_patternInfo; + dataStream << piece.m_grainlinePoints; + dataStream << piece.m_grainlineArrowType; + dataStream << piece.m_grainlineAngle; + dataStream << piece.m_grainlineEnabled; dataStream << piece.m_placeLabels; dataStream << piece.m_square; @@ -193,7 +166,7 @@ inline QDataStream &operator<<(QDataStream &dataStream, const VLayoutPieceData & } //--------------------------------------------------------------------------------------------------------------------- -inline QDataStream &operator>>(QDataStream &dataStream, VLayoutPieceData &piece) +inline auto operator>>(QDataStream &dataStream, VLayoutPieceData &piece) -> QDataStream & { quint32 actualStreamHeader = 0; dataStream >> actualStreamHeader; @@ -218,20 +191,37 @@ inline QDataStream &operator>>(QDataStream &dataStream, VLayoutPieceData &piece) throw VException(message); } - dataStream >> piece.contour; - dataStream >> piece.seamAllowance; - dataStream >> piece.layoutAllowance; - dataStream >> piece.passmarks; + if (actualClassVersion < 4) + { + auto ReadPoints = [&dataStream]() + { + QVector points; + dataStream >> points; + QVector casted; + CastTo(points, casted); + return casted; + }; + + piece.m_contour = ReadPoints(); + piece.m_seamAllowance = ReadPoints(); + } + else + { + dataStream >> piece.m_contour; + dataStream >> piece.m_seamAllowance; + } + dataStream >> piece.m_layoutAllowance; + dataStream >> piece.m_passmarks; dataStream >> piece.m_internalPaths; - dataStream >> piece.matrix; - dataStream >> piece.layoutWidth; - dataStream >> piece.mirror; - dataStream >> piece.detailLabel; - dataStream >> piece.patternInfo; - dataStream >> piece.grainlinePoints; - dataStream >> piece.grainlineArrowType; - dataStream >> piece.grainlineAngle; - dataStream >> piece.grainlineEnabled; + dataStream >> piece.m_matrix; + dataStream >> piece.m_layoutWidth; + dataStream >> piece.m_mirror; + dataStream >> piece.m_detailLabel; + dataStream >> piece.m_patternInfo; + dataStream >> piece.m_grainlinePoints; + dataStream >> piece.m_grainlineArrowType; + dataStream >> piece.m_grainlineAngle; + dataStream >> piece.m_grainlineEnabled; dataStream >> piece.m_placeLabels; dataStream >> piece.m_square; diff --git a/src/libs/vlayout/vlayoutpiecepath.cpp b/src/libs/vlayout/vlayoutpiecepath.cpp index db6e844ed..5a90d3465 100644 --- a/src/libs/vlayout/vlayoutpiecepath.cpp +++ b/src/libs/vlayout/vlayoutpiecepath.cpp @@ -28,13 +28,9 @@ #include "vlayoutpiecepath.h" #include "vlayoutpiecepath_p.h" -#include "vlayoutdef.h" #include -const quint32 VLayoutPiecePathData::streamHeader = 0xA53F0225; // CRC-32Q string "VLayoutPiecePathData" -const quint16 VLayoutPiecePathData::classVersion = 1; - // Friend functions //--------------------------------------------------------------------------------------------------------------------- QDataStream &operator<<(QDataStream &dataStream, const VLayoutPiecePath &path) @@ -57,7 +53,7 @@ VLayoutPiecePath::VLayoutPiecePath() } //--------------------------------------------------------------------------------------------------------------------- -VLayoutPiecePath::VLayoutPiecePath(const QVector &points) +VLayoutPiecePath::VLayoutPiecePath(const QVector &points) : d(new VLayoutPiecePathData(points)) { } @@ -104,20 +100,22 @@ QPainterPath VLayoutPiecePath::GetPainterPath() const QPainterPath path; if (not d->m_points.isEmpty()) { - path.addPolygon(QPolygonF(d->m_points)); + QVector points; + CastTo(d->m_points, points); + path.addPolygon(QPolygonF(points)); path.setFillRule(Qt::WindingFill); } return path; } //--------------------------------------------------------------------------------------------------------------------- -QVector VLayoutPiecePath::Points() const +QVector VLayoutPiecePath::Points() const { return d->m_points; } //--------------------------------------------------------------------------------------------------------------------- -void VLayoutPiecePath::SetPoints(const QVector &points) +void VLayoutPiecePath::SetPoints(const QVector &points) { d->m_points = points; } diff --git a/src/libs/vlayout/vlayoutpiecepath.h b/src/libs/vlayout/vlayoutpiecepath.h index bf035b908..6a2394146 100644 --- a/src/libs/vlayout/vlayoutpiecepath.h +++ b/src/libs/vlayout/vlayoutpiecepath.h @@ -29,6 +29,7 @@ #ifndef VLAYOUTPIECEPATH_H #define VLAYOUTPIECEPATH_H +#include "vlayoutpoint.h" #include #include #include @@ -40,7 +41,7 @@ class VLayoutPiecePath { public: VLayoutPiecePath(); - explicit VLayoutPiecePath(const QVector &points); + explicit VLayoutPiecePath(const QVector &points); VLayoutPiecePath(const VLayoutPiecePath &path); virtual ~VLayoutPiecePath(); @@ -53,8 +54,8 @@ public: QPainterPath GetPainterPath() const; - QVector Points() const; - void SetPoints(const QVector &points); + QVector Points() const; + void SetPoints(const QVector &points); Qt::PenStyle PenStyle() const; void SetPenStyle(const Qt::PenStyle &penStyle); diff --git a/src/libs/vlayout/vlayoutpiecepath_p.h b/src/libs/vlayout/vlayoutpiecepath_p.h index 9bd6513ab..0bfdbcdfc 100644 --- a/src/libs/vlayout/vlayoutpiecepath_p.h +++ b/src/libs/vlayout/vlayoutpiecepath_p.h @@ -41,6 +41,7 @@ # include "../vmisc/vdatastreamenum.h" #endif #include "../ifc/exception/vexception.h" +#include "vlayoutpoint.h" QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") @@ -52,24 +53,18 @@ public: VLayoutPiecePathData() {} - explicit VLayoutPiecePathData(const QVector &points) + explicit VLayoutPiecePathData(const QVector &points) : m_points(points) {} - VLayoutPiecePathData(const VLayoutPiecePathData &path) - : QSharedData(path), - m_points(path.m_points), - m_penStyle(path.m_penStyle), - m_cut(path.m_cut) - {} - + VLayoutPiecePathData(const VLayoutPiecePathData &path) = default; ~VLayoutPiecePathData() = default; friend QDataStream& operator<<(QDataStream& dataStream, const VLayoutPiecePathData& path); friend QDataStream& operator>>(QDataStream& dataStream, VLayoutPiecePathData& path); /** @brief m_points list of path points. */ - QVector m_points{}; + QVector m_points{}; /** @brief m_penStyle path pen style. */ Qt::PenStyle m_penStyle{Qt::SolidLine}; @@ -79,8 +74,8 @@ public: private: Q_DISABLE_ASSIGN(VLayoutPiecePathData) - static const quint32 streamHeader; - static const quint16 classVersion; + static constexpr quint32 streamHeader = 0xA53F0225; // CRC-32Q string "VLayoutPiecePathData" + static constexpr quint16 classVersion = 2; }; QT_WARNING_POP @@ -127,7 +122,16 @@ QDataStream& operator>>(QDataStream &dataStream, VLayoutPiecePathData &path) throw VException(message); } - dataStream >> path.m_points; + if (actualClassVersion == 1) + { + QVector points; + dataStream >> points; + CastTo(points, path.m_points); + } + else + { + dataStream >> path.m_points; + } dataStream >> path.m_penStyle; dataStream >> path.m_cut; diff --git a/src/libs/vlayout/vlayoutpoint.cpp b/src/libs/vlayout/vlayoutpoint.cpp new file mode 100644 index 000000000..53dafc888 --- /dev/null +++ b/src/libs/vlayout/vlayoutpoint.cpp @@ -0,0 +1,52 @@ +/************************************************************************ + ** + ** @file vlayoutpoint.cpp + ** @author Roman Telezhynskyi + ** @date 17 10, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2022 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ + +#include "vlayoutpoint.h" + +#include + +//--------------------------------------------------------------------------------------------------------------------- +auto VLayoutPoint::toJson() const -> QJsonObject +{ + QJsonObject pointObject; + pointObject[QLatin1String("type")] = "VLayoutPoint"; + pointObject[QLatin1String("x")] = x(); + pointObject[QLatin1String("y")] = y(); + + if (m_turnPoint) + { + pointObject[QLatin1String("turnPoint")] = m_turnPoint; + } + + if (m_curvePoint) + { + pointObject[QLatin1String("curvePoint")] = m_curvePoint; + } + + return pointObject; +} diff --git a/src/libs/vlayout/vlayoutpoint.h b/src/libs/vlayout/vlayoutpoint.h new file mode 100644 index 000000000..3b7b91682 --- /dev/null +++ b/src/libs/vlayout/vlayoutpoint.h @@ -0,0 +1,146 @@ +/************************************************************************ + ** + ** @file vlayoutpoint.h + ** @author Roman Telezhynskyi + ** @date 8 10, 2022 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2022 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#ifndef VLAYOUTPOINT_H +#define VLAYOUTPOINT_H + +#include +#include +#include +#include + +#if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) +#include "../vmisc/diagnostic.h" +#endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) + +QT_WARNING_PUSH +QT_WARNING_DISABLE_GCC("-Weffc++") +QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") +QT_WARNING_DISABLE_CLANG("-Wnon-virtual-dtor") + +class VLayoutPoint : public QPointF +{ +public: + Q_DECL_CONSTEXPR VLayoutPoint() = default; + Q_DECL_CONSTEXPR VLayoutPoint(qreal xpos, qreal ypos); + Q_DECL_CONSTEXPR explicit VLayoutPoint(QPointF p); + + Q_DECL_CONSTEXPR auto TurnPoint() const -> bool; + Q_DECL_CONSTEXPR auto CurvePoint() const -> bool; + + Q_DECL_RELAXED_CONSTEXPR void SetTurnPoint(bool newTurnPoint); + Q_DECL_RELAXED_CONSTEXPR void SetCurvePoint(bool newCurvePoint); + + virtual auto toJson() const -> QJsonObject; + +private: + bool m_turnPoint{false}; + bool m_curvePoint{false}; +}; + +Q_DECLARE_METATYPE(VLayoutPoint) // NOLINT +Q_DECLARE_TYPEINFO(VLayoutPoint, Q_MOVABLE_TYPE); // NOLINT + +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto CastTo(const QVector &points, QVector &casted) -> void +{ + Q_UNUSED(points) + Q_UNUSED(casted) +} + +//--------------------------------------------------------------------------------------------------------------------- +//upcast +template ::value>::type* = nullptr> +inline auto CastTo(const QVector &points, QVector &casted) -> void +{ + casted.clear(); + casted.reserve(points.size()); + for (const auto &p : points) + { + casted.append(Derived(p)); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +//downcast +template ::value>::type* = nullptr> +inline auto CastTo(const QVector &points, QVector &casted) -> void +{ + casted.clear(); + casted.reserve(points.size()); + for (const auto &p : points) + { + casted.append(p); + } +} + +/***************************************************************************** + VLayoutPoint stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +auto operator<<(QDataStream &, const VLayoutPoint &) -> QDataStream &; +auto operator>>(QDataStream &, VLayoutPoint &) -> QDataStream &; +#endif + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_CONSTEXPR inline VLayoutPoint::VLayoutPoint(qreal xpos, qreal ypos) + : QPointF(xpos, ypos) +{} + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_CONSTEXPR inline VLayoutPoint::VLayoutPoint(QPointF p) + : QPointF(p) +{} + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_CONSTEXPR inline auto VLayoutPoint::TurnPoint() const -> bool +{ + return m_turnPoint; +} + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_RELAXED_CONSTEXPR inline void VLayoutPoint::SetTurnPoint(bool newTurnPoint) +{ + m_turnPoint = newTurnPoint; +} + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_CONSTEXPR inline auto VLayoutPoint::CurvePoint() const -> bool +{ + return m_curvePoint; +} + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_RELAXED_CONSTEXPR inline void VLayoutPoint::SetCurvePoint(bool newCurvePoint) +{ + m_curvePoint = newCurvePoint; +} + +QT_WARNING_POP + +#endif // VLAYOUTPOINT_H diff --git a/src/libs/vlayout/vposition.cpp b/src/libs/vlayout/vposition.cpp index e927b6c4e..bb626f78c 100644 --- a/src/libs/vlayout/vposition.cpp +++ b/src/libs/vlayout/vposition.cpp @@ -53,6 +53,7 @@ #include "../vmisc/def.h" #include "../ifc/exception/vexception.h" #include "../vpatterndb/floatItemData/floatitemdef.h" +#include "../vlayout/vlayoutpoint.h" namespace { @@ -461,8 +462,9 @@ auto VPosition::Crossing(const VLayoutPiece &detail) const -> VPosition::Crossin const QRectF layoutBoundingRect = VLayoutPiece::BoundingRect(layoutPoints); const QPainterPath layoutAllowancePath = VAbstractPiece::PainterPath(layoutPoints); - const QVector contourPoints = detail.IsSeamAllowance() && not detail.IsSeamAllowanceBuiltIn() ? - detail.GetMappedSeamAllowancePoints() : detail.GetMappedContourPoints(); + QVector contourPoints; + CastTo(detail.IsSeamAllowance() && not detail.IsSeamAllowanceBuiltIn() ? + detail.GetMappedSeamAllowancePoints() : detail.GetMappedContourPoints(), contourPoints); const QRectF detailBoundingRect = VLayoutPiece::BoundingRect(contourPoints); const QPainterPath contourPath = VAbstractPiece::PainterPath(contourPoints); diff --git a/src/libs/vlayout/vrawsapoint.cpp b/src/libs/vlayout/vrawsapoint.cpp index dd430979c..f615680fc 100644 --- a/src/libs/vlayout/vrawsapoint.cpp +++ b/src/libs/vlayout/vrawsapoint.cpp @@ -31,14 +31,13 @@ #include //--------------------------------------------------------------------------------------------------------------------- -QJsonObject VRawSAPoint::toJson() const +auto VRawSAPoint::toJson() const -> QJsonObject { - QJsonObject pointObject; - pointObject[QLatin1String("type")] = "VRawSAPoint"; - pointObject[QLatin1String("x")] = x(); - pointObject[QLatin1String("y")] = y(); + QJsonObject pointObject = VLayoutPoint::toJson(); + pointObject[QLatin1String("type")] = "VRawSAPoint"; pointObject[QLatin1String("loopPoint")] = m_loopPoint; + pointObject[QLatin1String("primary")] = m_primary; return pointObject; } diff --git a/src/libs/vlayout/vrawsapoint.h b/src/libs/vlayout/vrawsapoint.h index 9f9512873..11a8f0947 100644 --- a/src/libs/vlayout/vrawsapoint.h +++ b/src/libs/vlayout/vrawsapoint.h @@ -28,59 +28,78 @@ #ifndef VRAWSAPOINT_H #define VRAWSAPOINT_H -#include +#include #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "../vmisc/diagnostic.h" #endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) -#include "../vmisc/def.h" +#include "vlayoutpoint.h" QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") +QT_WARNING_DISABLE_CLANG("-Wnon-virtual-dtor") -class VRawSAPoint : public QPointF +class VRawSAPoint : public VLayoutPoint { public: - Q_DECL_CONSTEXPR VRawSAPoint(); + Q_DECL_CONSTEXPR VRawSAPoint() = default; Q_DECL_CONSTEXPR VRawSAPoint(qreal xpos, qreal ypos); - Q_DECL_CONSTEXPR VRawSAPoint(QPointF p); - Q_DECL_CONSTEXPR VRawSAPoint(QPointF p, bool loopPoint); + Q_DECL_CONSTEXPR explicit VRawSAPoint(QPointF p); + Q_DECL_CONSTEXPR explicit VRawSAPoint(const VLayoutPoint &p); + Q_DECL_CONSTEXPR VRawSAPoint(QPointF p, bool curvePoint, bool turnPoint); + Q_DECL_CONSTEXPR VRawSAPoint(QPointF p, bool curvePoint, bool turnPoint, bool loopPoint); - Q_DECL_CONSTEXPR bool LoopPoint() const; + Q_DECL_CONSTEXPR auto LoopPoint() const -> bool; Q_DECL_RELAXED_CONSTEXPR void SetLoopPoint(bool loopPoint); - QJsonObject toJson() const; + Q_DECL_CONSTEXPR auto Primary() const -> bool; + Q_DECL_RELAXED_CONSTEXPR void SetPrimary(bool primary); + + auto toJson() const -> QJsonObject override; private: bool m_loopPoint{false}; + bool m_primary{false}; }; -Q_DECLARE_METATYPE(VRawSAPoint) +Q_DECLARE_METATYPE(VRawSAPoint) // NOLINT Q_DECLARE_TYPEINFO(VRawSAPoint, Q_MOVABLE_TYPE); // NOLINT -//--------------------------------------------------------------------------------------------------------------------- -Q_DECL_CONSTEXPR inline VRawSAPoint::VRawSAPoint() -{} - //--------------------------------------------------------------------------------------------------------------------- Q_DECL_CONSTEXPR inline VRawSAPoint::VRawSAPoint(qreal xpos, qreal ypos) - : QPointF(xpos, ypos) + : VLayoutPoint(xpos, ypos) {} //--------------------------------------------------------------------------------------------------------------------- Q_DECL_CONSTEXPR inline VRawSAPoint::VRawSAPoint(QPointF p) - : QPointF(p) + : VLayoutPoint(p) {} //--------------------------------------------------------------------------------------------------------------------- -Q_DECL_CONSTEXPR inline VRawSAPoint::VRawSAPoint(QPointF p, bool loopPoint) - : QPointF(p), +Q_DECL_CONSTEXPR inline VRawSAPoint::VRawSAPoint(const VLayoutPoint &p) + : VLayoutPoint(p) +{} + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_CONSTEXPR inline VRawSAPoint::VRawSAPoint(QPointF p, bool curvePoint, bool turnPoint) + : VLayoutPoint(p) +{ + SetCurvePoint(curvePoint); + SetTurnPoint(turnPoint); +} + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_CONSTEXPR inline VRawSAPoint::VRawSAPoint(QPointF p, bool curvePoint, bool turnPoint, bool loopPoint) + : VLayoutPoint(p), m_loopPoint(loopPoint) -{} +{ + SetCurvePoint(curvePoint); + SetTurnPoint(turnPoint); +} //--------------------------------------------------------------------------------------------------------------------- -Q_DECL_CONSTEXPR inline bool VRawSAPoint::LoopPoint() const +Q_DECL_CONSTEXPR inline auto VRawSAPoint::LoopPoint() const -> bool { return m_loopPoint; } @@ -91,6 +110,18 @@ Q_DECL_RELAXED_CONSTEXPR inline void VRawSAPoint::SetLoopPoint(bool loopPoint) m_loopPoint = loopPoint; } +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_CONSTEXPR inline auto VRawSAPoint::Primary() const -> bool +{ + return m_primary; +} + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_RELAXED_CONSTEXPR inline void VRawSAPoint::SetPrimary(bool primary) +{ + m_primary = primary; +} + QT_WARNING_POP #endif // VRAWSAPOINT_H diff --git a/src/libs/vlayout/vsapoint.h b/src/libs/vlayout/vsapoint.h index 43189fd5d..26997bde9 100644 --- a/src/libs/vlayout/vsapoint.h +++ b/src/libs/vlayout/vsapoint.h @@ -36,17 +36,17 @@ #endif // QT_VERSION < QT_VERSION_CHECK(5, 5, 0) #include "../vmisc/def.h" #include "../vgeometry/vgeometrydef.h" - -#include +#include "vlayoutpoint.h" QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Weffc++") QT_WARNING_DISABLE_GCC("-Wnon-virtual-dtor") +QT_WARNING_DISABLE_CLANG("-Wnon-virtual-dtor") /** * @brief The VSAPoint class seam allowance point */ -class VSAPoint : public QPointF +class VSAPoint : public VLayoutPoint { public: QT_WARNING_PUSH @@ -58,6 +58,7 @@ public: Q_DECL_CONSTEXPR VSAPoint(qreal xpos, qreal ypos); Q_DECL_CONSTEXPR explicit VSAPoint(QPointF p); + Q_DECL_CONSTEXPR explicit VSAPoint(const VLayoutPoint &p); Q_DECL_CONSTEXPR auto GetSABefore() const -> qreal; Q_DECL_CONSTEXPR auto GetSAAfter() const -> qreal; @@ -78,7 +79,7 @@ public: Q_DECL_RELAXED_CONSTEXPR auto MaxLocalSA(qreal width) const -> qreal; Q_DECL_RELAXED_CONSTEXPR auto PassmarkLength(qreal width) const -> qreal; - auto toJson() const -> QJsonObject; + auto toJson() const -> QJsonObject override; static constexpr qreal passmarkFactor{0.5}; static constexpr qreal maxPassmarkLength{MmToPixel(10.)}; @@ -97,12 +98,17 @@ Q_DECLARE_TYPEINFO(VSAPoint, Q_MOVABLE_TYPE); // NOLINT //--------------------------------------------------------------------------------------------------------------------- Q_DECL_CONSTEXPR inline VSAPoint::VSAPoint(qreal xpos, qreal ypos) - : QPointF(xpos, ypos) + : VLayoutPoint(xpos, ypos) {} //--------------------------------------------------------------------------------------------------------------------- Q_DECL_CONSTEXPR inline VSAPoint::VSAPoint(QPointF p) - : QPointF(p) + : VLayoutPoint(p) +{} + +//--------------------------------------------------------------------------------------------------------------------- +Q_DECL_CONSTEXPR inline VSAPoint::VSAPoint(const VLayoutPoint &p) + : VLayoutPoint(p) {} //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vmisc/compatibility.h b/src/libs/vmisc/compatibility.h index 192dd7dcd..8b8f91b56 100644 --- a/src/libs/vmisc/compatibility.h +++ b/src/libs/vmisc/compatibility.h @@ -198,7 +198,7 @@ inline void Move(T &vector, int from, int to) //--------------------------------------------------------------------------------------------------------------------- template -auto Reverse(const QVector &container) -> QVector +inline auto Reverse(const QVector &container) -> QVector { if (container.isEmpty()) { @@ -216,14 +216,14 @@ auto Reverse(const QVector &container) -> QVector template class C> //--------------------------------------------------------------------------------------------------------------------- -auto Reverse(const C &container) -> C +inline auto Reverse(const C &container) -> C { return ConvertToList(Reverse(ConvertToVector(container))); } //--------------------------------------------------------------------------------------------------------------------- template ::value, T>::type* = nullptr> -auto Reverse(const T &container) -> T +inline auto Reverse(const T &container) -> T { return Reverse(container); } diff --git a/src/libs/vpatterndb/vpassmark.cpp b/src/libs/vpatterndb/vpassmark.cpp index d1e7bed66..017a8570b 100644 --- a/src/libs/vpatterndb/vpassmark.cpp +++ b/src/libs/vpatterndb/vpassmark.cpp @@ -33,7 +33,6 @@ #include "../ifc/exception/vexceptioninvalidnotch.h" #include "../vgeometry/vabstractcurve.h" #include "../vgeometry/varc.h" -#include "testpassmark.h" #include "../vlayout/vrawsapoint.h" const qreal VPassmark::passmarkRadiusFactor = 0.45; @@ -53,7 +52,7 @@ PassmarkStatus GetSeamPassmarkSAPoint(const VPiecePassmarkData &passmarkData, co if (needRollback && not seamAllowance.isEmpty()) { ekvPoints.clear(); - ekvPoints += seamAllowance.at(seamAllowance.size()-2); + ekvPoints += VRawSAPoint(seamAllowance.at(seamAllowance.size()-2)); } if (ekvPoints.isEmpty()) @@ -689,7 +688,7 @@ QVector VPassmark::FullPassmark(const VPiece &piece, const VContainer *d { if (m_null) { - return QVector(); + return {}; } if (not piece.IsSeamAllowanceBuiltIn()) @@ -720,16 +719,18 @@ QVector VPassmark::SAPassmark(const VPiece &piece, const VContainer *dat { if (m_null) { - return QVector(); + return {}; } if (not piece.IsSeamAllowanceBuiltIn()) { // Because rollback cannot be calulated if passmark is not first point in main path we rotate it. - return SAPassmark(piece.SeamAllowancePointsWithRotation(data, m_data.passmarkIndex), side); + QVector points; + CastTo(piece.SeamAllowancePointsWithRotation(data, m_data.passmarkIndex), points); + return SAPassmark(points, side); } - return QVector(); + return {}; } //--------------------------------------------------------------------------------------------------------------------- @@ -737,7 +738,7 @@ QVector VPassmark::SAPassmark(const QVector &seamAllowance, Pas { if (m_null) { - return QVector(); + return {}; } // Because rollback @seamAllowance must be rotated here. @@ -801,8 +802,9 @@ QVector VPassmark::BuiltInSAPassmark(const VPiece &piece, const VContain return QVector(); } - return CreatePassmarkLines(m_data.passmarkLineType, m_data.passmarkAngleType, lines, piece.MainPathPoints(data), - PassmarkSide::All); + QVector points; + CastTo(piece.MainPathPoints(data), points); + return CreatePassmarkLines(m_data.passmarkLineType, m_data.passmarkAngleType, lines, points, PassmarkSide::All); } //--------------------------------------------------------------------------------------------------------------------- @@ -854,7 +856,7 @@ QVector VPassmark::BuiltInSAPassmarkBaseLine(const VPiece &piece) const edge1.setAngle(edge1.angle() + edge1.angleTo(edge2)/2.); edge1.setLength(length); - return QVector({edge1}); + return {edge1}; } //--------------------------------------------------------------------------------------------------------------------- @@ -862,16 +864,18 @@ QVector VPassmark::SAPassmarkBaseLine(const VPiece &piece, const VContai { if (m_null) { - return QVector(); + return {}; } if (not piece.IsSeamAllowanceBuiltIn()) { // Because rollback cannot be calulated if passmark is not first point in main path we rotate it. - return SAPassmarkBaseLine(piece.SeamAllowancePointsWithRotation(data, m_data.passmarkIndex), side); + QVector points; + CastTo(piece.SeamAllowancePointsWithRotation(data, m_data.passmarkIndex), points); + return SAPassmarkBaseLine(points, side); } - return QVector(); + return {}; } //--------------------------------------------------------------------------------------------------------------------- @@ -879,7 +883,7 @@ QVector VPassmark::SAPassmarkBaseLine(const QVector &seamAllowa { if (m_null) { - return QVector(); + return {}; } if (seamAllowance.size() < 2) diff --git a/src/libs/vpatterndb/vpiece.cpp b/src/libs/vpatterndb/vpiece.cpp index 99dc0e53a..69e270b17 100644 --- a/src/libs/vpatterndb/vpiece.cpp +++ b/src/libs/vpatterndb/vpiece.cpp @@ -32,7 +32,7 @@ #include "../vgeometry/vpointf.h" #include "../vgeometry/vabstractcurve.h" #include "../vgeometry/vplacelabelitem.h" -#include "../vgeometry/varc.h" +#include "../vgeometry/vlayoutplacelabel.h" #include "vcontainer.h" #include "../vmisc/vabstractvalapplication.h" #include "../vmisc/compatibility.h" @@ -171,14 +171,14 @@ void VPiece::SetPath(const VPiecePath &path) } //--------------------------------------------------------------------------------------------------------------------- -QVector VPiece::MainPathPoints(const VContainer *data) const +QVector VPiece::MainPathPoints(const VContainer *data) const { // DumpPiece(*this, data, QStringLiteral("input.json.XXXXXX")); // Uncomment for dumping test data VPiecePath mainPath = GetPath(); mainPath.SetName(tr("Main path of piece %1").arg(GetName())); - QVector points = mainPath.PathPoints(data); + QVector points = mainPath.PathPoints(data); points = CheckLoops(CorrectEquidistantPoints(points));//A path can contains loops // DumpVector(points, QStringLiteral("output.json.XXXXXX")); // Uncomment for dumping test data @@ -186,9 +186,9 @@ QVector VPiece::MainPathPoints(const VContainer *data) const } //--------------------------------------------------------------------------------------------------------------------- -QVector VPiece::UniteMainPathPoints(const VContainer *data) const +QVector VPiece::UniteMainPathPoints(const VContainer *data) const { - QVector points = VPiecePath::NodesToPoints(data, GetUnitedPath(data), GetName()); + QVector points = VPiecePath::NodesToPoints(data, GetUnitedPath(data), GetName()); points = CheckLoops(CorrectEquidistantPoints(points));//A path can contains loops return points; } @@ -200,7 +200,7 @@ QVector VPiece::MainPathNodePoints(const VContainer *data, bool showExc } //--------------------------------------------------------------------------------------------------------------------- -QVector VPiece::SeamAllowancePoints(const VContainer *data) const +QVector VPiece::SeamAllowancePoints(const VContainer *data) const { return SeamAllowancePointsWithRotation(data, -1); } @@ -208,14 +208,15 @@ QVector VPiece::SeamAllowancePoints(const VContainer *data) const //--------------------------------------------------------------------------------------------------------------------- QVector VPiece::CuttingPathPoints(const VContainer *data) const { - if (IsSeamAllowance() and not IsSeamAllowanceBuiltIn()) + QVector points; + if (IsSeamAllowance() && not IsSeamAllowanceBuiltIn()) { - return SeamAllowancePoints(data); - } - else - { - return MainPathPoints(data); + CastTo(SeamAllowancePoints(data), points); + return points; } + + CastTo(MainPathPoints(data), points); + return points; } //--------------------------------------------------------------------------------------------------------------------- @@ -271,7 +272,9 @@ QVector VPiece::CurvesPainterPath(const VContainer *data) const //--------------------------------------------------------------------------------------------------------------------- QPainterPath VPiece::MainPathPath(const VContainer *data) const { - return VPiece::MainPathPath(MainPathPoints(data)); + QVector points; + CastTo(MainPathPoints(data), points); + return VPiece::MainPathPath(points); } //--------------------------------------------------------------------------------------------------------------------- @@ -299,42 +302,6 @@ QPainterPath VPiece::SeamAllowancePath(const VContainer *data) const return SeamAllowancePath(SeamAllowancePoints(data)); } -//--------------------------------------------------------------------------------------------------------------------- -QPainterPath VPiece::SeamAllowancePath(const QVector &points) const -{ - QPainterPath ekv; - - // seam allowence - if (IsSeamAllowance() && not IsSeamAllowanceBuiltIn()) - { - if (not points.isEmpty()) - { - ekv.moveTo(points.at(0)); - for (qint32 i = 1; i < points.count(); ++i) - { - ekv.lineTo(points.at(i)); - } - -#if !defined(V_NO_ASSERT) - // uncomment for debug -// QFont font; -// font.setPixelSize(1); -// for (qint32 i = 0; i < points.count(); ++i) -// { -// ekv.addEllipse(points.at(i).x()-accuracyPointOnLine, points.at(i).y()-accuracyPointOnLine, -// accuracyPointOnLine*2., accuracyPointOnLine*2.); -// ekv.addText(points.at(i).x()-accuracyPointOnLine, points.at(i).y()-accuracyPointOnLine, font, -// QString::number(i+1)); -// } -#endif - - ekv.setFillRule(Qt::WindingFill); - } - } - - return ekv; -} - //--------------------------------------------------------------------------------------------------------------------- QPainterPath VPiece::PassmarksPath(const VContainer *data) const { @@ -370,7 +337,7 @@ QPainterPath VPiece::PlaceLabelPath(const VContainer *data) const const auto label = data->GeometricObject(placeLabel); if (label->IsVisible()) { - path.addPath(label->LabelShapePath()); + path.addPath(LabelShapePath(VLayoutPlaceLabel(*label))); } } catch (const VExceptionBadId &e) @@ -387,12 +354,16 @@ bool VPiece::IsSeamAllowanceValid(const VContainer *data) const { if (IsSeamAllowance() && not IsSeamAllowanceBuiltIn()) { - return VAbstractPiece::IsAllowanceValid(UniteMainPathPoints(data), SeamAllowancePoints(data)); - } - else - { - return true; + QVector mainPathPoints; + CastTo(UniteMainPathPoints(data), mainPathPoints); + + QVector seamAllowancePoints; + CastTo(SeamAllowancePoints(data), seamAllowancePoints); + + return VAbstractPiece::IsAllowanceValid(mainPathPoints, seamAllowancePoints); } + + return true; } //--------------------------------------------------------------------------------------------------------------------- @@ -662,13 +633,13 @@ const VGrainlineData &VPiece::GetGrainlineGeometry() const } //--------------------------------------------------------------------------------------------------------------------- -QVector VPiece::SeamAllowancePointsWithRotation(const VContainer *data, int makeFirst) const +QVector VPiece::SeamAllowancePointsWithRotation(const VContainer *data, int makeFirst) const { SCASSERT(data != nullptr); if (not IsSeamAllowance() || IsSeamAllowanceBuiltIn()) { - return QVector(); + return {}; } const QVector records = FilterRecords(GetValidRecords()); diff --git a/src/libs/vpatterndb/vpiece.h b/src/libs/vpatterndb/vpiece.h index 3811decb1..72ed7a6aa 100644 --- a/src/libs/vpatterndb/vpiece.h +++ b/src/libs/vpatterndb/vpiece.h @@ -33,7 +33,6 @@ #include #include "../vlayout/vabstractpiece.h" -#include "../vgeometry/vgeometrydef.h" class VPieceData; class VPieceNode; @@ -65,10 +64,10 @@ public: VPiecePath &GetPath(); void SetPath(const VPiecePath &path); - QVector MainPathPoints(const VContainer *data) const; - QVector UniteMainPathPoints(const VContainer *data) const; + QVector MainPathPoints(const VContainer *data) const; + QVector UniteMainPathPoints(const VContainer *data) const; QVector MainPathNodePoints(const VContainer *data, bool showExcluded = false) const; - QVector SeamAllowancePoints(const VContainer *data) const; + QVector SeamAllowancePoints(const VContainer *data) const; QVector CuttingPathPoints(const VContainer *data) const; QVector PassmarksLines(const VContainer *data) const; @@ -80,7 +79,8 @@ public: static QPainterPath MainPathPath(const QVector &points); QPainterPath SeamAllowancePath(const VContainer *data) const; - QPainterPath SeamAllowancePath(const QVector &points) const; + template + QPainterPath SeamAllowancePath(const QVector &points) const; QPainterPath PassmarksPath(const VContainer *data) const; QPainterPath PlaceLabelPath(const VContainer *data) const; @@ -132,7 +132,7 @@ public: QVector GetUnitedPath(const VContainer *data) const; - QVector SeamAllowancePointsWithRotation(const VContainer *data, int makeFirst) const; + QVector SeamAllowancePointsWithRotation(const VContainer *data, int makeFirst) const; void SetGradationLabel(const QString &label); auto GetGradationLabel() const -> QString; @@ -167,4 +167,41 @@ private: Q_DECLARE_TYPEINFO(VPiece, Q_MOVABLE_TYPE); // NOLINT +//--------------------------------------------------------------------------------------------------------------------- +template +inline QPainterPath VPiece::SeamAllowancePath(const QVector &points) const +{ + QPainterPath ekv; + + // seam allowence + if (IsSeamAllowance() && not IsSeamAllowanceBuiltIn()) + { + if (not points.isEmpty()) + { + ekv.moveTo(points.at(0)); + for (qint32 i = 1; i < points.count(); ++i) + { + ekv.lineTo(points.at(i)); + } + +#if !defined(V_NO_ASSERT) + // uncomment for debug +// QFont font; +// font.setPixelSize(1); +// for (qint32 i = 0; i < points.count(); ++i) +// { +// ekv.addEllipse(points.at(i).x()-accuracyPointOnLine, points.at(i).y()-accuracyPointOnLine, +// accuracyPointOnLine*2., accuracyPointOnLine*2.); +// ekv.addText(points.at(i).x()-accuracyPointOnLine, points.at(i).y()-accuracyPointOnLine, font, +// QString::number(i+1)); +// } +#endif + + ekv.setFillRule(Qt::WindingFill); + } + } + + return ekv; +} + #endif // VPIECE_H diff --git a/src/libs/vpatterndb/vpiecenode.cpp b/src/libs/vpatterndb/vpiecenode.cpp index 2370eb8c2..d15cd1e04 100644 --- a/src/libs/vpatterndb/vpiecenode.cpp +++ b/src/libs/vpatterndb/vpiecenode.cpp @@ -36,9 +36,6 @@ #include #include -const quint32 VPieceNodeData::streamHeader = 0x2198CBC8; // CRC-32Q string "VPieceNodeData" -const quint16 VPieceNodeData::classVersion = 1; - //--------------------------------------------------------------------------------------------------------------------- VPieceNode::VPieceNode() : d(new VPieceNodeData) @@ -454,6 +451,18 @@ void VPieceNode::SetManualPassmarkLength(bool value) d->m_manualPassmarkLength = value; } +//--------------------------------------------------------------------------------------------------------------------- +bool VPieceNode::IsTurnPoint() const +{ + return d->m_typeTool == Tool::NodePoint ? d->m_turnPoint : false; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VPieceNode::SetTurnPoint(bool value) +{ + d->m_turnPoint = value; +} + //--------------------------------------------------------------------------------------------------------------------- bool VPieceNode::IsExcluded() const { diff --git a/src/libs/vpatterndb/vpiecenode.h b/src/libs/vpatterndb/vpiecenode.h index 3627b2f27..532933b6e 100644 --- a/src/libs/vpatterndb/vpiecenode.h +++ b/src/libs/vpatterndb/vpiecenode.h @@ -108,6 +108,9 @@ public: bool IsManualPassmarkLength() const; void SetManualPassmarkLength(bool value); + + bool IsTurnPoint() const; + void SetTurnPoint(bool value); private: QSharedDataPointer d; }; diff --git a/src/libs/vpatterndb/vpiecenode_p.h b/src/libs/vpatterndb/vpiecenode_p.h index 892cd4817..497b483cc 100644 --- a/src/libs/vpatterndb/vpiecenode_p.h +++ b/src/libs/vpatterndb/vpiecenode_p.h @@ -63,24 +63,7 @@ public: } } - VPieceNodeData (const VPieceNodeData& node) - : QSharedData(node), - m_id(node.m_id), - m_typeTool(node.m_typeTool), - m_reverse(node.m_reverse), - m_excluded(node.m_excluded), - m_isPassmark(node.m_isPassmark), - m_isMainPathNode(node.m_isMainPathNode), - m_formulaWidthBefore(node.m_formulaWidthBefore), - m_formulaWidthAfter(node.m_formulaWidthAfter), - m_formulaPassmarkLength(node.m_formulaPassmarkLength), - m_angleType(node.m_angleType), - m_passmarkLineType(node.m_passmarkLineType), - m_passmarkAngleType(node.m_passmarkAngleType), - m_isShowSecondPassmark(node.m_isShowSecondPassmark), - m_checkUniqueness(node.m_checkUniqueness), - m_manualPassmarkLength(node.m_manualPassmarkLength) - {} + VPieceNodeData (const VPieceNodeData& node) = default; ~VPieceNodeData() = default; @@ -124,11 +107,13 @@ public: bool m_manualPassmarkLength{false}; + bool m_turnPoint{true}; + private: Q_DISABLE_ASSIGN(VPieceNodeData) - static const quint32 streamHeader; - static const quint16 classVersion; + static constexpr quint32 streamHeader = 0x2198CBC8; // CRC-32Q string "VPieceNodeData" + static constexpr quint16 classVersion = 2; }; // Friend functions @@ -155,6 +140,8 @@ QDataStream &operator<<(QDataStream &out, const VPieceNodeData &p) // Added in classVersion = 2 + out << p.m_turnPoint; + return out; } @@ -199,10 +186,10 @@ QDataStream &operator>>(QDataStream &in, VPieceNodeData &p) >> p.m_checkUniqueness >> p.m_manualPassmarkLength; -// if (actualClassVersion >= 2) -// { - -// } + if (actualClassVersion >= 2) + { + in >> p.m_turnPoint; + } return in; } diff --git a/src/libs/vpatterndb/vpiecepath.cpp b/src/libs/vpatterndb/vpiecepath.cpp index a9da471dd..8860d9c1d 100644 --- a/src/libs/vpatterndb/vpiecepath.cpp +++ b/src/libs/vpatterndb/vpiecepath.cpp @@ -30,7 +30,6 @@ #include "vpiecepath_p.h" #include "vcontainer.h" #include "../vgeometry/vpointf.h" -#include "../vlayout/vabstractpiece.h" #include "calculator.h" #include "../vmisc/vabstractvalapplication.h" #include "../vmisc/compatibility.h" @@ -54,6 +53,7 @@ VSAPoint CurvePoint(VSAPoint candidate, const VContainer *data, const VPieceNode candidate.SetSAAfter(node.GetSAAfter(data, *data->GetPatternUnit())); candidate.SetSABefore(node.GetSABefore(data, *data->GetPatternUnit())); candidate.SetAngleType(node.GetAngleType()); + candidate.SetTurnPoint(node.IsTurnPoint()); } } return candidate; @@ -92,6 +92,7 @@ VSAPoint CurveStartPoint(VSAPoint candidate, const VContainer *data, const VPiec } candidate = VSAPoint(p); + candidate.SetTurnPoint(true); break; } @@ -131,6 +132,7 @@ VSAPoint CurveEndPoint(VSAPoint candidate, const VContainer *data, const VPieceN } candidate = VSAPoint(p); + candidate.SetTurnPoint(true); break; } @@ -172,14 +174,15 @@ QPainterPath MakePainterPath(const QVector &points) } //--------------------------------------------------------------------------------------------------------------------- -qreal FindTipDirection(const QVector &points) +template +qreal FindTipDirection(const QVector &points) { if (points.size() <= 1) { return 0; } - const QPointF &first = ConstFirst(points); + const T &first = ConstFirst(points); for(int i = 1; i < points.size(); ++i) { @@ -195,8 +198,8 @@ qreal FindTipDirection(const QVector &points) } //--------------------------------------------------------------------------------------------------------------------- -bool IntersectionWithCuttingCountour(const QVector &cuttingPath, const QVector &points, - QPointF *firstConnection) +bool IntersectionWithCuttingCountour(const QVector &cuttingPath, const QVector &points, + QPointF *connection) { if (points.size() <= 1) { @@ -207,12 +210,35 @@ bool IntersectionWithCuttingCountour(const QVector &cuttingPath, const if (VAbstractCurve::IsPointOnCurve(cuttingPath, first)) { // Point is already part of a cutting countour - *firstConnection = first; + *connection = first; return true; } else { - return VAbstractCurve::CurveIntersectAxis(first, FindTipDirection(points), cuttingPath, firstConnection); + return VAbstractCurve::CurveIntersectAxis(first, FindTipDirection(points), cuttingPath, connection); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +template +void AppendCurveSegment(QVector &points, QVector &segment, const VSAPoint &begin, const VSAPoint &end) +{ + points.reserve(points.size() + segment.size()); + + for(int i=0; i < segment.size(); ++i) + { + VLayoutPoint lp(segment.at(i)); + if (i == 0) + { + lp.SetTurnPoint(VFuzzyComparePoints(lp, begin) ? begin.TurnPoint() : true); + } + else if (i == segment.size() - 1) + { + lp.SetTurnPoint(VFuzzyComparePoints(lp, end) ? end.TurnPoint() : true); + } + + lp.SetCurvePoint(true); + points.append(lp); } } } @@ -388,19 +414,20 @@ bool VPiecePath::IsLastToCuttingCountour() const } //--------------------------------------------------------------------------------------------------------------------- -QVector VPiecePath::PathPoints(const VContainer *data, const QVector &cuttingPath) const +QVector VPiecePath::PathPoints(const VContainer *data, const QVector &cuttingPath) const { - QVector points = NodesToPoints(data, d->m_nodes, GetName()); + QVector points = NodesToPoints(data, d->m_nodes, GetName()); if (GetType() == PiecePathType::InternalPath && not cuttingPath.isEmpty() && points.size() > 1) { - QVector extended = points; + QVector extended = points; if (IsFirstToCuttingCountour()) { - QPointF firstConnection; + VLayoutPoint firstConnection; if (IntersectionWithCuttingCountour(cuttingPath, points, &firstConnection)) { + firstConnection.SetTurnPoint(true); extended.prepend(firstConnection); } else @@ -415,9 +442,10 @@ QVector VPiecePath::PathPoints(const VContainer *data, const QVector VPiecePath::SeamAllowancePoints(const VContainer *data, qreal //--------------------------------------------------------------------------------------------------------------------- QPainterPath VPiecePath::PainterPath(const VContainer *data, const QVector &cuttingPath) const { - return MakePainterPath(PathPoints(data, cuttingPath)); + QVector points = PathPoints(data, cuttingPath); + QVector casted; + CastTo(points, casted); + return MakePainterPath(casted); } //--------------------------------------------------------------------------------------------------------------------- @@ -552,7 +583,7 @@ QVector VPiecePath::CurvesPainterPath(const VContainer *data) cons QVector paths; paths.reserve(curves.size()); - for(auto &curve : curves) + for(const auto &curve : curves) { paths.append(MakePainterPath(curve)); } @@ -1104,6 +1135,7 @@ VSAPoint VPiecePath::PreparePointEkv(const VPieceNode &node, const VContainer *d const QSharedPointer point = data->GeometricObject(node.GetId()); VSAPoint p(point->toQPointF()); + p.SetTurnPoint(node.IsTurnPoint()); p.SetSAAfter(node.GetSAAfter(data, *data->GetPatternUnit())); p.SetSABefore(node.GetSABefore(data, *data->GetPatternUnit())); p.SetAngleType(node.GetAngleType()); @@ -1138,18 +1170,23 @@ QVector VPiecePath::CurveSeamAllowanceSegment(const VContainer *data, { VSAPoint p(points.at(i)); p.SetAngleType(PieceNodeAngle::ByLengthCurve); + p.SetCurvePoint(true); + if (i == 0) { // first point p.SetSAAfter(begin.GetSAAfter()); p.SetSABefore(begin.GetSABefore()); p.SetAngleType(begin.GetAngleType()); + p.SetTurnPoint(VFuzzyComparePoints(p, begin) ? begin.TurnPoint() : true); } else if (i == points.size() - 1) { // last point p.SetSAAfter(end.GetSAAfter()); p.SetSABefore(end.GetSABefore()); p.SetAngleType(end.GetAngleType()); + p.SetTurnPoint(VFuzzyComparePoints(p, end) ? end.TurnPoint() : true); } + pointsEkv.append(p); } } @@ -1165,13 +1202,15 @@ QVector VPiecePath::CurveSeamAllowanceSegment(const VContainer *data, w2 = width; } - const qreal wDiff = w2 - w1;// Difference between to local widths + const qreal wDiff = w2 - w1;// Difference between two local widths const qreal fullLength = VAbstractCurve::PathLength(points); VSAPoint p(points.at(0));//First point in the list p.SetSAAfter(begin.GetSAAfter()); p.SetSABefore(begin.GetSABefore()); p.SetAngleType(begin.GetAngleType()); + p.SetCurvePoint(true); + p.SetTurnPoint(VFuzzyComparePoints(p, begin) ? begin.TurnPoint() : true); pointsEkv.append(p); qreal length = 0; // how much we handle @@ -1179,12 +1218,14 @@ QVector VPiecePath::CurveSeamAllowanceSegment(const VContainer *data, for(int i = 1; i < points.size(); ++i) { p = VSAPoint(points.at(i)); + p.SetCurvePoint(true); if (i == points.size() - 1) {// last point p.SetSAAfter(end.GetSAAfter()); p.SetSABefore(end.GetSABefore()); p.SetAngleType(end.GetAngleType()); + p.SetTurnPoint(VFuzzyComparePoints(p, end) ? end.TurnPoint() : true); } else { @@ -1220,14 +1261,14 @@ QString VPiecePath::NodeName(const QVector &nodes, int nodeIndex, co { // ignore } - return QString(); + return {}; } //--------------------------------------------------------------------------------------------------------------------- -QVector VPiecePath::NodesToPoints(const VContainer *data, const QVector &nodes, - const QString &piece) +QVector VPiecePath::NodesToPoints(const VContainer *data, const QVector &nodes, + const QString &piece) { - QVector points; + QVector points; for (int i = 0; i < nodes.size(); ++i) { const VPieceNode &node = nodes.at(i); @@ -1241,7 +1282,9 @@ QVector VPiecePath::NodesToPoints(const VContainer *data, const QVector case (Tool::NodePoint): { const QSharedPointer point = data->GeometricObject(node.GetId()); - points.append(static_cast(*point)); + VLayoutPoint layoutPoint(point->toQPointF()); + layoutPoint.SetTurnPoint(node.IsTurnPoint()); + points.append(layoutPoint); } break; case (Tool::NodeArc): @@ -1251,11 +1294,11 @@ QVector VPiecePath::NodesToPoints(const VContainer *data, const QVector { const QSharedPointer curve = data->GeometricObject(node.GetId()); + const VSAPoint begin = StartSegment(data, nodes, i); + const VSAPoint end = EndSegment(data, nodes, i); - const QPointF begin = StartSegment(data, nodes, i); - const QPointF end = EndSegment(data, nodes, i); - - points << curve->GetSegmentPoints(begin, end, node.GetReverse(), piece); + QVector segment = curve->GetSegmentPoints(begin, end, node.GetReverse(), piece); + AppendCurveSegment(points, segment, begin, end); } break; default: diff --git a/src/libs/vpatterndb/vpiecepath.h b/src/libs/vpatterndb/vpiecepath.h index ffff0b524..21c878e98 100644 --- a/src/libs/vpatterndb/vpiecepath.h +++ b/src/libs/vpatterndb/vpiecepath.h @@ -42,6 +42,7 @@ class QPainterPath; class VPointF; class VPieceNode; class VInternalVariable; +class VLayoutPoint; class VPiecePath { @@ -89,7 +90,7 @@ public: void SetLastToCuttingCountour(bool value); bool IsLastToCuttingCountour() const; - QVector PathPoints(const VContainer *data, + QVector PathPoints(const VContainer *data, const QVector &cuttingPath = QVector()) const; QVector PathNodePoints(const VContainer *data, bool showExcluded = true) const; QVector > PathCurvePoints(const VContainer *data) const; @@ -138,8 +139,8 @@ public: static QString NodeName(const QVector &nodes, int nodeIndex, const VContainer *data); - static QVector NodesToPoints(const VContainer *data, const QVector &nodes, - const QString &piece = QString()); + static QVector NodesToPoints(const VContainer *data, const QVector &nodes, + const QString &piece = QString()); private: QSharedDataPointer d; diff --git a/src/libs/vtest/abstracttest.cpp b/src/libs/vtest/abstracttest.cpp index ab15dbb9f..776b9de71 100644 --- a/src/libs/vtest/abstracttest.cpp +++ b/src/libs/vtest/abstracttest.cpp @@ -46,17 +46,14 @@ #include #include #include -#include #include #include -#include "vsysexits.h" #include "../vgeometry/vgobject.h" #include "../vgeometry/vpointf.h" #include "../vgeometry/vspline.h" #include "../vgeometry/vsplinepath.h" #include "../vlayout/vabstractpiece.h" -#include "../vlayout/vrawsapoint.h" #include "../vpatterndb/vcontainer.h" #include "../vpatterndb/vpiece.h" #include "../vpatterndb/vpiecenode.h" @@ -68,104 +65,6 @@ AbstractTest::AbstractTest(QObject *parent) : { } -//--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::VectorFromJson(const QString &json, QVector& vector) const -{ - QByteArray saveData; - PrepareDocument(json, saveData); - QJsonDocument loadDoc(QJsonDocument::fromJson(saveData)); - - const QString vectorKey = QStringLiteral("vector"); - const QString typeKey = QStringLiteral("type"); - - QJsonObject vectorObject = loadDoc.object(); - TestRoot(vectorObject, vectorKey, json); - - QJsonArray vectorArray = vectorObject[vectorKey].toArray(); - for (int i = 0; i < vectorArray.size(); ++i) - { - QJsonObject pointObject = vectorArray[i].toObject(); - - QString type; - AbstractTest::ReadStringValue(pointObject, typeKey, type); - - if (type != QLatin1String("QPointF")) - { - const QString error = QStringLiteral("Invalid json file '%1'. Unexpected class '%2'.") - .arg(json, pointObject[typeKey].toString()); - QFAIL(qUtf8Printable(error)); - } - - QPointF point; - QPointFromJson(pointObject, point); - vector.append(point); - } -} - -//--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::VectorFromJson(const QString &json, QVector &vector) const -{ - QByteArray saveData; - PrepareDocument(json, saveData); - QJsonDocument loadDoc(QJsonDocument::fromJson(saveData)); - - const QString vectorKey = QStringLiteral("vector"); - - QJsonObject vectorObject = loadDoc.object(); - TestRoot(vectorObject, vectorKey, json); - - QJsonArray vectorArray = vectorObject[vectorKey].toArray(); - for (int i = 0; i < vectorArray.size(); ++i) - { - QJsonObject pointObject = vectorArray[i].toObject(); - - QString type; - AbstractTest::ReadStringValue(pointObject, QStringLiteral("type"), type); - - if (type != QLatin1String("VSAPoint")) - { - const QString error = QStringLiteral("Invalid json file '%1'. Unexpected class '%2'.").arg(json, type); - QFAIL(qUtf8Printable(error)); - } - - VSAPoint point; - SAPointFromJson(pointObject, point); - vector.append(point); - } -} - -//--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::VectorFromJson(const QString &json, QVector &vector) const -{ - QByteArray saveData; - PrepareDocument(json, saveData); - QJsonDocument loadDoc(QJsonDocument::fromJson(saveData)); - - const QString vectorKey = QStringLiteral("vector"); - - QJsonObject vectorObject = loadDoc.object(); - TestRoot(vectorObject, vectorKey, json); - - QJsonArray vectorArray = vectorObject[vectorKey].toArray(); - for (int i = 0; i < vectorArray.size(); ++i) - { - QJsonObject pointObject = vectorArray[i].toObject(); - - QString type; - AbstractTest::ReadStringValue(pointObject, QStringLiteral("type"), type); - - if (type != QLatin1String("VRawSAPoint")) - { - const QString error = QStringLiteral("Invalid json file '%1'. Unexpected class '%2'.").arg(json, type); - QFAIL(qUtf8Printable(error)); - } - - VRawSAPoint point; - RawSAPointFromJson(pointObject, point); - vector.append(point); - } -} - //--------------------------------------------------------------------------------------------------------------------- void AbstractTest::PieceFromJson(const QString &json, VPiece &piece, QSharedPointer &data) { @@ -217,17 +116,25 @@ void AbstractTest::PassmarkDataFromJson(const QString &json, VPiecePassmarkData QJsonObject passmarkData = dataObject[dataKey].toObject(); - VSAPoint previousSAPoint; - SAPointFromJson(passmarkData[QStringLiteral("previousSAPoint")].toObject(), previousSAPoint); - data.previousSAPoint = previousSAPoint; + try + { + VSAPoint previousSAPoint; + PointFromJson(passmarkData[QStringLiteral("previousSAPoint")].toObject(), previousSAPoint); + data.previousSAPoint = previousSAPoint; - VSAPoint passmarkSAPoint; - SAPointFromJson(passmarkData[QStringLiteral("passmarkSAPoint")].toObject(), passmarkSAPoint); - data.passmarkSAPoint = passmarkSAPoint; + VSAPoint passmarkSAPoint; + PointFromJson(passmarkData[QStringLiteral("passmarkSAPoint")].toObject(), passmarkSAPoint); + data.passmarkSAPoint = passmarkSAPoint; - VSAPoint nextSAPoint; - SAPointFromJson(passmarkData[QStringLiteral("nextSAPoint")].toObject(), nextSAPoint); - data.nextSAPoint = nextSAPoint; + VSAPoint nextSAPoint; + PointFromJson(passmarkData[QStringLiteral("nextSAPoint")].toObject(), nextSAPoint); + data.nextSAPoint = nextSAPoint; + } + catch (const VException &e) + { + const QString error = QStringLiteral("Invalid json file '%1'. %2").arg(json, e.ErrorMessage()); + QFAIL(qUtf8Printable(error)); + } qreal saWidth = 0; AbstractTest::ReadDoubleValue(passmarkData, QStringLiteral("saWidth"), saWidth); @@ -287,9 +194,9 @@ void AbstractTest::PassmarkShapeFromJson(const QString &json, QVector &s TestRoot(shapeObject, shapeKey, json); QJsonArray vectorArray = shapeObject[shapeKey].toArray(); - for (int i = 0; i < vectorArray.size(); ++i) + for (auto && item : vectorArray) { - QJsonObject lineObject = vectorArray[i].toObject(); + QJsonObject lineObject = item.toObject(); QString type; AbstractTest::ReadStringValue(lineObject, typeKey, type); @@ -301,27 +208,25 @@ void AbstractTest::PassmarkShapeFromJson(const QString &json, QVector &s QFAIL(qUtf8Printable(error)); } - QLineF line; - QLineFromJson(lineObject, line); - shape.append(line); + shape.append(QLineFromJson(lineObject)); } } //--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::Comparison(const QVector &ekv, const QVector &ekvOrig) const +void AbstractTest::ComparePathsDistance(const QVector &ekv, const QVector &ekvOrig) const { // Begin comparison - QCOMPARE(ekv.size(), ekvOrig.size());// First check if sizes equal + QCOMPARE(ekv.size(), ekvOrig.size());// First check if sizes are equal const qreal testAccuracy = MmToPixel(1.); for (int i=0; i < ekv.size(); i++) { - Comparison(ekv.at(i), ekvOrig.at(i), testAccuracy); + ComparePointsDistance(ekv.at(i), ekvOrig.at(i), testAccuracy); } } //--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::Comparison(const QPointF &result, const QPointF &expected, qreal testAccuracy) const +void AbstractTest::ComparePointsDistance(const QPointF &result, const QPointF &expected, qreal testAccuracy) const { const QString msg = QStringLiteral("Actual '%2;%3', Expected '%4;%5'. Distance between points %6 mm.") .arg(result.x()).arg(result.y()).arg(expected.x()).arg(expected.y()) @@ -332,7 +237,7 @@ void AbstractTest::Comparison(const QPointF &result, const QPointF &expected, qr //--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::Comparison(const QVector &result, const QVector &expected) const +void AbstractTest::CompareLinesDistance(const QVector &result, const QVector &expected) const { // Begin comparison QCOMPARE(result.size(), expected.size());// First check if sizes equal @@ -525,7 +430,7 @@ bool AbstractTest::CopyRecursively(const QString &srcFilePath, const QString &tg } //--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::PrepareDocument(const QString &json, QByteArray &data) const +void AbstractTest::PrepareDocument(const QString &json, QByteArray &data) { QFile loadFile(json); if (not loadFile.open(QIODevice::ReadOnly)) @@ -538,7 +443,7 @@ void AbstractTest::PrepareDocument(const QString &json, QByteArray &data) const } //--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::TestRoot(const QJsonObject &root, const QString &attribute, const QString &file) const +void AbstractTest::TestRoot(const QJsonObject &root, const QString &attribute, const QString &file) { if (not root.contains(attribute)) { @@ -549,7 +454,7 @@ void AbstractTest::TestRoot(const QJsonObject &root, const QString &attribute, c //--------------------------------------------------------------------------------------------------------------------- void AbstractTest::ReadStringValue(const QJsonObject &itemObject, const QString &attribute, QString &value, - const QString &defaultValue) const + const QString &defaultValue) { if (itemObject.contains(attribute)) { @@ -580,7 +485,7 @@ void AbstractTest::ReadStringValue(const QJsonObject &itemObject, const QString //--------------------------------------------------------------------------------------------------------------------- void AbstractTest::ReadBooleanValue(const QJsonObject &itemObject, const QString &attribute, bool &value, - const QString &defaultValue) const + const QString &defaultValue) { if (itemObject.contains(attribute)) { @@ -624,8 +529,7 @@ void AbstractTest::ReadPointValue(const QJsonObject &itemObject, const QString & { if (itemObject.contains(attribute)) { - QJsonObject p1Object = itemObject[attribute].toObject(); - VPointFromJson(p1Object, value); + PointFromJson(itemObject[attribute].toObject(), value); } else { @@ -706,22 +610,11 @@ void AbstractTest::ReadPieceNodeValue(const QJsonObject &itemObject, VPieceNode node = VPieceNode(id, typeTool, reverse); } -//--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::QPointFromJson(const QJsonObject &itemObject, QPointF &point) const -{ - qreal x = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("x"), x); - point.setX(x); - - qreal y = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("y"), y); - point.setY(y); -} //--------------------------------------------------------------------------------------------------------------------- template::value>::type*> void AbstractTest::ReadDoubleValue(const QJsonObject &itemObject, const QString &attribute, T &value, - const QString &defaultValue) const + const QString &defaultValue) { if (itemObject.contains(attribute)) { @@ -760,7 +653,7 @@ void AbstractTest::ReadDoubleValue(const QJsonObject &itemObject, const QString //--------------------------------------------------------------------------------------------------------------------- template::value>::type*> void AbstractTest::ReadDoubleValue(const QJsonObject &itemObject, const QString &attribute, T &value, - const QString &defaultValue) const + const QString &defaultValue) { if (itemObject.contains(attribute)) { @@ -799,7 +692,7 @@ void AbstractTest::ReadDoubleValue(const QJsonObject &itemObject, const QString //--------------------------------------------------------------------------------------------------------------------- template::value>::type*> void AbstractTest::ReadDoubleValue(const QJsonObject &itemObject, const QString &attribute, T &value, - const QString &defaultValue) const + const QString &defaultValue) { if (itemObject.contains(attribute)) { @@ -836,81 +729,13 @@ void AbstractTest::ReadDoubleValue(const QJsonObject &itemObject, const QString } //--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::VPointFromJson(const QJsonObject &itemObject, VPointF &point) -{ - vidtype id = NULL_ID; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("id"), id); - - qreal mx = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("mx"), mx); - - qreal my = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("my"), my); - - QString name; - AbstractTest::ReadStringValue(itemObject, QStringLiteral("name"), name); - - qreal x = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("x"), x); - - qreal y = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("y"), y); - - point = VPointF(x, y, name, mx, my); - point.setId(id); -} - -//--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::QLineFromJson(const QJsonObject &itemObject, QLineF &line) +auto AbstractTest::QLineFromJson(const QJsonObject &itemObject) -> QLineF { QPointF p1; - QPointFromJson(itemObject[QStringLiteral("p1")].toObject(), p1); - QPointF p2; - QPointFromJson(itemObject[QStringLiteral("p2")].toObject(), p2); - - line = QLineF(p1, p2); -} - -//--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::SAPointFromJson(const QJsonObject &itemObject, VSAPoint &point) const -{ - qreal x = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("x"), x); - point.setX(x); - - qreal y = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("y"), y); - point.setY(y); - - qreal saBefore; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("saBefore"), saBefore, QStringLiteral("-1")); - point.SetSABefore(saBefore); - - qreal saAfter; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("saAfter"), saAfter, QStringLiteral("-1")); - point.SetSAAfter(saAfter); - - PieceNodeAngle angleType = PieceNodeAngle::ByLength; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("angle"), angleType, - QString::number(static_cast(PieceNodeAngle::ByLength))); - point.SetAngleType(angleType); -} - -//--------------------------------------------------------------------------------------------------------------------- -void AbstractTest::RawSAPointFromJson(const QJsonObject &itemObject, VRawSAPoint &point) const -{ - qreal x = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("x"), x); - point.setX(x); - - qreal y = 0; - AbstractTest::ReadDoubleValue(itemObject, QStringLiteral("y"), y); - point.setY(y); - - bool loopPoint; - AbstractTest::ReadBooleanValue(itemObject, QStringLiteral("loopPoint"), loopPoint, QStringLiteral("0")); - point.SetLoopPoint(loopPoint); + PointFromJson(itemObject[QStringLiteral("p1")].toObject(), p1); + PointFromJson(itemObject[QStringLiteral("p2")].toObject(), p2); + return {p1, p2}; } //--------------------------------------------------------------------------------------------------------------------- @@ -989,9 +814,9 @@ void AbstractTest::DBFromJson(const QJsonObject &dbObject, QSharedPointerUpdateGObject(point.id(), new VPointF(point)); break; } diff --git a/src/libs/vtest/abstracttest.h b/src/libs/vtest/abstracttest.h index a1f42699b..3f513392e 100644 --- a/src/libs/vtest/abstracttest.h +++ b/src/libs/vtest/abstracttest.h @@ -32,9 +32,17 @@ #include #include #include +#include +#include +#include +#include + +#include "../vgeometry/vpointf.h" +#include "../vlayout/vsapoint.h" +#include "../vlayout/vrawsapoint.h" +#include "../ifc/exception/vexception.h" template class QVector; -class VSAPoint; #include @@ -69,9 +77,8 @@ class AbstractTest : public QObject public: explicit AbstractTest(QObject *parent = nullptr); - void VectorFromJson(const QString &json, QVector& vector) const; - void VectorFromJson(const QString &json, QVector& vector) const; - void VectorFromJson(const QString &json, QVector& vector) const; + template + static auto VectorFromJson(const QString &json) -> QVector; void PieceFromJson(const QString &json, VPiece &piece, QSharedPointer &data); @@ -79,45 +86,50 @@ public: void PassmarkShapeFromJson(const QString &json, QVector &shape); protected: - void Comparison(const QVector &ekv, const QVector &ekvOrig) const; - void Comparison(const QPointF &result, const QPointF &expected, qreal testAccuracy) const; - void Comparison(const QVector &result, const QVector &expected) const; + void ComparePathsDistance(const QVector &ekv, const QVector &ekvOrig) const; + void ComparePointsDistance(const QPointF &result, const QPointF &expected, qreal testAccuracy) const; + void CompareLinesDistance(const QVector &result, const QVector &expected) const; - QString ValentinaPath() const; - QString TapePath() const; - QString TranslationsPath() const; + auto ValentinaPath() const -> QString; + auto TapePath() const -> QString; + auto TranslationsPath() const -> QString; - static int RunTimeout(int defMsecs); + static auto RunTimeout(int defMsecs) -> int; - int Run(int exit, const QString &program, const QStringList &arguments, QString &error, int msecs = 120000); - bool CopyRecursively(const QString &srcFilePath, const QString &tgtFilePath) const; + auto Run(int exit, const QString &program, const QStringList &arguments, QString &error, int msecs = 120000) -> int; + auto CopyRecursively(const QString &srcFilePath, const QString &tgtFilePath) const -> bool; - void PrepareDocument(const QString &json, QByteArray &data) const; - void TestRoot(const QJsonObject &root, const QString &attribute, const QString &file) const; + static void PrepareDocument(const QString &json, QByteArray &data); + static void TestRoot(const QJsonObject &root, const QString &attribute, const QString &file); template ::value>::type* = nullptr> - void ReadDoubleValue(const QJsonObject &itemObject, const QString &attribute, T &value, - const QString &defaultValue = QString()) const; + static void ReadDoubleValue(const QJsonObject &itemObject, const QString &attribute, T &value, + const QString &defaultValue = QString()); template ::value>::type* = nullptr> - void ReadDoubleValue(const QJsonObject &itemObject, const QString &attribute, T &value, - const QString &defaultValue = QString()) const; + static void ReadDoubleValue(const QJsonObject &itemObject, const QString &attribute, T &value, + const QString &defaultValue = QString()); template ::value>::type* = nullptr> - void ReadDoubleValue(const QJsonObject &itemObject, const QString &attribute, T &value, - const QString &defaultValue = QString()) const; - void ReadStringValue(const QJsonObject &itemObject, const QString &attribute, QString &value, - const QString &defaultValue = QString()) const; - void ReadBooleanValue(const QJsonObject &itemObject, const QString &attribute, bool &value, - const QString &defaultValue = QString()) const; + static void ReadDoubleValue(const QJsonObject &itemObject, const QString &attribute, T &value, + const QString &defaultValue = QString()); + static void ReadStringValue(const QJsonObject &itemObject, const QString &attribute, QString &value, + const QString &defaultValue = QString()); + static void ReadBooleanValue(const QJsonObject &itemObject, const QString &attribute, bool &value, + const QString &defaultValue = QString()); void ReadPointValue(const QJsonObject &itemObject, const QString &attribute, VPointF &value); void ReadSplinePointValues(const QJsonObject &itemObject, const QString &attribute, QVector &points); void ReadSplinePointValue(const QJsonObject &itemObject, VSplinePoint &point); void ReadPieceNodeValue(const QJsonObject &itemObject, VPieceNode &node); - void QPointFromJson(const QJsonObject &itemObject, QPointF &point) const; - void VPointFromJson(const QJsonObject &itemObject, VPointF &point); - void QLineFromJson(const QJsonObject &itemObject, QLineF &line); - void SAPointFromJson(const QJsonObject &itemObject, VSAPoint &point) const; - void RawSAPointFromJson(const QJsonObject &itemObject, VRawSAPoint &point) const; + template + static void CheckClassType(const QJsonObject &itemObject); + + template + static auto ReadPointData(const QJsonObject &pointObject) -> T; + + template + static auto PointFromJson(const QJsonObject &pointObject, T &point) -> void; + + auto QLineFromJson(const QJsonObject &itemObject) -> QLineF; void SplineFromJson(const QJsonObject &itemObject, QSharedPointer &data); void SplinePathFromJson(const QJsonObject &itemObject, QSharedPointer &data); @@ -125,4 +137,190 @@ protected: void MainPathFromJson(const QJsonObject &pieceObject, VPiece &piece); }; +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto AbstractTest::VectorFromJson(const QString &json) -> QVector +{ + QByteArray saveData; + PrepareDocument(json, saveData); + QJsonDocument loadDoc(QJsonDocument::fromJson(saveData)); + + const QString vectorKey = QStringLiteral("vector"); + + QJsonObject vectorObject = loadDoc.object(); + TestRoot(vectorObject, vectorKey, json); + + QJsonArray vectorArray = vectorObject[vectorKey].toArray(); + QVector vector; + vector.reserve(vectorArray.size()); + + for (auto && item : vectorArray) + { + try + { + T point; + PointFromJson(item.toObject(), point); + vector.append(point); + } + catch (const VException &e) + { + throw VException(QStringLiteral("Invalid json file '%1'. %2").arg(json, e.ErrorMessage())); + } + } + + return vector; +} + +//--------------------------------------------------------------------------------------------------------------------- +template +inline void AbstractTest::CheckClassType(const QJsonObject &itemObject) +{ + const QString typeKey = QStringLiteral("type"); + + QString type; + AbstractTest::ReadStringValue(itemObject, typeKey, type); + + const QStringList types + { + QStringLiteral("QPointF"), // 0 + QStringLiteral("VLayoutPoint"), // 1 + QStringLiteral("VRawSAPoint"), // 2 + QStringLiteral("VSAPoint"), // 3 + }; + + bool res = false; + switch (types.indexOf(type)) + { + case 0: + res = (typeid(T) == typeid(QPointF)); + break; + case 1: + res = (typeid(T) == typeid(VLayoutPoint)); + break; + case 2: + res = (typeid(T) == typeid(VRawSAPoint)); + break; + case 3: + res = (typeid(T) == typeid(VSAPoint)); + break; + default: + break; + } + + if (not res) + { + throw VException(QStringLiteral("Unexpected class '%2'.").arg(itemObject[typeKey].toString())); + } +} + +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto AbstractTest::ReadPointData(const QJsonObject &pointObject) -> T +{ + T point; + qreal x = 0; + AbstractTest::ReadDoubleValue(pointObject, QChar('x'), x); + point.setX(x); + + qreal y = 0; + AbstractTest::ReadDoubleValue(pointObject, QChar('y'), y); + point.setY(y); + + return point; +} + +//--------------------------------------------------------------------------------------------------------------------- +template +inline auto AbstractTest::PointFromJson(const QJsonObject &pointObject, T &point) -> void +{ + CheckClassType(pointObject); + point = ReadPointData(pointObject); +} + +//--------------------------------------------------------------------------------------------------------------------- +template<> +inline auto AbstractTest::PointFromJson(const QJsonObject &pointObject, VPointF &point) -> void +{ + vidtype id = NULL_ID; + AbstractTest::ReadDoubleValue(pointObject, QStringLiteral("id"), id); + + qreal mx = 0; + AbstractTest::ReadDoubleValue(pointObject, QStringLiteral("mx"), mx); + + qreal my = 0; + AbstractTest::ReadDoubleValue(pointObject, QStringLiteral("my"), my); + + QString name; + AbstractTest::ReadStringValue(pointObject, QStringLiteral("name"), name); + + qreal x = 0; + AbstractTest::ReadDoubleValue(pointObject, QChar('x'), x); + + qreal y = 0; + AbstractTest::ReadDoubleValue(pointObject, QChar('y'), y); + + point = VPointF(x, y, name, mx, my); + point.setId(id); +} + +//--------------------------------------------------------------------------------------------------------------------- +template<> +inline auto AbstractTest::ReadPointData(const QJsonObject &pointObject) -> VLayoutPoint +{ + VLayoutPoint point(ReadPointData(pointObject)); + + bool turnPoint; + AbstractTest::ReadBooleanValue(pointObject, QStringLiteral("turnPoint"), turnPoint, QStringLiteral("0")); + point.SetTurnPoint(turnPoint); + + bool curvePoint; + AbstractTest::ReadBooleanValue(pointObject, QStringLiteral("curvePoint"), curvePoint, QStringLiteral("0")); + point.SetCurvePoint(curvePoint); + + return point; +} + +//--------------------------------------------------------------------------------------------------------------------- +template<> +inline auto AbstractTest::PointFromJson(const QJsonObject &pointObject, VLayoutPoint &point) -> void +{ + CheckClassType(pointObject); + point = ReadPointData(pointObject); +} + +//--------------------------------------------------------------------------------------------------------------------- +template<> +inline auto AbstractTest::PointFromJson(const QJsonObject &pointObject, VSAPoint &point) -> void +{ + CheckClassType(pointObject); + + point = VSAPoint(ReadPointData(pointObject)); + + qreal saBefore; + AbstractTest::ReadDoubleValue(pointObject, QStringLiteral("saBefore"), saBefore, QStringLiteral("-1")); + point.SetSABefore(saBefore); + + qreal saAfter; + AbstractTest::ReadDoubleValue(pointObject, QStringLiteral("saAfter"), saAfter, QStringLiteral("-1")); + point.SetSAAfter(saAfter); + + PieceNodeAngle angleType = PieceNodeAngle::ByLength; + AbstractTest::ReadDoubleValue(pointObject, QStringLiteral("angle"), angleType, + QString::number(static_cast(PieceNodeAngle::ByLength))); + point.SetAngleType(angleType); +} + +//--------------------------------------------------------------------------------------------------------------------- +template<> +inline auto AbstractTest::PointFromJson(const QJsonObject &pointObject, VRawSAPoint &point) -> void +{ + CheckClassType(pointObject); + + point = VRawSAPoint(ReadPointData(pointObject)); + + bool loopPoint; + AbstractTest::ReadBooleanValue(pointObject, QStringLiteral("loopPoint"), loopPoint, QStringLiteral("0")); + point.SetLoopPoint(loopPoint); +} + #endif // ABSTRACTTEST_H diff --git a/src/libs/vtools/dialogs/dialogtoolbox.cpp b/src/libs/vtools/dialogs/dialogtoolbox.cpp index 8f9650e80..3e416cebc 100644 --- a/src/libs/vtools/dialogs/dialogtoolbox.cpp +++ b/src/libs/vtools/dialogs/dialogtoolbox.cpp @@ -672,6 +672,11 @@ QString GetNodeName(const VContainer *data, const VPieceNode &node, bool showPas { name = QLatin1Char('[') + name + QLatin1Char(']'); } + + if (not node.IsTurnPoint()) + { + name += QStringLiteral(" ⦿"); + } } return name; diff --git a/src/libs/vtools/dialogs/tools/piece/dialogpiecepath.cpp b/src/libs/vtools/dialogs/tools/piece/dialogpiecepath.cpp index 305173174..9650c585c 100644 --- a/src/libs/vtools/dialogs/tools/piece/dialogpiecepath.cpp +++ b/src/libs/vtools/dialogs/tools/piece/dialogpiecepath.cpp @@ -329,11 +329,13 @@ void DialogPiecePath::ShowContextMenu(const QPoint &pos) QListWidgetItem *rowItem = ui->listWidget->item(row); SCASSERT(rowItem != nullptr); - VPieceNode rowNode = qvariant_cast(rowItem->data(Qt::UserRole)); + auto rowNode = qvariant_cast(rowItem->data(Qt::UserRole)); QAction *actionPassmark = nullptr; QAction *actionUniqueness = nullptr; QAction *actionReverse = nullptr; + QAction *actionTurnPoint = nullptr; + if (rowNode.GetTypeTool() != Tool::NodePoint) { actionReverse = menu->addAction(tr("Reverse")); @@ -353,6 +355,10 @@ void DialogPiecePath::ShowContextMenu(const QPoint &pos) actionUniqueness = menu->addAction(tr("Check uniqueness")); actionUniqueness->setCheckable(true); actionUniqueness->setChecked(rowNode.IsCheckUniqueness()); + + actionTurnPoint = menu->addAction(tr("Turn point")); + actionTurnPoint->setCheckable(true); + actionTurnPoint->setChecked(rowNode.IsTurnPoint()); } QAction *actionExcluded = menu->addAction(tr("Excluded")); @@ -393,6 +399,12 @@ void DialogPiecePath::ShowContextMenu(const QPoint &pos) rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode)); rowItem->setText(GetNodeName(data, rowNode, IsShowNotch())); } + else if (rowNode.GetTypeTool() == Tool::NodePoint && selectedAction == actionTurnPoint) + { + rowNode.SetTurnPoint(not rowNode.IsTurnPoint()); + rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode)); + rowItem->setText(GetNodeName(data, rowNode, IsShowNotch())); + } ValidObjects(PathIsValid()); ListChanged(); diff --git a/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp b/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp index a8ac9dc65..9104cb8a4 100644 --- a/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp +++ b/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp @@ -745,11 +745,13 @@ void DialogSeamAllowance::ShowMainPathContextMenu(const QPoint &pos) QListWidgetItem *rowItem = uiTabPaths->listWidgetMainPath->item(row); SCASSERT(rowItem != nullptr); - VPieceNode rowNode = qvariant_cast(rowItem->data(Qt::UserRole)); + auto rowNode = qvariant_cast(rowItem->data(Qt::UserRole)); QAction *actionPassmark = nullptr; QAction *actionUniqueness = nullptr; QAction *actionReverse = nullptr; + QAction *actionTurnPoint = nullptr; + if (rowNode.GetTypeTool() != Tool::NodePoint) { actionReverse = menu->addAction(tr("Reverse")); @@ -768,6 +770,10 @@ void DialogSeamAllowance::ShowMainPathContextMenu(const QPoint &pos) actionUniqueness = menu->addAction(tr("Check uniqueness")); actionUniqueness->setCheckable(true); actionUniqueness->setChecked(rowNode.IsCheckUniqueness()); + + actionTurnPoint = menu->addAction(tr("Turn point")); + actionTurnPoint->setCheckable(true); + actionTurnPoint->setChecked(rowNode.IsTurnPoint()); } QAction *actionExcluded = menu->addAction(tr("Excluded")); @@ -807,6 +813,13 @@ void DialogSeamAllowance::ShowMainPathContextMenu(const QPoint &pos) rowItem->setText(GetNodeName(data, rowNode, true)); } + else if (selectedAction == actionTurnPoint) + { + rowNode.SetTurnPoint(not rowNode.IsTurnPoint()); + rowItem->setData(Qt::UserRole, QVariant::fromValue(rowNode)); + rowItem->setText(GetNodeName(data, rowNode, true)); + } + ValidObjects(MainPathIsValid()); ListChanged(); } @@ -2750,7 +2763,8 @@ void DialogSeamAllowance::ValidObjects(bool value) //--------------------------------------------------------------------------------------------------------------------- bool DialogSeamAllowance::MainPathIsClockwise() const { - const QVector points = CreatePiece().MainPathPoints(data); + QVector points; + CastTo(CreatePiece().MainPathPoints(data), points); if(points.count() < 3) { diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp index 866f82884..e83c77921 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp @@ -100,6 +100,7 @@ enum class ContextMenuOption : int ForbidFlipping, ForceFlipping, Remove, + TurnPoint, LAST_ONE_DO_NOT_USE }; } @@ -140,7 +141,7 @@ void VNodePoint::Create(const VAbstractNodeInitData &initData) VAbstractTool::AddRecord(initData.id, Tool::NodePoint, initData.doc); //TODO Need create garbage collector and remove all nodes, what we don't use. //Better check garbage before each saving file. Check only modeling tags. - VNodePoint *point = new VNodePoint(initData); + auto *point = new VNodePoint(initData); connect(initData.scene, &VMainGraphicsScene::EnableToolMove, point, &VNodePoint::EnableToolMove); connect(initData.scene, &VMainGraphicsScene::EnablePointItemHover, point, &VNodePoint::AllowHover); @@ -326,7 +327,7 @@ QHash VNodePoint::InitContextMenu(QMenu *menu, vidtype pieceId, InitPassmarkAngleTypeMenu(menu, pieceId, contextMenu); InitPassmarkLineTypeMenu(menu, pieceId, contextMenu); - QAction *separatorAct = new QAction(this); + auto *separatorAct = new QAction(this); separatorAct->setSeparator(true); menu->addAction(separatorAct); @@ -366,11 +367,17 @@ void VNodePoint::InitPassmarkMenu(QMenu *menu, vidtype pieceId, QHashaddAction(tr("Passmark")); actionPassmark->setCheckable(true); - actionPassmark->setChecked(detail.GetPath().at(nodeIndex).IsPassmark()); - + actionPassmark->setChecked(node.IsPassmark()); contextMenu.insert(static_cast(ContextMenuOption::Passmark), actionPassmark); + + QAction *actionTurnPoint = menu->addAction(tr("Turn point")); + actionTurnPoint->setCheckable(true); + actionTurnPoint->setChecked(node.IsTurnPoint()); + contextMenu.insert(static_cast(ContextMenuOption::TurnPoint), actionTurnPoint); } } @@ -524,7 +531,7 @@ void VNodePoint::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) return; } - if (VToolSeamAllowance *piece = qgraphicsitem_cast(parentItem())) + if (auto *piece = qgraphicsitem_cast(parentItem())) { QMenu menu; QHash contextMenu = InitContextMenu(&menu, piece->getId(), piece->referens()); @@ -573,7 +580,7 @@ void VNodePoint::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) ContextMenuOption selectedOption = static_cast( contextMenu.key(selectedAction, static_cast(ContextMenuOption::NoSelection))); - Q_STATIC_ASSERT_X(static_cast(ContextMenuOption::LAST_ONE_DO_NOT_USE) == 31, + Q_STATIC_ASSERT_X(static_cast(ContextMenuOption::LAST_ONE_DO_NOT_USE) == 32, "Not all options were handled."); QT_WARNING_PUSH @@ -614,6 +621,9 @@ QT_WARNING_DISABLE_GCC("-Wswitch-default") case ContextMenuOption::Exclude: emit ToggleExcludeState(m_id); break; + case ContextMenuOption::TurnPoint: + emit ToggleTurnPointState(m_id); + break; case ContextMenuOption::ByLength: SelectSeamAllowanceAngle(PieceNodeAngle::ByLength); break; diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.h b/src/libs/vtools/tools/nodeDetails/vnodepoint.h index 0a5618552..9fe5e91d0 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.h +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.h @@ -38,7 +38,6 @@ #include #include -#include "../ifc/xml/vabstractpattern.h" #include "../vmisc/def.h" #include "vabstractnode.h" #include "../vwidgets/vscenepoint.h" @@ -66,6 +65,7 @@ signals: void ToggleForceFlipping(bool checked); void Delete(); void ToggleExcludeState(quint32 id); + void ToggleTurnPointState(quint32 id); void ToggleSeamAllowanceAngleType(quint32 id, PieceNodeAngle type); void TogglePassmark(quint32 id, bool toggle); void TogglePassmarkAngleType(quint32 id, PassmarkAngleType type); diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index b1c5af0b3..e274086d2 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -567,6 +567,9 @@ QDomElement VAbstractTool::AddSANode(VAbstractPattern *doc, const QString &tagNa nod.removeAttribute(VAbstractPattern::AttrNodePassmarkLine); nod.removeAttribute(VAbstractPattern::AttrNodePassmarkAngle); } + + doc->SetAttributeOrRemoveIf(nod, VAbstractPattern::AttrNodeTurnPoint, node.IsTurnPoint(), + [](bool value) noexcept {return value;}); } else { // Wrong configuration. diff --git a/src/libs/vtools/tools/vtoolseamallowance.cpp b/src/libs/vtools/tools/vtoolseamallowance.cpp index 216faaa57..ad41a1f03 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.cpp +++ b/src/libs/vtools/tools/vtoolseamallowance.cpp @@ -1391,7 +1391,7 @@ void VToolSeamAllowance::RefreshGeometry(bool updateChildren) this->getData()); QFuture futurePassmarks = QtConcurrent::run(detail, &VPiece::PassmarksPath, this->getData()); - QFuture > futureSeamAllowance; + QFuture > futureSeamAllowance; QFuture futureSeamAllowanceValid; if (detail.IsSeamAllowance()) @@ -1584,6 +1584,26 @@ void VToolSeamAllowance::ToggleExcludeState(quint32 id) } } +//--------------------------------------------------------------------------------------------------------------------- +void VToolSeamAllowance::ToggleTurnPointState(quint32 id) +{ + const VPiece oldDet = VAbstractTool::data.GetPiece(m_id); + VPiece newDet = oldDet; + + for (int i = 0; i< oldDet.GetPath().CountNodes(); ++i) + { + VPieceNode node = oldDet.GetPath().at(i); + if (node.GetId() == id && node.GetTypeTool() == Tool::NodePoint) + { + node.SetTurnPoint(not node.IsTurnPoint()); + newDet.GetPath()[i] = node; + + VAbstractApplication::VApp()->getUndoStack()->push(new SavePieceOptions(oldDet, newDet, doc, m_id)); + return; + } + } +} + //--------------------------------------------------------------------------------------------------------------------- void VToolSeamAllowance::ToggleNodePointAngleType(quint32 id, PieceNodeAngle type) { @@ -1876,7 +1896,7 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc { case (Tool::NodePoint): { - VNodePoint *tool = qobject_cast(VAbstractPattern::getTool(node.GetId())); + auto *tool = qobject_cast(VAbstractPattern::getTool(node.GetId())); SCASSERT(tool != nullptr); if (tool->parent() != parent) @@ -1891,6 +1911,8 @@ void VToolSeamAllowance::InitNode(const VPieceNode &node, VMainGraphicsScene *sc connect(tool, &VNodePoint::Delete, parent, &VToolSeamAllowance::DeleteFromMenu, Qt::UniqueConnection); connect(tool, &VNodePoint::ToggleExcludeState, parent, &VToolSeamAllowance::ToggleExcludeState, Qt::UniqueConnection); + connect(tool, &VNodePoint::ToggleTurnPointState, parent, &VToolSeamAllowance::ToggleTurnPointState, + Qt::UniqueConnection); connect(tool, &VNodePoint::ToggleSeamAllowanceAngleType, parent, &VToolSeamAllowance::ToggleNodePointAngleType, Qt::UniqueConnection); connect(tool, &VNodePoint::TogglePassmark, parent, &VToolSeamAllowance::ToggleNodePointPassmark, @@ -2071,8 +2093,10 @@ auto VToolSeamAllowance::IsGrainlinePositionValid() const -> bool { QLineF grainLine = m_grainLine->Grainline(); const VPiece detail = VAbstractTool::data.GetPiece(m_id); - const QVector contourPoints = detail.IsSeamAllowance() && not detail.IsSeamAllowanceBuiltIn() ? - detail.SeamAllowancePoints(getData()) : detail.MainPathPoints(getData()); + QVector contourPoints; + detail.IsSeamAllowance() && not detail.IsSeamAllowanceBuiltIn() + ? CastTo(detail.SeamAllowancePoints(getData()), contourPoints) + : CastTo(detail.MainPathPoints(getData()), contourPoints); QVector points = VAbstractCurve::CurveIntersectLine(contourPoints, grainLine); if (not points.isEmpty()) diff --git a/src/libs/vtools/tools/vtoolseamallowance.h b/src/libs/vtools/tools/vtoolseamallowance.h index 83fc2adfe..3b076a246 100644 --- a/src/libs/vtools/tools/vtoolseamallowance.h +++ b/src/libs/vtools/tools/vtoolseamallowance.h @@ -168,6 +168,7 @@ private slots: void ToggleForbidFlipping(bool checked); void ToggleForceFlipping(bool checked); void ToggleExcludeState(quint32 id); + void ToggleTurnPointState(quint32 id); void ToggleNodePointAngleType(quint32 id, PieceNodeAngle type); void ToggleNodePointPassmark(quint32 id, bool toggle); void TogglePassmarkAngleType(quint32 id, PassmarkAngleType type); diff --git a/src/libs/vtools/visualization/path/vistoolpiece.cpp b/src/libs/vtools/visualization/path/vistoolpiece.cpp index 29b148e95..f40bb5204 100644 --- a/src/libs/vtools/visualization/path/vistoolpiece.cpp +++ b/src/libs/vtools/visualization/path/vistoolpiece.cpp @@ -52,7 +52,7 @@ void VisToolPiece::RefreshGeometry() if (GetMode() == Mode::Creation) { m_cachedCurvesPath = m_piece.CurvesPainterPath(GetData()); - m_cachedMainPathPoints = m_piece.MainPathPoints(GetData()); + CastTo(m_piece.MainPathPoints(GetData()), m_cachedMainPathPoints); m_cachedMainPath = VPiece::MainPathPath(m_cachedMainPathPoints); } else diff --git a/src/libs/vtools/visualization/path/vistoolpiecepath.cpp b/src/libs/vtools/visualization/path/vistoolpiecepath.cpp index 6df763354..bb4bde145 100644 --- a/src/libs/vtools/visualization/path/vistoolpiecepath.cpp +++ b/src/libs/vtools/visualization/path/vistoolpiecepath.cpp @@ -31,6 +31,7 @@ #include "../vgeometry/vpointf.h" #include "../vwidgets/scalesceneitems.h" #include "../vmisc/compatibility.h" +#include "../vlayout/vlayoutpoint.h" #include @@ -63,7 +64,7 @@ void VisToolPiecePath::RefreshGeometry() if (GetMode() == Mode::Creation) { - const QVector points = m_path.PathPoints(GetData()); + const QVector points = m_path.PathPoints(GetData()); if (not points.empty()) { DrawLine(m_line, QLineF(ConstLast(points), ScenePos()), Color(VColor::SupportColor), Qt::DashLine); diff --git a/src/test/ValentinaTest/share/DP_6/input.json b/src/test/ValentinaTest/share/DP_6/input.json index 80a67a355..f58b257ab 100644 --- a/src/test/ValentinaTest/share/DP_6/input.json +++ b/src/test/ValentinaTest/share/DP_6/input.json @@ -1,549 +1,651 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", "x": 1676.804606592377, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1790.1904333640305, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2132.831278036873, "y": 334.01963822471856 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2209.0824577516487, "y": 196.52029498815347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2280.0788311549086, "y": 214.46913581675784 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2345.053938897079, "y": 232.82808880019167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2406.430397575602, "y": 252.1184733940386 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2466.630823787921, "y": 272.8616090538824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2528.077834131477, "y": 295.5788152353067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2626.972277996681, "y": 334.08672189942854 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2683.174281565618, "y": 428.6163050991843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2636.9155845119085, "y": 570.0364148944475 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2602.3359035137023, "y": 679.2016045836615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2581.1485889486808, "y": 750.3046656507598 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2562.658903353014, "y": 818.1666036205969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2551.3190086136897, "y": 865.7283064025331 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2545.058458315721, "y": 895.6477493986852 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2542.4441145955184, "y": 909.8834645669292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2539.941891688312, "y": 924.5359428210015 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.2824566009085, "y": 946.6345652094251 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3671357993244, "y": 961.2177429989904 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3893819364166, "y": 975.5256347551833 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.538148749601, "y": 989.4206965556962 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2540.002389976296, "y": 1002.7653844782211 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2543.971059353917, "y": 1015.422154600451 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2549.633110619882, "y": 1027.253463000078 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2557.177497511606, "y": 1038.121765754795 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2566.7931737665076, "y": 1047.8895189422938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2578.669093122002, "y": 1056.419178640267 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2592.9942093155073, "y": 1063.5732009264073 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2609.9574760844393, "y": 1069.214041878407 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2629.747847166216, "y": 1073.204157573959 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2652.554276298253, "y": 1075.406004090755 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2656.455947900562, "y": 1149.9520876303336 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2642.4743193451973, "y": 1283.9248328571011 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2632.348846491074, "y": 1400.3953842544354 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2625.462074272455, "y": 1499.2648032469053 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2621.1965476236046, "y": 1580.4341512590793 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.9348114787863, "y": 1643.804489715526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.8911123953603, "y": 1707.5262208487393 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.9884514435694, "y": 1722.9543307086615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.243518754759, "y": 1728.6863715569775 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2620.9069750474355, "y": 1754.8103451532859 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2628.7361755238107, "y": 1818.230094084754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2644.9536288641093, "y": 1932.092426039521 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2659.427198191514, "y": 2020.1956325333963 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2669.339056867133, "y": 2073.2470143796036 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 2096.1826771653546 }, { "saAfter": 151.18110236220474, + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3075.2356380110023 }, { "saBefore": 151.18110236220474, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { + "curvePoint": true, "saBefore": 151.18110236220474, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2007.2814993554916, "y": 3069.0853220695535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1985.2213981724194, "y": 3066.6063749413943 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1971.0975271551902, "y": 3064.1269682327293 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1957.4637612744855, "y": 3060.939408867782 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1944.3112415072071, "y": 3057.044174599266 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1931.6311088302562, "y": 3052.4417431799 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1919.4145042205341, "y": 3047.1325923624 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1907.6525686549428, "y": 3041.117199899481 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1896.3364431103832, "y": 3034.3960435438594 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1885.457268563757, "y": 3026.969601048252 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1875.0061859919656, "y": 3018.8383501653752 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1864.97433637191, "y": 3010.0027686479434 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1855.3528606804925, "y": 3000.4633342486754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1841.6221908501716, "y": 2984.9233358928996 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1824.7351747619791, "y": 2961.627082835932 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1809.3301919725623, "y": 2935.524017800505 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1795.3363702971328, "y": 2906.617962808349 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1782.6828375509026, "y": 2874.9127398811934 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1771.298721549083, "y": 2840.412171040767 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1761.1131501068844, "y": 2803.1200783087997 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1752.0552510395196, "y": 2763.0402837070214 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1744.054152162199, "y": 2720.1766092571615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1737.0389812901346, "y": 2674.5328769809485 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1730.9388662385377, "y": 2626.1129089001124 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1725.6829348226192, "y": 2574.9205270363836 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1721.2003148575914, "y": 2520.9595534114897 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1715.6967946026289, "y": 2435.1802236828553 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1710.5209571604514, "y": 2310.692590126838 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1707.1626661956402, "y": 2175.1993859172935 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1705.0549442298873, "y": 2028.73118722806 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1703.0187742577805, "y": 1789.8799791806941 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 diff --git a/src/test/ValentinaTest/share/DP_6/output.json b/src/test/ValentinaTest/share/DP_6/output.json index 1687c20f1..be54469da 100644 --- a/src/test/ValentinaTest/share/DP_6/output.json +++ b/src/test/ValentinaTest/share/DP_6/output.json @@ -22,33 +22,33 @@ }, { "type": "QPointF", - "x": 2218.3461551694068, - "y": 159.8778773943609 + "x": 2217.5977299326023, + "y": 159.69675636609975 }, { "type": "QPointF", - "x": 2290.3556666474014, - "y": 178.09786268498775 + "x": 2289.3425285726667, + "y": 177.82671822296527 }, { "type": "QPointF", - "x": 2356.386310160867, - "y": 196.77174097480187 + "x": 2355.330774389572, + "y": 196.45681566842157 }, { "type": "QPointF", - "x": 2418.743012243872, - "y": 216.38498242273093 + "x": 2417.76276883939, + "y": 216.0621255686488 }, { "type": "QPointF", - "x": 2479.7368903013507, - "y": 237.4114485815882 + "x": 2478.943438456191, + "y": 237.12811808257362 }, { "type": "QPointF", - "x": 2541.791733714628, - "y": 260.35933461464947 + "x": 2541.1839006449068, + "y": 260.1286547630125 }, { "type": "QPointF", @@ -58,7 +58,7 @@ { "type": "QPointF", "x": 2750.0942175506984, - "y": 342.49876114111674 + "y": 342.4987611411168 }, { "type": "QPointF", @@ -95,6 +95,11 @@ "x": 2582.147933534884, "y": 902.9327107340721 }, + { + "type": "QPointF", + "x": 2579.6177268527103, + "y": 916.710279982473 + }, { "type": "QPointF", "x": 2577.3549162322406, @@ -137,18 +142,18 @@ }, { "type": "QPointF", - "x": 2586.114686464242, - "y": 1013.528603121976 + "x": 2586.380914190024, + "y": 1013.9121258080509 }, { "type": "QPointF", - "x": 2591.4699318406524, - "y": 1019.025810364433 + "x": 2591.4629589216133, + "y": 1019.0745457263262 }, { "type": "QPointF", - "x": 2598.6551332041845, - "y": 1024.1539538228847 + "x": 2598.261040748605, + "y": 1023.957142420315 }, { "type": "QPointF", @@ -177,8 +182,8 @@ }, { "type": "QPointF", - "x": 2694.0188568415797, - "y": 1154.1454872438824 + "x": 2693.986760463563, + "y": 1154.4153784932541 }, { "type": "QPointF", @@ -210,6 +215,11 @@ "x": 2655.688340739313, "y": 1707.7165018577969 }, + { + "type": "QPointF", + "x": 2655.778424569198, + "y": 1721.9946692493584 + }, { "type": "QPointF", "x": 2655.953419573936, @@ -257,13 +267,13 @@ }, { "type": "QPointF", - "x": 2021.3199675389635, - "y": 3220.8483027084308 + "x": 2023.4768582688548, + "y": 3220.8687790842673 }, { "type": "QPointF", - "x": 2021.3182640632187, - "y": 3107.4419653203568 + "x": 2022.9357135847897, + "y": 3107.5035007672386 }, { "type": "QPointF", @@ -362,48 +372,48 @@ }, { "type": "QPointF", - "x": 1724.2475956555309, - "y": 2811.4515698895543 + "x": 1724.6533610418696, + "y": 2813.078323048724 }, { "type": "QPointF", - "x": 1714.9017110090306, - "y": 2769.975506859066 + "x": 1715.189696588166, + "y": 2771.371775287776 }, { "type": "QPointF", - "x": 1706.6975180190836, - "y": 2725.918102308894 + "x": 1706.90061213171, + "y": 2727.1118324092063 }, { "type": "QPointF", - "x": 1699.5401219581372, - "y": 2679.257112978941 + "x": 1699.6823471470193, + "y": 2680.274370032681 }, { "type": "QPointF", - "x": 1693.3412326417047, - "y": 2629.9730649700537 + "x": 1693.4400069065402, + "y": 2630.837144898105 }, { "type": "QPointF", - "x": 1688.0173984057383, - "y": 2578.0494603041498 + "x": 1688.0853012257862, + "y": 2578.780683106325 }, { "type": "QPointF", - "x": 1683.4825898547426, - "y": 2523.3794867938254 + "x": 1683.5347784407104, + "y": 2524.0884866792558 }, { "type": "QPointF", - "x": 1677.9341442539435, - "y": 2436.7502859774568 + "x": 1677.9790695997801, + "y": 2437.600157065191 }, { "type": "QPointF", - "x": 1672.7372856065697, - "y": 2311.629084053139 + "x": 1672.758306811766, + "y": 2312.2626524214393 }, { "type": "QPointF", @@ -415,6 +425,11 @@ "x": 1667.2635813707664, "y": 2029.2750164437336 }, + { + "type": "QPointF", + "x": 1665.2248719406762, + "y": 1790.2021664103715 + }, { "type": "QPointF", "x": 1663.7116397669358, diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_right_angle/input.json b/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_right_angle/input.json index f20459f6b..780c8a0a4 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_right_angle/input.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_right_angle/input.json @@ -2,569 +2,675 @@ "vector": [ { "angle": 4, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 4, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2014.9729320292, "y": 3069.6130267291883 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1999.838557691558, "y": 3068.8816935485092 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1985.2122453725951, "y": 3067.420020685311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1971.0851302475294, "y": 3065.229001637756 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1957.4483474915787, "y": 3062.309629904003 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1944.293032279962, "y": 3058.6628989822143 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1931.6103197878972, "y": 3054.289802370551 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1919.3913451906024, "y": 3049.191333567172 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1907.6272436632962, "y": 3043.368486070239 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1896.3091503811966, "y": 3036.8222533779135 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1885.4282005195219, "y": 3029.5536289883566 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1874.9755292534905, "y": 3021.563606399727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1864.9422717583204, "y": 3012.8531791101877 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1855.3195632092302, "y": 3003.4233406178982 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1846.098538781438, "y": 2993.2750844210195 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1837.2703336501618, "y": 2982.4094040177133 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1824.6988381756855, "y": 2964.8572538605545 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1809.2929657948505, "y": 2938.833269793301 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1795.2988037540088, "y": 2909.9574718672293 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1782.645433454907, "y": 2878.237808067624 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1771.2619362992912, "y": 2843.682226379773 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1761.0773936889077, "y": 2806.2986747889627 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1752.020887025502, "y": 2766.095101280478 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1744.0214977108208, "y": 2723.0794538396067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1737.00830714661, "y": 2677.259680451635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1730.9103967346155, "y": 2628.6437291018483 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1725.656847876584, "y": 2577.2395477755335 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1721.1767419742605, "y": 2523.055084457977 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1715.6771359215397, "y": 2436.927798469381 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1710.5065586720987, "y": 2311.972555710253 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1707.153218476922, "y": 2176.039248721311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1705.0497665499784, "y": 2029.1914613848467 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1703.0181141551627, "y": 1789.9386595512806 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1676.804606592377, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1790.1904333640305, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2132.831278036873, "y": 334.01963822471856 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2209.0824577516487, "y": 196.52029498815347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2280.0788311549086, "y": 214.46913581675784 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2345.053938897079, "y": 232.82808880019167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2406.430397575602, "y": 252.1184733940386 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2466.630823787921, "y": 272.8616090538824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2528.077834131477, "y": 295.5788152353067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2626.972277996681, "y": 334.08672189942854 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2683.174281565618, "y": 428.6163050991843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2636.9155845119085, "y": 570.0364148944475 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2602.3359035137023, "y": 679.2016045836615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2581.1485889486808, "y": 750.3046656507598 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2562.658903353014, "y": 818.1666036205969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2551.3190086136897, "y": 865.7283064025331 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2545.058458315721, "y": 895.6477493986852 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2542.4441145955184, "y": 909.8834645669292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2539.941891688312, "y": 924.5359428210015 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.2824566009085, "y": 946.6345652094251 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3671357993244, "y": 961.2177429989904 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3893819364166, "y": 975.5256347551833 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.538148749601, "y": 989.4206965556962 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2540.002389976296, "y": 1002.7653844782211 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2543.971059353917, "y": 1015.422154600451 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2549.633110619882, "y": 1027.253463000078 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2557.177497511606, "y": 1038.121765754795 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2566.7931737665076, "y": 1047.8895189422938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2578.669093122002, "y": 1056.419178640267 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2592.9942093155073, "y": 1063.5732009264073 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2609.9574760844393, "y": 1069.214041878407 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2629.747847166216, "y": 1073.204157573959 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2652.554276298253, "y": 1075.406004090755 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2656.455947900562, "y": 1149.9520876303336 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2642.4743193451973, "y": 1283.9248328571011 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2632.348846491074, "y": 1400.3953842544354 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2625.462074272455, "y": 1499.2648032469053 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2621.1965476236046, "y": 1580.4341512590793 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.9348114787863, "y": 1643.804489715526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.8911123953603, "y": 1707.5262208487393 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.9884514435694, "y": 1722.9543307086615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.243518754759, "y": 1728.6863715569775 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2620.9069750474355, "y": 1754.8103451532859 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2628.7361755238107, "y": 1818.230094084754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2644.9536288641093, "y": 1932.092426039521 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2659.427198191514, "y": 2020.1956325333963 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2669.339056867133, "y": 2073.2470143796036 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3075.2356380110023 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3188.621464782656 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3183.059839328322 diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_right_angle/output.json b/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_right_angle/output.json index 0a5e542cc..c97a6ba4f 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_right_angle/output.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_right_angle/output.json @@ -7,8 +7,13 @@ }, { "type": "QPointF", - "x": 2013.1486925189367, - "y": 3107.3642519699065 + "x": 2022.7551360150967, + "y": 3107.470448669474 + }, + { + "type": "QPointF", + "x": 2014.6767556005577, + "y": 3107.407141833111 }, { "type": "QPointF", @@ -22,8 +27,8 @@ }, { "type": "QPointF", - "x": 1964.1685608395817, - "y": 3102.6667943667003 + "x": 1964.2273050875103, + "y": 3102.4125360082517 }, { "type": "QPointF", @@ -72,8 +77,8 @@ }, { "type": "QPointF", - "x": 1827.775230874743, - "y": 3029.062323188764 + "x": 1828.6586787634583, + "y": 3029.9799215151306 }, { "type": "QPointF", @@ -112,48 +117,48 @@ }, { "type": "QPointF", - "x": 1724.2060573521064, - "y": 2814.604541011345 + "x": 1724.611163823378, + "y": 2816.233307965892 }, { "type": "QPointF", - "x": 1714.8626689124646, - "y": 2773.005215869235 + "x": 1715.1495506887006, + "y": 2774.4009675028606 }, { "type": "QPointF", - "x": 1706.6613158714413, - "y": 2728.7978163582184 + "x": 1706.8632795977835, + "y": 2729.989568428364 }, { "type": "QPointF", - "x": 1699.5068804939508, - "y": 2681.9634933710727 + "x": 1699.6481253072302, + "y": 2682.978042970247 }, { "type": "QPointF", - "x": 1693.3109741320875, - "y": 2632.486420466245 + "x": 1693.4089700819563, + "y": 2633.347542021286 }, { "type": "QPointF", - "x": 1687.9901053084427, - "y": 2580.353927532551 + "x": 1688.057425274056, + "y": 2581.08223913993 }, { "type": "QPointF", - "x": 1683.4582844809274, - "y": 2525.463573878589 + "x": 1683.5099994061193, + "y": 2526.1694642149946 }, { "type": "QPointF", - "x": 1677.9141764602605, - "y": 2438.490408366745 + "x": 1677.9586784282067, + "y": 2439.336287889993 }, { "type": "QPointF", - "x": 1672.7227781832871, - "y": 2312.9046441927917 + "x": 1672.7435992108194, + "y": 2313.5351656076173 }, { "type": "QPointF", @@ -165,6 +170,11 @@ "x": 1667.2583677386065, "y": 2029.732786467735 }, + { + "type": "QPointF", + "x": 1665.224201165844, + "y": 1790.259592444213 + }, { "type": "QPointF", "x": 1663.7116376060108, @@ -192,33 +202,33 @@ }, { "type": "QPointF", - "x": 2218.3461551694068, - "y": 159.8778773943609 + "x": 2217.5977299326023, + "y": 159.69675636609975 }, { "type": "QPointF", - "x": 2290.3556666474014, - "y": 178.09786268498775 + "x": 2289.3425285726667, + "y": 177.82671822296527 }, { "type": "QPointF", - "x": 2356.386310160867, - "y": 196.77174097480187 + "x": 2355.330774389572, + "y": 196.45681566842157 }, { "type": "QPointF", - "x": 2418.743012243872, - "y": 216.38498242273093 + "x": 2417.76276883939, + "y": 216.0621255686488 }, { "type": "QPointF", - "x": 2479.7368903013507, - "y": 237.4114485815882 + "x": 2478.943438456191, + "y": 237.12811808257362 }, { "type": "QPointF", - "x": 2541.791733714628, - "y": 260.35933461464947 + "x": 2541.1839006449068, + "y": 260.1286547630125 }, { "type": "QPointF", @@ -265,6 +275,11 @@ "x": 2582.147933534884, "y": 902.9327107340721 }, + { + "type": "QPointF", + "x": 2579.6177268527103, + "y": 916.710279982473 + }, { "type": "QPointF", "x": 2577.3549162322406, @@ -347,8 +362,8 @@ }, { "type": "QPointF", - "x": 2694.0188568415797, - "y": 1154.1454872438824 + "x": 2693.986760463563, + "y": 1154.4153784932541 }, { "type": "QPointF", @@ -380,6 +395,11 @@ "x": 2655.688340739313, "y": 1707.7165018577969 }, + { + "type": "QPointF", + "x": 2655.778424569198, + "y": 1721.9946692493584 + }, { "type": "QPointF", "x": 2655.953419573936, diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_symmetry/input.json b/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_symmetry/input.json index ff53992ff..dbd677f78 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_symmetry/input.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_symmetry/input.json @@ -2,569 +2,675 @@ "vector": [ { "angle": 2, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 2, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2014.9729320292, "y": 3069.6130267291883 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1999.838557691558, "y": 3068.8816935485092 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1985.2122453725951, "y": 3067.420020685311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1971.0851302475294, "y": 3065.229001637756 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1957.4483474915787, "y": 3062.309629904003 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1944.293032279962, "y": 3058.6628989822143 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1931.6103197878972, "y": 3054.289802370551 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1919.3913451906024, "y": 3049.191333567172 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1907.6272436632962, "y": 3043.368486070239 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1896.3091503811966, "y": 3036.8222533779135 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1885.4282005195219, "y": 3029.5536289883566 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1874.9755292534905, "y": 3021.563606399727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1864.9422717583204, "y": 3012.8531791101877 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1855.3195632092302, "y": 3003.4233406178982 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1846.098538781438, "y": 2993.2750844210195 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1837.2703336501618, "y": 2982.4094040177133 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1824.6988381756855, "y": 2964.8572538605545 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1809.2929657948505, "y": 2938.833269793301 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1795.2988037540088, "y": 2909.9574718672293 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1782.645433454907, "y": 2878.237808067624 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1771.2619362992912, "y": 2843.682226379773 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1761.0773936889077, "y": 2806.2986747889627 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1752.020887025502, "y": 2766.095101280478 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1744.0214977108208, "y": 2723.0794538396067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1737.00830714661, "y": 2677.259680451635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1730.9103967346155, "y": 2628.6437291018483 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1725.656847876584, "y": 2577.2395477755335 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1721.1767419742605, "y": 2523.055084457977 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1715.6771359215397, "y": 2436.927798469381 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1710.5065586720987, "y": 2311.972555710253 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1707.153218476922, "y": 2176.039248721311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1705.0497665499784, "y": 2029.1914613848467 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1703.0181141551627, "y": 1789.9386595512806 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1676.804606592377, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1790.1904333640305, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2132.831278036873, "y": 334.01963822471856 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2209.0824577516487, "y": 196.52029498815347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2280.0788311549086, "y": 214.46913581675784 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2345.053938897079, "y": 232.82808880019167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2406.430397575602, "y": 252.1184733940386 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2466.630823787921, "y": 272.8616090538824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2528.077834131477, "y": 295.5788152353067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2626.972277996681, "y": 334.08672189942854 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2683.174281565618, "y": 428.6163050991843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2636.9155845119085, "y": 570.0364148944475 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2602.3359035137023, "y": 679.2016045836615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2581.1485889486808, "y": 750.3046656507598 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2562.658903353014, "y": 818.1666036205969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2551.3190086136897, "y": 865.7283064025331 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2545.058458315721, "y": 895.6477493986852 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2542.4441145955184, "y": 909.8834645669292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2539.941891688312, "y": 924.5359428210015 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.2824566009085, "y": 946.6345652094251 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3671357993244, "y": 961.2177429989904 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3893819364166, "y": 975.5256347551833 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.538148749601, "y": 989.4206965556962 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2540.002389976296, "y": 1002.7653844782211 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2543.971059353917, "y": 1015.422154600451 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2549.633110619882, "y": 1027.253463000078 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2557.177497511606, "y": 1038.121765754795 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2566.7931737665076, "y": 1047.8895189422938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2578.669093122002, "y": 1056.419178640267 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2592.9942093155073, "y": 1063.5732009264073 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2609.9574760844393, "y": 1069.214041878407 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2629.747847166216, "y": 1073.204157573959 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2652.554276298253, "y": 1075.406004090755 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2656.455947900562, "y": 1149.9520876303336 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2642.4743193451973, "y": 1283.9248328571011 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2632.348846491074, "y": 1400.3953842544354 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2625.462074272455, "y": 1499.2648032469053 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2621.1965476236046, "y": 1580.4341512590793 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.9348114787863, "y": 1643.804489715526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.8911123953603, "y": 1707.5262208487393 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.9884514435694, "y": 1722.9543307086615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.243518754759, "y": 1728.6863715569775 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2620.9069750474355, "y": 1754.8103451532859 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2628.7361755238107, "y": 1818.230094084754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2644.9536288641093, "y": 1932.092426039521 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2659.427198191514, "y": 2020.1956325333963 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2669.339056867133, "y": 2073.2470143796036 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3075.2356380110023 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3188.621464782656 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3183.059839328322 diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_symmetry/output.json b/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_symmetry/output.json index c13751998..aca50a7da 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_symmetry/output.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_first_edge_symmetry/output.json @@ -1,5 +1,15 @@ { "vector": [ + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3108.349696217459 + }, + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3107.1742631465927 + }, { "type": "QPointF", "x": 1984.9598604245455, @@ -7,8 +17,8 @@ }, { "type": "QPointF", - "x": 1980.460653502646, - "y": 3104.734721364734 + "x": 1980.4332947144517, + "y": 3104.9259742893705 }, { "type": "QPointF", @@ -62,8 +72,8 @@ }, { "type": "QPointF", - "x": 1827.775230874743, - "y": 3029.062323188764 + "x": 1828.6586787634583, + "y": 3029.9799215151306 }, { "type": "QPointF", @@ -102,48 +112,48 @@ }, { "type": "QPointF", - "x": 1724.2060573521064, - "y": 2814.604541011345 + "x": 1724.611163823378, + "y": 2816.233307965892 }, { "type": "QPointF", - "x": 1714.8626689124646, - "y": 2773.005215869235 + "x": 1715.1495506887006, + "y": 2774.4009675028606 }, { "type": "QPointF", - "x": 1706.6613158714413, - "y": 2728.7978163582184 + "x": 1706.8632795977835, + "y": 2729.989568428364 }, { "type": "QPointF", - "x": 1699.5068804939508, - "y": 2681.9634933710727 + "x": 1699.6481253072302, + "y": 2682.978042970247 }, { "type": "QPointF", - "x": 1693.3109741320875, - "y": 2632.486420466245 + "x": 1693.4089700819563, + "y": 2633.347542021286 }, { "type": "QPointF", - "x": 1687.9901053084427, - "y": 2580.353927532551 + "x": 1688.057425274056, + "y": 2581.08223913993 }, { "type": "QPointF", - "x": 1683.4582844809274, - "y": 2525.463573878589 + "x": 1683.5099994061193, + "y": 2526.1694642149946 }, { "type": "QPointF", - "x": 1677.9141764602605, - "y": 2438.490408366745 + "x": 1677.9586784282067, + "y": 2439.336287889993 }, { "type": "QPointF", - "x": 1672.7227781832871, - "y": 2312.9046441927917 + "x": 1672.7435992108194, + "y": 2313.5351656076173 }, { "type": "QPointF", @@ -155,6 +165,11 @@ "x": 1667.2583677386065, "y": 2029.732786467735 }, + { + "type": "QPointF", + "x": 1665.224201165844, + "y": 1790.259592444213 + }, { "type": "QPointF", "x": 1663.7116376060108, @@ -182,33 +197,33 @@ }, { "type": "QPointF", - "x": 2218.3461551694068, - "y": 159.8778773943609 + "x": 2217.5977299326023, + "y": 159.69675636609975 }, { "type": "QPointF", - "x": 2290.3556666474014, - "y": 178.09786268498775 + "x": 2289.3425285726667, + "y": 177.82671822296527 }, { "type": "QPointF", - "x": 2356.386310160867, - "y": 196.77174097480187 + "x": 2355.330774389572, + "y": 196.45681566842157 }, { "type": "QPointF", - "x": 2418.743012243872, - "y": 216.38498242273093 + "x": 2417.76276883939, + "y": 216.0621255686488 }, { "type": "QPointF", - "x": 2479.7368903013507, - "y": 237.4114485815882 + "x": 2478.943438456191, + "y": 237.12811808257362 }, { "type": "QPointF", - "x": 2541.791733714628, - "y": 260.35933461464947 + "x": 2541.1839006449068, + "y": 260.1286547630125 }, { "type": "QPointF", @@ -255,6 +270,11 @@ "x": 2582.147933534884, "y": 902.9327107340721 }, + { + "type": "QPointF", + "x": 2579.6177268527103, + "y": 916.710279982473 + }, { "type": "QPointF", "x": 2577.3549162322406, @@ -337,8 +357,8 @@ }, { "type": "QPointF", - "x": 2694.0188568415797, - "y": 1154.1454872438824 + "x": 2693.986760463563, + "y": 1154.4153784932541 }, { "type": "QPointF", @@ -370,6 +390,11 @@ "x": 2655.688340739313, "y": 1707.7165018577969 }, + { + "type": "QPointF", + "x": 2655.778424569198, + "y": 1721.9946692493584 + }, { "type": "QPointF", "x": 2655.953419573936, @@ -423,7 +448,7 @@ { "type": "QPointF", "x": 1984.9598604245455, - "y": 3105.37833426348 + "y": 3108.349696217459 } ] } diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_intersection/input.json b/src/test/ValentinaTest/share/DP_6_hem_by_intersection/input.json index ec21fd72e..e9c19c409 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_intersection/input.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_intersection/input.json @@ -2,569 +2,675 @@ "vector": [ { "angle": 1, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 1, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2014.9729320292, "y": 3069.6130267291883 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1999.838557691558, "y": 3068.8816935485092 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1985.2122453725951, "y": 3067.420020685311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1971.0851302475294, "y": 3065.229001637756 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1957.4483474915787, "y": 3062.309629904003 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1944.293032279962, "y": 3058.6628989822143 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1931.6103197878972, "y": 3054.289802370551 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1919.3913451906024, "y": 3049.191333567172 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1907.6272436632962, "y": 3043.368486070239 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1896.3091503811966, "y": 3036.8222533779135 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1885.4282005195219, "y": 3029.5536289883566 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1874.9755292534905, "y": 3021.563606399727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1864.9422717583204, "y": 3012.8531791101877 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1855.3195632092302, "y": 3003.4233406178982 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1846.098538781438, "y": 2993.2750844210195 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1837.2703336501618, "y": 2982.4094040177133 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1824.6988381756855, "y": 2964.8572538605545 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1809.2929657948505, "y": 2938.833269793301 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1795.2988037540088, "y": 2909.9574718672293 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1782.645433454907, "y": 2878.237808067624 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1771.2619362992912, "y": 2843.682226379773 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1761.0773936889077, "y": 2806.2986747889627 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1752.020887025502, "y": 2766.095101280478 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1744.0214977108208, "y": 2723.0794538396067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1737.00830714661, "y": 2677.259680451635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1730.9103967346155, "y": 2628.6437291018483 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1725.656847876584, "y": 2577.2395477755335 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1721.1767419742605, "y": 2523.055084457977 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1715.6771359215397, "y": 2436.927798469381 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1710.5065586720987, "y": 2311.972555710253 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1707.153218476922, "y": 2176.039248721311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1705.0497665499784, "y": 2029.1914613848467 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1703.0181141551627, "y": 1789.9386595512806 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1676.804606592377, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1790.1904333640305, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2132.831278036873, "y": 334.01963822471856 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2209.0824577516487, "y": 196.52029498815347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2280.0788311549086, "y": 214.46913581675784 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2345.053938897079, "y": 232.82808880019167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2406.430397575602, "y": 252.1184733940386 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2466.630823787921, "y": 272.8616090538824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2528.077834131477, "y": 295.5788152353067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2626.972277996681, "y": 334.08672189942854 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2683.174281565618, "y": 428.6163050991843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2636.9155845119085, "y": 570.0364148944475 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2602.3359035137023, "y": 679.2016045836615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2581.1485889486808, "y": 750.3046656507598 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2562.658903353014, "y": 818.1666036205969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2551.3190086136897, "y": 865.7283064025331 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2545.058458315721, "y": 895.6477493986852 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2542.4441145955184, "y": 909.8834645669292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2539.941891688312, "y": 924.5359428210015 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.2824566009085, "y": 946.6345652094251 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3671357993244, "y": 961.2177429989904 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3893819364166, "y": 975.5256347551833 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.538148749601, "y": 989.4206965556962 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2540.002389976296, "y": 1002.7653844782211 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2543.971059353917, "y": 1015.422154600451 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2549.633110619882, "y": 1027.253463000078 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2557.177497511606, "y": 1038.121765754795 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2566.7931737665076, "y": 1047.8895189422938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2578.669093122002, "y": 1056.419178640267 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2592.9942093155073, "y": 1063.5732009264073 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2609.9574760844393, "y": 1069.214041878407 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2629.747847166216, "y": 1073.204157573959 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2652.554276298253, "y": 1075.406004090755 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2656.455947900562, "y": 1149.9520876303336 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2642.4743193451973, "y": 1283.9248328571011 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2632.348846491074, "y": 1400.3953842544354 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2625.462074272455, "y": 1499.2648032469053 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2621.1965476236046, "y": 1580.4341512590793 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.9348114787863, "y": 1643.804489715526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.8911123953603, "y": 1707.5262208487393 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.9884514435694, "y": 1722.9543307086615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.243518754759, "y": 1728.6863715569775 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2620.9069750474355, "y": 1754.8103451532859 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2628.7361755238107, "y": 1818.230094084754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2644.9536288641093, "y": 1932.092426039521 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2659.427198191514, "y": 2020.1956325333963 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2669.339056867133, "y": 2073.2470143796036 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3075.2356380110023 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3188.621464782656 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3183.059839328322 diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_intersection/output.json b/src/test/ValentinaTest/share/DP_6_hem_by_intersection/output.json index c13751998..aca50a7da 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_intersection/output.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_intersection/output.json @@ -1,5 +1,15 @@ { "vector": [ + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3108.349696217459 + }, + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3107.1742631465927 + }, { "type": "QPointF", "x": 1984.9598604245455, @@ -7,8 +17,8 @@ }, { "type": "QPointF", - "x": 1980.460653502646, - "y": 3104.734721364734 + "x": 1980.4332947144517, + "y": 3104.9259742893705 }, { "type": "QPointF", @@ -62,8 +72,8 @@ }, { "type": "QPointF", - "x": 1827.775230874743, - "y": 3029.062323188764 + "x": 1828.6586787634583, + "y": 3029.9799215151306 }, { "type": "QPointF", @@ -102,48 +112,48 @@ }, { "type": "QPointF", - "x": 1724.2060573521064, - "y": 2814.604541011345 + "x": 1724.611163823378, + "y": 2816.233307965892 }, { "type": "QPointF", - "x": 1714.8626689124646, - "y": 2773.005215869235 + "x": 1715.1495506887006, + "y": 2774.4009675028606 }, { "type": "QPointF", - "x": 1706.6613158714413, - "y": 2728.7978163582184 + "x": 1706.8632795977835, + "y": 2729.989568428364 }, { "type": "QPointF", - "x": 1699.5068804939508, - "y": 2681.9634933710727 + "x": 1699.6481253072302, + "y": 2682.978042970247 }, { "type": "QPointF", - "x": 1693.3109741320875, - "y": 2632.486420466245 + "x": 1693.4089700819563, + "y": 2633.347542021286 }, { "type": "QPointF", - "x": 1687.9901053084427, - "y": 2580.353927532551 + "x": 1688.057425274056, + "y": 2581.08223913993 }, { "type": "QPointF", - "x": 1683.4582844809274, - "y": 2525.463573878589 + "x": 1683.5099994061193, + "y": 2526.1694642149946 }, { "type": "QPointF", - "x": 1677.9141764602605, - "y": 2438.490408366745 + "x": 1677.9586784282067, + "y": 2439.336287889993 }, { "type": "QPointF", - "x": 1672.7227781832871, - "y": 2312.9046441927917 + "x": 1672.7435992108194, + "y": 2313.5351656076173 }, { "type": "QPointF", @@ -155,6 +165,11 @@ "x": 1667.2583677386065, "y": 2029.732786467735 }, + { + "type": "QPointF", + "x": 1665.224201165844, + "y": 1790.259592444213 + }, { "type": "QPointF", "x": 1663.7116376060108, @@ -182,33 +197,33 @@ }, { "type": "QPointF", - "x": 2218.3461551694068, - "y": 159.8778773943609 + "x": 2217.5977299326023, + "y": 159.69675636609975 }, { "type": "QPointF", - "x": 2290.3556666474014, - "y": 178.09786268498775 + "x": 2289.3425285726667, + "y": 177.82671822296527 }, { "type": "QPointF", - "x": 2356.386310160867, - "y": 196.77174097480187 + "x": 2355.330774389572, + "y": 196.45681566842157 }, { "type": "QPointF", - "x": 2418.743012243872, - "y": 216.38498242273093 + "x": 2417.76276883939, + "y": 216.0621255686488 }, { "type": "QPointF", - "x": 2479.7368903013507, - "y": 237.4114485815882 + "x": 2478.943438456191, + "y": 237.12811808257362 }, { "type": "QPointF", - "x": 2541.791733714628, - "y": 260.35933461464947 + "x": 2541.1839006449068, + "y": 260.1286547630125 }, { "type": "QPointF", @@ -255,6 +270,11 @@ "x": 2582.147933534884, "y": 902.9327107340721 }, + { + "type": "QPointF", + "x": 2579.6177268527103, + "y": 916.710279982473 + }, { "type": "QPointF", "x": 2577.3549162322406, @@ -337,8 +357,8 @@ }, { "type": "QPointF", - "x": 2694.0188568415797, - "y": 1154.1454872438824 + "x": 2693.986760463563, + "y": 1154.4153784932541 }, { "type": "QPointF", @@ -370,6 +390,11 @@ "x": 2655.688340739313, "y": 1707.7165018577969 }, + { + "type": "QPointF", + "x": 2655.778424569198, + "y": 1721.9946692493584 + }, { "type": "QPointF", "x": 2655.953419573936, @@ -423,7 +448,7 @@ { "type": "QPointF", "x": 1984.9598604245455, - "y": 3105.37833426348 + "y": 3108.349696217459 } ] } diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_length/input.json b/src/test/ValentinaTest/share/DP_6_hem_by_length/input.json index 5030eb91a..b3d52acb4 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_length/input.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_length/input.json @@ -1,568 +1,674 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2014.9729320292, "y": 3069.6130267291883 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1999.838557691558, "y": 3068.8816935485092 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1985.2122453725951, "y": 3067.420020685311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1971.0851302475294, "y": 3065.229001637756 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1957.4483474915787, "y": 3062.309629904003 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1944.293032279962, "y": 3058.6628989822143 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1931.6103197878972, "y": 3054.289802370551 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1919.3913451906024, "y": 3049.191333567172 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1907.6272436632962, "y": 3043.368486070239 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1896.3091503811966, "y": 3036.8222533779135 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1885.4282005195219, "y": 3029.5536289883566 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1874.9755292534905, "y": 3021.563606399727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1864.9422717583204, "y": 3012.8531791101877 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1855.3195632092302, "y": 3003.4233406178982 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1846.098538781438, "y": 2993.2750844210195 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1837.2703336501618, "y": 2982.4094040177133 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1824.6988381756855, "y": 2964.8572538605545 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1809.2929657948505, "y": 2938.833269793301 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1795.2988037540088, "y": 2909.9574718672293 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1782.645433454907, "y": 2878.237808067624 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1771.2619362992912, "y": 2843.682226379773 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1761.0773936889077, "y": 2806.2986747889627 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1752.020887025502, "y": 2766.095101280478 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1744.0214977108208, "y": 2723.0794538396067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1737.00830714661, "y": 2677.259680451635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1730.9103967346155, "y": 2628.6437291018483 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1725.656847876584, "y": 2577.2395477755335 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1721.1767419742605, "y": 2523.055084457977 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1715.6771359215397, "y": 2436.927798469381 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1710.5065586720987, "y": 2311.972555710253 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1707.153218476922, "y": 2176.039248721311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1705.0497665499784, "y": 2029.1914613848467 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1703.0181141551627, "y": 1789.9386595512806 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1676.804606592377, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1790.1904333640305, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2132.831278036873, "y": 334.01963822471856 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2209.0824577516487, "y": 196.52029498815347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2280.0788311549086, "y": 214.46913581675784 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2345.053938897079, "y": 232.82808880019167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2406.430397575602, "y": 252.1184733940386 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2466.630823787921, "y": 272.8616090538824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2528.077834131477, "y": 295.5788152353067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2626.972277996681, "y": 334.08672189942854 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2683.174281565618, "y": 428.6163050991843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2636.9155845119085, "y": 570.0364148944475 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2602.3359035137023, "y": 679.2016045836615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2581.1485889486808, "y": 750.3046656507598 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2562.658903353014, "y": 818.1666036205969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2551.3190086136897, "y": 865.7283064025331 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2545.058458315721, "y": 895.6477493986852 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2542.4441145955184, "y": 909.8834645669292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2539.941891688312, "y": 924.5359428210015 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.2824566009085, "y": 946.6345652094251 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3671357993244, "y": 961.2177429989904 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3893819364166, "y": 975.5256347551833 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.538148749601, "y": 989.4206965556962 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2540.002389976296, "y": 1002.7653844782211 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2543.971059353917, "y": 1015.422154600451 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2549.633110619882, "y": 1027.253463000078 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2557.177497511606, "y": 1038.121765754795 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2566.7931737665076, "y": 1047.8895189422938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2578.669093122002, "y": 1056.419178640267 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2592.9942093155073, "y": 1063.5732009264073 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2609.9574760844393, "y": 1069.214041878407 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2629.747847166216, "y": 1073.204157573959 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2652.554276298253, "y": 1075.406004090755 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2656.455947900562, "y": 1149.9520876303336 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2642.4743193451973, "y": 1283.9248328571011 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2632.348846491074, "y": 1400.3953842544354 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2625.462074272455, "y": 1499.2648032469053 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2621.1965476236046, "y": 1580.4341512590793 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.9348114787863, "y": 1643.804489715526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.8911123953603, "y": 1707.5262208487393 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.9884514435694, "y": 1722.9543307086615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.243518754759, "y": 1728.6863715569775 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2620.9069750474355, "y": 1754.8103451532859 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2628.7361755238107, "y": 1818.230094084754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2644.9536288641093, "y": 1932.092426039521 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2659.427198191514, "y": 2020.1956325333963 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2669.339056867133, "y": 2073.2470143796036 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3075.2356380110023 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3188.621464782656 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3183.059839328322 diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_length/output.json b/src/test/ValentinaTest/share/DP_6_hem_by_length/output.json index c13751998..aca50a7da 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_length/output.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_length/output.json @@ -1,5 +1,15 @@ { "vector": [ + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3108.349696217459 + }, + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3107.1742631465927 + }, { "type": "QPointF", "x": 1984.9598604245455, @@ -7,8 +17,8 @@ }, { "type": "QPointF", - "x": 1980.460653502646, - "y": 3104.734721364734 + "x": 1980.4332947144517, + "y": 3104.9259742893705 }, { "type": "QPointF", @@ -62,8 +72,8 @@ }, { "type": "QPointF", - "x": 1827.775230874743, - "y": 3029.062323188764 + "x": 1828.6586787634583, + "y": 3029.9799215151306 }, { "type": "QPointF", @@ -102,48 +112,48 @@ }, { "type": "QPointF", - "x": 1724.2060573521064, - "y": 2814.604541011345 + "x": 1724.611163823378, + "y": 2816.233307965892 }, { "type": "QPointF", - "x": 1714.8626689124646, - "y": 2773.005215869235 + "x": 1715.1495506887006, + "y": 2774.4009675028606 }, { "type": "QPointF", - "x": 1706.6613158714413, - "y": 2728.7978163582184 + "x": 1706.8632795977835, + "y": 2729.989568428364 }, { "type": "QPointF", - "x": 1699.5068804939508, - "y": 2681.9634933710727 + "x": 1699.6481253072302, + "y": 2682.978042970247 }, { "type": "QPointF", - "x": 1693.3109741320875, - "y": 2632.486420466245 + "x": 1693.4089700819563, + "y": 2633.347542021286 }, { "type": "QPointF", - "x": 1687.9901053084427, - "y": 2580.353927532551 + "x": 1688.057425274056, + "y": 2581.08223913993 }, { "type": "QPointF", - "x": 1683.4582844809274, - "y": 2525.463573878589 + "x": 1683.5099994061193, + "y": 2526.1694642149946 }, { "type": "QPointF", - "x": 1677.9141764602605, - "y": 2438.490408366745 + "x": 1677.9586784282067, + "y": 2439.336287889993 }, { "type": "QPointF", - "x": 1672.7227781832871, - "y": 2312.9046441927917 + "x": 1672.7435992108194, + "y": 2313.5351656076173 }, { "type": "QPointF", @@ -155,6 +165,11 @@ "x": 1667.2583677386065, "y": 2029.732786467735 }, + { + "type": "QPointF", + "x": 1665.224201165844, + "y": 1790.259592444213 + }, { "type": "QPointF", "x": 1663.7116376060108, @@ -182,33 +197,33 @@ }, { "type": "QPointF", - "x": 2218.3461551694068, - "y": 159.8778773943609 + "x": 2217.5977299326023, + "y": 159.69675636609975 }, { "type": "QPointF", - "x": 2290.3556666474014, - "y": 178.09786268498775 + "x": 2289.3425285726667, + "y": 177.82671822296527 }, { "type": "QPointF", - "x": 2356.386310160867, - "y": 196.77174097480187 + "x": 2355.330774389572, + "y": 196.45681566842157 }, { "type": "QPointF", - "x": 2418.743012243872, - "y": 216.38498242273093 + "x": 2417.76276883939, + "y": 216.0621255686488 }, { "type": "QPointF", - "x": 2479.7368903013507, - "y": 237.4114485815882 + "x": 2478.943438456191, + "y": 237.12811808257362 }, { "type": "QPointF", - "x": 2541.791733714628, - "y": 260.35933461464947 + "x": 2541.1839006449068, + "y": 260.1286547630125 }, { "type": "QPointF", @@ -255,6 +270,11 @@ "x": 2582.147933534884, "y": 902.9327107340721 }, + { + "type": "QPointF", + "x": 2579.6177268527103, + "y": 916.710279982473 + }, { "type": "QPointF", "x": 2577.3549162322406, @@ -337,8 +357,8 @@ }, { "type": "QPointF", - "x": 2694.0188568415797, - "y": 1154.1454872438824 + "x": 2693.986760463563, + "y": 1154.4153784932541 }, { "type": "QPointF", @@ -370,6 +390,11 @@ "x": 2655.688340739313, "y": 1707.7165018577969 }, + { + "type": "QPointF", + "x": 2655.778424569198, + "y": 1721.9946692493584 + }, { "type": "QPointF", "x": 2655.953419573936, @@ -423,7 +448,7 @@ { "type": "QPointF", "x": 1984.9598604245455, - "y": 3105.37833426348 + "y": 3108.349696217459 } ] } diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_right_angle/input.json b/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_right_angle/input.json index f28395b9a..c2aa53e8f 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_right_angle/input.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_right_angle/input.json @@ -2,569 +2,675 @@ "vector": [ { "angle": 5, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 5, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2014.9729320292, "y": 3069.6130267291883 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1999.838557691558, "y": 3068.8816935485092 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1985.2122453725951, "y": 3067.420020685311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1971.0851302475294, "y": 3065.229001637756 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1957.4483474915787, "y": 3062.309629904003 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1944.293032279962, "y": 3058.6628989822143 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1931.6103197878972, "y": 3054.289802370551 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1919.3913451906024, "y": 3049.191333567172 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1907.6272436632962, "y": 3043.368486070239 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1896.3091503811966, "y": 3036.8222533779135 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1885.4282005195219, "y": 3029.5536289883566 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1874.9755292534905, "y": 3021.563606399727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1864.9422717583204, "y": 3012.8531791101877 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1855.3195632092302, "y": 3003.4233406178982 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1846.098538781438, "y": 2993.2750844210195 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1837.2703336501618, "y": 2982.4094040177133 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1824.6988381756855, "y": 2964.8572538605545 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1809.2929657948505, "y": 2938.833269793301 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1795.2988037540088, "y": 2909.9574718672293 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1782.645433454907, "y": 2878.237808067624 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1771.2619362992912, "y": 2843.682226379773 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1761.0773936889077, "y": 2806.2986747889627 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1752.020887025502, "y": 2766.095101280478 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1744.0214977108208, "y": 2723.0794538396067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1737.00830714661, "y": 2677.259680451635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1730.9103967346155, "y": 2628.6437291018483 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1725.656847876584, "y": 2577.2395477755335 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1721.1767419742605, "y": 2523.055084457977 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1715.6771359215397, "y": 2436.927798469381 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1710.5065586720987, "y": 2311.972555710253 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1707.153218476922, "y": 2176.039248721311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1705.0497665499784, "y": 2029.1914613848467 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1703.0181141551627, "y": 1789.9386595512806 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1676.804606592377, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1790.1904333640305, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2132.831278036873, "y": 334.01963822471856 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2209.0824577516487, "y": 196.52029498815347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2280.0788311549086, "y": 214.46913581675784 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2345.053938897079, "y": 232.82808880019167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2406.430397575602, "y": 252.1184733940386 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2466.630823787921, "y": 272.8616090538824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2528.077834131477, "y": 295.5788152353067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2626.972277996681, "y": 334.08672189942854 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2683.174281565618, "y": 428.6163050991843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2636.9155845119085, "y": 570.0364148944475 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2602.3359035137023, "y": 679.2016045836615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2581.1485889486808, "y": 750.3046656507598 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2562.658903353014, "y": 818.1666036205969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2551.3190086136897, "y": 865.7283064025331 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2545.058458315721, "y": 895.6477493986852 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2542.4441145955184, "y": 909.8834645669292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2539.941891688312, "y": 924.5359428210015 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.2824566009085, "y": 946.6345652094251 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3671357993244, "y": 961.2177429989904 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3893819364166, "y": 975.5256347551833 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.538148749601, "y": 989.4206965556962 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2540.002389976296, "y": 1002.7653844782211 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2543.971059353917, "y": 1015.422154600451 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2549.633110619882, "y": 1027.253463000078 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2557.177497511606, "y": 1038.121765754795 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2566.7931737665076, "y": 1047.8895189422938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2578.669093122002, "y": 1056.419178640267 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2592.9942093155073, "y": 1063.5732009264073 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2609.9574760844393, "y": 1069.214041878407 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2629.747847166216, "y": 1073.204157573959 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2652.554276298253, "y": 1075.406004090755 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2656.455947900562, "y": 1149.9520876303336 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2642.4743193451973, "y": 1283.9248328571011 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2632.348846491074, "y": 1400.3953842544354 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2625.462074272455, "y": 1499.2648032469053 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2621.1965476236046, "y": 1580.4341512590793 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.9348114787863, "y": 1643.804489715526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.8911123953603, "y": 1707.5262208487393 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.9884514435694, "y": 1722.9543307086615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.243518754759, "y": 1728.6863715569775 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2620.9069750474355, "y": 1754.8103451532859 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2628.7361755238107, "y": 1818.230094084754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2644.9536288641093, "y": 1932.092426039521 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2659.427198191514, "y": 2020.1956325333963 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2669.339056867133, "y": 2073.2470143796036 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3075.2356380110023 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3188.621464782656 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3183.059839328322 diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_right_angle/output.json b/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_right_angle/output.json index c13751998..aca50a7da 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_right_angle/output.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_right_angle/output.json @@ -1,5 +1,15 @@ { "vector": [ + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3108.349696217459 + }, + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3107.1742631465927 + }, { "type": "QPointF", "x": 1984.9598604245455, @@ -7,8 +17,8 @@ }, { "type": "QPointF", - "x": 1980.460653502646, - "y": 3104.734721364734 + "x": 1980.4332947144517, + "y": 3104.9259742893705 }, { "type": "QPointF", @@ -62,8 +72,8 @@ }, { "type": "QPointF", - "x": 1827.775230874743, - "y": 3029.062323188764 + "x": 1828.6586787634583, + "y": 3029.9799215151306 }, { "type": "QPointF", @@ -102,48 +112,48 @@ }, { "type": "QPointF", - "x": 1724.2060573521064, - "y": 2814.604541011345 + "x": 1724.611163823378, + "y": 2816.233307965892 }, { "type": "QPointF", - "x": 1714.8626689124646, - "y": 2773.005215869235 + "x": 1715.1495506887006, + "y": 2774.4009675028606 }, { "type": "QPointF", - "x": 1706.6613158714413, - "y": 2728.7978163582184 + "x": 1706.8632795977835, + "y": 2729.989568428364 }, { "type": "QPointF", - "x": 1699.5068804939508, - "y": 2681.9634933710727 + "x": 1699.6481253072302, + "y": 2682.978042970247 }, { "type": "QPointF", - "x": 1693.3109741320875, - "y": 2632.486420466245 + "x": 1693.4089700819563, + "y": 2633.347542021286 }, { "type": "QPointF", - "x": 1687.9901053084427, - "y": 2580.353927532551 + "x": 1688.057425274056, + "y": 2581.08223913993 }, { "type": "QPointF", - "x": 1683.4582844809274, - "y": 2525.463573878589 + "x": 1683.5099994061193, + "y": 2526.1694642149946 }, { "type": "QPointF", - "x": 1677.9141764602605, - "y": 2438.490408366745 + "x": 1677.9586784282067, + "y": 2439.336287889993 }, { "type": "QPointF", - "x": 1672.7227781832871, - "y": 2312.9046441927917 + "x": 1672.7435992108194, + "y": 2313.5351656076173 }, { "type": "QPointF", @@ -155,6 +165,11 @@ "x": 1667.2583677386065, "y": 2029.732786467735 }, + { + "type": "QPointF", + "x": 1665.224201165844, + "y": 1790.259592444213 + }, { "type": "QPointF", "x": 1663.7116376060108, @@ -182,33 +197,33 @@ }, { "type": "QPointF", - "x": 2218.3461551694068, - "y": 159.8778773943609 + "x": 2217.5977299326023, + "y": 159.69675636609975 }, { "type": "QPointF", - "x": 2290.3556666474014, - "y": 178.09786268498775 + "x": 2289.3425285726667, + "y": 177.82671822296527 }, { "type": "QPointF", - "x": 2356.386310160867, - "y": 196.77174097480187 + "x": 2355.330774389572, + "y": 196.45681566842157 }, { "type": "QPointF", - "x": 2418.743012243872, - "y": 216.38498242273093 + "x": 2417.76276883939, + "y": 216.0621255686488 }, { "type": "QPointF", - "x": 2479.7368903013507, - "y": 237.4114485815882 + "x": 2478.943438456191, + "y": 237.12811808257362 }, { "type": "QPointF", - "x": 2541.791733714628, - "y": 260.35933461464947 + "x": 2541.1839006449068, + "y": 260.1286547630125 }, { "type": "QPointF", @@ -255,6 +270,11 @@ "x": 2582.147933534884, "y": 902.9327107340721 }, + { + "type": "QPointF", + "x": 2579.6177268527103, + "y": 916.710279982473 + }, { "type": "QPointF", "x": 2577.3549162322406, @@ -337,8 +357,8 @@ }, { "type": "QPointF", - "x": 2694.0188568415797, - "y": 1154.1454872438824 + "x": 2693.986760463563, + "y": 1154.4153784932541 }, { "type": "QPointF", @@ -370,6 +390,11 @@ "x": 2655.688340739313, "y": 1707.7165018577969 }, + { + "type": "QPointF", + "x": 2655.778424569198, + "y": 1721.9946692493584 + }, { "type": "QPointF", "x": 2655.953419573936, @@ -423,7 +448,7 @@ { "type": "QPointF", "x": 1984.9598604245455, - "y": 3105.37833426348 + "y": 3108.349696217459 } ] } diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_symmetry/input.json b/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_symmetry/input.json index cc7e3962d..4ff56d8e4 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_symmetry/input.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_symmetry/input.json @@ -2,569 +2,675 @@ "vector": [ { "angle": 3, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 3, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3069.6740125566685 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2014.9729320292, "y": 3069.6130267291883 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1999.838557691558, "y": 3068.8816935485092 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1985.2122453725951, "y": 3067.420020685311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1971.0851302475294, "y": 3065.229001637756 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1957.4483474915787, "y": 3062.309629904003 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1944.293032279962, "y": 3058.6628989822143 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1931.6103197878972, "y": 3054.289802370551 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1919.3913451906024, "y": 3049.191333567172 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1907.6272436632962, "y": 3043.368486070239 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1896.3091503811966, "y": 3036.8222533779135 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1885.4282005195219, "y": 3029.5536289883566 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1874.9755292534905, "y": 3021.563606399727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1864.9422717583204, "y": 3012.8531791101877 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1855.3195632092302, "y": 3003.4233406178982 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1846.098538781438, "y": 2993.2750844210195 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1837.2703336501618, "y": 2982.4094040177133 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1824.6988381756855, "y": 2964.8572538605545 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1809.2929657948505, "y": 2938.833269793301 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1795.2988037540088, "y": 2909.9574718672293 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1782.645433454907, "y": 2878.237808067624 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1771.2619362992912, "y": 2843.682226379773 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1761.0773936889077, "y": 2806.2986747889627 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1752.020887025502, "y": 2766.095101280478 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1744.0214977108208, "y": 2723.0794538396067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1737.00830714661, "y": 2677.259680451635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1730.9103967346155, "y": 2628.6437291018483 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1725.656847876584, "y": 2577.2395477755335 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1721.1767419742605, "y": 2523.055084457977 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1715.6771359215397, "y": 2436.927798469381 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1710.5065586720987, "y": 2311.972555710253 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1707.153218476922, "y": 2176.039248721311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1705.0497665499784, "y": 2029.1914613848467 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1703.0181141551627, "y": 1789.9386595512806 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1701.5055118110236, "y": 1614.2929133858268 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1676.804606592377, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1790.1904333640305, "y": 376.4976377952755 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2132.831278036873, "y": 334.01963822471856 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2170.166929133858, "y": 187.5212598425196 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2209.0824577516487, "y": 196.52029498815347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2280.0788311549086, "y": 214.46913581675784 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2345.053938897079, "y": 232.82808880019167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2406.430397575602, "y": 252.1184733940386 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2466.630823787921, "y": 272.8616090538824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2528.077834131477, "y": 295.5788152353067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2626.972277996681, "y": 334.08672189942854 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2703.4528262445083, "y": 364.5878268403889 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2683.174281565618, "y": 428.6163050991843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2636.9155845119085, "y": 570.0364148944475 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2602.3359035137023, "y": 679.2016045836615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2581.1485889486808, "y": 750.3046656507598 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2562.658903353014, "y": 818.1666036205969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2551.3190086136897, "y": 865.7283064025331 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2545.058458315721, "y": 895.6477493986852 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2542.4441145955184, "y": 909.8834645669292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2539.941891688312, "y": 924.5359428210015 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.2824566009085, "y": 946.6345652094251 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3671357993244, "y": 961.2177429989904 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2536.3893819364166, "y": 975.5256347551833 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2537.538148749601, "y": 989.4206965556962 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2540.002389976296, "y": 1002.7653844782211 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2543.971059353917, "y": 1015.422154600451 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2549.633110619882, "y": 1027.253463000078 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2557.177497511606, "y": 1038.121765754795 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2566.7931737665076, "y": 1047.8895189422938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2578.669093122002, "y": 1056.419178640267 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2592.9942093155073, "y": 1063.5732009264073 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2609.9574760844393, "y": 1069.214041878407 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2629.747847166216, "y": 1073.204157573959 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2652.554276298253, "y": 1075.406004090755 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2665.2850393700787, "y": 1075.7102362204726 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2656.455947900562, "y": 1149.9520876303336 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2642.4743193451973, "y": 1283.9248328571011 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2632.348846491074, "y": 1400.3953842544354 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2625.462074272455, "y": 1499.2648032469053 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2621.1965476236046, "y": 1580.4341512590793 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.9348114787863, "y": 1643.804489715526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.8911123953603, "y": 1707.5262208487393 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2617.9884514435694, "y": 1722.9543307086615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2618.243518754759, "y": 1728.6863715569775 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2620.9069750474355, "y": 1754.8103451532859 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2628.7361755238107, "y": 1818.230094084754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2644.9536288641093, "y": 1932.092426039521 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2659.427198191514, "y": 2020.1956325333963 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2669.339056867133, "y": 2073.2470143796036 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2674.225047922979, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 2096.1826771653546 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3075.2356380110023 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2608.5921259842517, "y": 3188.621464782656 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2022.7551360150967, "y": 3183.059839328322 diff --git a/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_symmetry/output.json b/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_symmetry/output.json index c13751998..aca50a7da 100644 --- a/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_symmetry/output.json +++ b/src/test/ValentinaTest/share/DP_6_hem_by_second_edge_symmetry/output.json @@ -1,5 +1,15 @@ { "vector": [ + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3108.349696217459 + }, + { + "type": "QPointF", + "x": 1984.9598604245455, + "y": 3107.1742631465927 + }, { "type": "QPointF", "x": 1984.9598604245455, @@ -7,8 +17,8 @@ }, { "type": "QPointF", - "x": 1980.460653502646, - "y": 3104.734721364734 + "x": 1980.4332947144517, + "y": 3104.9259742893705 }, { "type": "QPointF", @@ -62,8 +72,8 @@ }, { "type": "QPointF", - "x": 1827.775230874743, - "y": 3029.062323188764 + "x": 1828.6586787634583, + "y": 3029.9799215151306 }, { "type": "QPointF", @@ -102,48 +112,48 @@ }, { "type": "QPointF", - "x": 1724.2060573521064, - "y": 2814.604541011345 + "x": 1724.611163823378, + "y": 2816.233307965892 }, { "type": "QPointF", - "x": 1714.8626689124646, - "y": 2773.005215869235 + "x": 1715.1495506887006, + "y": 2774.4009675028606 }, { "type": "QPointF", - "x": 1706.6613158714413, - "y": 2728.7978163582184 + "x": 1706.8632795977835, + "y": 2729.989568428364 }, { "type": "QPointF", - "x": 1699.5068804939508, - "y": 2681.9634933710727 + "x": 1699.6481253072302, + "y": 2682.978042970247 }, { "type": "QPointF", - "x": 1693.3109741320875, - "y": 2632.486420466245 + "x": 1693.4089700819563, + "y": 2633.347542021286 }, { "type": "QPointF", - "x": 1687.9901053084427, - "y": 2580.353927532551 + "x": 1688.057425274056, + "y": 2581.08223913993 }, { "type": "QPointF", - "x": 1683.4582844809274, - "y": 2525.463573878589 + "x": 1683.5099994061193, + "y": 2526.1694642149946 }, { "type": "QPointF", - "x": 1677.9141764602605, - "y": 2438.490408366745 + "x": 1677.9586784282067, + "y": 2439.336287889993 }, { "type": "QPointF", - "x": 1672.7227781832871, - "y": 2312.9046441927917 + "x": 1672.7435992108194, + "y": 2313.5351656076173 }, { "type": "QPointF", @@ -155,6 +165,11 @@ "x": 1667.2583677386065, "y": 2029.732786467735 }, + { + "type": "QPointF", + "x": 1665.224201165844, + "y": 1790.259592444213 + }, { "type": "QPointF", "x": 1663.7116376060108, @@ -182,33 +197,33 @@ }, { "type": "QPointF", - "x": 2218.3461551694068, - "y": 159.8778773943609 + "x": 2217.5977299326023, + "y": 159.69675636609975 }, { "type": "QPointF", - "x": 2290.3556666474014, - "y": 178.09786268498775 + "x": 2289.3425285726667, + "y": 177.82671822296527 }, { "type": "QPointF", - "x": 2356.386310160867, - "y": 196.77174097480187 + "x": 2355.330774389572, + "y": 196.45681566842157 }, { "type": "QPointF", - "x": 2418.743012243872, - "y": 216.38498242273093 + "x": 2417.76276883939, + "y": 216.0621255686488 }, { "type": "QPointF", - "x": 2479.7368903013507, - "y": 237.4114485815882 + "x": 2478.943438456191, + "y": 237.12811808257362 }, { "type": "QPointF", - "x": 2541.791733714628, - "y": 260.35933461464947 + "x": 2541.1839006449068, + "y": 260.1286547630125 }, { "type": "QPointF", @@ -255,6 +270,11 @@ "x": 2582.147933534884, "y": 902.9327107340721 }, + { + "type": "QPointF", + "x": 2579.6177268527103, + "y": 916.710279982473 + }, { "type": "QPointF", "x": 2577.3549162322406, @@ -337,8 +357,8 @@ }, { "type": "QPointF", - "x": 2694.0188568415797, - "y": 1154.1454872438824 + "x": 2693.986760463563, + "y": 1154.4153784932541 }, { "type": "QPointF", @@ -370,6 +390,11 @@ "x": 2655.688340739313, "y": 1707.7165018577969 }, + { + "type": "QPointF", + "x": 2655.778424569198, + "y": 1721.9946692493584 + }, { "type": "QPointF", "x": 2655.953419573936, @@ -423,7 +448,7 @@ { "type": "QPointF", "x": 1984.9598604245455, - "y": 3105.37833426348 + "y": 3108.349696217459 } ] } diff --git a/src/test/ValentinaTest/share/Issue_548_case2/input.json b/src/test/ValentinaTest/share/Issue_548_case2/input.json index 3f07d5679..64200ebc5 100644 --- a/src/test/ValentinaTest/share/Issue_548_case2/input.json +++ b/src/test/ValentinaTest/share/Issue_548_case2/input.json @@ -1,31 +1,37 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", "x": 99.86433649395012, "y": 10.166060970128015 }, { + "turnPoint": true, "type": "VSAPoint", "x": 236.976230899601, "y": 65.89294600598842 }, { + "turnPoint": true, "type": "VSAPoint", "x": 198.9294347511521, "y": 172.04822599160408 }, { + "turnPoint": true, "type": "VSAPoint", "x": 260.3187756756982, "y": 75.38014122578073 }, { + "turnPoint": true, "type": "VSAPoint", "x": 324.5363299638826, "y": 101.48031496062993 }, { + "turnPoint": true, "type": "VSAPoint", "x": 29.858267716535437, "y": 300.8503937007874 diff --git a/src/test/ValentinaTest/share/Issue_548_case2/output.json b/src/test/ValentinaTest/share/Issue_548_case2/output.json index a5d109e59..38aaa3415 100644 --- a/src/test/ValentinaTest/share/Issue_548_case2/output.json +++ b/src/test/ValentinaTest/share/Issue_548_case2/output.json @@ -5,6 +5,16 @@ "x": 73.4038432255171, "y": -41.386063334917424 }, + { + "type": "QPointF", + "x": 284.78380715883054, + "y": 44.52586283354347 + }, + { + "type": "QPointF", + "x": 245.32495095506744, + "y": 28.488456649013926 + }, { "type": "QPointF", "x": 404.34279917400556, diff --git a/src/test/ValentinaTest/share/Issue_548_case3/input.json b/src/test/ValentinaTest/share/Issue_548_case3/input.json index 3f07d5679..64200ebc5 100644 --- a/src/test/ValentinaTest/share/Issue_548_case3/input.json +++ b/src/test/ValentinaTest/share/Issue_548_case3/input.json @@ -1,31 +1,37 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", "x": 99.86433649395012, "y": 10.166060970128015 }, { + "turnPoint": true, "type": "VSAPoint", "x": 236.976230899601, "y": 65.89294600598842 }, { + "turnPoint": true, "type": "VSAPoint", "x": 198.9294347511521, "y": 172.04822599160408 }, { + "turnPoint": true, "type": "VSAPoint", "x": 260.3187756756982, "y": 75.38014122578073 }, { + "turnPoint": true, "type": "VSAPoint", "x": 324.5363299638826, "y": 101.48031496062993 }, { + "turnPoint": true, "type": "VSAPoint", "x": 29.858267716535437, "y": 300.8503937007874 diff --git a/src/test/ValentinaTest/share/Issue_548_case3/output.json b/src/test/ValentinaTest/share/Issue_548_case3/output.json index ae6a52336..f245ef158 100644 --- a/src/test/ValentinaTest/share/Issue_548_case3/output.json +++ b/src/test/ValentinaTest/share/Issue_548_case3/output.json @@ -5,6 +5,16 @@ "x": 46.94334995708405, "y": -92.9381876399629 }, + { + "type": "QPointF", + "x": 332.5913834180602, + "y": 23.15877966109862 + }, + { + "type": "QPointF", + "x": 230.33112623443668, + "y": -18.40322792775288 + }, { "type": "QPointF", "x": 484.14926838412856, diff --git a/src/test/ValentinaTest/share/Issue_627/input.json b/src/test/ValentinaTest/share/Issue_627/input.json index 7979abd94..89a2462fd 100644 --- a/src/test/ValentinaTest/share/Issue_627/input.json +++ b/src/test/ValentinaTest/share/Issue_627/input.json @@ -2,147 +2,126 @@ "vector": [ { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", - "x": 11565.008125001965, - "y": -71.44488549419933 + "x": 11565.013142470898, + "y": -71.44502878281966 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", - "x": 11774.053467225081, - "y": -3376.8303371353477 + "x": 12574.226196766724, + "y": -4788.694779920271 }, { + "curvePoint": true, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", - "x": 11774.053467225081, - "y": -3376.8303371353477 - }, - { - "angle": 6, - "type": "VSAPoint", - "x": 11821.637653562488, - "y": -3457.444047544761 - }, - { - "angle": 6, - "type": "VSAPoint", - "x": 11916.506852253828, - "y": -3619.698047174161 - }, - { - "angle": 6, - "type": "VSAPoint", - "x": 12011.687139013728, - "y": -3784.3170132645946 - }, - { - "angle": 6, - "type": "VSAPoint", - "x": 12107.923065894336, - "y": -3952.559914581168 - }, - { - "angle": 6, - "type": "VSAPoint", - "x": 12205.959184947797, - "y": -4125.685719888987 - }, - { - "angle": 6, - "type": "VSAPoint", - "x": 12306.540048226263, - "y": -4304.953397953153 - }, - { - "angle": 6, - "type": "VSAPoint", - "x": 12463.260680635496, - "y": -4586.963758807588 + "x": 12574.226196766724, + "y": -4788.694779920271 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 12688.625497168217, "y": -4997.457976655285 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 12937.571227539614, "y": -5455.181123300274 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 13363.424703096609, "y": -6243.3010001396 }, { + "curvePoint": true, "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 13704.042216387523, "y": -6875.648082494775 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 13704.042216387523, "y": -6875.648082494775 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", - "x": 13493.259591532773, - "y": -71.4448854942045 + "x": 13493.254460030012, + "y": -71.44503203938407 }, { + "curvePoint": true, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", - "x": 13493.259591532773, - "y": -71.4448854942045 + "x": 13493.254460030012, + "y": -71.44503203938407 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 13227.96813484252, "y": -78.38238188976378 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 12939.963705708662, "y": -83.80364173228347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 12664.66535433071, "y": -86.51427165354332 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 12393.602362204725, "y": -86.51427165354332 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 12118.304010826774, "y": -83.80364173228347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 11830.299581692912, "y": -78.38238188976378 }, { + "curvePoint": true, "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", - "x": 11565.008125001965, - "y": -71.44488549419933 + "x": 11565.013142470898, + "y": -71.44502878281966 } ] } diff --git a/src/test/ValentinaTest/share/Issue_627/output.json b/src/test/ValentinaTest/share/Issue_627/output.json index 67a6a8529..3bfb9f21c 100644 --- a/src/test/ValentinaTest/share/Issue_627/output.json +++ b/src/test/ValentinaTest/share/Issue_627/output.json @@ -2,48 +2,23 @@ "vector": [ { "type": "QPointF", - "x": 11560.846475874965, - "y": -14.623761696484117 + "x": 11551.905199769692, + "y": -14.389955863800495 }, { "type": "QPointF", - "x": 11781.326946495077, - "y": -3500.819302857501 + "x": 12404.150893454804, + "y": -3997.9450330949685 }, { "type": "QPointF", - "x": 11867.565752333256, - "y": -3648.313692662954 + "x": 12614.150847904311, + "y": -4979.523926317832 }, { "type": "QPointF", - "x": 11962.607394275858, - "y": -3812.6942063012807 - }, - { - "type": "QPointF", - "x": 12058.712075176787, - "y": -3980.708890064595 - }, - { - "type": "QPointF", - "x": 12156.626721853161, - "y": -4153.62126200273 - }, - { - "type": "QPointF", - "x": 12257.09760942872, - "y": -4332.693831870464 - }, - { - "type": "QPointF", - "x": 12413.705754675855, - "y": -4614.5027446514505 - }, - { - "type": "QPointF", - "x": 12638.929472529417, - "y": -5024.741516808089 + "x": 12638.908041375378, + "y": -5024.702444307613 }, { "type": "QPointF", @@ -57,38 +32,38 @@ }, { "type": "QPointF", - "x": 13708.573357026718, - "y": -7003.606684992652 + "x": 13708.907465404465, + "y": -7004.226948043184 }, { "type": "QPointF", - "x": 13492.070905293423, - "y": -14.763675483318366 + "x": 13492.380272854994, + "y": -14.755597758319709 }, { "type": "QPointF", - "x": 13226.486095144688, - "y": -21.70884320982175 + "x": 13226.486097782079, + "y": -21.708843140852863 }, { "type": "QPointF", - "x": 12939.151113441983, - "y": -27.11598122480561 + "x": 12938.896733996888, + "y": -27.120769543772127 }, { "type": "QPointF", - "x": 12664.386257521342, + "x": 12664.107174239743, + "y": -29.824106164643062 + }, + { + "type": "QPointF", + "x": 12393.602362204725, "y": -29.82135826771654 }, { "type": "QPointF", - "x": 12393.881459014092, - "y": -29.82135826771654 - }, - { - "type": "QPointF", - "x": 12119.116603093453, - "y": -27.11598122480561 + "x": 12118.86219091774, + "y": -27.11347624338321 }, { "type": "QPointF", @@ -97,8 +72,8 @@ }, { "type": "QPointF", - "x": 11560.846475874965, - "y": -14.623761696484117 + "x": 11551.905199769692, + "y": -14.389955863800495 } ] } diff --git a/src/test/ValentinaTest/share/Issue_646/input.json b/src/test/ValentinaTest/share/Issue_646/input.json index 96810db6d..c7e20859a 100644 --- a/src/test/ValentinaTest/share/Issue_646/input.json +++ b/src/test/ValentinaTest/share/Issue_646/input.json @@ -1,6 +1,7 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", "x": 1352.8346456692914, "y": 1173.8581417322835 @@ -9,20 +10,24 @@ "angle": 6, "saAfter": 0, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 1352.8346456692914, "y": 1362.8345196850394 }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 1352.8346456692914, "y": 1362.8345196850394 }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -31,6 +36,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -39,6 +45,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -47,6 +54,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -55,6 +63,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -63,6 +72,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -71,6 +81,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -79,6 +90,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -87,6 +99,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -95,6 +108,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -103,6 +117,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -111,6 +126,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -119,6 +135,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -127,6 +144,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -135,6 +153,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -143,6 +162,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -151,6 +171,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -159,6 +180,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -167,6 +189,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -175,6 +198,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -183,6 +207,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -191,8 +216,10 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 691.4173228346457, "y": 1476.2203464566928 @@ -201,20 +228,24 @@ "angle": 6, "saAfter": 0, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 691.4173228346457, "y": 1476.2203464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 691.4173228346457, "y": 1476.2203464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -223,6 +254,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -231,6 +263,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -239,6 +272,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -247,6 +281,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -255,6 +290,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -263,6 +299,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -271,6 +308,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -279,6 +317,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -287,6 +326,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -295,6 +335,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -303,6 +344,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -311,6 +353,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -319,6 +362,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -327,6 +371,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -335,6 +380,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, "type": "VSAPoint", @@ -343,8 +389,10 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 0, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 1362.8345196850394 @@ -353,401 +401,473 @@ "angle": 6, "saAfter": 0, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 1362.8345196850394 }, { + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 1173.8581417322835 }, { + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 33.76305151898726, "y": 60.995030973282226 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 43.0315825387278, "y": 101.39020424935029 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 54.27954844568175, "y": 139.90490371803747 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 67.38308402773156, "y": 176.57656822314317 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 82.21832407275966, "y": 211.44263660846684 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 98.66140336864854, "y": 244.5405477178079 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 116.58845670328057, "y": 275.9077403949657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 135.87561886453827, "y": 305.58165348373984 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 156.39902464030405, "y": 333.59972582792955 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 178.03480881846033, "y": 359.9993962713345 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 200.65910618688957, "y": 384.8181036577539 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 224.1480515334743, "y": 408.0932868309873 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 248.37777964609688, "y": 429.8623846348342 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 273.2244253126397, "y": 450.1628359130938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 298.5641233209853, "y": 469.03207950956573 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 324.27300845901607, "y": 486.50755426804926 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 350.2272155146145, "y": 502.62669903234394 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 376.30287927566303, "y": 517.4269526462492 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 402.37613453004406, "y": 530.9457539535643 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 428.3231160656401, "y": 543.220541798089 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 454.0199586703335, "y": 554.2887550236226 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 479.34279713200675, "y": 564.1878324739644 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 504.1677662385423, "y": 572.9552129929136 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 528.3710007778225, "y": 580.6283354242702 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 563.3555698213261, "y": 590.2932652501413 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 606.5452489509445, "y": 599.5232277128903 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 645.018415993426, "y": 605.0500570136577 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 677.7841492518301, "y": 607.1732639028387 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 691.4173228346472, "y": 606.9290078739998 }, { + "turnPoint": true, "type": "VSAPoint", "x": 691.4173228346472, "y": 606.9290078739998 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 691.4173228346472, "y": 606.9290078739998 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 705.4040324293001, "y": 606.5537669203095 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 733.313887957579, "y": 607.2856128814886 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 761.113422978073, "y": 609.7421003245712 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 788.7648106968343, "y": 613.8630604047041 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 816.2302243199158, "y": 619.5883242770342 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 843.4718370533695, "y": 626.8577230967081 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 870.4518221032482, "y": 635.6110880188726 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 897.1323526756041, "y": 645.7882501986744 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 923.4756019764898, "y": 657.3290407912602 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 949.4437432119576, "y": 670.1732909517772 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 974.99894958806, "y": 684.2608318353717 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1000.1033943108496, "y": 699.5314945971908 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1024.7192505863786, "y": 715.9251103923807 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1048.8086916206998, "y": 733.381510376089 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1072.333890619865, "y": 751.8405257034619 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1095.257020789927, "y": 771.2419875296464 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1117.5402553369386, "y": 791.5257270097891 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1139.1457674669518, "y": 812.6315752990367 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1160.0357303860196, "y": 834.4993635525362 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1180.1723173001938, "y": 857.0689229254342 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1199.517701415527, "y": 880.2800845728777 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1218.0340559380716, "y": 904.0726796500132 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1235.6835540738803, "y": 928.3865393119877 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1252.4283690290056, "y": 953.1614947139476 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1268.2306740094996, "y": 978.3373770110402 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1283.0526422214152, "y": 1003.8540173584116 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1296.8564468708046, "y": 1029.651246911209 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1309.60426116372, "y": 1055.6688968245794 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1321.258258306214, "y": 1081.846798253669 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1331.780611504339, "y": 1108.1247823536248 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1341.1334939641479, "y": 1134.4426802795938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1349.2790788916927, "y": 1160.7403231867224 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1352.8346456692914, "y": 1173.8581417322835 diff --git a/src/test/ValentinaTest/share/Issue_646/output.json b/src/test/ValentinaTest/share/Issue_646/output.json index 419ceadc7..4023f8d48 100644 --- a/src/test/ValentinaTest/share/Issue_646/output.json +++ b/src/test/ValentinaTest/share/Issue_646/output.json @@ -2,203 +2,208 @@ "vector": [ { "type": "QPointF", - "x": 1391.2039211231315, - "y": 1170.9444368424918 + "x": 1391.2011016775252, + "y": 1170.934034850861 }, { "type": "QPointF", - "x": 1353.4015748031497, + "x": 1353.716220472441, "y": 1362.8345196850394 }, { "type": "QPointF", - "x": 1351.1847957148477, - "y": 1367.9837020242383 + "x": 1351.472718112178, + "y": 1368.1105980065204 }, { "type": "QPointF", - "x": 1345.1491063827884, - "y": 1377.0351535858993 + "x": 1345.4107517871767, + "y": 1377.2099208012642 }, { "type": "QPointF", - "x": 1337.195060618467, - "y": 1385.0908506308913 + "x": 1337.4187552857716, + "y": 1385.3121255572237 }, { "type": "QPointF", - "x": 1327.4356491832236, - "y": 1392.193532758326 + "x": 1327.6206417585736, + "y": 1392.4480512139812 }, { "type": "QPointF", - "x": 1315.972058403799, - "y": 1398.411239348762 + "x": 1316.1219684603934, + "y": 1398.6878778712705 }, { "type": "QPointF", - "x": 1302.9006184964092, - "y": 1403.813879103759 + "x": 1303.0207413941732, + "y": 1404.1046924229804 }, { "type": "QPointF", - "x": 1288.3146848455422, - "y": 1408.4705173942918 + "x": 1288.4103406995205, + "y": 1408.7702703839407 }, { "type": "QPointF", - "x": 1272.3064038330447, - "y": 1412.4487702782033 + "x": 1272.3822665169344, + "y": 1412.7541335870615 }, { "type": "QPointF", - "x": 1245.9857010948988, - "y": 1417.3517931078604 + "x": 1246.043310569705, + "y": 1417.6611198697424 }, { "type": "QPointF", - "x": 1206.53852508622, - "y": 1422.0295899414439 + "x": 1206.575567617045, + "y": 1422.3420475355488 }, { "type": "QPointF", - "x": 1163.0590153626633, - "y": 1425.1699495236505 + "x": 1163.0816776764527, + "y": 1425.4837780066432 }, { "type": "QPointF", - "x": 1116.2932350829396, - "y": 1427.2879226859707 + "x": 1116.3074690935448, + "y": 1427.602246229705 }, { "type": "QPointF", - "x": 1041.7895077573253, - "y": 1429.6401613199018 + "x": 1041.799436608138, + "y": 1429.9546502944706 }, { "type": "QPointF", - "x": 963.7205338463195, - "y": 1432.6490541812936 + "x": 963.7326517001363, + "y": 1432.9634664183689 }, { "type": "QPointF", - "x": 911.2591589138497, - "y": 1435.8168701844065 + "x": 911.2781230605095, + "y": 1436.1309438355543 }, { "type": "QPointF", - "x": 859.237872023468, - "y": 1440.530494934681 + "x": 859.2662640679569, + "y": 1440.84385700803 }, { "type": "QPointF", - "x": 808.4052261459925, - "y": 1447.3026887534452 + "x": 808.4467747259209, + "y": 1447.6145791391734 }, { "type": "QPointF", - "x": 771.5939627010235, - "y": 1454.1324411149867 + "x": 771.6513546317626, + "y": 1454.4418083134578 }, { "type": "QPointF", - "x": 747.7741871176479, - "y": 1459.5416218107064 + "x": 747.8438596303752, + "y": 1459.8484566818895 }, { "type": "QPointF", - "x": 724.6693192587568, - "y": 1465.7538024321 + "x": 724.7510106846972, + "y": 1466.0576583323743 }, { "type": "QPointF", - "x": 702.3758460326873, - "y": 1472.8321997422458 + "x": 702.4710574539205, + "y": 1473.1320941944628 }, { "type": "QPointF", - "x": 674.507015051664, - "y": 1482.923776815389 + "x": 691.7189992449391, + "y": 1477.0486975157376 }, { "type": "QPointF", - "x": 639.6066402491301, - "y": 1493.192210436715 + "x": 674.6137934445236, + "y": 1483.2197502466663 }, { "type": "QPointF", - "x": 603.8826034921715, - "y": 1500.9647096620215 + "x": 639.6954429590429, + "y": 1493.494064666296 }, { "type": "QPointF", - "x": 567.3181507277893, - "y": 1506.2427302418655 + "x": 603.9494838615082, + "y": 1501.2721652090543 }, { "type": "QPointF", - "x": 529.8901218300683, - "y": 1509.0302296950115 + "x": 567.3630914194166, + "y": 1506.554149944903 }, { "type": "QPointF", - "x": 491.57527912840374, - "y": 1509.3313030222791 + "x": 529.9134794568803, + "y": 1509.3440071933658 }, { "type": "QPointF", - "x": 452.3502707817418, - "y": 1507.150148679257 + "x": 491.57774121601966, + "y": 1509.6459390585628 }, { "type": "QPointF", - "x": 412.19161352943087, - "y": 1502.4910279791181 + "x": 452.33279240390664, + "y": 1507.4643085167793 }, { "type": "QPointF", - "x": 371.07569338620755, - "y": 1495.3582260526082 + "x": 412.1553443701381, + "y": 1502.803576287845 }, { "type": "QPointF", - "x": 328.97877955542225, - "y": 1485.756019959969 + "x": 371.02190518754037, + "y": 1495.6682401279145 }, { "type": "QPointF", - "x": 285.87704576492825, - "y": 1473.6886564035954 + "x": 328.9088012872336, + "y": 1486.0627852435086 }, { "type": "QPointF", - "x": 241.7465938922898, - "y": 1459.1603388979738 + "x": 285.79221063594036, + "y": 1473.9916496346968 }, { "type": "QPointF", - "x": 196.56347626091042, - "y": 1442.1752227113166 + "x": 241.64819947318352, + "y": 1459.4592041443518 }, { "type": "QPointF", - "x": 150.30371460077188, - "y": 1422.7374153405683 + "x": 196.45275698176602, + "y": 1442.4697445923873 }, { "type": "QPointF", - "x": 102.94331495188868, - "y": 1400.8509803944567 + "x": 150.1818247717201, + "y": 1423.0274925143988 }, { "type": "QPointF", - "x": 54.45827862060838, - "y": 1376.5199431940014 + "x": 102.81132005517884, + "y": 1401.1366011998023 }, { "type": "QPointF", - "x": 29.507951730702608, - "y": 1363.2146255965158 + "x": 54.31715268342318, + "y": 1376.8011644006297 + }, + { + "type": "QPointF", + "x": 29.233766383669003, + "y": 1363.4249985383867 }, { "type": "QPointF", @@ -212,13 +217,13 @@ }, { "type": "QPointF", - "x": 61.10102183090257, + "x": 61.101021830902596, "y": -0.7096412239110919 }, { "type": "QPointF", "x": 70.80478764466314, - "y": 53.4304855617782 + "y": 53.43048556177821 }, { "type": "QPointF", @@ -357,8 +362,8 @@ }, { "type": "QPointF", - "x": 706.3947511130126, - "y": 568.7714782991122 + "x": 704.5565208119547, + "y": 568.7679947166857 }, { "type": "QPointF", @@ -392,123 +397,128 @@ }, { "type": "QPointF", - "x": 912.2986372044141, - "y": 611.1693728258188 + "x": 910.602492678925, + "y": 610.4748223665233 }, { "type": "QPointF", - "x": 940.2320789181749, - "y": 623.4512702408151 + "x": 938.6418865052998, + "y": 622.7101634184046 }, { "type": "QPointF", - "x": 967.6899838064253, - "y": 637.0740830891309 + "x": 966.2002201536427, + "y": 636.295520401332 }, { "type": "QPointF", - "x": 994.6408167524145, - "y": 651.9702773145275 + "x": 993.2451901825277, + "y": 651.1616239727255 }, { "type": "QPointF", - "x": 1021.0534381150906, - "y": 668.0739275970849 + "x": 1019.7452614752041, + "y": 667.2409400763465 }, { "type": "QPointF", - "x": 1046.8968187993657, - "y": 685.3205629341362 + "x": 1045.6692943906153, + "y": 684.4675433922748 }, { "type": "QPointF", - "x": 1072.1398306898122, - "y": 703.64700505477 + "x": 1070.986259833687, + "y": 702.7769629178445 }, { "type": "QPointF", - "x": 1096.7510983823208, - "y": 722.9912133710887 + "x": 1095.6650296889775, + "y": 722.106020382143 }, { "type": "QPointF", - "x": 1120.6988985644755, - "y": 743.2921447345486 + "x": 1119.6742285523828, + "y": 742.3926751972732 }, { "type": "QPointF", - "x": 1143.951094808868, - "y": 764.4896323333478 + "x": 1142.982133111487, + "y": 763.5758842146913 }, { "type": "QPointF", - "x": 1166.4750973318512, - "y": 786.5242853956154 + "x": 1165.5566069388813, + "y": 785.5954806225955 }, { "type": "QPointF", - "x": 1188.2378390526756, - "y": 809.3374096594064 + "x": 1187.365060250919, + "y": 808.3920736491149 }, { "type": "QPointF", - "x": 1209.2057608601567, - "y": 832.8709475552462 + "x": 1208.3744259668497, + "y": 831.9069690323043 }, { "type": "QPointF", - "x": 1229.3448002632733, - "y": 857.0674364841201 + "x": 1228.55114497549, + "y": 856.0821092026897 }, { "type": "QPointF", - "x": 1248.6203785442863, - "y": 881.8699832733486 + "x": 1247.861154785818, + "y": 880.8600315612556 }, { "type": "QPointF", - "x": 1266.9973821590536, - "y": 907.2222527041721 + "x": 1266.269876680095, + "y": 906.183842935323 }, { "type": "QPointF", - "x": 1284.4401344692822, - "y": 933.0684678050294 + "x": 1283.742197114179, + "y": 931.997208106132 }, { "type": "QPointF", - "x": 1300.9123539842592, - "y": 959.3534192837141 + "x": 1300.2424394497762, + "y": 958.244350102122 }, { "type": "QPointF", - "x": 1316.3770951840902, - "y": 986.0224809214067 + "x": 1315.7343221961748, + "y": 984.8700596310855 }, { "type": "QPointF", - "x": 1330.796667754822, - "y": 1013.0216268521107 + "x": 1330.1808998334795, + "y": 1011.8197104741997 }, { "type": "QPointF", - "x": 1344.1325297827989, - "y": 1040.2974452621988 + "x": 1343.5444820477373, + "y": 1039.0392767654812 }, { "type": "QPointF", - "x": 1356.3451502749065, - "y": 1067.7971410001053 + "x": 1355.786526925293, + "y": 1066.4753466912885 }, { "type": "QPointF", - "x": 1367.393836528276, - "y": 1095.4685166974318 + "x": 1366.8675034730315, + "y": 1094.075125100061 }, { "type": "QPointF", - "x": 1377.236522737057, - "y": 1123.259918081096 + "x": 1376.746718988085, + "y": 1121.7864146234008 + }, + { + "type": "QPointF", + "x": 1385.3821076646018, + "y": 1149.5575609882246 }, { "type": "QPointF", @@ -517,8 +527,8 @@ }, { "type": "QPointF", - "x": 1391.2039211231315, - "y": 1170.9444368424918 + "x": 1391.2011016775252, + "y": 1170.934034850861 } ] } diff --git a/src/test/ValentinaTest/share/Issue_883_ledge/input.json b/src/test/ValentinaTest/share/Issue_883_ledge/input.json index eb45f4d7c..2372aab1d 100644 --- a/src/test/ValentinaTest/share/Issue_883_ledge/input.json +++ b/src/test/ValentinaTest/share/Issue_883_ledge/input.json @@ -2,125 +2,149 @@ "vector": [ { "angle": 2, + "turnPoint": true, "type": "VSAPoint", "x": 1122.8447244094489, "y": 91.85612598425197 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1122.8447244094489, "y": -664.0493858267716 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1122.8447244094489, "y": -664.0493858267716 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1123.2605071010314, "y": -692.1027566151841 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1125.5521344988651, "y": -746.904953834852 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1129.5018897097445, "y": -800.813185020781 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1135.005387617497, "y": -854.573547056137 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1141.9582431059482, "y": -908.9321368240863 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1150.2560710589246, "y": -964.635051207795 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1164.860792708483, "y": -1051.9409225168733 }, { + "curvePoint": true, "type": "VSAPoint", "x": 1176.2406858386873, "y": -1114.83483747791 }, { + "curvePoint": true, "type": "VSAPoint", "x": 1176.2406858386873, "y": -1114.83483747791 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1179.7035125223924, "y": -1136.9452686438185 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1186.627664934387, "y": -1177.145289266175 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1197.298845134993, "y": -1231.2802973446833 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1213.068331853193, "y": -1298.0112723855073 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1231.8133334949034, "y": -1369.0339174169235 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1242.934050298766, "y": -1410.35475 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1242.934050298766, "y": -1410.35475 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2006.3092913385829, "y": -1344.3643464566928 }, { "saAfter": 56.69291338582678, + "turnPoint": true, "type": "VSAPoint", "x": 2006.3092913385829, "y": -664.0493858267716 }, { "saBefore": 56.69291338582678, + "turnPoint": true, "type": "VSAPoint", "x": 2006.3092913385829, "y": 91.85612598425197 diff --git a/src/test/ValentinaTest/share/Issue_883_ledge/output.json b/src/test/ValentinaTest/share/Issue_883_ledge/output.json index 7b850cfb4..fc9146280 100644 --- a/src/test/ValentinaTest/share/Issue_883_ledge/output.json +++ b/src/test/ValentinaTest/share/Issue_883_ledge/output.json @@ -5,6 +5,11 @@ "x": 1085.0694887145344, "y": 129.65140157480317 }, + { + "type": "QPointF", + "x": 1085.0494435032829, + "y": 91.85612598425197 + }, { "type": "QPointF", "x": 1085.4656504337784, @@ -12,28 +17,28 @@ }, { "type": "QPointF", - "x": 1087.857898937872, - "y": -749.6667399304415 + "x": 1087.7898601657712, + "y": -748.4840339969 }, { "type": "QPointF", - "x": 1091.9031145734355, - "y": -804.6622063529023 + "x": 1091.8076541487517, + "y": -803.5749711163705 }, { "type": "QPointF", - "x": 1097.515539595737, - "y": -859.3687688728184 + "x": 1097.406612481188, + "y": -858.4225683882584 }, { "type": "QPointF", - "x": 1104.5754685306931, - "y": -914.5008909056683 + "x": 1104.4683950841882, + "y": -913.7273586407676 }, { "type": "QPointF", - "x": 1112.978768668652, - "y": -970.8708818236878 + "x": 1112.8732964836695, + "y": -970.2038052893769 }, { "type": "QPointF", @@ -42,18 +47,23 @@ }, { "type": "QPointF", - "x": 1149.5459641167045, - "y": -1184.4548940046989 + "x": 1142.4715598772536, + "y": -1143.4463884855134 }, { "type": "QPointF", - "x": 1160.5166586790917, - "y": -1239.9724556778692 + "x": 1149.3808605824634, + "y": -1183.5607722982636 }, { "type": "QPointF", - "x": 1176.5244363705685, - "y": -1307.6563001159316 + "x": 1160.2171443173104, + "y": -1238.589902083207 + }, + { + "type": "QPointF", + "x": 1176.2861453972919, + "y": -1306.7034307186932 }, { "type": "QPointF", diff --git a/src/test/ValentinaTest/share/Issue_883_prong/input.json b/src/test/ValentinaTest/share/Issue_883_prong/input.json index 7e4fcfb63..4c307734f 100644 --- a/src/test/ValentinaTest/share/Issue_883_prong/input.json +++ b/src/test/ValentinaTest/share/Issue_883_prong/input.json @@ -2,124 +2,148 @@ "vector": [ { "angle": 2, + "turnPoint": true, "type": "VSAPoint", "x": 1122.8447244094489, "y": 91.85612598425197 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1122.8447244094489, "y": -664.0493858267716 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1122.8447244094489, "y": -664.0493858267716 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1123.2605071010314, "y": -692.1027566151841 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1125.5521344988651, "y": -746.904953834852 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1129.5018897097445, "y": -800.813185020781 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1135.005387617497, "y": -854.573547056137 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1141.9582431059482, "y": -908.9321368240863 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1150.2560710589246, "y": -964.635051207795 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1164.860792708483, "y": -1051.9409225168733 }, { + "curvePoint": true, "type": "VSAPoint", "x": 1176.2406858386873, "y": -1114.83483747791 }, { + "curvePoint": true, "type": "VSAPoint", "x": 1176.2406858386873, "y": -1114.83483747791 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1179.7035125223924, "y": -1136.9452686438185 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1186.627664934387, "y": -1177.145289266175 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1197.298845134993, "y": -1231.2802973446833 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1213.068331853193, "y": -1298.0112723855073 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1231.8133334949034, "y": -1369.0339174169235 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1242.934050298766, "y": -1410.35475 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1242.934050298766, "y": -1410.35475 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2006.3092913385829, "y": -1344.3643464566928 }, { "saAfter": 56.69291338582678, + "turnPoint": true, "type": "VSAPoint", "x": 2006.3092913385829, "y": -664.0493858267716 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2006.3092913385829, "y": 91.85612598425197 diff --git a/src/test/ValentinaTest/share/Issue_883_prong/output.json b/src/test/ValentinaTest/share/Issue_883_prong/output.json index 98f355b31..53cc83e7b 100644 --- a/src/test/ValentinaTest/share/Issue_883_prong/output.json +++ b/src/test/ValentinaTest/share/Issue_883_prong/output.json @@ -5,6 +5,11 @@ "x": 1085.0694887145344, "y": 129.65140157480317 }, + { + "type": "QPointF", + "x": 1085.0494435032829, + "y": 91.85612598425197 + }, { "type": "QPointF", "x": 1085.4656504337784, @@ -12,28 +17,28 @@ }, { "type": "QPointF", - "x": 1087.857898937872, - "y": -749.6667399304415 + "x": 1087.7898601657712, + "y": -748.4840339969 }, { "type": "QPointF", - "x": 1091.9031145734355, - "y": -804.6622063529023 + "x": 1091.8076541487517, + "y": -803.5749711163705 }, { "type": "QPointF", - "x": 1097.515539595737, - "y": -859.3687688728184 + "x": 1097.406612481188, + "y": -858.4225683882584 }, { "type": "QPointF", - "x": 1104.5754685306931, - "y": -914.5008909056683 + "x": 1104.4683950841882, + "y": -913.7273586407676 }, { "type": "QPointF", - "x": 1112.978768668652, - "y": -970.8708818236878 + "x": 1112.8732964836695, + "y": -970.2038052893769 }, { "type": "QPointF", @@ -42,18 +47,23 @@ }, { "type": "QPointF", - "x": 1149.5459641167045, - "y": -1184.4548940046989 + "x": 1142.4715598772536, + "y": -1143.4463884855134 }, { "type": "QPointF", - "x": 1160.5166586790917, - "y": -1239.9724556778692 + "x": 1149.3808605824634, + "y": -1183.5607722982636 }, { "type": "QPointF", - "x": 1176.5244363705685, - "y": -1307.6563001159316 + "x": 1160.2171443173104, + "y": -1238.589902083207 + }, + { + "type": "QPointF", + "x": 1176.2861453972919, + "y": -1306.7034307186932 }, { "type": "QPointF", diff --git a/src/test/ValentinaTest/share/Issue_923_test1/input.json b/src/test/ValentinaTest/share/Issue_923_test1/input.json index eab667677..e6b9990ef 100644 --- a/src/test/ValentinaTest/share/Issue_923_test1/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test1/input.json @@ -3,6 +3,7 @@ { "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -10,19 +11,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -31,6 +36,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -39,6 +45,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -47,6 +54,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -55,6 +63,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -63,6 +72,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -71,6 +81,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -79,6 +90,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -87,6 +99,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -95,6 +108,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -102,84 +116,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -188,6 +221,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -196,6 +230,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -204,6 +239,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -212,6 +248,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -220,6 +257,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -228,6 +266,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -236,6 +275,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -244,6 +284,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -252,6 +293,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -260,6 +302,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -268,6 +311,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -276,6 +320,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -284,6 +329,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -292,6 +338,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -300,6 +347,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -308,6 +356,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -316,6 +365,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -324,6 +374,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -332,6 +383,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -340,6 +392,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -348,6 +401,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -356,6 +410,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -364,6 +419,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -372,6 +428,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -380,6 +437,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -388,6 +446,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -396,6 +455,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -404,6 +464,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -412,6 +473,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -420,6 +482,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -428,6 +491,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -436,6 +500,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -444,6 +509,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -452,6 +518,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -460,6 +527,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -467,8 +535,10 @@ "y": 331.90352529002166 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test1/output.json b/src/test/ValentinaTest/share/Issue_923_test1/output.json index af7498b4d..2a871d163 100644 --- a/src/test/ValentinaTest/share/Issue_923_test1/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test1/output.json @@ -1,10 +1,30 @@ { "vector": [ + { + "type": "QPointF", + "x": -838.7026077978918, + "y": 360.52065549216434 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 331.31319685039375 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 28.923105387765915 + }, { "type": "QPointF", "x": -815.5965354330709, "y": -46.674417477891 }, + { + "type": "QPointF", + "x": -814.2667801920632, + "y": -46.77051665539527 + }, { "type": "QPointF", "x": -778.5602746831936, @@ -35,6 +55,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -140,46 +165,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -207,13 +277,28 @@ }, { "type": "QPointF", - "x": -815.5965354330709, - "y": 371.9998875942574 + "x": -818.0929557813755, + "y": 371.2795759163598 }, { "type": "QPointF", - "x": -815.5965354330709, - "y": -46.674417477891 + "x": -823.6929755287612, + "y": 369.27180555079025 + }, + { + "type": "QPointF", + "x": -829.5753368833404, + "y": 366.62694879394627 + }, + { + "type": "QPointF", + "x": -835.8151397150936, + "y": 362.8920896668543 + }, + { + "type": "QPointF", + "x": -838.7026077978918, + "y": 360.52065549216434 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test1_1/input.json b/src/test/ValentinaTest/share/Issue_923_test1_1/input.json index 4c41972f2..8cf7ce858 100644 --- a/src/test/ValentinaTest/share/Issue_923_test1_1/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test1_1/input.json @@ -3,6 +3,7 @@ { "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -10,19 +11,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -31,6 +36,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -39,6 +45,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -47,6 +54,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -55,6 +63,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -63,6 +72,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -71,6 +81,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -79,6 +90,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -87,6 +99,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -95,6 +108,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -102,84 +116,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -188,6 +221,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -196,6 +230,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -204,6 +239,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -212,6 +248,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -220,6 +257,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -228,6 +266,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -236,6 +275,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -244,6 +284,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -252,6 +293,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -260,6 +302,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -268,6 +311,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -276,6 +320,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -284,6 +329,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -292,6 +338,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -300,6 +347,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -308,6 +356,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -316,6 +365,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -324,6 +374,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -332,6 +383,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -340,6 +392,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -348,6 +401,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -356,6 +410,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -364,6 +419,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -372,6 +428,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -380,6 +437,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -388,6 +446,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -396,6 +455,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -404,6 +464,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -412,6 +473,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -420,6 +482,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -428,6 +491,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -436,6 +500,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -444,6 +509,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -452,6 +518,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -460,6 +527,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -467,8 +535,10 @@ "y": 331.90352529002166 }, { + "curvePoint": true, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test1_1/output.json b/src/test/ValentinaTest/share/Issue_923_test1_1/output.json index dc59372af..475a9e477 100644 --- a/src/test/ValentinaTest/share/Issue_923_test1_1/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test1_1/output.json @@ -2,8 +2,18 @@ "vector": [ { "type": "QPointF", - "x": -947.2972331766374, - "y": 289.2203760039845 + "x": -920.795365621608, + "y": 293.099106295665 + }, + { + "type": "QPointF", + "x": -941.498251666416, + "y": 276.0961368866333 + }, + { + "type": "QPointF", + "x": -831.8430732289739, + "y": 27.924836507053584 }, { "type": "QPointF", @@ -40,6 +50,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -145,46 +160,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -222,13 +282,18 @@ }, { "type": "QPointF", - "x": -830.3240189199333, - "y": 366.2903226290697 + "x": -829.5753368833404, + "y": 366.62694879394627 }, { "type": "QPointF", - "x": -947.2972331766374, - "y": 289.2203760039845 + "x": -835.8151397150936, + "y": 362.8920896668543 + }, + { + "type": "QPointF", + "x": -920.795365621608, + "y": 293.099106295665 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test2/input.json b/src/test/ValentinaTest/share/Issue_923_test2/input.json index d3eebaff9..bdb9a83b6 100644 --- a/src/test/ValentinaTest/share/Issue_923_test2/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test2/input.json @@ -4,6 +4,7 @@ "angle": 1, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -11,19 +12,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -72,6 +82,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -80,6 +91,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,6 +100,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -96,6 +109,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,84 +117,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -189,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -197,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -205,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -213,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -221,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -229,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -237,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -245,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -253,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -261,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -269,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -277,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -285,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -293,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -301,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -309,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -317,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -325,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -333,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -341,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -349,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -357,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -365,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -373,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -381,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -389,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +492,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +501,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +510,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +519,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +528,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -469,8 +537,10 @@ }, { "angle": 1, + "curvePoint": true, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test2/output.json b/src/test/ValentinaTest/share/Issue_923_test2/output.json index b9c2e21ba..2a871d163 100644 --- a/src/test/ValentinaTest/share/Issue_923_test2/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test2/output.json @@ -2,19 +2,29 @@ "vector": [ { "type": "QPointF", - "x": -814.7149606299213, - "y": 372.2542552635805 + "x": -838.7026077978918, + "y": 360.52065549216434 }, { "type": "QPointF", "x": -815.5965354330709, - "y": 330.73235512986395 + "y": 331.31319685039375 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 28.923105387765915 }, { "type": "QPointF", "x": -815.5965354330709, "y": -46.674417477891 }, + { + "type": "QPointF", + "x": -814.2667801920632, + "y": -46.77051665539527 + }, { "type": "QPointF", "x": -778.5602746831936, @@ -45,6 +55,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -150,46 +165,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -217,8 +277,28 @@ }, { "type": "QPointF", - "x": -814.7149606299213, - "y": 372.2542552635805 + "x": -818.0929557813755, + "y": 371.2795759163598 + }, + { + "type": "QPointF", + "x": -823.6929755287612, + "y": 369.27180555079025 + }, + { + "type": "QPointF", + "x": -829.5753368833404, + "y": 366.62694879394627 + }, + { + "type": "QPointF", + "x": -835.8151397150936, + "y": 362.8920896668543 + }, + { + "type": "QPointF", + "x": -838.7026077978918, + "y": 360.52065549216434 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test2_2/input.json b/src/test/ValentinaTest/share/Issue_923_test2_2/input.json index 3dedc917b..715ef4f53 100644 --- a/src/test/ValentinaTest/share/Issue_923_test2_2/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test2_2/input.json @@ -4,6 +4,7 @@ "angle": 1, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -11,19 +12,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -72,6 +82,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -80,6 +91,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,6 +100,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -96,6 +109,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,84 +117,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -189,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -197,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -205,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -213,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -221,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -229,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -237,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -245,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -253,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -261,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -269,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -277,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -285,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -293,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -301,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -309,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -317,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -325,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -333,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -341,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -349,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -357,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -365,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -373,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -381,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -389,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +492,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +501,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +510,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +519,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +528,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -469,8 +537,10 @@ }, { "angle": 1, + "curvePoint": true, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test2_2/output.json b/src/test/ValentinaTest/share/Issue_923_test2_2/output.json index 936fe2964..8f215e468 100644 --- a/src/test/ValentinaTest/share/Issue_923_test2_2/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test2_2/output.json @@ -7,8 +7,13 @@ }, { "type": "QPointF", - "x": -931.807697294311, - "y": 254.16450069585994 + "x": -925.6420563507455, + "y": 240.2104389502838 + }, + { + "type": "QPointF", + "x": -831.8430732289739, + "y": 27.924836507053584 }, { "type": "QPointF", @@ -45,6 +50,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -150,46 +160,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, diff --git a/src/test/ValentinaTest/share/Issue_923_test3/input.json b/src/test/ValentinaTest/share/Issue_923_test3/input.json index 3ea970877..b6c3bea21 100644 --- a/src/test/ValentinaTest/share/Issue_923_test3/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test3/input.json @@ -4,6 +4,7 @@ "angle": 2, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -11,19 +12,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -72,6 +82,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -80,6 +91,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,6 +100,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -96,6 +109,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,84 +117,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -189,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -197,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -205,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -213,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -221,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -229,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -237,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -245,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -253,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -261,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -269,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -277,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -285,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -293,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -301,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -309,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -317,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -325,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -333,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -341,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -349,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -357,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -365,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -373,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -381,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -389,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +492,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +501,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +510,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +519,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +528,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -469,8 +537,10 @@ }, { "angle": 2, + "curvePoint": true, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test3/output.json b/src/test/ValentinaTest/share/Issue_923_test3/output.json index 78d52b86a..2a871d163 100644 --- a/src/test/ValentinaTest/share/Issue_923_test3/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test3/output.json @@ -2,19 +2,29 @@ "vector": [ { "type": "QPointF", - "x": -857.1852307228518, - "y": 348.5923207994125 + "x": -838.7026077978918, + "y": 360.52065549216434 }, { "type": "QPointF", "x": -815.5965354330709, - "y": 330.7323551298638 + "y": 331.31319685039375 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 28.923105387765915 }, { "type": "QPointF", "x": -815.5965354330709, "y": -46.674417477891 }, + { + "type": "QPointF", + "x": -814.2667801920632, + "y": -46.77051665539527 + }, { "type": "QPointF", "x": -778.5602746831936, @@ -45,6 +55,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -150,46 +165,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -227,13 +287,18 @@ }, { "type": "QPointF", - "x": -830.3240189199333, - "y": 366.2903226290697 + "x": -829.5753368833404, + "y": 366.62694879394627 }, { "type": "QPointF", - "x": -857.1852307228518, - "y": 348.5923207994125 + "x": -835.8151397150936, + "y": 362.8920896668543 + }, + { + "type": "QPointF", + "x": -838.7026077978918, + "y": 360.52065549216434 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test3_3/input.json b/src/test/ValentinaTest/share/Issue_923_test3_3/input.json index 644993afc..5a8632d93 100644 --- a/src/test/ValentinaTest/share/Issue_923_test3_3/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test3_3/input.json @@ -4,6 +4,7 @@ "angle": 2, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -11,19 +12,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -72,6 +82,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -80,6 +91,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,6 +100,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -96,6 +109,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,84 +117,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -189,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -197,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -205,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -213,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -221,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -229,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -237,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -245,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -253,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -261,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -269,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -277,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -285,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -293,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -301,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -309,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -317,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -325,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -333,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -341,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -349,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -357,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -365,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -373,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -381,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -389,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +492,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +501,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +510,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +519,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +528,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -469,8 +537,10 @@ }, { "angle": 2, + "curvePoint": true, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test3_3/output.json b/src/test/ValentinaTest/share/Issue_923_test3_3/output.json index f8aaa2c81..dc6532433 100644 --- a/src/test/ValentinaTest/share/Issue_923_test3_3/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test3_3/output.json @@ -2,13 +2,23 @@ "vector": [ { "type": "QPointF", - "x": -957.9068567017657, - "y": 282.2300310434755 + "x": -957.7611553710149, + "y": 262.73965829747465 }, { "type": "QPointF", - "x": -931.8076972943111, - "y": 254.16450069585898 + "x": -925.6420563507456, + "y": 240.21043895028293 + }, + { + "type": "QPointF", + "x": -925.6420563507444, + "y": 240.21043895028149 + }, + { + "type": "QPointF", + "x": -831.8430732289739, + "y": 27.924836507053584 }, { "type": "QPointF", @@ -45,6 +55,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -150,46 +165,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -227,13 +287,18 @@ }, { "type": "QPointF", - "x": -830.3240189199333, - "y": 366.2903226290697 + "x": -829.5753368833404, + "y": 366.62694879394627 }, { "type": "QPointF", - "x": -957.9068567017657, - "y": 282.2300310434755 + "x": -835.8151397150936, + "y": 362.8920896668543 + }, + { + "type": "QPointF", + "x": -957.7611553710149, + "y": 262.73965829747465 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test4/input.json b/src/test/ValentinaTest/share/Issue_923_test4/input.json index eab667677..e6b9990ef 100644 --- a/src/test/ValentinaTest/share/Issue_923_test4/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test4/input.json @@ -3,6 +3,7 @@ { "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -10,19 +11,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -31,6 +36,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -39,6 +45,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -47,6 +54,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -55,6 +63,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -63,6 +72,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -71,6 +81,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -79,6 +90,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -87,6 +99,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -95,6 +108,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -102,84 +116,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -188,6 +221,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -196,6 +230,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -204,6 +239,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -212,6 +248,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -220,6 +257,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -228,6 +266,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -236,6 +275,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -244,6 +284,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -252,6 +293,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -260,6 +302,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -268,6 +311,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -276,6 +320,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -284,6 +329,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -292,6 +338,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -300,6 +347,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -308,6 +356,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -316,6 +365,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -324,6 +374,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -332,6 +383,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -340,6 +392,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -348,6 +401,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -356,6 +410,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -364,6 +419,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -372,6 +428,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -380,6 +437,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -388,6 +446,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -396,6 +455,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -404,6 +464,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -412,6 +473,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -420,6 +482,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -428,6 +491,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -436,6 +500,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -444,6 +509,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -452,6 +518,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -460,6 +527,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -467,8 +535,10 @@ "y": 331.90352529002166 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test4/output.json b/src/test/ValentinaTest/share/Issue_923_test4/output.json index af7498b4d..2a871d163 100644 --- a/src/test/ValentinaTest/share/Issue_923_test4/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test4/output.json @@ -1,10 +1,30 @@ { "vector": [ + { + "type": "QPointF", + "x": -838.7026077978918, + "y": 360.52065549216434 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 331.31319685039375 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 28.923105387765915 + }, { "type": "QPointF", "x": -815.5965354330709, "y": -46.674417477891 }, + { + "type": "QPointF", + "x": -814.2667801920632, + "y": -46.77051665539527 + }, { "type": "QPointF", "x": -778.5602746831936, @@ -35,6 +55,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -140,46 +165,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -207,13 +277,28 @@ }, { "type": "QPointF", - "x": -815.5965354330709, - "y": 371.9998875942574 + "x": -818.0929557813755, + "y": 371.2795759163598 }, { "type": "QPointF", - "x": -815.5965354330709, - "y": -46.674417477891 + "x": -823.6929755287612, + "y": 369.27180555079025 + }, + { + "type": "QPointF", + "x": -829.5753368833404, + "y": 366.62694879394627 + }, + { + "type": "QPointF", + "x": -835.8151397150936, + "y": 362.8920896668543 + }, + { + "type": "QPointF", + "x": -838.7026077978918, + "y": 360.52065549216434 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test4_4/input.json b/src/test/ValentinaTest/share/Issue_923_test4_4/input.json index 28ab6e9bb..e151b599a 100644 --- a/src/test/ValentinaTest/share/Issue_923_test4_4/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test4_4/input.json @@ -4,6 +4,7 @@ "angle": 3, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -11,19 +12,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -72,6 +82,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -80,6 +91,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,6 +100,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -96,6 +109,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,84 +117,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -189,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -197,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -205,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -213,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -221,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -229,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -237,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -245,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -253,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -261,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -269,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -277,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -285,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -293,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -301,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -309,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -317,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -325,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -333,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -341,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -349,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -357,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -365,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -373,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -381,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -389,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +492,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +501,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +510,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +519,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +528,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -469,8 +537,10 @@ }, { "angle": 3, + "curvePoint": true, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test4_4/output.json b/src/test/ValentinaTest/share/Issue_923_test4_4/output.json index 5f9079c18..b68b7ca14 100644 --- a/src/test/ValentinaTest/share/Issue_923_test4_4/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test4_4/output.json @@ -2,8 +2,13 @@ "vector": [ { "type": "QPointF", - "x": -1056.1954258619298, - "y": 535.6784682965732 + "x": -1085.9248079660056, + "y": 602.9619246858132 + }, + { + "type": "QPointF", + "x": -831.8430732289739, + "y": 27.924836507053584 }, { "type": "QPointF", @@ -40,6 +45,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -145,46 +155,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -207,13 +262,13 @@ }, { "type": "QPointF", - "x": -810.1810632465665, - "y": 373.5624561175904 + "x": -807.3585969245805, + "y": 374.1796788445591 }, { "type": "QPointF", - "x": -1056.1954258619298, - "y": 535.6784682965732 + "x": -1085.9248079660056, + "y": 602.9619246858132 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test5/input.json b/src/test/ValentinaTest/share/Issue_923_test5/input.json index 70c4f82ae..1e6ca3644 100644 --- a/src/test/ValentinaTest/share/Issue_923_test5/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test5/input.json @@ -4,6 +4,7 @@ "angle": 4, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -11,19 +12,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -72,6 +82,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -80,6 +91,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,6 +100,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -96,6 +109,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,84 +117,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -189,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -197,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -205,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -213,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -221,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -229,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -237,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -245,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -253,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -261,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -269,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -277,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -285,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -293,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -301,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -309,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -317,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -325,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -333,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -341,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -349,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -357,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -365,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -373,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -381,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -389,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +492,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +501,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +510,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +519,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +528,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -469,8 +537,10 @@ }, { "angle": 4, + "curvePoint": true, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test5/output.json b/src/test/ValentinaTest/share/Issue_923_test5/output.json index e1d5cbb21..2a871d163 100644 --- a/src/test/ValentinaTest/share/Issue_923_test5/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test5/output.json @@ -2,19 +2,29 @@ "vector": [ { "type": "QPointF", - "x": -836.3908830779596, - "y": 362.2930579577354 + "x": -838.7026077978918, + "y": 360.52065549216434 }, { "type": "QPointF", "x": -815.5965354330709, - "y": 330.732355129864 + "y": 331.31319685039375 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 28.923105387765915 }, { "type": "QPointF", "x": -815.5965354330709, "y": -46.674417477891 }, + { + "type": "QPointF", + "x": -814.2667801920632, + "y": -46.77051665539527 + }, { "type": "QPointF", "x": -778.5602746831936, @@ -45,6 +55,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -150,46 +165,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -227,13 +287,18 @@ }, { "type": "QPointF", - "x": -830.3240189199333, - "y": 366.2903226290697 + "x": -829.5753368833404, + "y": 366.62694879394627 }, { "type": "QPointF", - "x": -836.3908830779596, - "y": 362.2930579577354 + "x": -835.8151397150936, + "y": 362.8920896668543 + }, + { + "type": "QPointF", + "x": -838.7026077978918, + "y": 360.52065549216434 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test5_5/input.json b/src/test/ValentinaTest/share/Issue_923_test5_5/input.json index f592c08f7..3b267e3a7 100644 --- a/src/test/ValentinaTest/share/Issue_923_test5_5/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test5_5/input.json @@ -4,6 +4,7 @@ "angle": 4, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -11,19 +12,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -72,6 +82,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -80,6 +91,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,6 +100,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -96,6 +109,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,84 +117,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -189,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -197,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -205,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -213,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -221,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -229,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -237,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -245,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -253,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -261,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -269,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -277,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -285,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -293,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -301,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -309,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -317,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -325,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -333,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -341,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -349,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -357,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -365,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -373,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -381,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -389,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +492,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +501,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +510,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +519,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +528,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -469,8 +537,10 @@ }, { "angle": 4, + "curvePoint": true, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test5_5/output.json b/src/test/ValentinaTest/share/Issue_923_test5_5/output.json index 004413b03..48247e338 100644 --- a/src/test/ValentinaTest/share/Issue_923_test5_5/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test5_5/output.json @@ -2,13 +2,18 @@ "vector": [ { "type": "QPointF", - "x": -952.6020449392, - "y": 285.72520352373 + "x": -949.6297035187164, + "y": 269.4178975920539 }, { "type": "QPointF", - "x": -931.8076972943066, - "y": 254.16450069585156 + "x": -925.6420563507434, + "y": 240.21043895028035 + }, + { + "type": "QPointF", + "x": -831.8430732289739, + "y": 27.924836507053584 }, { "type": "QPointF", @@ -45,6 +50,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -150,46 +160,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -227,13 +282,18 @@ }, { "type": "QPointF", - "x": -830.3240189199333, - "y": 366.2903226290697 + "x": -829.5753368833404, + "y": 366.62694879394627 }, { "type": "QPointF", - "x": -952.6020449392, - "y": 285.72520352373 + "x": -835.8151397150936, + "y": 362.8920896668543 + }, + { + "type": "QPointF", + "x": -949.6297035187164, + "y": 269.4178975920539 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test6/input.json b/src/test/ValentinaTest/share/Issue_923_test6/input.json index 91f787aba..1f55bb5a8 100644 --- a/src/test/ValentinaTest/share/Issue_923_test6/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test6/input.json @@ -4,6 +4,7 @@ "angle": 5, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -11,19 +12,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -72,6 +82,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -80,6 +91,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,6 +100,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -96,6 +109,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,84 +117,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -189,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -197,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -205,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -213,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -221,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -229,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -237,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -245,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -253,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -261,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -269,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -277,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -285,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -293,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -301,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -309,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -317,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -325,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -333,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -341,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -349,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -357,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -365,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -373,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -381,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -389,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +492,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +501,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +510,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +519,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +528,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -469,8 +537,10 @@ }, { "angle": 5, + "curvePoint": true, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test6/output.json b/src/test/ValentinaTest/share/Issue_923_test6/output.json index 5f94eb1de..2a871d163 100644 --- a/src/test/ValentinaTest/share/Issue_923_test6/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test6/output.json @@ -1,5 +1,15 @@ { "vector": [ + { + "type": "QPointF", + "x": -838.7026077978918, + "y": 360.52065549216434 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 331.31319685039375 + }, { "type": "QPointF", "x": -815.5965354330709, @@ -10,6 +20,11 @@ "x": -815.5965354330709, "y": -46.674417477891 }, + { + "type": "QPointF", + "x": -814.2667801920632, + "y": -46.77051665539527 + }, { "type": "QPointF", "x": -778.5602746831936, @@ -42,8 +57,13 @@ }, { "type": "QPointF", - "x": -631.4401659175292, - "y": -90.77191564053457 + "x": -647.5347421078782, + "y": -82.70049226350477 + }, + { + "type": "QPointF", + "x": -631.5852394687809, + "y": -90.99511806183605 }, { "type": "QPointF", @@ -145,46 +165,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -212,13 +277,28 @@ }, { "type": "QPointF", - "x": -814.7149606299213, - "y": 372.2542552635805 + "x": -818.0929557813755, + "y": 371.2795759163598 }, { "type": "QPointF", - "x": -815.5965354330709, - "y": 28.923105387765915 + "x": -823.6929755287612, + "y": 369.27180555079025 + }, + { + "type": "QPointF", + "x": -829.5753368833404, + "y": 366.62694879394627 + }, + { + "type": "QPointF", + "x": -835.8151397150936, + "y": 362.8920896668543 + }, + { + "type": "QPointF", + "x": -838.7026077978918, + "y": 360.52065549216434 } ] } diff --git a/src/test/ValentinaTest/share/Issue_923_test6_6/input.json b/src/test/ValentinaTest/share/Issue_923_test6_6/input.json index a6670382c..9354e61ae 100644 --- a/src/test/ValentinaTest/share/Issue_923_test6_6/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test6_6/input.json @@ -4,6 +4,7 @@ "angle": 5, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -11,19 +12,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -72,6 +82,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -80,6 +91,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,6 +100,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -96,6 +109,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,84 +117,103 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -189,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -197,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -205,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -213,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -221,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -229,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -237,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -245,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -253,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -261,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -269,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -277,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -285,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -293,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -301,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -309,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -317,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -325,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -333,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -341,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -349,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -357,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -365,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -373,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -381,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -389,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +492,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +501,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +510,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +519,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +528,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -469,8 +537,10 @@ }, { "angle": 5, + "curvePoint": true, "saAfter": 151.18110236220474, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 diff --git a/src/test/ValentinaTest/share/Issue_923_test6_6/output.json b/src/test/ValentinaTest/share/Issue_923_test6_6/output.json index 7ab5671cc..46cde58b8 100644 --- a/src/test/ValentinaTest/share/Issue_923_test6_6/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test6_6/output.json @@ -42,8 +42,13 @@ }, { "type": "QPointF", - "x": -631.8055148117791, - "y": -91.36450012929774 + "x": -647.5347421078782, + "y": -82.70049226350477 + }, + { + "type": "QPointF", + "x": -631.5852394687809, + "y": -90.99511806183605 }, { "type": "QPointF", @@ -145,46 +150,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, diff --git a/src/test/ValentinaTest/share/Issue_923_test7_1/input.json b/src/test/ValentinaTest/share/Issue_923_test7_1/input.json index f680ac53f..8f88bc7be 100644 --- a/src/test/ValentinaTest/share/Issue_923_test7_1/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test7_1/input.json @@ -2,75 +2,91 @@ "vector": [ { "angle": 1, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 1, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -79,6 +95,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -87,6 +104,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -95,6 +113,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -103,6 +122,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -111,6 +131,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -119,6 +140,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -127,6 +149,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -135,6 +158,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -143,6 +167,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -151,6 +176,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -159,6 +185,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -167,6 +194,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -175,6 +203,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -183,6 +212,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -191,6 +221,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -199,6 +230,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -207,6 +239,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -215,6 +248,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -223,6 +257,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -231,6 +266,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -239,6 +275,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -247,6 +284,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -255,6 +293,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -263,6 +302,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -271,6 +311,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -279,6 +320,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -287,6 +329,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -295,6 +338,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -303,6 +347,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -311,6 +356,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -319,6 +365,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -327,6 +374,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -335,6 +383,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -343,6 +392,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -351,6 +401,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -359,8 +410,10 @@ }, { "angle": 1, + "curvePoint": true, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -369,6 +422,7 @@ "angle": 1, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -376,19 +430,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -397,6 +455,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -405,6 +464,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -413,6 +473,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -421,6 +482,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -429,6 +491,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -437,6 +500,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -445,6 +509,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -453,6 +518,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -461,6 +527,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -468,11 +535,14 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 diff --git a/src/test/ValentinaTest/share/Issue_923_test7_1/output.json b/src/test/ValentinaTest/share/Issue_923_test7_1/output.json index ec2c05b48..677193ec3 100644 --- a/src/test/ValentinaTest/share/Issue_923_test7_1/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test7_1/output.json @@ -10,6 +10,11 @@ "x": -196.73040945651604, "y": 111.99504529263494 }, + { + "type": "QPointF", + "x": -196.73040945651593, + "y": 111.995045292635 + }, { "type": "QPointF", "x": -202.58871262669427, @@ -37,8 +42,8 @@ }, { "type": "QPointF", - "x": -243.2111745960838, - "y": 301.26085147159137 + "x": -243.50661138639492, + "y": 301.2305028748772 }, { "type": "QPointF", @@ -95,46 +100,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -177,13 +227,33 @@ }, { "type": "QPointF", - "x": -853.9227948909871, - "y": 352.053679699833 + "x": -835.8151397150936, + "y": 362.8920896668543 }, { "type": "QPointF", - "x": -811.5379953513618, - "y": -47.0593158485711 + "x": -838.7026077978918, + "y": 360.52065549216434 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 331.31319685039375 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 28.923105387766014 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": -46.674417477891 + }, + { + "type": "QPointF", + "x": -814.2667801920633, + "y": -46.770516655395255 }, { "type": "QPointF", @@ -215,6 +285,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, diff --git a/src/test/ValentinaTest/share/Issue_923_test7_2/input.json b/src/test/ValentinaTest/share/Issue_923_test7_2/input.json index 6d3ad3733..d75751a85 100644 --- a/src/test/ValentinaTest/share/Issue_923_test7_2/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test7_2/input.json @@ -1,81 +1,98 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { "angle": 1, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 1, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -84,6 +101,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -92,6 +110,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -100,6 +119,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -108,6 +128,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -116,6 +137,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -124,6 +146,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -132,6 +155,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -140,6 +164,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -148,6 +173,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -156,6 +182,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -164,6 +191,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -172,6 +200,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -180,6 +209,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -188,6 +218,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -196,6 +227,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -204,6 +236,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -212,6 +245,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -220,6 +254,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -228,6 +263,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -236,6 +272,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -244,6 +281,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -252,6 +290,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -260,6 +299,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -268,6 +308,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -276,6 +317,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -284,6 +326,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -292,6 +335,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -300,6 +344,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -308,6 +353,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -316,6 +362,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -324,6 +371,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -332,6 +380,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -340,6 +389,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -348,6 +398,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -356,6 +407,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -364,8 +416,10 @@ }, { "angle": 1, + "curvePoint": true, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -374,6 +428,7 @@ "angle": 1, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -381,19 +436,23 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -402,6 +461,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -410,6 +470,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -418,6 +479,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -426,6 +488,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -434,6 +497,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -442,6 +506,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -450,6 +515,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -458,6 +524,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -466,6 +533,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -473,6 +541,8 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 diff --git a/src/test/ValentinaTest/share/Issue_923_test7_2/output.json b/src/test/ValentinaTest/share/Issue_923_test7_2/output.json index 2ff10cd9b..692e35ae1 100644 --- a/src/test/ValentinaTest/share/Issue_923_test7_2/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test7_2/output.json @@ -15,6 +15,11 @@ "x": -196.73040945651604, "y": 111.99504529263494 }, + { + "type": "QPointF", + "x": -196.73040945651593, + "y": 111.995045292635 + }, { "type": "QPointF", "x": -202.58871262669427, @@ -100,46 +105,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -182,13 +232,33 @@ }, { "type": "QPointF", - "x": -853.9227948909871, - "y": 352.053679699833 + "x": -835.8151397150936, + "y": 362.8920896668543 }, { "type": "QPointF", - "x": -811.5379953513618, - "y": -47.0593158485711 + "x": -838.7026077978918, + "y": 360.52065549216434 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 331.31319685039375 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 28.923105387766014 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": -46.674417477891 + }, + { + "type": "QPointF", + "x": -814.2667801920633, + "y": -46.770516655395255 }, { "type": "QPointF", @@ -220,6 +290,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, diff --git a/src/test/ValentinaTest/share/Issue_923_test7_3/input.json b/src/test/ValentinaTest/share/Issue_923_test7_3/input.json index eb617991e..1549439c8 100644 --- a/src/test/ValentinaTest/share/Issue_923_test7_3/input.json +++ b/src/test/ValentinaTest/share/Issue_923_test7_3/input.json @@ -1,14 +1,17 @@ { "vector": [ { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -17,6 +20,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -25,6 +29,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -33,6 +38,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -41,6 +47,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -49,6 +56,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -57,6 +65,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -65,6 +74,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -73,6 +83,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -81,6 +92,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -88,86 +100,105 @@ "y": -69.04225265620269 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { + "turnPoint": true, "type": "VSAPoint", "x": -590.4629921259842, "y": -72.52932283464567 }, { "angle": 1, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 1, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -231.11800695198497, "y": 95.87915857519384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -238.40281543387266, "y": 116.44191216638788 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -251.05490182747536, "y": 155.85530707633535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -261.5198582532174, "y": 193.3982017541216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -269.9242477292619, "y": 229.27507897171068 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -276.39463327377155, "y": 263.69042150106657 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -281.0575779049093, "y": 296.8487121141533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -284.03964464083833, "y": 328.95443358293466 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -284.1473856336994, "y": 331.31319685039375 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -176,6 +207,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -184,6 +216,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -192,6 +225,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -200,6 +234,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -208,6 +243,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -216,6 +252,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -224,6 +261,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -232,6 +270,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -240,6 +279,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -248,6 +288,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -256,6 +297,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -264,6 +306,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -272,6 +315,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -280,6 +324,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -288,6 +333,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -296,6 +342,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -304,6 +351,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -312,6 +360,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -320,6 +369,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -328,6 +378,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -336,6 +387,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -344,6 +396,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -352,6 +405,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -360,6 +414,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -368,6 +423,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -376,6 +432,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -384,6 +441,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -392,6 +450,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -400,6 +459,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -408,6 +468,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -416,6 +477,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -424,6 +486,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -432,6 +495,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -440,6 +504,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -448,6 +513,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -456,8 +522,10 @@ }, { "angle": 1, + "curvePoint": true, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -466,6 +534,7 @@ "angle": 1, "saAfter": 0, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": 331.31319685039375 @@ -473,6 +542,7 @@ { "saAfter": 37.795275590551185, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -814.7149606299213, "y": -8.844283464566928 diff --git a/src/test/ValentinaTest/share/Issue_923_test7_3/output.json b/src/test/ValentinaTest/share/Issue_923_test7_3/output.json index 871c340c6..08ee08177 100644 --- a/src/test/ValentinaTest/share/Issue_923_test7_3/output.json +++ b/src/test/ValentinaTest/share/Issue_923_test7_3/output.json @@ -2,8 +2,18 @@ "vector": [ { "type": "QPointF", - "x": -811.5266694123162, - "y": -47.16596562653473 + "x": -815.5965354330709, + "y": 28.864326962967652 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": -46.74789050888896 + }, + { + "type": "QPointF", + "x": -814.7887347652259, + "y": -46.8308714614612 }, { "type": "QPointF", @@ -35,6 +45,11 @@ "x": -652.0000133582188, "y": -80.53001488530833 }, + { + "type": "QPointF", + "x": -647.5347421078782, + "y": -82.70049226350477 + }, { "type": "QPointF", "x": -631.5852394687809, @@ -60,6 +75,11 @@ "x": -196.73040945651604, "y": 111.99504529263494 }, + { + "type": "QPointF", + "x": -196.73040945651593, + "y": 111.995045292635 + }, { "type": "QPointF", "x": -202.58871262669427, @@ -145,46 +165,91 @@ "x": -374.97963878344376, "y": 385.6272715746786 }, + { + "type": "QPointF", + "x": -394.4224543531813, + "y": 386.9889713429367 + }, { "type": "QPointF", "x": -414.7876067251059, "y": 388.13579550460213 }, + { + "type": "QPointF", + "x": -435.9520270040894, + "y": 389.07661798449516 + }, { "type": "QPointF", "x": -457.7859582653625, "y": 389.818484035946 }, + { + "type": "QPointF", + "x": -480.15529936788164, + "y": 390.3673559353522 + }, { "type": "QPointF", "x": -502.9230721502445, "y": 390.728524359008 }, + { + "type": "QPointF", + "x": -525.9503830211974, + "y": 390.90684349642925 + }, { "type": "QPointF", "x": -549.0970864147907, "y": 390.9068680348474 }, + { + "type": "QPointF", + "x": -572.2222728858704, + "y": 390.7329321107656 + }, { "type": "QPointF", "x": -595.1846601171007, "y": 390.3891909827686 }, + { + "type": "QPointF", + "x": -617.8429427582322, + "y": 389.87963542037477 + }, { "type": "QPointF", "x": -640.0561486385066, "y": 389.208081776043 }, + { + "type": "QPointF", + "x": -661.6840517509004, + "y": 388.3781346110808 + }, { "type": "QPointF", "x": -682.5877079123347, "y": 387.3931112039713 }, + { + "type": "QPointF", + "x": -702.630213618707, + "y": 386.255904969502 + }, { "type": "QPointF", "x": -721.6778577696439, "y": 384.9687413227849 }, + { + "type": "QPointF", + "x": -739.6019742862287, + "y": 383.5327301728105 + }, { "type": "QPointF", "x": -756.2820913691256, @@ -227,13 +292,23 @@ }, { "type": "QPointF", - "x": -853.9227948909871, - "y": 352.053679699833 + "x": -835.8151397150936, + "y": 362.8920896668543 }, { "type": "QPointF", - "x": -811.5266694123162, - "y": -47.16596562653473 + "x": -838.7026077978918, + "y": 360.52065549216434 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 331.31319685039375 + }, + { + "type": "QPointF", + "x": -815.5965354330709, + "y": 28.864326962967652 } ] } diff --git a/src/test/ValentinaTest/share/Issue_937_case_1a/input.json b/src/test/ValentinaTest/share/Issue_937_case_1a/input.json index fea790632..66a00dae1 100644 --- a/src/test/ValentinaTest/share/Issue_937_case_1a/input.json +++ b/src/test/ValentinaTest/share/Issue_937_case_1a/input.json @@ -3,425 +3,508 @@ { "angle": 2, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 1848.01082181109, "y": 1030.8393070866143 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1671.2893035827765, "y": 327.84718110236224 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1671.2893035827765, "y": 327.84718110236224 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1688.372140240957, "y": 322.94413905734257 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1716.5354846574178, "y": 313.5103413076031 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1738.904789013785, "y": 304.43175735278106 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1757.0453362209319, "y": 295.60668740016325 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1764.9406087705745, "y": 291.26164583583846 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1774.5053457725976, "y": 285.8153073866176 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1796.6724196528355, "y": 272.2726178840532 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1819.5866284327656, "y": 257.02170154184256 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1840.0279888326772, "y": 241.6978786769865 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1848.0108218110677, "y": 234.6188346456649 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1848.0108218110677, "y": 234.6188346456649 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1848.0108218110677, "y": 234.6188346456649 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1858.8534932235239, - "y": 222.25357797315382 + "y": 222.25375197867473 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1880.2477175428162, - "y": 195.58641618946143 + "y": 195.58854775709247 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1901.1990774093565, - "y": 166.87732721497812 + "y": 166.8831128985481 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1921.6036592164696, - "y": 136.43970097816313 + "y": 136.45057632321942 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1941.35754935748, - "y": 104.58692740747574 + "y": 104.6040669512845 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1960.3568342257124, - "y": 71.63239643137523 + "y": 71.65671370292117 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1978.4976002144917, - "y": 37.88949797832085 + "y": 37.92164549830733 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1995.6759337171432, - "y": 3.67162197677189 + "y": 3.7119912576209417 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2011.787921126991, - "y": -30.70784164481238 + "y": -30.65912009896008 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2026.72964883736, - "y": -64.93550295797269 + "y": -64.87855965125782 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2040.3972032415754, - "y": -98.69797203424977 + "y": -98.63319847909435 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2052.686670732962, - "y": -131.68185894518436 + "y": -131.6099076622918 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2063.494137704844, - "y": -163.57377376231716 + "y": -163.49555828067213 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2072.7156905505462, - "y": -194.06032655718894 + "y": -193.97702141405756 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2080.2474156633934, - "y": -222.8281274013404 + "y": -222.74116814227006 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2085.9853994367118, - "y": -249.56378636631226 + "y": -249.4748695451318 }, { "angle": 1, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2088.068031496063, - "y": -261.96736884263447 + "y": -261.8782780159331 }, { "angle": 1, + "turnPoint": true, "type": "VSAPoint", "x": 2088.068031496063, - "y": -261.96736884263447 + "y": -261.8782780159331 }, { "angle": 1, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2088.068031496063, - "y": -261.96736884263447 + "y": -261.8782780159331 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2093.657483084508, - "y": -256.8491686428997 + "y": -256.7599554716691 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2105.334884759815, - "y": -247.02463595594847 + "y": -246.93404640876423 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2123.8220925948735, - "y": -233.17242929563906 + "y": -233.07771062059388 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2150.2581713810423, - "y": -216.62071732342656 + "y": -216.517189842278 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2178.3028954110514, - "y": -202.24961452388237 + "y": -202.1350760351045 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2207.5998339810094, - "y": -190.15168642090634 + "y": -190.025402857324 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2237.792556387023, - "y": -180.41949853839853 + "y": -180.2822039671869 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2268.524631925203, - "y": -173.1456164002589 + "y": -172.99951302294386 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2299.4396298916563, - "y": -168.42260553038736 + "y": -168.27136368284533 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2314.8396850393706, - "y": -167.15867519535914 + "y": -167.00694396970027 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2314.8396850393706, - "y": -167.15867519535914 + "y": -167.00694396970027 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2314.8396850393706, - "y": -167.15867519535914 + "y": -167.00694396970027 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2322.010028575929, - "y": -145.61308955377496 + "y": -145.46254372831658 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2339.637410969939, - "y": -99.13974168385101 + "y": -99.00164256049743 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2361.267739991481, - "y": -49.51427139590451 + "y": -49.39750947615921 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2380.2854694075286, - "y": -10.789066434490545 + "y": -10.69208588059042 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2394.1642108081796, - "y": 15.443500641661887 + "y": 15.526478655694078 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2409.0805090172516, - "y": 41.89754239351732 + "y": 41.96629560514398 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2425.042546290644, - "y": 68.44715750356406 + "y": 68.5019081753228 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2442.058504884252, - "y": 94.9664446542904 + "y": 95.00785957379398 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2460.1365670539744, - "y": 121.32950252818465 + "y": 121.35869300812098 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2479.2849150557076, - "y": 147.4104298077351 + "y": 147.42895168586733 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2499.5117311453505, - "y": 173.0833251754301 + "y": 173.09317881459646 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2520.8251975787994, - "y": 198.22228731375787 + "y": 198.2259176018718 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2543.2334966119515, - "y": 222.70141490520683 + "y": 222.70171125525695 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2554.896894724366, "y": 234.6188346456649 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2554.896894724366, "y": 234.6188346456649 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2554.896894724366, "y": 234.6188346456649 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2562.8797277027566, "y": 241.69787867698648 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2583.321088102669, "y": 257.0217015418425 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2606.235296882598, "y": 272.27261788405315 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2628.402370762836, "y": 285.8153073866176 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2637.967107764859, "y": 291.26164583583846 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2645.862380314502, "y": 295.60668740016314 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2664.002927521649, "y": 304.431757352781 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2686.372231878016, "y": 313.51034130760297 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2714.535576294477, "y": 322.94413905734257 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2731.6184129526573, "y": 327.84718110236224 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2731.6184129526573, "y": 327.84718110236224 @@ -429,6 +512,7 @@ { "angle": 3, "saAfter": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 2554.896894724344, "y": 1030.8393070866143 diff --git a/src/test/ValentinaTest/share/Issue_937_case_1a/output.json b/src/test/ValentinaTest/share/Issue_937_case_1a/output.json index e5d6c75db..2eed9a37e 100644 --- a/src/test/ValentinaTest/share/Issue_937_case_1a/output.json +++ b/src/test/ValentinaTest/share/Issue_937_case_1a/output.json @@ -10,6 +10,11 @@ "x": 1809.039616552721, "y": 1030.8393070866143 }, + { + "type": "QPointF", + "x": 1809.039616552721, + "y": 1030.8393070866139 + }, { "type": "QPointF", "x": 1625.7211470605166, @@ -35,6 +40,11 @@ "x": 1739.655927690695, "y": 262.03592436304467 }, + { + "type": "QPointF", + "x": 1746.7178515231735, + "y": 258.14950342148984 + }, { "type": "QPointF", "x": 1755.2977021921959, @@ -57,218 +67,218 @@ }, { "type": "QPointF", - "x": 1821.158274156406, - "y": 207.91568544878376 + "x": 1821.158373176746, + "y": 207.91559763918676 }, { "type": "QPointF", - "x": 1829.8906021517287, - "y": 197.95711777636726 + "x": 1829.8911313412102, + "y": 197.9566795361817 }, { "type": "QPointF", - "x": 1850.2268389063556, - "y": 172.6087009553809 + "x": 1850.2279554859551, + "y": 172.60939136415686 }, { "type": "QPointF", - "x": 1870.2249267950706, - "y": 145.2058551175055 + "x": 1870.226426962668, + "y": 145.20950782905345 }, { "type": "QPointF", - "x": 1889.836815745804, - "y": 115.95069314833182 + "x": 1889.8385137948135, + "y": 115.95894266286491 }, { "type": "QPointF", - "x": 1908.9175481929235, - "y": 85.18337360456252 + "x": 1908.919319134804, + "y": 85.19755633610079 }, { "type": "QPointF", - "x": 1927.3332233514307, - "y": 53.24112200584291 + "x": 1927.3349810684138, + "y": 53.26228491735509 }, { "type": "QPointF", - "x": 1944.9574938924545, - "y": 20.458935655897122 + "x": 1944.9591774210396, + "y": 20.487843839448118 }, { "type": "QPointF", - "x": 1961.6692094416467, - "y": -12.829474442041569 + "x": 1961.67077431233, + "y": -12.79233152637103 }, { "type": "QPointF", - "x": 1977.3508112727925, - "y": -46.290589198904264 + "x": 1977.3522240634154, + "y": -46.24499269824816 }, { "type": "QPointF", - "x": 1991.8872271781745, - "y": -79.58978524645178 + "x": 1991.8884622074468, + "y": -79.53578290200039 }, { "type": "QPointF", - "x": 2005.1651187141283, - "y": -112.38968412540115 + "x": 2005.1661563146213, + "y": -112.32758718528461 }, { "type": "QPointF", - "x": 2017.0724182445153, - "y": -144.34786468940496 + "x": 2017.0732444165358, + "y": -144.27824589617154 }, { "type": "QPointF", - "x": 2027.498193269143, - "y": -175.1134390698845 + "x": 2027.4988008625883, + "y": -175.0371324332207 }, { "type": "QPointF", - "x": 2036.333053260422, - "y": -204.3215811329599 + "x": 2036.3334451985957, + "y": -204.2396854229903 }, { "type": "QPointF", - "x": 2043.470724801957, - "y": -231.58427464889738 + "x": 2043.4709202436516, + "y": -231.49816557048644 }, { "type": "QPointF", - "x": 2048.852905918943, - "y": -256.66210067911084 + "x": 2048.8529620440595, + "y": -256.57350633719767 }, { "type": "QPointF", - "x": 2054.8508178913967, - "y": -292.384011086662 + "x": 2054.8509730254013, + "y": -292.29550527593733 }, { "type": "QPointF", - "x": 2095.52601931633, - "y": -306.38508853570886 + "x": 2095.5261675506413, + "y": -306.2962574186654 }, { "type": "QPointF", - "x": 2118.596734377724, - "y": -285.25948496499177 + "x": 2118.597868855172, + "y": -285.1692457516127 }, { "type": "QPointF", - "x": 2128.851320460309, - "y": -276.6320078120429 + "x": 2128.8544347426932, + "y": -276.538894025201 }, { "type": "QPointF", - "x": 2145.2196056546336, - "y": -264.3674802960657 + "x": 2145.2255261217597, + "y": -264.26860738207756 }, { "type": "QPointF", - "x": 2168.939173657971, - "y": -249.51658425841455 + "x": 2168.9481948130738, + "y": -249.4078653273538 }, { "type": "QPointF", - "x": 2194.160515418841, - "y": -236.5922818192089 + "x": 2194.171723444866, + "y": -236.47253891755344 }, { "type": "QPointF", - "x": 2220.6310461540475, - "y": -225.66149541920834 + "x": 2220.6429936659683, + "y": -225.5308348820686 }, { "type": "QPointF", - "x": 2247.958778313922, - "y": -216.85279575290144 + "x": 2247.96975145286, + "y": -216.71248347407317 }, { "type": "QPointF", - "x": 2275.742934422003, - "y": -210.27664776098405 + "x": 2275.7510044097676, + "y": -210.12905961525684 }, { "type": "QPointF", - "x": 2303.844726101479, - "y": -205.98342193871318 + "x": 2303.8483792264255, + "y": -205.83183843018546 }, { "type": "QPointF", - "x": 2342.8166649803834, - "y": -202.7848739275897 + "x": 2342.8164895619316, + "y": -202.63236632312987 }, { "type": "QPointF", - "x": 2357.6252360158223, - "y": -158.28779594983365 + "x": 2357.624595155964, + "y": -158.13913498659716 }, { "type": "QPointF", - "x": 2374.650855533189, - "y": -113.40095337470302 + "x": 2374.6491276595834, + "y": -113.26717927593145 }, { "type": "QPointF", - "x": 2395.5715630428886, - "y": -65.40353512500977 + "x": 2395.568721882347, + "y": -65.29295128971549 }, { "type": "QPointF", - "x": 2413.959562148755, - "y": -27.960630211024366 + "x": 2413.955934876872, + "y": -27.870772641274876 }, { "type": "QPointF", - "x": 2427.335223757793, - "y": -2.67894722422675 + "x": 2427.331139430348, + "y": -2.6034480584518818 }, { "type": "QPointF", - "x": 2441.7439264606173, - "y": 22.874874343832474 + "x": 2441.7395211517787, + "y": 22.936063817271563 }, { "type": "QPointF", - "x": 2457.1503265783167, - "y": 48.500299616965826 + "x": 2457.145720603724, + "y": 48.547640386960296 }, { "type": "QPointF", - "x": 2473.5562132949735, - "y": 74.06879277048931 + "x": 2473.551559970586, + "y": 74.10320215663424 }, { "type": "QPointF", - "x": 2490.9627711658104, - "y": 99.45260261835737 + "x": 2490.9582637327135, + "y": 99.47545429130847 }, { "type": "QPointF", - "x": 2509.3705570487227, - "y": 124.52485036246065 + "x": 2509.3664365695927, + "y": 124.53797287508789 }, { "type": "QPointF", - "x": 2528.7795075947815, - "y": 149.15966952319275 + "x": 2528.7760716186217, + "y": 149.16534280698178 }, { "type": "QPointF", - "x": 2549.188990792927, - "y": 173.2323949516483 + "x": 2549.186602414068, + "y": 173.2333441615875 }, { "type": "QPointF", - "x": 2570.3339930185716, - "y": 196.33148010029032 + "x": 2570.3329709890236, + "y": 196.3307757423293 }, { "type": "QPointF", - "x": 2587.447320552787, - "y": 212.87881200409126 + "x": 2587.44720221142, + "y": 212.8787232897343 }, { "type": "QPointF", @@ -285,6 +295,11 @@ "x": 2647.6100143431113, "y": 253.25938675280184 }, + { + "type": "QPointF", + "x": 2656.6690269202713, + "y": 258.4177563452463 + }, { "type": "QPointF", "x": 2663.251788844662, diff --git a/src/test/ValentinaTest/share/busty/input.json b/src/test/ValentinaTest/share/busty/input.json index 7e7f4f98c..bd1e946e6 100644 --- a/src/test/ValentinaTest/share/busty/input.json +++ b/src/test/ValentinaTest/share/busty/input.json @@ -2,14 +2,17 @@ "vector": [ { "angle": 5, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -1058.8136718927797, "y": -30.536111039239415 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -18,6 +21,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -26,6 +30,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -34,6 +39,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -42,6 +48,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -50,6 +57,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -58,6 +66,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -66,6 +75,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -74,6 +84,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -82,6 +93,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -90,6 +102,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -97,8 +110,10 @@ "y": -235.83080565687146 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -1171.2936721927317, "y": -245.6692913385828 @@ -106,19 +121,23 @@ { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -1171.2936721927317, "y": -245.6692913385828 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -1171.2936721927317, "y": -245.6692913385828 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -127,6 +146,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -135,6 +155,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -143,6 +164,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -151,6 +173,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -159,6 +182,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -167,6 +191,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -175,6 +200,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -182,8 +208,10 @@ "y": -502.74224979503845 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -1177.4354044761963, "y": -513.3292659231066 @@ -191,6 +219,7 @@ { "saAfter": 0, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -1177.4354044761963, "y": -513.3292659231066 @@ -198,136 +227,159 @@ { "saAfter": 26.45669291338583, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -1032.9003005664292, "y": -566.9291338582678 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": -1032.9003005664292, "y": -566.9291338582678 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", - "x": -1030.2832577330814, - "y": -542.9215895813609 + "x": -1030.2878088969544, + "y": -542.9175732672479 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", - "x": -1017.7544686897351, - "y": -420.50801127495316 + "x": -1017.7823210275292, + "y": -420.4857927019032 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", - "x": -1010.6299867820719, - "y": -340.60770434332505 + "x": -1010.6731569242663, + "y": -340.5762171417499 + }, + { + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "turnPoint": true, + "type": "VSAPoint", + "x": -1009.052907840562, + "y": -313.48301539888826 }, { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", - "x": -1009.0044625338777, - "y": -313.5156956522864 + "x": -1009.052907840562, + "y": -313.48301539888826 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", - "x": -1009.0044625338777, - "y": -313.5156956522864 - }, - { - "saAfter": 26.45669291338583, - "saBefore": 26.45669291338583, - "type": "VSAPoint", - "x": -1009.0044625338777, - "y": -313.5156956522864 + "x": -1009.052907840562, + "y": -313.48301539888826 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", - "x": -1007.7355728307733, - "y": -288.26325089419765 + "x": -1007.7889324196684, + "y": -288.2294473072146 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", - "x": -1004.4362203318067, - "y": -222.10701747325322 + "x": -1004.5022014172017, + "y": -222.06469385328074 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", - "x": -1002.9738790604049, - "y": -167.56635417141973 + "x": -1003.0502029224057, + "y": -167.51587067063713 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", - "x": -1003.047137929568, - "y": -132.13036972295987 + "x": -1003.1301904655697, + "y": -132.07497999092544 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", - "x": -1004.392781230201, - "y": -99.30794871728739 + "x": -1004.4820942957092, + "y": -99.24888657067075 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", - "x": -1007.3598453249313, - "y": -70.79885083212733 + "x": -1007.4546470489124, + "y": -70.73807469839238 + }, + { + "angle": 4, + "curvePoint": true, + "saAfter": 37.795275590551185, + "saBefore": 26.45669291338583, + "turnPoint": true, + "type": "VSAPoint", + "x": -1009.7469685486572, + "y": -58.918384348771376 }, { "angle": 4, "saAfter": 37.795275590551185, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", - "x": -1009.6498580058222, - "y": -58.97892973557434 + "x": -1009.7469685486572, + "y": -58.918384348771376 }, { "angle": 4, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", - "x": -1009.6498580058222, - "y": -58.97892973557434 - }, - { - "angle": 4, - "saAfter": 37.795275590551185, - "saBefore": 26.45669291338583, - "type": "VSAPoint", - "x": -1009.6498580058222, - "y": -58.97892973557434 + "x": -1009.7469685486572, + "y": -58.918384348771376 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -335,8 +387,10 @@ "y": -45.246390500828426 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -1052.1941894220304, "y": -34.18601050334456 @@ -344,6 +398,7 @@ { "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -1052.1941894220304, "y": -34.18601050334456 @@ -352,6 +407,7 @@ "angle": 5, "saAfter": 26.45669291338583, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -1058.8136718927797, "y": -30.536111039239415 diff --git a/src/test/ValentinaTest/share/busty/output.json b/src/test/ValentinaTest/share/busty/output.json index b566fceb6..34968b63c 100644 --- a/src/test/ValentinaTest/share/busty/output.json +++ b/src/test/ValentinaTest/share/busty/output.json @@ -2,43 +2,53 @@ "vector": [ { "type": "QPointF", - "x": -1103.8471101657558, - "y": -42.085297184732866 + "x": -1085.3406850724177, + "y": -20.72367949823911 }, { "type": "QPointF", - "x": -1124.5201943940583, - "y": -69.1505697843101 + "x": -1102.8139178149731, + "y": -40.82014346735454 }, { "type": "QPointF", - "x": -1140.0434836886259, - "y": -92.4634812382463 + "x": -1123.5166382062641, + "y": -67.74886335116501 }, { "type": "QPointF", - "x": -1149.940403533249, - "y": -109.17851775503699 + "x": -1139.2982049168018, + "y": -91.28091866044905 }, { "type": "QPointF", - "x": -1159.170440407294, - "y": -126.87274461755615 + "x": -1149.363954773123, + "y": -108.1569928792507 }, { "type": "QPointF", - "x": -1167.36286874689, - "y": -144.65095508395754 + "x": -1154.2869352963178, + "y": -117.29635027539823 }, { "type": "QPointF", - "x": -1177.9664774154562, - "y": -171.01815965500697 + "x": -1158.7109980639734, + "y": -125.9294957529944 }, { "type": "QPointF", - "x": -1188.5922254584113, - "y": -203.5118209091592 + "x": -1166.847315000261, + "y": -143.46127537014604 + }, + { + "type": "QPointF", + "x": -1177.3610461827689, + "y": -169.3654767168817 + }, + { + "type": "QPointF", + "x": -1188.0831087916176, + "y": -201.7641868365697 }, { "type": "QPointF", @@ -47,113 +57,123 @@ }, { "type": "QPointF", - "x": -1203.7453889782855, - "y": -280.682244982781 + "x": -1200.4728911566644, + "y": -260.1367009979224 }, { "type": "QPointF", - "x": -1205.614902183117, - "y": -298.55105938305485 + "x": -1203.5550454524105, + "y": -279.2549404389566 }, { "type": "QPointF", - "x": -1209.8988299188475, - "y": -363.0886788042449 + "x": -1205.5265746390796, + "y": -297.5253594872881 }, { "type": "QPointF", - "x": -1210.504806929036, - "y": -379.77757091002314 + "x": -1209.859721598939, + "y": -362.3417122903945 }, { "type": "QPointF", - "x": -1210.277941986287, - "y": -400.1343384877381 + "x": -1210.486998070578, + "y": -378.48962309410894 }, { "type": "QPointF", - "x": -1208.3974608963256, - "y": -445.241602081407 + "x": -1210.2992951180124, + "y": -399.31408872156777 }, { "type": "QPointF", - "x": -1204.722502504057, - "y": -503.81468691330525 + "x": -1208.426564033531, + "y": -444.68347123258434 }, { "type": "QPointF", - "x": -1007.3842856723732, - "y": -576.9962329503279 + "x": -1204.6858467230975, + "y": -504.3989226892098 }, { "type": "QPointF", - "x": -1003.9823700835099, - "y": -545.7886279064857 + "x": -1007.417943193997, + "y": -577.3193360068169 }, { "type": "QPointF", - "x": -991.4352650684059, - "y": -423.2017300153295 + "x": -1003.9863330880831, + "y": -545.7792109431953 }, { "type": "QPointF", - "x": -984.213648276446, - "y": -342.06840960768045 + "x": -991.4625700225885, + "y": -423.174157809383 }, { "type": "QPointF", - "x": -981.3192343251474, - "y": -289.72395615855305 + "x": -984.3205461679668, + "y": -342.9206800312433 }, { "type": "QPointF", - "x": -977.9890318933022, - "y": -222.8161180383151 + "x": -984.2565318985767, + "y": -342.0317315406073 }, { "type": "QPointF", - "x": -976.5172426843859, - "y": -167.51165883014608 + "x": -981.3723073939788, + "y": -289.68496170607204 }, { "type": "QPointF", - "x": -976.6126513667012, - "y": -131.04661695094921 + "x": -978.0780904967286, + "y": -223.37731031508625 }, { "type": "QPointF", - "x": -978.0782170318975, - "y": -96.56927915588047 + "x": -976.6028777831725, + "y": -168.21985425915506 }, { "type": "QPointF", - "x": -981.165407547637, - "y": -66.90594402278631 + "x": -976.6735649334798, + "y": -132.01526928850987 }, { "type": "QPointF", - "x": -993.2037018373038, - "y": -4.770179523183316 + "x": -978.0478095696845, + "y": -98.16022182124125 }, { "type": "QPointF", - "x": -1019.1774122353031, - "y": -9.802372690577615 + "x": -981.2609375234762, + "y": -66.8402406067669 }, { "type": "QPointF", - "x": -1033.5544753284128, - "y": -1.484787730971263 + "x": -993.3122550766559, + "y": -4.701120156429549 }, { "type": "QPointF", - "x": -1053.5198027542144, - "y": 15.874425980879213 + "x": -1019.2849992777869, + "y": -9.738297796326794 }, { "type": "QPointF", - "x": -1103.8471101657558, - "y": -42.085297184732866 + "x": -1033.5541494516974, + "y": -1.4844129308546457 + }, + { + "type": "QPointF", + "x": -1053.519476877499, + "y": 15.87480078099583 + }, + { + "type": "QPointF", + "x": -1085.3406850724177, + "y": -20.72367949823911 } ] } diff --git a/src/test/ValentinaTest/share/doll/input.json b/src/test/ValentinaTest/share/doll/input.json index ae27d2ff8..16d8f5abc 100644 --- a/src/test/ValentinaTest/share/doll/input.json +++ b/src/test/ValentinaTest/share/doll/input.json @@ -1,388 +1,479 @@ { "vector": [ { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 204.35338582677167, "y": 730.1419842519686 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 198.26332677165357, "y": 676.5494645669291 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 192.346280757874, "y": 619.635094488189 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 189.75108513779531, "y": 588.0775157480316 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 187.46731299212598, "y": 542.7896220472442 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 186.6368503937008, "y": 465.72269291338586 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 186.6368503937008, "y": 408.88214173228346 }, { + "turnPoint": true, "type": "VSAPoint", "x": 186.6368503937008, "y": 408.88214173228346 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 186.6368503937008, "y": 408.88214173228346 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 186.85865388652775, "y": 401.9728053734631 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 188.84085342812114, "y": 386.7976196768927 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 194.1169611768659, "y": 362.5979893990439 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 202.93458571296594, "y": 331.9482604161107 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 208.15480908861204, "y": 314.3257252276737 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 210.07604385955227, "y": 306.3255523559161 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 210.2588976377953, "y": 304.0002519685039 }, { + "turnPoint": true, "type": "VSAPoint", "x": 210.2588976377953, "y": 304.0002519685039 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 210.2588976377953, "y": 304.0002519685039 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 210.10781119555043, "y": 300.71635788532535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 208.3654577463414, "y": 294.640423893857 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 205.02211856338138, "y": 289.1655002549779 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 200.21916136212846, "y": 284.30357068282433 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 194.09795385804082, "y": 280.0666188915326 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 186.79986376657644, "y": 276.46662859523906 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 178.46625880319345, "y": 273.5155835080799 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 169.23850668334993, "y": 271.2254673441915 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 154.0971854462626, "y": 268.9693881780884 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 131.97321085330947, "y": 268.49853395957217 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 108.81726651275976, "y": 270.88710228859264 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 91.4830095620298, "y": 274.7072960360051 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 80.1913179469932, "y": 278.1360249671903 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 74.69714943577341, "y": 280.17021609073447 }, { + "turnPoint": true, "type": "VSAPoint", "x": 74.69714943577341, "y": 280.17021609073447 }, { + "turnPoint": true, "type": "VSAPoint", "x": -15.239495457873012, "y": 314.761233357522 }, { + "turnPoint": true, "type": "VSAPoint", "x": -40.78363128565394, "y": 165.7537743621286 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -40.78363128565394, "y": 165.7537743621286 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 145.47569245858736, "y": 133.82360457740234 }, { + "curvePoint": true, "type": "VSAPoint", "x": 238.60535433070868, "y": 117.85851968503937 }, { + "curvePoint": true, + "turnPoint": true, + "type": "VSAPoint", + "x": 239.24750707132483, + "y": 117.7484363580766 + }, + { + "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 238.60535433070868, "y": 117.85851968503937 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 238.60535433070868, "y": 117.85851968503937 }, { + "turnPoint": true, "type": "VSAPoint", "x": 304.7470866141732, "y": 106.519937007874 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 304.7470866141732, "y": 106.519937007874 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 305.2942453334244, "y": 109.34899935311245 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 306.9048459848872, "y": 114.50235141446748 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 310.35018184997693, "y": 121.2287733899588 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 316.92140911194485, "y": 128.2794363551129 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 325.40387019373645, "y": 133.49126641884465 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 335.5398716397215, "y": 137.12975254404603 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 347.07171999426987, "y": 139.46038369360906 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 366.32904938677143, "y": 141.16537601600902 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 380.3376377952756, "y": 141.29159055118112 }, { + "turnPoint": true, "type": "VSAPoint", "x": 380.3376377952756, "y": 141.29159055118112 }, { + "turnPoint": true, "type": "VSAPoint", "x": 380.3376377952756, "y": 574.2364724409449 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 380.3376377952756, "y": 574.2364724409449 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 377.3698228346457, "y": 574.2364724409449 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 373.7242096764272, "y": 574.8074154773622 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 371.6718943774606, "y": 575.8351129429134 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 369.9158535310039, "y": 577.6621306594488 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 368.43013518085627, "y": 580.5168458415355 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 366.6259621062992, "y": 587.0255964566929 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 364.9650369094488, "y": 601.6417381889764 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 363.91826648622043, "y": 624.4794596456694 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 363.03360236220476, "y": 676.5494645669291 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 362.6211023622048, "y": 730.1419842519686 }, { + "turnPoint": true, "type": "VSAPoint", "x": 362.6211023622048, "y": 730.1419842519686 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 362.6211023622048, "y": 730.1419842519686 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 362.6211023622048, "y": 730.1419842519686 }, { + "turnPoint": true, "type": "VSAPoint", "x": 254.7470866141744, "y": 730.1419842519686 }, { + "turnPoint": true, "type": "VSAPoint", "x": 204.35338582677167, "y": 730.1419842519686 diff --git a/src/test/ValentinaTest/share/doll/output.json b/src/test/ValentinaTest/share/doll/output.json index 69c139cbb..da806221a 100644 --- a/src/test/ValentinaTest/share/doll/output.json +++ b/src/test/ValentinaTest/share/doll/output.json @@ -7,18 +7,23 @@ }, { "type": "QPointF", - "x": 165.97859858059653, - "y": 621.8034894040823 + "x": 172.22529556863017, + "y": 679.3786218901527 }, { "type": "QPointF", - "x": 163.32796749524144, - "y": 589.4099773650914 + "x": 166.04439060694392, + "y": 622.4929213551636 }, { "type": "QPointF", - "x": 161.01215601002994, - "y": 543.0746991698966 + "x": 163.38340296051783, + "y": 590.2459106639249 + }, + { + "type": "QPointF", + "x": 161.0441953495721, + "y": 544.122083664304 }, { "type": "QPointF", @@ -37,13 +42,23 @@ }, { "type": "QPointF", - "x": 168.6915298388583, - "y": 355.2833437350711 + "x": 168.26750754855107, + "y": 356.9621800489317 }, { "type": "QPointF", - "x": 183.2925825930999, - "y": 304.79941219485175 + "x": 177.5091543749583, + "y": 324.63361475213793 + }, + { + "type": "QPointF", + "x": 182.65797637538827, + "y": 307.2492376039128 + }, + { + "type": "QPointF", + "x": 183.26949554131917, + "y": 304.8885371427236 }, { "type": "QPointF", @@ -97,13 +112,13 @@ }, { "type": "QPointF", - "x": -71.33016037970897, - "y": 144.14769280779652 + "x": -69.2871712942862, + "y": 156.06512913942984 }, { "type": "QPointF", - "x": 325.8043589387637, - "y": 76.06748949606035 + "x": 325.80435893876364, + "y": 76.06748949606025 }, { "type": "QPointF", @@ -152,7 +167,7 @@ }, { "type": "QPointF", - "x": 391.6997948509762, + "x": 391.76715482476385, "y": 600.6931653543307 }, { diff --git a/src/test/ValentinaTest/share/hood_1/input.json b/src/test/ValentinaTest/share/hood_1/input.json index 7ff47d702..716bf4b51 100644 --- a/src/test/ValentinaTest/share/hood_1/input.json +++ b/src/test/ValentinaTest/share/hood_1/input.json @@ -2,688 +2,822 @@ "vector": [ { "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 2627.1423614144, "y": -41.0734190894232 }, { + "curvePoint": true, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 2627.1423614144, "y": -41.0734190894232 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2635.1790266333514, "y": -23.265436071814456 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2649.726867265343, "y": 7.331914319654528 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2672.3632832506, "y": 51.90022739122702 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2704.109099056205, "y": 108.90233139339804 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2737.365061196452, "y": 163.75473572371808 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2754.545286898078, "y": 190.4788391468716 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2754.545286898078, "y": 190.4788391468716 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2646.1850164724747, "y": 266.3535173413577 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2646.1850164724747, "y": 266.3535173413577 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2639.267313063576, "y": 258.0709061308555 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2606.014223045311, "y": 219.60633632143927 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2570.2544951405134, "y": 180.478396371044 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2531.8585381172625, "y": 141.29215529195642 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2490.69676074364, "y": 102.65268209646334 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2457.8388819765955, "y": 74.44605665912789 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2435.062136247081, "y": 56.10364817309603 }, { "angle": 4, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2432.0145999869596, "y": 53.77375965353584 }, { "angle": 4, + "turnPoint": true, "type": "VSAPoint", "x": 2432.0145999869596, "y": 53.77375965353584 }, { "angle": 4, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2432.0145999869596, "y": 53.77375965353584 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2411.5210403620204, "y": 38.2382829773741 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2387.199395417422, "y": 20.925594698497928 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2362.081002509295, "y": 4.2412169630033665 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2336.149662733653, "y": -11.739216602573736 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2309.3891771865033, "y": -26.94007237169754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2281.7833469638563, "y": -41.285716717832194 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2253.3159731617234, "y": -54.70051601444185 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2223.970856876114, "y": -67.10883663499067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2193.731799203038, "y": -78.4350449529428 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2162.582601238505, "y": -88.60350734176242 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2130.507064078527, "y": -97.53859017491367 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2097.488988819113, "y": -105.16465982586067 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2080.5811523923107, "y": -108.40390988213149 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2080.5811523923107, "y": -108.40390988213149 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2080.5811523923107, "y": -108.40390988213149 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2053.3382189293116, "y": -113.20342966936785 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1998.0997844292576, "y": -120.98183613303888 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1941.710352956113, "y": -126.78347602183061 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1883.8944624162966, "y": -130.83945284472378 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1824.3766507162275, "y": -133.38087011069905 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1768.6312045607222, "y": -134.52461136590154 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1768.6312045607222, "y": -134.52461136590154 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1768.6312045607222, "y": -134.52461136590154 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1759.3687915563023, "y": -198.42760392073671 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1742.6147930204875, "y": -314.8687014945923 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1732.5799941583177, "y": -395.2289763057778 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1727.3672491658513, "y": -446.7525813211324 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1723.664475757871, "y": -497.0674818939802 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1721.699284014046, "y": -546.6854830983298 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1721.5260342820745, "y": -571.3960358663835 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1721.5260342820745, "y": -571.3960358663835 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1721.5260342820745, "y": -571.3960358663835 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1721.6107434243554, "y": -591.3956596007176 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1722.6124767170475, "y": -629.8897278172096 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1724.586390473074, "y": -666.6210940512818 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1727.502931863078, "y": -701.6381062142596 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1731.332548057702, "y": -734.9891122174672 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1736.0456862275885, "y": -766.7224599722297 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1741.6127935433801, "y": -796.8864973898717 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1748.0043171757197, "y": -825.5295723817184 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1755.1907042952503, "y": -852.7000328590941 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1763.1424020726135, "y": -878.446226733324 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1771.8298576784532, "y": -902.8165019157326 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1781.2235182834113, "y": -925.8592063176449 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1791.293831058131, "y": -947.6226878503854 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1802.0112431732541, "y": -968.1552944252793 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1813.3462017994243, "y": -987.5053739536512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1825.2691541072834, "y": -1005.7212743468258 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1837.750547267475, "y": -1022.8513435161282 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1850.7608284506407, "y": -1038.9439293728828 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1864.2704448274235, "y": -1054.0473798284147 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1878.2498435684665, "y": -1068.2100427940484 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1892.6694718444123, "y": -1081.4802661811086 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1907.499776825903, "y": -1093.9063979009206 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1922.7112056835815, "y": -1105.5367858648092 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1938.274205588091, "y": -1116.4197779840988 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1962.1785432217637, "y": -1131.5269757687188 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1995.0593353594777, "y": -1149.3887598756025 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2028.814460756082, "y": -1165.1312230079368 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2063.2074967767185, "y": -1179.1411484563205 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2080.5811523923107, "y": -1185.5692642128404 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2080.5811523923107, "y": -1185.5692642128404 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2080.5811523923107, "y": -1185.5692642128404 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2092.940023942418, "y": -1189.85915528519 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2121.6334572193564, "y": -1197.531501045943 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2155.55361818058, "y": -1203.7934777177322 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2195.2070617952177, "y": -1208.287923713637 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2241.100343032397, "y": -1210.6576774467371 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2293.7400168612476, "y": -1210.5455773301119 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2353.632638250897, "y": -1207.5944617768414 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2421.284762170474, "y": -1201.4471692000047 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2458.5339082978226, "y": -1196.9078468900057 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2458.5339082978226, "y": -1196.9078468900057 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2495.598879517392, "y": -1189.5138787092 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2495.598879517392, "y": -1189.5138787092 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2492.9544862140174, "y": -1154.3874906169024 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2488.5876238228907, "y": -1086.109932005772 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2485.3039755881327, "y": -1020.1445516464204 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2483.077880507099, "y": -956.426813053981 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2481.883677577146, "y": -894.8921797435885 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2481.69570579563, "y": -835.4761152303763 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2482.488304159906, "y": -778.1140830294785 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2484.2358116673313, "y": -722.741546656029 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2486.9125673152607, "y": -669.2939696251622 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2490.492910101052, "y": -617.7068154520116 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2494.951179022059, "y": -567.9155476517111 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2500.26171307564, "y": -519.8556297393952 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2506.3988512591495, "y": -473.46252523019746 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2513.336932569944, "y": -428.6716976392519 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2521.05029600538, "y": -385.4186104816926 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2529.513280562814, "y": -343.63872727265357 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2538.700225239601, "y": -303.26751152726854 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2548.585469033098, "y": -264.24042676067165 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2559.1433509406597, "y": -226.4929364879969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2570.348209959644, "y": -189.96050422437818 }, { + "curvePoint": true, "saAfter": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 2572.9238556506243, "y": -182.12538366123033 }, { "saAfter": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 2572.9238556506243, "y": -182.12538366123033 diff --git a/src/test/ValentinaTest/share/hood_1/output.json b/src/test/ValentinaTest/share/hood_1/output.json index 8455a7fca..b9609aec4 100644 --- a/src/test/ValentinaTest/share/hood_1/output.json +++ b/src/test/ValentinaTest/share/hood_1/output.json @@ -157,8 +157,8 @@ }, { "type": "QPointF", - "x": 1881.7832654394247, - "y": -93.63265540673328 + "x": 1881.7653854578848, + "y": -93.1006487159616 }, { "type": "QPointF", @@ -170,6 +170,11 @@ "x": 1735.8227892981768, "y": -97.39451881792351 }, + { + "type": "QPointF", + "x": 1721.9643886842703, + "y": -193.00602640561203 + }, { "type": "QPointF", "x": 1705.204775531123, @@ -195,6 +200,11 @@ "x": 1683.933617732387, "y": -545.1897199926975 }, + { + "type": "QPointF", + "x": 1683.9040825337465, + "y": -546.6106363925372 + }, { "type": "QPointF", "x": 1683.815541944056, @@ -335,6 +345,11 @@ "x": 2048.9492482109445, "y": -1214.1437941392153 }, + { + "type": "QPointF", + "x": 2050.3903667251593, + "y": -1214.696795465024 + }, { "type": "QPointF", "x": 2081.629635884494, @@ -480,6 +495,11 @@ "x": 2595.415081338598, "y": -237.12615764341632 }, + { + "type": "QPointF", + "x": 2606.3712668175326, + "y": -201.4045030292295 + }, { "type": "QPointF", "x": 2609.1203001982913, diff --git a/src/test/ValentinaTest/share/hood_2/input.json b/src/test/ValentinaTest/share/hood_2/input.json index 939504e8f..2b8a9ccfc 100644 --- a/src/test/ValentinaTest/share/hood_2/input.json +++ b/src/test/ValentinaTest/share/hood_2/input.json @@ -1,696 +1,834 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", "x": 2068.403668680166, "y": -141.1952864288398 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2068.403668680166, "y": -141.1952864288398 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2059.53377956532, "y": -204.20370243695794 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2043.5818678150838, "y": -319.0141061236277 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2034.0736976285216, "y": -398.2431991628491 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2029.1466809648907, "y": -449.03697639429095 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2025.653327916676, "y": -498.6340065477732 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2023.8023137563387, "y": -547.5378201862984 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2023.6393677732915, "y": -571.8897107521216 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2023.6393677732915, "y": -571.8897107521216 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2023.6393677732915, "y": -571.8897107521216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2023.7186286499364, "y": -591.9139100245898 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2024.658047404418, "y": -630.6890609584891 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2026.513461382864, "y": -667.9549451469757 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2029.2614470547578, "y": -703.7322630209733 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2032.8785808895823, "y": -738.0417150114063 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2037.3414393568205, "y": -770.9040015491985 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2042.6265989259552, "y": -802.3398230652742 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2048.7106360664698, "y": -832.3698799905576 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2055.5701272478473, "y": -861.0148727559722 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2063.1816489395706, "y": -888.2955017924427 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2071.521777611123, "y": -914.2324675308927 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2080.567089731987, "y": -938.8464704022465 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2090.294161771646, "y": -962.1582108374282 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2100.6795701995825, "y": -984.1883892673616 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2111.69989148528, "y": -1004.9577061229709 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2123.3317020982217, "y": -1024.4868618351802 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2135.551578507891, "y": -1042.7965568349136 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2148.3360971837697, "y": -1059.9074915530953 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2161.6618345953416, "y": -1075.840366420649 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2175.50536721209, "y": -1090.615881868499 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2189.8432715034974, "y": -1104.2547383275692 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2204.652123939047, "y": -1116.7776362287836 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2219.9085009882215, "y": -1128.205276003067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2235.588979120505, "y": -1138.5583580813422 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2251.670134805379, "y": -1147.8575828945345 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2268.128544512328, "y": -1156.1236508735672 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2284.940784710834, "y": -1163.3772624493645 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2302.0834318703805, "y": -1169.6391180528503 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2319.53306246045, "y": -1174.9299181149495 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2337.2662529505265, "y": -1179.270363066585 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2355.2595798100924, "y": -1182.6811533386817 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2373.4896195086303, "y": -1185.1829893621637 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2382.6944858835277, "y": -1186.0629390985782 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2382.6944858835277, "y": -1186.0629390985782 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2382.6944858835277, "y": -1186.0629390985782 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2396.5327839878364, "y": -1187.1484415400676 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2428.2384920875347, "y": -1188.4387546298442 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2464.3821133471984, "y": -1188.6712063599218 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2504.522513200907, "y": -1187.8446509437936 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2548.2185570827364, "y": -1185.9579425949519 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2595.0291104267653, "y": -1183.0099355268896 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2644.513038667071, "y": -1178.9994839531 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2696.2292072377313, "y": -1173.9254420870752 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2722.8519661984883, "y": -1170.9448288623578 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2722.8519661984883, "y": -1170.9448288623578 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2722.8519661984883, "y": -1170.9448288623578 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2723.358673160702, "y": -1117.6310012473255 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2725.1041365304563, "y": -1024.3301898197412 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2727.7650167567112, "y": -943.8420756854985 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2731.382377752918, "y": -872.6338641005586 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2735.99728343253, "y": -807.1727603208824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2741.6507977089996, "y": -743.9259696024315 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2752.0256290059283, "y": -646.3068412368262 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2760.6472417890395, "y": -571.8897107521216 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2760.6472417890395, "y": -571.8897107521216 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2760.6472417890395, "y": -571.8897107521216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2763.012498585108, "y": -552.3133993614101 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2768.8840525233645, "y": -511.9747487623945 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2776.174861135665, "y": -470.34882974787035 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2784.9404869316745, "y": -427.58671450184096 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2795.236492421058, "y": -383.83947520830935 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2807.1184401134824, "y": -339.2581840512787 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2820.6418925186113, "y": -293.993913214752 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2835.8624121461125, "y": -248.19773488273256 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2852.8355615056507, "y": -202.02072123922338 }, { + "curvePoint": true, "saAfter": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 2858.3700013104663, "y": -188.06698397123134 }, { "saAfter": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 2858.3700013104663, "y": -188.06698397123134 }, { "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 2904.1377770488234, "y": -84.35725566360142 }, { + "curvePoint": true, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 2904.1377770488234, "y": -84.35725566360142 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2914.8264130731436, "y": -62.715390279788615 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2939.365706457486, "y": -16.52575723035168 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2965.9354421221933, "y": 29.2893502105594 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2994.5911825769317, "y": 74.57885985894151 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 3025.3884903313665, "y": 119.19169953079152 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 3041.700299857916, "y": 141.15952147416033 }, { + "turnPoint": true, "type": "VSAPoint", "x": 3041.700299857916, "y": 141.15952147416033 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2954.8417173310404, "y": 214.0425260370432 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2954.8417173310404, "y": 214.0425260370432 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2952.745368959665, "y": 211.82746663724382 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2908.5743465650885, "y": 167.33226714232575 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2877.6585731065616, "y": 137.66544807242425 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2845.0900075818254, "y": 108.26788753843135 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2810.500784218799, "y": 79.39357569916001 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2787.3176143572973, "y": 61.56506016290141 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2787.3176143572973, "y": 61.56506016290141 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2787.3176143572973, "y": 61.56506016290141 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2773.5230372454007, "y": 51.296502713423116 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2733.7889008895504, "y": 24.23065874003362 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2701.8518690092988, "y": 4.806926747701308 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2679.5726346332076, "y": -7.714457705845784 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2656.3973784147083, "y": -19.83516544197376 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2632.280117132291, "y": -31.523447690831006 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2607.174867564445, "y": -42.7475556825659 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2581.0356464896595, "y": -53.47574064732684 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2553.8164706864245, "y": -63.67625381526219 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2525.47135693323, "y": -73.31734641652035 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2495.954322008567, "y": -82.36726968124971 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2465.2193826909242, "y": -90.79427483959863 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2433.220555758792, "y": -98.5666131217155 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2399.91185799066, "y": -105.65253575774872 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2382.6944858835277, "y": -108.89758476786946 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2382.6944858835277, "y": -108.89758476786946 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2382.6944858835277, "y": -108.89758476786946 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2354.3437485118875, "y": -113.7104966487112 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2293.9116156385835, "y": -122.24746148708584 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2230.380823884414, "y": -129.44036440152377 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2165.2826297773354, "y": -135.24761515206256 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2100.148289845306, "y": -139.6276234987398 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2068.403668680166, "y": -141.1952864288398 diff --git a/src/test/ValentinaTest/share/hood_2/output.json b/src/test/ValentinaTest/share/hood_2/output.json index f740ffee6..0c6af7867 100644 --- a/src/test/ValentinaTest/share/hood_2/output.json +++ b/src/test/ValentinaTest/share/hood_2/output.json @@ -5,6 +5,11 @@ "x": 2035.2960002995621, "y": -104.98892759835678 }, + { + "type": "QPointF", + "x": 2022.174532695427, + "y": -198.98871007638743 + }, { "type": "QPointF", "x": 2006.1495263542765, @@ -30,6 +35,11 @@ "x": 1986.0340824328566, "y": -546.1082889127805 }, + { + "type": "QPointF", + "x": 1986.0071053712643, + "y": -547.466545406418 + }, { "type": "QPointF", "x": 1985.923420264862, diff --git a/src/test/ValentinaTest/share/loop_start_point_on_line/input.json b/src/test/ValentinaTest/share/loop_start_point_on_line/input.json index 64f3f35ab..0aa721e7f 100644 --- a/src/test/ValentinaTest/share/loop_start_point_on_line/input.json +++ b/src/test/ValentinaTest/share/loop_start_point_on_line/input.json @@ -1,517 +1,614 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", - "x": -2156.977007454767, - "y": -1158.1060618158292 + "x": -2156.985590497513, + "y": -1158.1029728969 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -2156.977007454767, - "y": -1158.1060618158292 + "x": -2156.985590497513, + "y": -1158.1029728969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -2146.8796738452484, "y": -1161.7519111187387 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -2107.715891317013, "y": -1174.3215712914184 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -2074.245430022959, "y": -1183.11338832744 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -2049.8767759439447, "y": -1188.5239599444994 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -2023.5553139328522, "y": -1193.4388345292111 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1995.1024338261252, "y": -1197.7558733102826 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1964.339525460208, "y": -1201.3729375164196 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1931.087978671544, "y": -1204.1878883763288 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1895.1691832965776, "y": -1206.0985871187168 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1856.4045291717516, "y": -1207.0028949722896 }, { + "curvePoint": true, "type": "VSAPoint", "x": -1835.7694488188972, "y": -1206.9974173228347 }, { + "curvePoint": true, "type": "VSAPoint", "x": -1835.7694488188972, "y": -1206.9974173228347 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1825.048102207637, "y": -1206.8913056619815 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1804.7393163529287, "y": -1205.9667973062424 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1785.7094698403316, "y": -1204.212710819928 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1767.8677298928844, "y": -1201.6570061033317 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1751.1232637336275, "y": -1198.327643056748 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1735.3852385855994, "y": -1194.2525815804702 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1720.56282167184, "y": -1189.459781574792 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1706.5651802153889, "y": -1183.977202940007 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1693.301481439286, "y": -1177.832805576409 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1680.68089256657, "y": -1171.054549384292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1662.7051401316232, "y": -1159.8303369592577 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1640.2326284829896, "y": -1142.8061904074311 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1618.6975664626166, "y": -1123.749886746814 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1608.048141133324, "y": -1113.458882488723 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1602.7602159860949, "y": -1108.0917614638863 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1592.6237015484876, "y": -1095.9181567598134 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1583.028611596476, "y": -1082.1431254878362 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1573.9907477493643, "y": -1066.9064550005937 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1565.525911626457, "y": -1050.3479326507245 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1557.6499048470587, "y": -1032.6073457908685 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1550.3785290304731, "y": -1013.8244817736643 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1543.727585796005, "y": -994.1391279517508 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1537.7128767629595, "y": -973.6910716777671 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1532.3502035506401, "y": -952.6201003043523 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1525.476884454628, "y": -920.1856431064241 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1518.853372386001, "y": -875.9836579946764 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1515.1224327477594, "y": -831.8061848327072 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1514.5096062992122, "y": -810.1470236220473 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1514.555874294344, "y": -798.7780377400966 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1516.769454619432, "y": -773.2173539289116 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1521.22145676682, "y": -744.8494371850044 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1527.5709569815199, "y": -714.3187558683936 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1535.4770315085434, "y": -682.269778339099 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1544.5987565929024, "y": -649.3469729571395 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1559.7695006541749, "y": -599.6419443170731 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1581.2157691070465, "y": -536.286986757397 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1601.388012199472, "y": -481.0371482674087 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -1624.302976132507, "y": -422.01337430466896 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -1627.8954330708657, "y": -413.29662992125986 }, { + "turnPoint": true, "type": "VSAPoint", "x": -1627.8954330708657, "y": -413.29662992125986 }, { + "turnPoint": true, "type": "VSAPoint", "x": -1749.555037215663, "y": -357.1460433929008 }, { + "turnPoint": true, "type": "VSAPoint", "x": -1852.5047627023196, "y": -309.630785475978 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -1852.5047627023196, "y": -309.630785475978 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1862.117267293463, - "y": -305.55979764283995 + "x": -1862.1172695128319, + "y": -305.5597949787501 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1879.534393650491, - "y": -296.74761883322964 + "x": -1879.5344208377578, + "y": -296.74758619812826 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1894.9772800318883, - "y": -287.18470576183853 + "x": -1894.9773538258987, + "y": -287.18461718084905 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1908.6628368984125, - "y": -276.93051344002276 + "x": -1908.6629756089583, + "y": -276.9303469344034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1920.8079747108195, - "y": -266.0444968791385 + "x": -1920.8081933186402, + "y": -266.0442344662824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1931.6296039298668, - "y": -254.58611109054183 + "x": -1931.629914086648, + "y": -254.58573878397695 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1941.344635016311, - "y": -242.61481108558894 + "x": -1941.345045044685, + "y": -242.61431889497817 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -1943.0045700947767, - "y": -240.2778715824784 + "x": -1943.0045982927472, + "y": -240.27792104285027 }, { + "turnPoint": true, "type": "VSAPoint", - "x": -1943.0045700947767, - "y": -240.2778715824784 + "x": -1943.0045982927472, + "y": -240.27792104285027 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -1943.0045700947767, - "y": -240.2778715824784 + "x": -1943.0045982927472, + "y": -240.27792104285027 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1950.169978430909, - "y": -230.19005187563596 + "x": -1950.170493324456, + "y": -230.18943380677698 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1962.2577472409937, - "y": -210.870837598249 + "x": -1962.2584219290898, + "y": -210.87002771491655 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1977.1732335681927, - "y": -184.01402408461598 + "x": -1977.1741079994752, + "y": -184.01297443319174 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -1992.4343575016283, - "y": -156.41356395539296 + "x": -1992.43539172746, + "y": -156.4123224894953 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2005.256606224966, - "y": -135.51410061987724 + "x": -2005.2577153544926, + "y": -135.51276924094518 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2014.7732248520372, - "y": -121.60204817874421 + "x": -2014.7743589494619, + "y": -121.60068682880069 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2019.9652072609433, - "y": -114.67755962320668 + "x": -2019.9663435777368, + "y": -114.67619560917325 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2025.542364948595, - "y": -107.67342450363606 + "x": -2025.5434657554883, + "y": -107.67210311504115 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2041.0214137456724, - "y": -91.84965246839926 + "x": -2041.0222881769548, + "y": -91.84860281697509 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2055.020721153462, - "y": -79.81109210288574 + "x": -2055.021395841558, + "y": -79.81028221955341 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2072.16837905629, - "y": -67.37972678021018 + "x": -2072.168840684987, + "y": -67.37917264950909 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -2086.396726689685, - "y": -58.80156844441596 + "x": -2086.3916899179635, + "y": -58.80420327065718 }, { + "turnPoint": true, "type": "VSAPoint", - "x": -2086.396726689685, - "y": -58.80156844441596 + "x": -2086.3916899179635, + "y": -58.80420327065718 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -2086.396726689685, - "y": -58.80156844441596 + "x": -2086.3916899179635, + "y": -58.80420327065718 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2092.458894681735, - "y": -55.38044174730577 + "x": -2092.4591565672463, + "y": -55.3801273846965 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2109.833891453217, - "y": -47.21936411514508 + "x": -2109.834030163763, + "y": -47.21919760952578 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2122.3311430837584, - "y": -42.317111735021186 + "x": -2122.3312168777684, + "y": -42.317023154031716 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2135.6110194604657, - "y": -37.98687737874003 + "x": -2135.611046647733, + "y": -37.98684474363864 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -2149.6728339867886, - "y": -34.33177170216827 + "x": -2149.6728362061576, + "y": -34.33176903807836 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -2157.0292913385824, "y": -32.82418897637797 }, { + "turnPoint": true, "type": "VSAPoint", "x": -2157.0292913385824, "y": -32.82418897637797 }, { + "turnPoint": true, "type": "VSAPoint", "x": -2228.977623905204, "y": -1150.4216215110496 diff --git a/src/test/ValentinaTest/share/loop_start_point_on_line/output.json b/src/test/ValentinaTest/share/loop_start_point_on_line/output.json index c28189de4..0d79c7a00 100644 --- a/src/test/ValentinaTest/share/loop_start_point_on_line/output.json +++ b/src/test/ValentinaTest/share/loop_start_point_on_line/output.json @@ -2,13 +2,13 @@ "vector": [ { "type": "QPointF", - "x": -2165.5230070748394, - "y": -1195.203893497471 + "x": -2165.5310349978768, + "y": -1195.2010007007616 }, { "type": "QPointF", - "x": -2159.656181390153, - "y": -1197.1196600534631 + "x": -2159.715321199425, + "y": -1197.3008775448568 }, { "type": "QPointF", @@ -247,133 +247,138 @@ }, { "type": "QPointF", - "x": -1598.6099724133842, - "y": -385.16536010714833 + "x": -1598.609972365251, + "y": -385.16536022393893 }, { "type": "QPointF", - "x": -1845.68300886284, - "y": -271.5172607451683 + "x": -1845.6829973722129, + "y": -271.51726439186194 }, { "type": "QPointF", - "x": -1861.0195624746113, - "y": -263.75774577239144 + "x": -1861.0195554874508, + "y": -263.75773187323455 }, { "type": "QPointF", - "x": -1873.6548113143617, - "y": -255.93344510049894 + "x": -1873.6548438367336, + "y": -255.9333845746112 }, { "type": "QPointF", - "x": -1884.6718877650587, - "y": -247.67866804967016 + "x": -1884.6719903472251, + "y": -247.6785314554708 }, { "type": "QPointF", - "x": -1894.410120816591, - "y": -238.9500255336163 + "x": -1894.4103170504, + "y": -238.94978551808367 }, { "type": "QPointF", - "x": -1903.1768621691442, - "y": -229.66743947443217 + "x": -1903.1771672842626, + "y": -229.66707367348337 }, { "type": "QPointF", - "x": -1911.2333770932817, - "y": -219.73983797804524 + "x": -1911.233798400651, + "y": -219.73933163874847 }, { "type": "QPointF", - "x": -1918.7162324577712, - "y": -209.2051004909007 + "x": -1918.7167718517321, + "y": -209.2044463501615 }, { "type": "QPointF", - "x": -1929.6945995058259, - "y": -191.65898186889132 + "x": -1929.695306785094, + "y": -191.65811714782083 }, { "type": "QPointF", - "x": -1959.358542701253, - "y": -138.1249518632531 + "x": -1944.1325344322206, + "y": -165.66257189904317 }, { "type": "QPointF", - "x": -1973.041169681248, - "y": -115.74927061141838 + "x": -1959.3596041955893, + "y": -138.12366108105797 }, { "type": "QPointF", - "x": -1983.5782586194068, - "y": -100.26295403886209 + "x": -1973.0422923739275, + "y": -115.74791712540254 }, { "type": "QPointF", - "x": -1989.7260859457829, - "y": -92.00426257463948 + "x": -1983.5793973834504, + "y": -100.26158586693649 }, { "type": "QPointF", - "x": -1997.176308608974, - "y": -82.62215263779356 + "x": -1989.7272227275357, + "y": -92.00289794049144 }, { "type": "QPointF", - "x": -2015.1429098062172, - "y": -64.25542963561085 + "x": -1997.1774226329558, + "y": -82.62081422617773 }, { "type": "QPointF", - "x": -2031.5669911453977, - "y": -50.13170987645992 + "x": -2015.1438394926822, + "y": -64.25432646669564 }, { "type": "QPointF", - "x": -2051.4120230364992, - "y": -35.7448564253106 + "x": -2031.5677642092458, + "y": -50.130821173152015 }, { "type": "QPointF", - "x": -2074.7655190704963, - "y": -21.934204167892126 + "x": -2051.4126158951385, + "y": -35.74421559073827 }, { "type": "QPointF", - "x": -2094.8828475306, - "y": -12.485046768101734 + "x": -2074.765926289254, + "y": -21.9338131244455 }, { "type": "QPointF", - "x": -2109.560752424014, - "y": -6.727397300348135 + "x": -2094.8831232719026, + "y": -12.484821686511484 }, { "type": "QPointF", - "x": -2124.9886037790247, - "y": -1.696762218666568 + "x": -2109.5609404721963, + "y": -6.727268231616263 }, { "type": "QPointF", - "x": -2141.1190007119844, - "y": 2.496032764132394 + "x": -2124.9887098703275, + "y": -1.6967072134768895 }, { "type": "QPointF", - "x": -2191.9582442870897, - "y": 12.914684261837335 + "x": -2141.1190371832786, + "y": 2.496042737682768 }, { "type": "QPointF", - "x": -2269.022984105699, - "y": -1184.1576075870253 + "x": -2191.9582450983926, + "y": 12.914671659600081 }, { "type": "QPointF", - "x": -2165.5230070748394, - "y": -1195.203893497471 + "x": -2269.023053645861, + "y": -1184.1586877775483 + }, + { + "type": "QPointF", + "x": -2165.5310349978768, + "y": -1195.2010007007616 } ] } diff --git a/src/test/ValentinaTest/share/panties_case1/input.json b/src/test/ValentinaTest/share/panties_case1/input.json index 4bbbca53f..e056753be 100644 --- a/src/test/ValentinaTest/share/panties_case1/input.json +++ b/src/test/ValentinaTest/share/panties_case1/input.json @@ -3,19 +3,23 @@ { "saAfter": 37.795275590551185, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1754.6061049829982, "y": 531.4354372476321 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1755.035021219421, "y": 531.2296740038928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -24,6 +28,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,79 +73,90 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1612.1619789843503, - "y": 637.7149723258838 + "x": 1612.1619389391917, + "y": 637.7149602979357 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1577.5244421457328, - "y": 672.4383426796408 + "x": 1577.5241843550239, + "y": 672.4382652497254 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1555.5074604530087, - "y": 696.1033753389547 + "x": 1555.507044984488, + "y": 696.1032505489939 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1534.9631921103587, - "y": 720.6133615365002 + "x": 1534.9626565063618, + "y": 720.6132006626951 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1516.4064019514353, - "y": 746.3440293025127 + "x": 1516.4058288051024, + "y": 746.3438571525063 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1504.1930150056392, - "y": 766.7278202251852 + "x": 1504.1925000499273, + "y": 766.7276655532906 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1496.8878205955218, - "y": 780.8609103128873 + "x": 1496.887391048625, + "y": 780.8607812943508 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1490.3690509502655, - "y": 795.5105178097137 + "x": 1490.3687528015453, + "y": 795.5104282578816 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1484.701051674077, - "y": 810.7236087194435 + "x": 1484.700936544246, + "y": 810.7235741390929 }, { "angle": 5, + "curvePoint": true, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 1482.2456692913386, "y": 818.5825511811023 @@ -144,12 +164,14 @@ { "angle": 5, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 1482.2456692913386, "y": 818.5825511811023 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 1367.9527559055118, "y": 818.5825511811023 @@ -157,6 +179,7 @@ { "saAfter": 26.45669291338583, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 1367.9527537469328, "y": 77.79514960629922 @@ -164,19 +187,23 @@ { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1379.291336424098, "y": 77.795149526357 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1379.291336424098, "y": 77.795149526357 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -185,6 +212,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -193,6 +221,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -201,6 +230,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -208,8 +238,10 @@ "y": 78.6263876191475 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1674.2918946312718, "y": 75.9509162231673 @@ -217,6 +249,7 @@ { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1674.2918946312718, "y": 75.9509162231673 diff --git a/src/test/ValentinaTest/share/panties_case1/output.json b/src/test/ValentinaTest/share/panties_case1/output.json index 210fe442f..62730fa7d 100644 --- a/src/test/ValentinaTest/share/panties_case1/output.json +++ b/src/test/ValentinaTest/share/panties_case1/output.json @@ -32,68 +32,78 @@ }, { "type": "QPointF", - "x": 1638.7562352935086, - "y": 664.5706679662566 + "x": 1662.0239786765733, + "y": 641.5281348367726 }, { "type": "QPointF", - "x": 1604.747593949502, - "y": 698.6645894751346 + "x": 1638.7561653720593, + "y": 664.5706855237257 }, { "type": "QPointF", - "x": 1583.844987053996, - "y": 721.1318323402373 + "x": 1604.7472225565848, + "y": 698.6646297352504 }, { "type": "QPointF", - "x": 1564.8129664801063, - "y": 743.8376573322635 + "x": 1583.844469658231, + "y": 721.131823666709 }, { "type": "QPointF", - "x": 1548.001349773686, - "y": 767.1484842790478 + "x": 1564.8123767938607, + "y": 743.8375687007706 }, { "type": "QPointF", - "x": 1537.2236773815769, - "y": 785.1361089771601 + "x": 1548.0007927135262, + "y": 767.1482930327807 }, { "type": "QPointF", - "x": 1530.96996819389, - "y": 797.234929401359 + "x": 1537.223237520015, + "y": 785.1358232546562 }, { "type": "QPointF", - "x": 1525.1842993824857, - "y": 810.2370420401115 + "x": 1530.9696547223734, + "y": 797.2345625697868 }, { "type": "QPointF", - "x": 1521.8348817961976, + "x": 1525.1842070603202, + "y": 810.2364753255735 + }, + { + "type": "QPointF", + "x": 1521.8347461996902, "y": 818.5825511811023 }, { "type": "QPointF", - "x": 1521.8348817961976, + "x": 1521.8347461996902, "y": 845.0392440944881 }, { "type": "QPointF", - "x": 1367.3858268487456, + "x": 1367.0711811794545, "y": 845.0392440944881 }, { "type": "QPointF", - "x": 1367.3858245359263, - "y": 51.31926950196146 + "x": 1367.071178866615, + "y": 51.31226183830677 }, { "type": "QPointF", - "x": 1468.027554616979, - "y": 53.613267032547995 + "x": 1391.3249123799806, + "y": 51.852431379494206 + }, + { + "type": "QPointF", + "x": 1468.2920559716351, + "y": 53.619339118764515 }, { "type": "QPointF", diff --git a/src/test/ValentinaTest/share/panties_case2/input.json b/src/test/ValentinaTest/share/panties_case2/input.json index 5151c9f70..cdb478889 100644 --- a/src/test/ValentinaTest/share/panties_case2/input.json +++ b/src/test/ValentinaTest/share/panties_case2/input.json @@ -3,12 +3,14 @@ { "angle": 5, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 1482.2456692913386, "y": 818.5825511811023 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 1367.9527559055118, "y": 818.5825511811023 @@ -16,6 +18,7 @@ { "saAfter": 26.45669291338583, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 1367.9527537469328, "y": 77.79514960629922 @@ -23,19 +26,23 @@ { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1379.291336424098, "y": 77.795149526357 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1379.291336424098, "y": 77.795149526357 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -44,6 +51,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -52,6 +60,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -60,6 +69,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -67,8 +77,10 @@ "y": 78.6263876191475 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1674.2918946312718, "y": 75.9509162231673 @@ -76,6 +88,7 @@ { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1674.2918946312718, "y": 75.9509162231673 @@ -83,19 +96,23 @@ { "saAfter": 37.795275590551185, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1754.6061049829982, "y": 531.4354372476321 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1755.035021219421, "y": 531.2296740038928 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -104,6 +121,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -112,6 +130,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -120,6 +139,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -128,6 +148,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -136,6 +157,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -144,79 +166,90 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1612.1619789843503, - "y": 637.7149723258838 + "x": 1612.1619389391917, + "y": 637.7149602979357 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1577.5244421457328, - "y": 672.4383426796408 + "x": 1577.5241843550239, + "y": 672.4382652497254 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1555.5074604530087, - "y": 696.1033753389547 + "x": 1555.507044984488, + "y": 696.1032505489939 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1534.9631921103587, - "y": 720.6133615365002 + "x": 1534.9626565063618, + "y": 720.6132006626951 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1516.4064019514353, - "y": 746.3440293025127 + "x": 1516.4058288051024, + "y": 746.3438571525063 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1504.1930150056392, - "y": 766.7278202251852 + "x": 1504.1925000499273, + "y": 766.7276655532906 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1496.8878205955218, - "y": 780.8609103128873 + "x": 1496.887391048625, + "y": 780.8607812943508 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1490.3690509502655, - "y": 795.5105178097137 + "x": 1490.3687528015453, + "y": 795.5104282578816 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1484.701051674077, - "y": 810.7236087194435 + "x": 1484.700936544246, + "y": 810.7235741390929 }, { "angle": 5, + "curvePoint": true, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 1482.2456692913386, "y": 818.5825511811023 diff --git a/src/test/ValentinaTest/share/panties_case2/output.json b/src/test/ValentinaTest/share/panties_case2/output.json index 4d08316a8..50a0befc6 100644 --- a/src/test/ValentinaTest/share/panties_case2/output.json +++ b/src/test/ValentinaTest/share/panties_case2/output.json @@ -2,18 +2,23 @@ "vector": [ { "type": "QPointF", - "x": 1367.3858268487456, + "x": 1367.0711811794545, "y": 845.0392440944881 }, { "type": "QPointF", - "x": 1367.3858245359263, - "y": 51.31926950196146 + "x": 1367.071178866615, + "y": 51.31226183830677 }, { "type": "QPointF", - "x": 1468.027554616979, - "y": 53.613267032547995 + "x": 1391.3249123799806, + "y": 51.852431379494206 + }, + { + "type": "QPointF", + "x": 1468.2920559716351, + "y": 53.619339118764515 }, { "type": "QPointF", @@ -27,18 +32,18 @@ }, { "type": "QPointF", - "x": 1696.2923013503678, - "y": 48.363400642197 + "x": 1696.2871844721426, + "y": 48.36365599288238 }, { "type": "QPointF", - "x": 1786.0710599536046, - "y": 557.5240420963199 + "x": 1786.2174905233987, + "y": 557.735158581 }, { "type": "QPointF", - "x": 1749.6370245691528, - "y": 576.8618185344574 + "x": 1749.538729318392, + "y": 576.919887353884 }, { "type": "QPointF", @@ -62,57 +67,62 @@ }, { "type": "QPointF", - "x": 1638.7562352935086, - "y": 664.5706679662566 + "x": 1662.0239786765733, + "y": 641.5281348367726 }, { "type": "QPointF", - "x": 1604.747593949502, - "y": 698.6645894751346 + "x": 1638.7561653720593, + "y": 664.5706855237257 }, { "type": "QPointF", - "x": 1583.844987053996, - "y": 721.1318323402373 + "x": 1604.7472225565848, + "y": 698.6646297352504 }, { "type": "QPointF", - "x": 1564.8129664801063, - "y": 743.8376573322635 + "x": 1583.844469658231, + "y": 721.131823666709 }, { "type": "QPointF", - "x": 1548.001349773686, - "y": 767.1484842790478 + "x": 1564.8123767938607, + "y": 743.8375687007706 }, { "type": "QPointF", - "x": 1537.2236773815769, - "y": 785.1361089771601 + "x": 1548.0007927135262, + "y": 767.1482930327807 }, { "type": "QPointF", - "x": 1530.96996819389, - "y": 797.234929401359 + "x": 1537.223237520015, + "y": 785.1358232546562 }, { "type": "QPointF", - "x": 1525.37666027745, - "y": 809.8047500951102 + "x": 1530.9696547223734, + "y": 797.2345625697868 }, { "type": "QPointF", - "x": 1522.1062814637592, + "x": 1525.3765085093953, + "y": 809.8043070976789 + }, + { + "type": "QPointF", + "x": 1522.1060820693244, "y": 818.5825511811023 }, { "type": "QPointF", - "x": 1522.1062814637592, + "x": 1522.1060820693244, "y": 845.0392440944881 }, { "type": "QPointF", - "x": 1367.3858268487456, + "x": 1367.0711811794545, "y": 845.0392440944881 } ] diff --git a/src/test/ValentinaTest/share/seamtest1_by_angle/input.json b/src/test/ValentinaTest/share/seamtest1_by_angle/input.json index a2a85e7e2..b4d68499d 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_angle/input.json +++ b/src/test/ValentinaTest/share/seamtest1_by_angle/input.json @@ -3,125 +3,148 @@ { "saAfter": 0, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 894.8030236220472 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { + "curvePoint": true, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 47.53637144700478, "y": 39.80977598775412 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 85.4092492068762, "y": 37.36146293134895 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 125.57923134501877, "y": 32.13056337758208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 156.5108311435474, "y": 26.074993549693005 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 177.21129897469388, "y": 21.059222548891512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 197.8216319874312, "y": 15.159776113211533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 218.19418331220902, "y": 8.334870062533497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 238.18130607947683, "y": 0.5427202167378373 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 257.6353534196842, "y": -8.258457604295018 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 276.4086784632808, "y": -18.110447580684635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 294.3536343407161, "y": -29.055033892550586 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 311.32257418243984, "y": -41.13400072001244 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 327.16785111890135, "y": -54.389132243189756 }, { + "curvePoint": true, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 }, { "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 }, { "saBefore": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 519.4465667350105, "y": -36.01405338211433 }, { + "turnPoint": true, "type": "VSAPoint", "x": 460.3937007874016, "y": 342.36207874015753 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 620.5290071875436, "y": -5.506318761785565 @@ -129,19 +152,23 @@ { "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -150,6 +177,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -158,6 +186,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -166,6 +195,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -174,6 +204,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -182,6 +213,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -190,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -198,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -206,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -214,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -222,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -230,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -238,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -246,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -254,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -262,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -270,6 +312,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -278,6 +321,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -286,6 +330,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -294,6 +339,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -302,6 +348,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -310,6 +357,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -318,6 +366,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -326,6 +375,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -334,6 +384,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -342,6 +393,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -350,6 +402,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -358,6 +411,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -366,6 +420,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -374,6 +429,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -382,6 +438,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -390,6 +447,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -398,6 +456,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -406,6 +465,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -414,6 +474,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -422,6 +483,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -429,8 +491,10 @@ "y": 894.7184703904409 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 @@ -438,6 +502,7 @@ { "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 diff --git a/src/test/ValentinaTest/share/seamtest1_by_angle/output.json b/src/test/ValentinaTest/share/seamtest1_by_angle/output.json index 8aa772728..9a629203c 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_angle/output.json +++ b/src/test/ValentinaTest/share/seamtest1_by_angle/output.json @@ -162,8 +162,8 @@ }, { "type": "QPointF", - "x": 1003.1926540422378, - "y": 599.1363247745379 + "x": 1003.0419281414149, + "y": 597.870394747796 }, { "type": "QPointF", @@ -220,16 +220,31 @@ "x": 1066.6143341082677, "y": 693.625487703081 }, + { + "type": "QPointF", + "x": 1070.1212524493003, + "y": 695.6022659553572 + }, { "type": "QPointF", "x": 1074.3830151134664, "y": 697.7096649640414 }, + { + "type": "QPointF", + "x": 1078.7265805419665, + "y": 699.565875909043 + }, { "type": "QPointF", "x": 1083.206554246492, "y": 701.1878034134409 }, + { + "type": "QPointF", + "x": 1087.891993301369, + "y": 702.5858632116882 + }, { "type": "QPointF", "x": 1092.8646688655851, diff --git a/src/test/ValentinaTest/share/seamtest1_by_angle_2/input.json b/src/test/ValentinaTest/share/seamtest1_by_angle_2/input.json index be283c9e5..6c5eb7325 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_angle_2/input.json +++ b/src/test/ValentinaTest/share/seamtest1_by_angle_2/input.json @@ -2,6 +2,7 @@ "vector": [ { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 620.5290071875436, "y": -5.506318761785565 @@ -9,19 +10,23 @@ { "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -30,6 +35,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -38,6 +44,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -46,6 +53,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -54,6 +62,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -62,6 +71,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -70,6 +80,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -78,6 +89,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -86,6 +98,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -94,6 +107,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -102,6 +116,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -110,6 +125,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -118,6 +134,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -126,6 +143,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -134,6 +152,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -142,6 +161,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -150,6 +170,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -158,6 +179,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -166,6 +188,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -174,6 +197,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -182,6 +206,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -190,6 +215,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -198,6 +224,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -206,6 +233,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -214,6 +242,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -222,6 +251,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -230,6 +260,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -238,6 +269,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -246,6 +278,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -254,6 +287,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -262,6 +296,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -270,6 +305,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -278,6 +314,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -286,6 +323,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -294,6 +332,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -302,6 +341,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -309,8 +349,10 @@ "y": 894.7184703904409 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 @@ -318,6 +360,7 @@ { "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 @@ -325,119 +368,141 @@ { "saAfter": 0, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 894.8030236220472 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { + "curvePoint": true, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 47.53637144700478, "y": 39.80977598775412 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 85.4092492068762, "y": 37.36146293134895 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 125.57923134501877, "y": 32.13056337758208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 156.5108311435474, "y": 26.074993549693005 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 177.21129897469388, "y": 21.059222548891512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 197.8216319874312, "y": 15.159776113211533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 218.19418331220902, "y": 8.334870062533497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 238.18130607947683, "y": 0.5427202167378373 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 257.6353534196842, "y": -8.258457604295018 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 276.4086784632808, "y": -18.110447580684635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 294.3536343407161, "y": -29.055033892550586 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 311.32257418243984, "y": -41.13400072001244 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 327.16785111890135, "y": -54.389132243189756 }, { + "curvePoint": true, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 }, { "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 }, { "saBefore": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 519.4465667350105, "y": -36.01405338211433 }, { + "turnPoint": true, "type": "VSAPoint", "x": 460.3937007874016, "y": 342.36207874015753 diff --git a/src/test/ValentinaTest/share/seamtest1_by_angle_2/output.json b/src/test/ValentinaTest/share/seamtest1_by_angle_2/output.json index 3747f8864..132b088e7 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_angle_2/output.json +++ b/src/test/ValentinaTest/share/seamtest1_by_angle_2/output.json @@ -82,8 +82,8 @@ }, { "type": "QPointF", - "x": 1003.1926540422378, - "y": 599.1363247745379 + "x": 1003.0419281414149, + "y": 597.870394747796 }, { "type": "QPointF", @@ -107,8 +107,8 @@ }, { "type": "QPointF", - "x": 1020.5214918560622, - "y": 644.8368304816686 + "x": 1020.6660121283516, + "y": 644.7426504865729 }, { "type": "QPointF", @@ -140,16 +140,31 @@ "x": 1066.6143341082677, "y": 693.625487703081 }, + { + "type": "QPointF", + "x": 1070.1212524493003, + "y": 695.6022659553572 + }, { "type": "QPointF", "x": 1074.3830151134664, "y": 697.7096649640414 }, + { + "type": "QPointF", + "x": 1078.7265805419665, + "y": 699.565875909043 + }, { "type": "QPointF", "x": 1083.206554246492, "y": 701.1878034134409 }, + { + "type": "QPointF", + "x": 1087.891993301369, + "y": 702.5858632116882 + }, { "type": "QPointF", "x": 1092.8646688655851, diff --git a/src/test/ValentinaTest/share/seamtest1_by_first_edge_symmetry/input.json b/src/test/ValentinaTest/share/seamtest1_by_first_edge_symmetry/input.json index b98e823fc..8669d10bf 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_first_edge_symmetry/input.json +++ b/src/test/ValentinaTest/share/seamtest1_by_first_edge_symmetry/input.json @@ -3,103 +3,122 @@ { "saAfter": 0, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 894.8030236220472 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { + "curvePoint": true, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 47.53637144700478, "y": 39.80977598775412 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 85.4092492068762, "y": 37.36146293134895 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 125.57923134501877, "y": 32.13056337758208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 156.5108311435474, "y": 26.074993549693005 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 177.21129897469388, "y": 21.059222548891512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 197.8216319874312, "y": 15.159776113211533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 218.19418331220902, "y": 8.334870062533497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 238.18130607947683, "y": 0.5427202167378373 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 257.6353534196842, "y": -8.258457604295018 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 276.4086784632808, "y": -18.110447580684635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 294.3536343407161, "y": -29.055033892550586 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 311.32257418243984, "y": -41.13400072001244 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 327.16785111890135, "y": -54.389132243189756 }, { "angle": 2, + "curvePoint": true, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 @@ -107,23 +126,27 @@ { "angle": 2, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 }, { "saBefore": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 519.4465667350105, "y": -36.01405338211433 }, { + "turnPoint": true, "type": "VSAPoint", "x": 460.3937007874016, "y": 342.36207874015753 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 620.5290071875436, "y": -5.506318761785565 @@ -131,19 +154,23 @@ { "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -152,6 +179,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -160,6 +188,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -168,6 +197,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -176,6 +206,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -184,6 +215,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -192,6 +224,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -200,6 +233,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -208,6 +242,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -216,6 +251,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -224,6 +260,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -232,6 +269,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -240,6 +278,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -248,6 +287,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -256,6 +296,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -264,6 +305,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -272,6 +314,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -280,6 +323,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -288,6 +332,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -296,6 +341,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -304,6 +350,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -312,6 +359,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -320,6 +368,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -328,6 +377,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -336,6 +386,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -344,6 +395,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -352,6 +404,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -360,6 +413,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -368,6 +422,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -376,6 +431,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -384,6 +440,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -392,6 +449,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -400,6 +458,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -408,6 +467,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -416,6 +476,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -424,6 +485,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -431,8 +493,10 @@ "y": 894.7184703904409 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 @@ -440,6 +504,7 @@ { "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 diff --git a/src/test/ValentinaTest/share/seamtest1_by_first_edge_symmetry/output.json b/src/test/ValentinaTest/share/seamtest1_by_first_edge_symmetry/output.json index ca45ada65..cd1b90875 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_first_edge_symmetry/output.json +++ b/src/test/ValentinaTest/share/seamtest1_by_first_edge_symmetry/output.json @@ -83,7 +83,7 @@ { "type": "QPointF", "x": 335.3744459589775, - "y": -62.300946551189064 + "y": -62.30094655118906 }, { "type": "QPointF", @@ -177,8 +177,8 @@ }, { "type": "QPointF", - "x": 1003.1926540422378, - "y": 599.1363247745379 + "x": 1003.0419281414149, + "y": 597.870394747796 }, { "type": "QPointF", @@ -235,16 +235,31 @@ "x": 1066.6143341082677, "y": 693.625487703081 }, + { + "type": "QPointF", + "x": 1070.1212524493003, + "y": 695.6022659553572 + }, { "type": "QPointF", "x": 1074.3830151134664, "y": 697.7096649640414 }, + { + "type": "QPointF", + "x": 1078.7265805419665, + "y": 699.565875909043 + }, { "type": "QPointF", "x": 1083.206554246492, "y": 701.1878034134409 }, + { + "type": "QPointF", + "x": 1087.891993301369, + "y": 702.5858632116882 + }, { "type": "QPointF", "x": 1092.8646688655851, diff --git a/src/test/ValentinaTest/share/seamtest1_by_first_right_angle/input.json b/src/test/ValentinaTest/share/seamtest1_by_first_right_angle/input.json index af6b42e28..340ba0ae1 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_first_right_angle/input.json +++ b/src/test/ValentinaTest/share/seamtest1_by_first_right_angle/input.json @@ -3,103 +3,122 @@ { "saAfter": 0, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 894.8030236220472 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { + "curvePoint": true, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 47.53637144700478, "y": 39.80977598775412 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 85.4092492068762, "y": 37.36146293134895 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 125.57923134501877, "y": 32.13056337758208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 156.5108311435474, "y": 26.074993549693005 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 177.21129897469388, "y": 21.059222548891512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 197.8216319874312, "y": 15.159776113211533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 218.19418331220902, "y": 8.334870062533497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 238.18130607947683, "y": 0.5427202167378373 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 257.6353534196842, "y": -8.258457604295018 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 276.4086784632808, "y": -18.110447580684635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 294.3536343407161, "y": -29.055033892550586 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 311.32257418243984, "y": -41.13400072001244 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 327.16785111890135, "y": -54.389132243189756 }, { "angle": 4, + "curvePoint": true, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 @@ -107,23 +126,27 @@ { "angle": 4, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 }, { "saBefore": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 519.4465667350105, "y": -36.01405338211433 }, { + "turnPoint": true, "type": "VSAPoint", "x": 460.3937007874016, "y": 342.36207874015753 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 620.5290071875436, "y": -5.506318761785565 @@ -131,19 +154,23 @@ { "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -152,6 +179,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -160,6 +188,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -168,6 +197,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -176,6 +206,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -184,6 +215,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -192,6 +224,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -200,6 +233,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -208,6 +242,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -216,6 +251,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -224,6 +260,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -232,6 +269,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -240,6 +278,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -248,6 +287,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -256,6 +296,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -264,6 +305,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -272,6 +314,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -280,6 +323,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -288,6 +332,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -296,6 +341,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -304,6 +350,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -312,6 +359,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -320,6 +368,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -328,6 +377,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -336,6 +386,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -344,6 +395,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -352,6 +404,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -360,6 +413,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -368,6 +422,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -376,6 +431,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -384,6 +440,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -392,6 +449,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -400,6 +458,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -408,6 +467,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -416,6 +476,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -424,6 +485,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -431,8 +493,10 @@ "y": 894.7184703904409 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 @@ -440,6 +504,7 @@ { "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 diff --git a/src/test/ValentinaTest/share/seamtest1_by_first_right_angle/output.json b/src/test/ValentinaTest/share/seamtest1_by_first_right_angle/output.json index a3f1826e3..9dcc097a7 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_first_right_angle/output.json +++ b/src/test/ValentinaTest/share/seamtest1_by_first_right_angle/output.json @@ -177,8 +177,8 @@ }, { "type": "QPointF", - "x": 1003.1926540422378, - "y": 599.1363247745379 + "x": 1003.0419281414149, + "y": 597.870394747796 }, { "type": "QPointF", @@ -235,16 +235,31 @@ "x": 1066.6143341082677, "y": 693.625487703081 }, + { + "type": "QPointF", + "x": 1070.1212524493003, + "y": 695.6022659553572 + }, { "type": "QPointF", "x": 1074.3830151134664, "y": 697.7096649640414 }, + { + "type": "QPointF", + "x": 1078.7265805419665, + "y": 699.565875909043 + }, { "type": "QPointF", "x": 1083.206554246492, "y": 701.1878034134409 }, + { + "type": "QPointF", + "x": 1087.891993301369, + "y": 702.5858632116882 + }, { "type": "QPointF", "x": 1092.8646688655851, diff --git a/src/test/ValentinaTest/share/seamtest1_by_intersection/input.json b/src/test/ValentinaTest/share/seamtest1_by_intersection/input.json index 3134097d1..38cf98738 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_intersection/input.json +++ b/src/test/ValentinaTest/share/seamtest1_by_intersection/input.json @@ -3,103 +3,122 @@ { "saAfter": 0, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 894.8030236220472 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { + "curvePoint": true, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 47.53637144700478, "y": 39.80977598775412 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 85.4092492068762, "y": 37.36146293134895 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 125.57923134501877, "y": 32.13056337758208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 156.5108311435474, "y": 26.074993549693005 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 177.21129897469388, "y": 21.059222548891512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 197.8216319874312, "y": 15.159776113211533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 218.19418331220902, "y": 8.334870062533497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 238.18130607947683, "y": 0.5427202167378373 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 257.6353534196842, "y": -8.258457604295018 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 276.4086784632808, "y": -18.110447580684635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 294.3536343407161, "y": -29.055033892550586 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 311.32257418243984, "y": -41.13400072001244 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 327.16785111890135, "y": -54.389132243189756 }, { "angle": 1, + "curvePoint": true, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 @@ -107,23 +126,27 @@ { "angle": 1, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 }, { "saBefore": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 519.4465667350105, "y": -36.01405338211433 }, { + "turnPoint": true, "type": "VSAPoint", "x": 460.3937007874016, "y": 342.36207874015753 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 620.5290071875436, "y": -5.506318761785565 @@ -131,19 +154,23 @@ { "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -152,6 +179,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -160,6 +188,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -168,6 +197,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -176,6 +206,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -184,6 +215,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -192,6 +224,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -200,6 +233,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -208,6 +242,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -216,6 +251,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -224,6 +260,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -232,6 +269,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -240,6 +278,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -248,6 +287,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -256,6 +296,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -264,6 +305,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -272,6 +314,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -280,6 +323,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -288,6 +332,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -296,6 +341,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -304,6 +350,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -312,6 +359,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -320,6 +368,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -328,6 +377,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -336,6 +386,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -344,6 +395,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -352,6 +404,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -360,6 +413,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -368,6 +422,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -376,6 +431,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -384,6 +440,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -392,6 +449,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -400,6 +458,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -408,6 +467,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -416,6 +476,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -424,6 +485,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -431,8 +493,10 @@ "y": 894.7184703904409 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 @@ -440,6 +504,7 @@ { "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 diff --git a/src/test/ValentinaTest/share/seamtest1_by_intersection/output.json b/src/test/ValentinaTest/share/seamtest1_by_intersection/output.json index 302c19b9a..038e99a23 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_intersection/output.json +++ b/src/test/ValentinaTest/share/seamtest1_by_intersection/output.json @@ -167,8 +167,8 @@ }, { "type": "QPointF", - "x": 1003.1926540422378, - "y": 599.1363247745379 + "x": 1003.0419281414149, + "y": 597.870394747796 }, { "type": "QPointF", @@ -225,16 +225,31 @@ "x": 1066.6143341082677, "y": 693.625487703081 }, + { + "type": "QPointF", + "x": 1070.1212524493003, + "y": 695.6022659553572 + }, { "type": "QPointF", "x": 1074.3830151134664, "y": 697.7096649640414 }, + { + "type": "QPointF", + "x": 1078.7265805419665, + "y": 699.565875909043 + }, { "type": "QPointF", "x": 1083.206554246492, "y": 701.1878034134409 }, + { + "type": "QPointF", + "x": 1087.891993301369, + "y": 702.5858632116882 + }, { "type": "QPointF", "x": 1092.8646688655851, diff --git a/src/test/ValentinaTest/share/seamtest1_by_second_edge_symmetry/input.json b/src/test/ValentinaTest/share/seamtest1_by_second_edge_symmetry/input.json index 250160298..f05f6d579 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_second_edge_symmetry/input.json +++ b/src/test/ValentinaTest/share/seamtest1_by_second_edge_symmetry/input.json @@ -3,103 +3,122 @@ { "saAfter": 0, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 894.8030236220472 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { + "curvePoint": true, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 47.53637144700478, "y": 39.80977598775412 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 85.4092492068762, "y": 37.36146293134895 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 125.57923134501877, "y": 32.13056337758208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 156.5108311435474, "y": 26.074993549693005 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 177.21129897469388, "y": 21.059222548891512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 197.8216319874312, "y": 15.159776113211533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 218.19418331220902, "y": 8.334870062533497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 238.18130607947683, "y": 0.5427202167378373 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 257.6353534196842, "y": -8.258457604295018 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 276.4086784632808, "y": -18.110447580684635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 294.3536343407161, "y": -29.055033892550586 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 311.32257418243984, "y": -41.13400072001244 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 327.16785111890135, "y": -54.389132243189756 }, { "angle": 3, + "curvePoint": true, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 @@ -107,23 +126,27 @@ { "angle": 3, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 }, { "saBefore": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 519.4465667350105, "y": -36.01405338211433 }, { + "turnPoint": true, "type": "VSAPoint", "x": 460.3937007874016, "y": 342.36207874015753 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 620.5290071875436, "y": -5.506318761785565 @@ -131,19 +154,23 @@ { "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -152,6 +179,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -160,6 +188,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -168,6 +197,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -176,6 +206,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -184,6 +215,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -192,6 +224,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -200,6 +233,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -208,6 +242,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -216,6 +251,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -224,6 +260,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -232,6 +269,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -240,6 +278,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -248,6 +287,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -256,6 +296,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -264,6 +305,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -272,6 +314,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -280,6 +323,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -288,6 +332,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -296,6 +341,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -304,6 +350,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -312,6 +359,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -320,6 +368,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -328,6 +377,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -336,6 +386,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -344,6 +395,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -352,6 +404,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -360,6 +413,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -368,6 +422,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -376,6 +431,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -384,6 +440,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -392,6 +449,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -400,6 +458,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -408,6 +467,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -416,6 +476,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -424,6 +485,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -431,8 +493,10 @@ "y": 894.7184703904409 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 @@ -440,6 +504,7 @@ { "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 diff --git a/src/test/ValentinaTest/share/seamtest1_by_second_edge_symmetry/output.json b/src/test/ValentinaTest/share/seamtest1_by_second_edge_symmetry/output.json index 364d6177b..5673a3e29 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_second_edge_symmetry/output.json +++ b/src/test/ValentinaTest/share/seamtest1_by_second_edge_symmetry/output.json @@ -162,8 +162,8 @@ }, { "type": "QPointF", - "x": 1003.1926540422378, - "y": 599.1363247745379 + "x": 1003.0419281414149, + "y": 597.870394747796 }, { "type": "QPointF", @@ -220,16 +220,31 @@ "x": 1066.6143341082677, "y": 693.625487703081 }, + { + "type": "QPointF", + "x": 1070.1212524493003, + "y": 695.6022659553572 + }, { "type": "QPointF", "x": 1074.3830151134664, "y": 697.7096649640414 }, + { + "type": "QPointF", + "x": 1078.7265805419665, + "y": 699.565875909043 + }, { "type": "QPointF", "x": 1083.206554246492, "y": 701.1878034134409 }, + { + "type": "QPointF", + "x": 1087.891993301369, + "y": 702.5858632116882 + }, { "type": "QPointF", "x": 1092.8646688655851, diff --git a/src/test/ValentinaTest/share/seamtest1_by_second_right_angle/input.json b/src/test/ValentinaTest/share/seamtest1_by_second_right_angle/input.json index 85b140cb9..90a6ae070 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_second_right_angle/input.json +++ b/src/test/ValentinaTest/share/seamtest1_by_second_right_angle/input.json @@ -3,103 +3,122 @@ { "saAfter": 0, "saBefore": 75.59055118110237, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 894.8030236220472 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { + "curvePoint": true, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 39.999874015748034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 47.53637144700478, "y": 39.80977598775412 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 85.4092492068762, "y": 37.36146293134895 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 125.57923134501877, "y": 32.13056337758208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 156.5108311435474, "y": 26.074993549693005 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 177.21129897469388, "y": 21.059222548891512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 197.8216319874312, "y": 15.159776113211533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 218.19418331220902, "y": 8.334870062533497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 238.18130607947683, "y": 0.5427202167378373 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 257.6353534196842, "y": -8.258457604295018 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 276.4086784632808, "y": -18.110447580684635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 294.3536343407161, "y": -29.055033892550586 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 311.32257418243984, "y": -41.13400072001244 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 327.16785111890135, "y": -54.389132243189756 }, { "angle": 5, + "curvePoint": true, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 @@ -107,23 +126,27 @@ { "angle": 5, "saAfter": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 334.5669291338582, "y": -61.522435695538036 }, { "saBefore": 0.3779527559055119, + "turnPoint": true, "type": "VSAPoint", "x": 519.4465667350105, "y": -36.01405338211433 }, { + "turnPoint": true, "type": "VSAPoint", "x": 460.3937007874016, "y": 342.36207874015753 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 620.5290071875436, "y": -5.506318761785565 @@ -131,19 +154,23 @@ { "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 944.294593326342, "y": 136.63905516701556 }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -152,6 +179,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -160,6 +188,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -168,6 +197,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -176,6 +206,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -184,6 +215,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -192,6 +224,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -200,6 +233,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -208,6 +242,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -216,6 +251,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -224,6 +260,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -232,6 +269,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -240,6 +278,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -248,6 +287,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -256,6 +296,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -264,6 +305,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -272,6 +314,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -280,6 +323,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -288,6 +332,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -296,6 +341,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -304,6 +350,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -312,6 +359,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -320,6 +368,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -328,6 +377,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -336,6 +386,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -344,6 +395,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -352,6 +404,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -360,6 +413,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -368,6 +422,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -376,6 +431,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -384,6 +440,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -392,6 +449,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -400,6 +458,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -408,6 +467,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -416,6 +476,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -424,6 +485,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 188.9763779527559, "saBefore": 188.9763779527559, "type": "VSAPoint", @@ -431,8 +493,10 @@ "y": 894.7184703904409 }, { + "curvePoint": true, "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 @@ -440,6 +504,7 @@ { "saAfter": 0, "saBefore": 188.9763779527559, + "turnPoint": true, "type": "VSAPoint", "x": 1113.8976377952758, "y": 894.8030236220472 diff --git a/src/test/ValentinaTest/share/seamtest1_by_second_right_angle/output.json b/src/test/ValentinaTest/share/seamtest1_by_second_right_angle/output.json index 5e855417b..ca02e2f60 100644 --- a/src/test/ValentinaTest/share/seamtest1_by_second_right_angle/output.json +++ b/src/test/ValentinaTest/share/seamtest1_by_second_right_angle/output.json @@ -70,6 +70,11 @@ "x": 284.4959443876258, "y": -68.43087536087263 }, + { + "type": "QPointF", + "x": 284.6164363645234, + "y": -69.30417703672788 + }, { "type": "QPointF", "x": 557.0289896899872, @@ -220,16 +225,31 @@ "x": 1066.6143341082677, "y": 693.625487703081 }, + { + "type": "QPointF", + "x": 1070.1212524493003, + "y": 695.6022659553572 + }, { "type": "QPointF", "x": 1074.3830151134664, "y": 697.7096649640414 }, + { + "type": "QPointF", + "x": 1078.7265805419665, + "y": 699.565875909043 + }, { "type": "QPointF", "x": 1083.206554246492, "y": 701.1878034134409 }, + { + "type": "QPointF", + "x": 1087.891993301369, + "y": 702.5858632116882 + }, { "type": "QPointF", "x": 1092.8646688655851, diff --git a/src/test/ValentinaTest/share/smart_pattern_#113/input.json b/src/test/ValentinaTest/share/smart_pattern_#113/input.json index 7aef2c899..dc42257e0 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#113/input.json +++ b/src/test/ValentinaTest/share/smart_pattern_#113/input.json @@ -4,6 +4,7 @@ "angle": 4, "saAfter": 37.795275590551185, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -3124.2446685548284, "y": -340.15748031496076 @@ -11,157 +12,181 @@ { "angle": 4, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", - "x": -3111.699193070806, - "y": -396.7435550909303 + "x": -3111.6985481659326, + "y": -396.74646391933186 }, { + "turnPoint": true, "type": "VSAPoint", "x": -2725.3596865816003, "y": -585.8267716535435 }, { "saAfter": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -2687.564410991049, "y": -585.8267716535435 }, { + "curvePoint": true, "saAfter": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -2687.564410991049, "y": -585.8267716535435 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2686.744083533202, - "y": -584.3112091223634 + "x": -2686.744061696426, + "y": -584.3111495276755 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2677.584153935651, - "y": -569.337827522347 + "x": -2677.583966983995, + "y": -569.337187327291 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2665.147969570406, - "y": -552.0311379883882 + "x": -2665.147672482054, + "y": -552.0298397586516 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2654.7360691906415, - "y": -539.3394774398887 + "x": -2654.735747445753, + "y": -539.3377057144759 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2642.6513240904537, - "y": -526.5195113622979 + "x": -2642.6510454525487, + "y": -526.517272343987 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2629.029301173131, - "y": -514.3745819491517 + "x": -2629.029157637337, + "y": -514.3719154746923 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2621.628594879396, - "y": -508.88463584200656 + "x": -2621.6285663128137, + "y": -508.88178485085774 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2617.633373633117, - "y": -506.20298598216414 + "x": -2617.6333938919706, + "y": -506.20003073887966 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2607.587562023298, - "y": -500.7572518468842 + "x": -2607.587559811152, + "y": -500.7539536704314 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2589.350099272166, - "y": -492.64567687392986 + "x": -2589.34987891362, + "y": -492.6416606352666 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2562.155018309574, - "y": -482.70396253517566 + "x": -2562.1543428978457, + "y": -482.69881988080806 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": -2536.974474203726, - "y": -474.74917338261656 + "x": -2536.9734692491475, + "y": -474.74307319076524 + }, + { + "angle": 5, + "curvePoint": true, + "saAfter": 37.795275590551185, + "saBefore": 37.795275590551185, + "turnPoint": true, + "type": "VSAPoint", + "x": -2527.247647358696, + "y": -471.9994212487542 }, { "angle": 5, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", - "x": -2527.248645113392, - "y": -472.00579107008224 - }, - { - "angle": 5, - "saAfter": 37.795275590551185, - "saBefore": 37.795275590551185, - "type": "VSAPoint", - "x": -2527.248645113392, - "y": -472.00579107008224 + "x": -2527.247647358696, + "y": -471.9994212487542 }, { "angle": 5, "saAfter": 26.45669291338583, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -2506.5962179242733, "y": -340.15748031496076 }, { "angle": 5, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": -2506.5962179242733, "y": -340.15748031496076 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -170,6 +195,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -178,6 +204,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -186,6 +213,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -194,6 +222,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -202,6 +231,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -210,6 +240,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -218,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -226,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -234,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -242,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -249,8 +284,10 @@ "y": -283.6151470999638 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -2860.9735489397144, "y": -283.464566929134 @@ -258,6 +295,7 @@ { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -2860.9735489397144, "y": -283.464566929134 @@ -265,6 +303,7 @@ { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -2868.5326040578248, "y": -283.464566929134 @@ -272,19 +311,23 @@ { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -2876.091659175935, "y": -283.464566929134 }, { + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -2876.091659175935, "y": -283.464566929134 }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -293,6 +336,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -301,6 +345,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -309,6 +354,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -317,6 +363,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -325,6 +372,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -333,6 +381,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -341,6 +390,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -349,6 +399,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -357,6 +408,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -365,6 +417,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -373,6 +426,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, "type": "VSAPoint", @@ -381,8 +435,10 @@ }, { "angle": 4, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": -3124.2446685548284, "y": -340.15748031496076 diff --git a/src/test/ValentinaTest/share/smart_pattern_#113/output.json b/src/test/ValentinaTest/share/smart_pattern_#113/output.json index 159b53344..f0d4cc620 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#113/output.json +++ b/src/test/ValentinaTest/share/smart_pattern_#113/output.json @@ -7,78 +7,88 @@ }, { "type": "QPointF", - "x": -3158.3267929568797, - "y": -361.0450257727724 + "x": -3158.32679295688, + "y": -361.04502577277185 }, { "type": "QPointF", - "x": -3148.354391707624, - "y": -406.02530918291706 + "x": -3148.353747857103, + "y": -406.0282132556894 }, { "type": "QPointF", - "x": -3111.455103901402, - "y": -397.84451360055175 + "x": -3111.454460050879, + "y": -397.8474176733237 }, { "type": "QPointF", - "x": -2725.7472241002715, - "y": -586.6185979003744 + "x": -2725.7472198124146, + "y": -586.6185999989333 }, { "type": "QPointF", - "x": -2643.5250016445493, + "x": -2660.2070903516533, "y": -586.7083464566931 }, { "type": "QPointF", - "x": -2635.160623357441, - "y": -575.0681444535669 + "x": -2643.525372881152, + "y": -586.7083464566931 }, { "type": "QPointF", - "x": -2626.3410373235647, - "y": -564.3174468827575 + "x": -2635.159971325189, + "y": -575.066380897121 }, { "type": "QPointF", - "x": -2616.2745747844374, - "y": -553.638553186361 + "x": -2626.340253556883, + "y": -564.3151471188465 }, { "type": "QPointF", - "x": -2605.1461895171597, - "y": -543.7168657561108 + "x": -2616.273722858752, + "y": -553.6357537701366 }, { "type": "QPointF", - "x": -2598.0518504254646, - "y": -538.5794217115023 + "x": -2605.1453728116066, + "y": -543.7136501291063 }, { "type": "QPointF", - "x": -2590.876101008608, - "y": -534.6895196246073 + "x": -2599.8249692320724, + "y": -539.7667073319334 }, { "type": "QPointF", - "x": -2575.1654239953878, - "y": -527.7017968142784 + "x": -2598.051076833569, + "y": -538.575984446214 }, { "type": "QPointF", - "x": -2549.967896326438, - "y": -518.4903286641326 + "x": -2590.875185739224, + "y": -534.6857692963125 }, { "type": "QPointF", - "x": -2533.7261838705895, - "y": -513.3594070478375 + "x": -2575.1641601811857, + "y": -527.697356464338 }, { "type": "QPointF", - "x": -2496.3862079979426, - "y": -519.2082581141625 + "x": -2549.9661122787243, + "y": -518.4848085861836 + }, + { + "type": "QPointF", + "x": -2533.725276373614, + "y": -513.3536134458479 + }, + { + "type": "QPointF", + "x": -2496.3853005009673, + "y": -519.2024645121729 }, { "type": "QPointF", @@ -120,6 +130,11 @@ "x": -2664.8846077056214, "y": -270.1007234947015 }, + { + "type": "QPointF", + "x": -2680.5545619621134, + "y": -267.5890387308469 + }, { "type": "QPointF", "x": -2694.6820012709004, @@ -140,6 +155,11 @@ "x": -2830.1550514705064, "y": -257.1706690674935 }, + { + "type": "QPointF", + "x": -2830.9306026127674, + "y": -257.1584693256739 + }, { "type": "QPointF", "x": -2883.937804080391, @@ -165,6 +185,16 @@ "x": -2996.311844885558, "y": -271.3871358702711 }, + { + "type": "QPointF", + "x": -3004.6783494102433, + "y": -273.13722155686725 + }, + { + "type": "QPointF", + "x": -3018.049141342037, + "y": -275.9823851181222 + }, { "type": "QPointF", "x": -3048.324234419811, diff --git a/src/test/ValentinaTest/share/smart_pattern_#118/input.json b/src/test/ValentinaTest/share/smart_pattern_#118/input.json index c5602fa22..27c7d502b 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#118/input.json +++ b/src/test/ValentinaTest/share/smart_pattern_#118/input.json @@ -4,6 +4,7 @@ "angle": 5, "saAfter": 26.45669291338583, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 1175.886910362366, "y": 555.8793769255013 @@ -11,6 +12,7 @@ { "saAfter": 26.45669291338583, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1210.4565869937005, "y": 359.82499833625104 @@ -18,65 +20,78 @@ { "angle": 4, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1245.0262636250343, "y": 163.7706197470058 }, { "angle": 4, + "curvePoint": true, "saBefore": 26.45669291338583, + "turnPoint": true, "type": "VSAPoint", "x": 1245.0262636250343, "y": 163.7706197470058 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1249.6525568482823, "y": 164.14294264993185 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1328.6772421341088, "y": 168.67117831036722 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1407.1175580331974, "y": 171.5543246297218 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1483.528659051359, "y": 172.90969229726562 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1556.465699694404, "y": 172.85459200226887 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1590.944877799307, "y": 172.2833383788549 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1590.944877799307, "y": 172.2833383788549 }, { "saAfter": 0, + "turnPoint": true, "type": "VSAPoint", "x": 1602.2834604764719, "y": 172.28333858267717 }, { "saBefore": 0, + "turnPoint": true, "type": "VSAPoint", "x": 1602.2834645669293, "y": 871.4959370078741 @@ -84,107 +99,122 @@ { "angle": 4, "saAfter": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 1487.9905430001882, "y": 871.4959370078741 }, { "angle": 4, + "curvePoint": true, "saAfter": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 1487.9905430001882, "y": 871.4959370078741 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1485.3736111108465, - "y": 863.1390002359062 + "x": 1485.3732861247972, + "y": 863.1390981617873 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1479.2436608108028, - "y": 846.6118709359941 + "x": 1479.2428192029088, + "y": 846.6121245320933 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1472.1089977384408, - "y": 830.3196261529354 + "x": 1472.1077852225558, + "y": 830.319991512268 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1464.048056397443, - "y": 814.2742563578688 + "x": 1464.0466027913637, + "y": 814.2746943633032 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1455.1392712914917, - "y": 798.4877520219336 + "x": 1455.1376905169582, + "y": 798.4882283461911 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1445.461076924269, - "y": 782.9721036162691 + "x": 1445.459467006965, + "y": 782.9725887219236 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1429.744383860615, - "y": 760.1951110191317 + "x": 1429.7428719689942, + "y": 760.1955665873602 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1406.7127536027315, - "y": 730.9328354430954 + "x": 1406.7115808269882, + "y": 730.9331888277961 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1382.0153073660463, - "y": 702.9698120686455 + "x": 1382.0145796798924, + "y": 702.9700313374658 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1356.2795211800185, - "y": 676.4019646648946 + "x": 1356.2792173887115, + "y": 676.4020562043052 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", - "x": 1330.1328710741072, - "y": 651.3252170009557 + "x": 1330.1328428144507, + "y": 651.3252255162497 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -193,6 +223,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -201,6 +232,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -209,6 +241,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -217,6 +250,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -225,6 +259,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -233,6 +268,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -241,8 +277,10 @@ }, { "angle": 5, + "curvePoint": true, "saAfter": 26.45669291338583, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 1175.886910362366, "y": 555.8793769255013 diff --git a/src/test/ValentinaTest/share/smart_pattern_#118/output.json b/src/test/ValentinaTest/share/smart_pattern_#118/output.json index e604d4034..afcc0ac90 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#118/output.json +++ b/src/test/ValentinaTest/share/smart_pattern_#118/output.json @@ -12,8 +12,13 @@ }, { "type": "QPointF", - "x": 1329.9200278416895, - "y": 142.2422996971724 + "x": 1251.4707447381486, + "y": 137.74703546422825 + }, + { + "type": "QPointF", + "x": 1330.1907684429154, + "y": 142.2578135488349 }, { "type": "QPointF", @@ -32,73 +37,78 @@ }, { "type": "QPointF", - "x": 1602.8503894555029, - "y": 145.81752096608884 + "x": 1603.165035124771, + "y": 145.81359798051596 }, { "type": "QPointF", - "x": 1602.8503938555618, + "x": 1603.165039524853, "y": 897.9526299212599 }, { "type": "QPointF", - "x": 1448.3854994804524, + "x": 1448.385018775314, "y": 897.9526299212599 }, { "type": "QPointF", - "x": 1448.3854994804524, - "y": 872.0986142517511 + "x": 1448.385018775314, + "y": 872.0986844073915 }, { "type": "QPointF", - "x": 1444.185885125444, - "y": 860.7759173198534 + "x": 1444.1854175263466, + "y": 860.7770836253857 }, { "type": "QPointF", - "x": 1437.8881811328367, - "y": 846.3948969439552 + "x": 1437.8872569783996, + "y": 846.3958669822811 }, { "type": "QPointF", - "x": 1430.6843973121577, - "y": 832.0557062171064 + "x": 1430.6831327593975, + "y": 832.0564924824968 }, { "type": "QPointF", - "x": 1422.631723280359, - "y": 817.7862438822315 + "x": 1422.6302289644043, + "y": 817.7868613330292 }, { "type": "QPointF", - "x": 1413.8560410480763, - "y": 803.7174625714251 + "x": 1413.8544131384133, + "y": 803.7179161775028 }, { "type": "QPointF", - "x": 1399.3105569558466, - "y": 782.6378129181111 + "x": 1399.3089087519506, + "y": 782.6380783011415 }, { "type": "QPointF", - "x": 1377.6756438965467, - "y": 755.1501022820776 + "x": 1377.674227851013, + "y": 755.1501619126328 }, { "type": "QPointF", - "x": 1354.2630217275394, - "y": 728.6417866167658 + "x": 1354.262012001573, + "y": 728.6417014280496 }, { "type": "QPointF", - "x": 1329.6163029711672, - "y": 703.198217176561 + "x": 1329.6157631004858, + "y": 703.1980756293887 }, { "type": "QPointF", - "x": 1304.3044047855055, - "y": 678.9220639742948 + "x": 1304.3042603499212, + "y": 678.9219654890173 + }, + { + "type": "QPointF", + "x": 1291.8905105037195, + "y": 667.5846506700251 }, { "type": "QPointF", diff --git a/src/test/ValentinaTest/share/smart_pattern_#120_piece_1/input.json b/src/test/ValentinaTest/share/smart_pattern_#120_piece_1/input.json index b4e101b4d..14c2d8748 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#120_piece_1/input.json +++ b/src/test/ValentinaTest/share/smart_pattern_#120_piece_1/input.json @@ -1,520 +1,611 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", - "x": 712.6495183789233, - "y": 616.8985631548287 + "x": 712.6500088860619, + "y": 616.8926607534545 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 712.6495183789233, - "y": 616.8985631548287 + "x": 712.6500088860619, + "y": 616.8926607534545 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 726.8071026249381, - "y": 622.8994219964841 + "x": 726.8075945294675, + "y": 622.8934530694867 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 754.3664564976093, - "y": 635.6407032765856 + "x": 754.3669646468074, + "y": 635.6339609892191 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 781.0272464738941, - "y": 649.2227367324783 + "x": 781.0277860643865, + "y": 649.2144976185907 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 806.7988210502864, - "y": 663.5936066526531 + "x": 806.7994062306554, + "y": 663.5831971403101 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 831.6905287232796, - "y": 678.7013973256012 + "x": 831.6911725940643, + "y": 678.6881937370857 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 855.7117179893664, - "y": 694.4941930398136 + "x": 855.7124326030632, + "y": 694.477621591626 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 878.8717373450409, - "y": 710.9200780837816 + "x": 878.8725337061026, + "y": 710.8996148866397 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 901.1799352867962, - "y": 727.9271367459964 + "x": 901.1808233516326, + "y": 727.9023078048349 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 922.6456603111258, - "y": 745.4634533149493 + "x": 922.6466489881036, + "y": 745.4338345289204 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 943.2782609145231, - "y": 763.4771120791308 + "x": 943.2793580639657, + "y": 763.4423292416045 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 963.0870855934813, - "y": 781.9161973270327 + "x": 963.0882980276695, + "y": 781.8759261255959 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 982.0814828444941, - "y": 800.7287933471456 + "x": 982.0828163276649, + "y": 800.6827593636032 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1000.2708011640545, - "y": 819.8629844279609 + "x": 1000.2722604124021, + "y": 819.8109631383345 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1017.6643890486564, - "y": 839.2668548579697 + "x": 1017.6659777303317, + "y": 839.2086716324987 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1042.379771045306, - "y": 868.7472574049925 + "x": 1042.3815583311566, + "y": 868.6796192253305 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1072.5047461626777, - "y": 908.5500858220648 + "x": 1072.506801747572, + "y": 908.4696747227572 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1099.615072477095, - "y": 948.4971488287515 + "x": 1099.6173921688605, + "y": 948.4041643866675 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1123.7855379605057, - "y": 988.1731207329817 + "x": 1123.788109182625, + "y": 988.0681616787298 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1145.0909305848566, - "y": 1027.1626758426846 + "x": 1145.093732376467, + "y": 1027.0467400606121 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1163.6060383220954, - "y": 1065.050488465789 + "x": 1163.6090413379884, + "y": 1064.924972993982 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1179.4056491441684, - "y": 1101.4212329102238 + "x": 1179.4088156547914, + "y": 1101.287933940508 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1192.5645510230233, - "y": 1135.859583483919 + "x": 1192.5678349144782, + "y": 1135.7206963618578 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1203.1575319306075, - "y": 1167.9502144948026 + "x": 1203.1608787046507, + "y": 1167.8083337196995 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1207.41293413585, - "y": 1182.8615663812132 + "x": 1207.4162864994566, + "y": 1182.7194195036175 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1212.0260796667885, - "y": 1200.220685749583 + "x": 1212.0294320303951, + "y": 1200.0785388719873 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1219.4074407322887, - "y": 1235.0977163843497 + "x": 1219.4107930958953, + "y": 1234.955569506754 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1224.3753043109127, - "y": 1269.866878899892 + "x": 1224.3786566745193, + "y": 1269.7247320222964 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1226.70791319019, - "y": 1304.1965972997014 + "x": 1226.7112655537967, + "y": 1304.0544504221057 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1226.5001040731636, - "y": 1329.424171522283 + "x": 1226.5034564367702, + "y": 1329.2820246446872 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1225.482070101601, - "y": 1345.948595138661 + "x": 1225.4854224652076, + "y": 1345.8064482610653 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1223.680484023187, - "y": 1362.1766462280693 + "x": 1223.6838363867937, + "y": 1362.0344993504737 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1221.0676261863632, - "y": 1378.0668777909455 + "x": 1221.0709785499698, + "y": 1377.9247309133498 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1217.6157769395704, - "y": 1393.5778428277254 + "x": 1217.619129303177, + "y": 1393.4356959501297 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1213.2972166312495, - "y": 1408.668094338845 + "x": 1213.3005689948561, + "y": 1408.5259474612494 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1208.0842256098422, - "y": 1423.2961853247411 + "x": 1208.0875779734488, + "y": 1423.1540384471455 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1201.9490842237894, - "y": 1437.4206687858505 + "x": 1201.952436587396, + "y": 1437.2785219082548 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1194.8640728215325, - "y": 1451.000097722609 + "x": 1194.8674251851392, + "y": 1450.8579508450134 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1186.8014717515125, - "y": 1463.9930251354538 + "x": 1186.8048241151191, + "y": 1463.850878257858 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1177.7335613621708, - "y": 1476.3580040248205 + "x": 1177.7369137257774, + "y": 1476.2158571472248 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1167.6326220019482, - "y": 1488.0535873911463 + "x": 1167.6359743655548, + "y": 1487.9114405135506 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1156.4709340192862, - "y": 1499.0383282348675 + "x": 1156.4742863828928, + "y": 1498.8961813572719 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1144.2207777626259, - "y": 1509.27077955642 + "x": 1144.2241301262325, + "y": 1509.1286326788243 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1130.8544335804086, - "y": 1518.7094943562408 + "x": 1130.8577859440152, + "y": 1518.5673474786452 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1116.3441818210752, - "y": 1527.3130256347663 + "x": 1116.3475341846818, + "y": 1527.1708787571706 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1100.6623028330666, - "y": 1535.0399263924328 + "x": 1100.6656551966732, + "y": 1534.897779514837 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1083.781076964825, - "y": 1541.8487496296768 + "x": 1083.7844293284315, + "y": 1541.7066027520812 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1065.672784564791, - "y": 1547.698048346935 + "x": 1065.6761369283977, + "y": 1547.5559014693392 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1046.3097059814058, - "y": 1552.546375544643 + "x": 1046.3130583450125, + "y": 1552.4042286670474 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1025.6641215631105, - "y": 1556.3522842232383 + "x": 1025.667473926717, + "y": 1556.2101373456426 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1003.7083116583466, - "y": 1559.0743273831567 + "x": 1003.7116640219532, + "y": 1558.932180505561 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 980.4145566155547, - "y": 1560.6710580248346 + "x": 980.4179089791613, + "y": 1560.528911147239 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 955.7551367831765, - "y": 1561.101029148709 + "x": 955.7584891467831, + "y": 1560.9588822711132 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 942.8460050019918, - "y": 1560.814322286725 + "x": 942.8493573655984, + "y": 1560.6721754091293 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 932.8441488737251, - "y": 1560.365465562514 + "x": 932.8474996004353, + "y": 1560.2233852105414 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 913.8768029417474, - "y": 1558.0484780010388 + "x": 913.8801346395383, + "y": 1557.9071710094354 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 896.1085832568806, - "y": 1554.1181739998724 + "x": 896.1118781245048, + "y": 1553.97836383479 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 879.4900305498402, - "y": 1548.6743452212072 + "x": 879.4932720137228, + "y": 1548.53670545458 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 863.9716855513418, - "y": 1541.8167833272355 + "x": 863.9748582655802, + "y": 1541.6819376367807 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 849.5040889921011, - "y": 1533.6452799801486 + "x": 849.5071788384646, + "y": 1533.513802149366 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 836.0377816028334, - "y": 1524.2596268421394 + "x": 836.0407756907639, + "y": 1524.1320407603116 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 823.5233041142545, - "y": 1513.7596155754 + "x": 823.526190780866, + "y": 1513.6363952375918 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 811.9111972570802, - "y": 1502.2450378421222 + "x": 811.9139660671585, + "y": 1502.126607349181 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 801.1520017620256, - "y": 1489.8156853044984 + "x": 801.1546435080294, + "y": 1489.7024188630548 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 791.1962583598068, - "y": 1476.5713496247208 + "x": 791.1987650618667, + "y": 1476.4635715471877 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 781.9945077811392, - "y": 1462.6118224649813 + "x": 781.9968726870577, + "y": 1462.5098071695538 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 773.4972907567385, - "y": 1448.036895487472 + "x": 773.4995083419905, + "y": 1447.9408674981291 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 765.65514801732, - "y": 1432.946360354386 + "x": 765.657213985053, + "y": 1432.856494300887 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 754.9455777770032, - "y": 1409.595352749106 + "x": 754.9474111008507, + "y": 1409.5149416497982 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 742.5982267766478, - "y": 1377.5181334957742 + "x": 742.5997458164071, + "y": 1377.450495316112 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 731.9809060691027, - "y": 1345.1747315395914 + "x": 731.9821157354627, + "y": 1345.1196667027052 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 718.3405889809369, - "y": 1297.6906838082095 + "x": 718.3413615959869, + "y": 1297.6533813127062 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 706.5523841605766, - "y": 1254.5307624293077 + "x": 706.5527933846497, + "y": 1254.508228622145 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 698.8984430815203, - "y": 1229.105962637092 + "x": 698.8986607887273, + "y": 1229.091212327838 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 690.9961615238983, - "y": 1207.4066466297113 + "x": 690.9962417318168, + "y": 1207.3974844728023 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 684.6390551129246, - "y": 1194.2173359527587 + "x": 684.6390757787403, + "y": 1194.210593665392 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 680.1307144555562, - "y": 1186.9102282541355 + "x": 680.1307160924525, + "y": 1186.9042593271379 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 677.76, - "y": 1183.8276970130964 + "y": 1183.8217946117222 }, { + "turnPoint": true, "type": "VSAPoint", "x": 677.76, - "y": 1183.8276970130964 + "y": 1183.8217946117222 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 677.76, - "y": 1183.8276970130964 + "y": 1183.8217946117222 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 680.5249837176159, "y": 1114.1626832930294 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 685.3436809655902, "y": 1014.1063107551211 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 692.0193814449215, "y": 900.1566306917512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 700.1576970999383, "y": 778.8334557524149 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 709.3642398749706, "y": 656.6565985866073 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 712.6495183789233, - "y": 616.8985631548287 + "x": 712.6500088860619, + "y": 616.8926607534545 } ] } diff --git a/src/test/ValentinaTest/share/smart_pattern_#120_piece_1/output.json b/src/test/ValentinaTest/share/smart_pattern_#120_piece_1/output.json index 175c3898d..9d4b7ceb4 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#120_piece_1/output.json +++ b/src/test/ValentinaTest/share/smart_pattern_#120_piece_1/output.json @@ -2,393 +2,398 @@ "vector": [ { "type": "QPointF", - "x": 679.3841716061438, - "y": 560.5190335238417 + "x": 679.384586762192, + "y": 560.5140880956448 }, { "type": "QPointF", - "x": 769.8553508610224, - "y": 601.1649580581737 + "x": 742.1615269447043, + "y": 588.7165650594641 }, { "type": "QPointF", - "x": 798.1836184130696, - "y": 615.5457155036013 + "x": 769.8552760245651, + "y": 601.1579538591708 }, { "type": "QPointF", - "x": 825.2060032227265, - "y": 630.583630865988 + "x": 798.1826407382465, + "y": 615.5367034793585 }, { "type": "QPointF", - "x": 851.3006778666988, - "y": 646.3915705303594 + "x": 825.2044428497968, + "y": 630.5720250312525 }, { "type": "QPointF", - "x": 876.4748810859865, - "y": 662.9129657807447 + "x": 851.2986373448306, + "y": 646.3767378272512 }, { "type": "QPointF", - "x": 900.7365581906681, - "y": 680.0913177072385 + "x": 876.472461192634, + "y": 662.8943337652132 }, { "type": "QPointF", - "x": 924.0943162464257, - "y": 697.870290567419 + "x": 900.7338561296498, + "y": 680.0683736067398 }, { "type": "QPointF", - "x": 946.5573654918338, - "y": 716.1937896285207 + "x": 924.0914241595214, + "y": 697.8425801349553 }, { "type": "QPointF", - "x": 968.1354516130542, - "y": 735.0060227507894 + "x": 946.5543693020409, + "y": 716.1609158777806 }, { "type": "QPointF", - "x": 988.8387831783768, - "y": 754.2515460828602 + "x": 968.1324301949946, + "y": 734.9676446495736 }, { "type": "QPointF", - "x": 1008.6779579740884, - "y": 773.8752951086171 + "x": 988.835807833695, + "y": 754.2073772703626 }, { "type": "QPointF", - "x": 1027.6638912896856, - "y": 793.8226028959107 + "x": 1008.6750921772099, + "y": 773.8251026879489 }, { "type": "QPointF", - "x": 1045.8077484656164, - "y": 814.0392077680493 + "x": 1027.6611906622486, + "y": 793.7662063390317 }, { "type": "QPointF", - "x": 1071.3430848192243, - "y": 844.4653853149052 + "x": 1045.8052609350068, + "y": 813.9764779567048 }, { "type": "QPointF", - "x": 1103.2303115075101, - "y": 886.5188719299211 + "x": 1071.3409408335565, + "y": 844.3930587021669 }, { "type": "QPointF", - "x": 1130.8885140109408, - "y": 927.2732304441776 + "x": 1103.228960029628, + "y": 886.4337033462352 }, { "type": "QPointF", - "x": 1156.0630248229138, - "y": 968.5097868647616 + "x": 1130.8876326240566, + "y": 927.1755299783969 }, { "type": "QPointF", - "x": 1178.2575077448091, - "y": 1009.0391823478132 + "x": 1156.062867450886, + "y": 968.4003495052517 }, { "type": "QPointF", - "x": 1197.5634888958748, - "y": 1048.456079543062 + "x": 1178.258079265554, + "y": 1008.919165694859 }, { "type": "QPointF", - "x": 1214.071357228348, - "y": 1086.362297357269 + "x": 1197.5647650922217, + "y": 1048.3270309139612 }, { "type": "QPointF", - "x": 1227.8702729039567, - "y": 1122.3692588239405 + "x": 1214.0732887509512, + "y": 1086.2261557609033 }, { "type": "QPointF", - "x": 1239.047985620763, - "y": 1156.1029282705015 + "x": 1227.8727866448085, + "y": 1122.2283563022138 }, { "type": "QPointF", - "x": 1243.7572038671706, - "y": 1172.4896372133692 + "x": 1239.0509824393316, + "y": 1155.9599873844581 }, { "type": "QPointF", - "x": 1248.8020085715284, - "y": 1191.448580084669 + "x": 1243.7605037902235, + "y": 1172.3473065806277 }, { "type": "QPointF", - "x": 1256.6445317527136, - "y": 1228.5046079387312 + "x": 1248.805360935135, + "y": 1191.3064332070733 }, { "type": "QPointF", - "x": 1261.988690163765, - "y": 1265.9073887039217 + "x": 1256.6478841163203, + "y": 1228.3624610611355 }, { "type": "QPointF", - "x": 1264.5137550395652, - "y": 1303.0695408750648 + "x": 1261.9920425273717, + "y": 1265.765241826326 }, { "type": "QPointF", - "x": 1264.285799814862, - "y": 1330.742808693687 + "x": 1264.5171074031718, + "y": 1302.9273939974692 }, { "type": "QPointF", - "x": 1263.2058227640803, - "y": 1348.27267388639 + "x": 1264.2891521784686, + "y": 1330.6006618160914 }, { "type": "QPointF", - "x": 1261.1356764306531, - "y": 1367.3315257916463 + "x": 1263.2091751276869, + "y": 1348.1305270087944 }, { "type": "QPointF", - "x": 1258.190330320336, - "y": 1385.2438021758242 + "x": 1261.1390287942597, + "y": 1367.1893789140506 }, { "type": "QPointF", - "x": 1254.2631460849664, - "y": 1402.8906960615898 + "x": 1258.1936826839426, + "y": 1385.1016552982285 }, { "type": "QPointF", - "x": 1249.302964099641, - "y": 1420.2229522663397 + "x": 1254.266498448573, + "y": 1402.748549183994 }, { "type": "QPointF", - "x": 1243.2583816222339, - "y": 1437.1845587774892 + "x": 1249.3063164632476, + "y": 1420.080805388744 }, { "type": "QPointF", - "x": 1236.0796574310805, - "y": 1453.7116059520365 + "x": 1243.2617339858405, + "y": 1437.0424118998935 }, { "type": "QPointF", - "x": 1227.7212307992581, - "y": 1469.7317157339048 + "x": 1236.083009794687, + "y": 1453.5694590744408 }, { "type": "QPointF", - "x": 1218.1446471798263, - "y": 1485.1644346232201 + "x": 1227.7245831628647, + "y": 1469.5895688563091 }, { "type": "QPointF", - "x": 1207.3214495659386, - "y": 1499.9229185809431 + "x": 1218.147999543433, + "y": 1485.0222877456245 }, { "type": "QPointF", - "x": 1195.2353950909978, - "y": 1513.9170088967678 + "x": 1207.3248019295452, + "y": 1499.7807717033475 }, { "type": "QPointF", - "x": 1181.883310308728, - "y": 1527.057422003142 + "x": 1195.2387474546044, + "y": 1513.7748620191721 }, { "type": "QPointF", - "x": 1167.2741027307106, - "y": 1539.2603688273703 + "x": 1181.8866626723345, + "y": 1526.9152751255463 }, { "type": "QPointF", - "x": 1151.4258919592262, - "y": 1550.4516668756805 + "x": 1167.2774550943172, + "y": 1539.1182219497746 }, { "type": "QPointF", - "x": 1134.3617582089971, - "y": 1560.5694657185988 + "x": 1151.4292443228328, + "y": 1550.3095199980849 }, { "type": "QPointF", - "x": 1116.1049959336583, - "y": 1569.56508355022 + "x": 1134.3651105726037, + "y": 1560.4273188410032 }, { "type": "QPointF", - "x": 1096.674832823773, - "y": 1577.401987523818 + "x": 1116.108348297265, + "y": 1569.4229366726242 }, { "type": "QPointF", - "x": 1076.0833250446788, - "y": 1584.0534087278647 + "x": 1096.6781851873795, + "y": 1577.2598406462223 }, { "type": "QPointF", - "x": 1054.3337191047733, - "y": 1589.4992992438679 + "x": 1076.0866774082854, + "y": 1583.911261850269 }, { "type": "QPointF", - "x": 1031.4201737837602, - "y": 1593.7232950013988 + "x": 1054.33707146838, + "y": 1589.3571523662722 }, { "type": "QPointF", - "x": 1007.3284897268633, - "y": 1596.7101401272423 + "x": 1031.4235261473668, + "y": 1593.5811481238031 }, { "type": "QPointF", - "x": 982.037423041006, - "y": 1598.4437816575085 + "x": 1007.3318420904699, + "y": 1596.5679932496466 }, { "type": "QPointF", - "x": 956.4140495815975, - "y": 1598.8905606473904 + "x": 982.0407754046126, + "y": 1598.3016347799128 }, { "type": "QPointF", - "x": 942.0067933901805, - "y": 1598.600279742324 + "x": 956.4174019452041, + "y": 1598.7484137697948 }, { "type": "QPointF", - "x": 929.7008654795463, - "y": 1598.0577191905634 + "x": 942.0101457537871, + "y": 1598.4581328647282 }, { "type": "QPointF", - "x": 907.4891444119198, - "y": 1595.344409610129 + "x": 929.705102872112, + "y": 1597.915688272064 }, { "type": "QPointF", - "x": 886.1199104222235, - "y": 1590.617566553191 + "x": 907.4947395818035, + "y": 1595.2034528629392 }, { "type": "QPointF", - "x": 865.93535231705, - "y": 1584.0056021881453 + "x": 886.1268583176004, + "y": 1590.4787188888015 }, { "type": "QPointF", - "x": 846.9989173644151, - "y": 1575.6375851894622 + "x": 865.9433957642945, + "y": 1583.8697706164435 }, { "type": "QPointF", - "x": 829.3598492455591, - "y": 1565.6747898085903 + "x": 847.0077027592515, + "y": 1575.5055279093413 }, { "type": "QPointF", - "x": 813.0397272681538, - "y": 1554.300104854346 + "x": 829.3689832596245, + "y": 1565.5470925276845 }, { "type": "QPointF", - "x": 798.0265761495427, - "y": 1541.7036336042645 + "x": 813.0488387611572, + "y": 1554.1771892327833 }, { "type": "QPointF", - "x": 784.2769305984903, - "y": 1528.069470187589 + "x": 798.0353630467893, + "y": 1541.5857912522288 }, { "type": "QPointF", - "x": 771.7232100759278, - "y": 1513.5670273139199 + "x": 784.2851815217816, + "y": 1527.9569064621192 }, { "type": "QPointF", - "x": 760.2828340467671, - "y": 1498.3476535000752 + "x": 771.7308026768961, + "y": 1513.4598999602788 }, { "type": "QPointF", - "x": 749.8663730801347, - "y": 1482.545348435518 + "x": 760.2897189615422, + "y": 1498.2460982596358 }, { "type": "QPointF", - "x": 740.8458268763198, - "y": 1467.072776434555 + "x": 749.8725529485998, + "y": 1482.4494909851119 }, { "type": "QPointF", - "x": 732.11805591686, - "y": 1450.3746795622467 + "x": 740.8515922064375, + "y": 1466.982832443261 }, { "type": "QPointF", - "x": 720.0980737097842, - "y": 1424.2764020121176 + "x": 732.1231731215601, + "y": 1450.2906837093824 }, { "type": "QPointF", - "x": 706.9845817511386, - "y": 1390.2088229239253 + "x": 720.102126722498, + "y": 1424.2012884599567 }, { "type": "QPointF", - "x": 696.0709698803022, - "y": 1356.9628331629317 + "x": 706.9877805290367, + "y": 1390.1459233334497 }, { "type": "QPointF", - "x": 682.0144055801992, - "y": 1308.12578114852 + "x": 696.0736400951675, + "y": 1356.9122166456111 }, { "type": "QPointF", - "x": 670.2209905920099, - "y": 1264.9590990634113 + "x": 682.0163033514071, + "y": 1308.0923946996882 }, { "type": "QPointF", - "x": 663.0172045666401, - "y": 1241.029620700668 + "x": 670.2223720252432, + "y": 1264.9399487462674 }, { "type": "QPointF", - "x": 656.1290125019129, - "y": 1222.1149496348314 + "x": 663.0184962026501, + "y": 1241.0180964827523 }, { "type": "QPointF", - "x": 651.4436445338823, - "y": 1212.3940530867537 + "x": 656.1303091328225, + "y": 1222.1086391847691 }, { "type": "QPointF", - "x": 648.9858448561539, - "y": 1208.4104572780716 + "x": 651.4448204606008, + "y": 1212.389366798928 }, { "type": "QPointF", - "x": 639.4513296048895, - "y": 1196.013164528916 + "x": 648.9865217303316, + "y": 1208.4054006390668 }, { "type": "QPointF", - "x": 642.7594419324198, - "y": 1112.663780148585 + "x": 639.451276716322, + "y": 1196.0074351458134 + }, + { + "type": "QPointF", + "x": 642.7594469655363, + "y": 1112.6636533423161 }, { "type": "QPointF", @@ -412,8 +417,8 @@ }, { "type": "QPointF", - "x": 679.3841716061438, - "y": 560.5190335238417 + "x": 679.384586762192, + "y": 560.5140880956448 } ] } diff --git a/src/test/ValentinaTest/share/smart_pattern_#120_piece_2/input.json b/src/test/ValentinaTest/share/smart_pattern_#120_piece_2/input.json index 841716296..4cc466c57 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#120_piece_2/input.json +++ b/src/test/ValentinaTest/share/smart_pattern_#120_piece_2/input.json @@ -2,232 +2,278 @@ "vector": [ { "angle": 4, + "turnPoint": true, "type": "VSAPoint", - "x": 726.3328951195898, - "y": 466.32672911664105 + "x": 726.3322163063365, + "y": 466.33348062024606 }, { "angle": 4, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 726.3328951195898, - "y": 466.32672911664105 + "x": 726.3322163063365, + "y": 466.33348062024606 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 748.4704983324366, - "y": 467.6644498046602 + "x": 748.4698407320974, + "y": 467.6709903237776 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 893.3647248091735, - "y": 475.431155781443 + "x": 893.531027662518, + "y": 475.44487412088216 }, { + "turnPoint": true, "type": "VSAPoint", - "x": 893.3647248091735, - "y": 475.431155781443 + "x": 893.531027662518, + "y": 475.44487412088216 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 893.3647248091735, - "y": 475.431155781443 + "x": 893.531027662518, + "y": 475.44487412088216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 900.7799673284717, - "y": 475.83396978129576 + "x": 900.7794449604603, + "y": 475.8391652743044 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1045.4320327261817, - "y": 482.7134397143277 + "x": 1045.4316296808124, + "y": 482.7174484195932 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1214.0408472485012, - "y": 489.5927257320857 + "x": 1214.040571480617, + "y": 489.59546853042525 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1394.4761078914503, - "y": 495.3251575547605 + "x": 1394.4759514462085, + "y": 495.32671356535695 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1529.9727237352329, - "y": 498.08351679152236 + "x": 1529.972640872287, + "y": 498.0843409496773 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1617.6880295809483, - "y": 499.01458866922655 + "x": 1617.687985497861, + "y": 499.015027121365 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1701.5366515170822, - "y": 499.0139449657674 + "x": 1701.5366352759447, + "y": 499.01410650076576 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1780.0023016681369, - "y": 497.9382518961688 + "x": 1780.0023003423298, + "y": 497.9382650826993 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1816.423613879903, "y": 496.898717956112 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1816.423613879903, "y": 496.898717956112 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1849.4135433070867, "y": 1222.677165354331 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1849.4135433070867, "y": 1222.677165354331 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1850.4239458186876, "y": 1238.2316356319525 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1854.1875736320867, "y": 1268.5318954632107 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1859.7916578915156, "y": 1297.6192626599368 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1866.9573864834126, "y": 1325.22431970463 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1875.4059472942151, "y": 1351.0776490797903 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1884.8585282103609, "y": 1374.909833267917 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1895.0363171182871, "y": 1396.45145475151 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1905.6605019044318, "y": 1415.4330960130683 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1911.0540380375096, "y": 1423.7562266489372 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1915.2176538409371, "y": 1429.836295711893 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1924.2956860224986, "y": 1441.6625061671757 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1934.1907119103657, "y": 1453.0690095985565 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1944.80943485638, "y": 1464.0347017625381 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1961.8290579118616, "y": 1479.6722498340055 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1986.2891263748718, "y": 1498.7055156356078 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2011.9646434036204, "y": 1515.5956599846636 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2038.1092358128394, "y": 1530.173848933194 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2063.9765304172624, "y": 1542.2712485332213 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2088.8201540316245, "y": 1551.7190248367672 }, { "angle": 5, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 2100.5355463151377, "y": 1555.2755905511813 }, { "angle": 5, + "turnPoint": true, "type": "VSAPoint", "x": 2100.5355463151377, "y": 1555.2755905511813 }, { + "turnPoint": true, "type": "VSAPoint", "x": 2100.5355463151377, "y": 3063.3070866141734 @@ -235,87 +281,106 @@ { "angle": 4, "saAfter": 151.18110236220474, + "turnPoint": true, "type": "VSAPoint", "x": 2100.5355463151377, "y": 4586.456692913386 }, { "saBefore": 151.18110236220474, + "turnPoint": true, "type": "VSAPoint", "x": 677.76, "y": 4586.456692913386 }, { + "turnPoint": true, "type": "VSAPoint", "x": 677.76, "y": 3063.3070866141734 }, { + "turnPoint": true, "type": "VSAPoint", "x": 677.76, - "y": 1183.8169040655002 + "y": 1183.8217946117222 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 677.76, - "y": 1183.8169040655002 + "y": 1183.8217946117222 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 680.5249837176159, "y": 1114.1626832930294 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 685.3436809655902, "y": 1014.1063107551211 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 692.0193814449215, "y": 900.1566306917512 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 700.1576970999383, "y": 778.8334557524149 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 709.3642398749706, "y": 656.6565985866073 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 712.6504153073016, - "y": 616.8877702072326 + "x": 712.6500088860619, + "y": 616.8926607534545 }, { + "turnPoint": true, "type": "VSAPoint", - "x": 712.6504153073016, - "y": 616.8877702072326 + "x": 712.6500088860619, + "y": 616.8926607534545 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 712.6504153073016, - "y": 616.8877702072326 + "x": 712.6500088860619, + "y": 616.8926607534545 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 719.2446217143472, "y": 540.1458718438239 }, { "angle": 4, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 726.3328951195898, - "y": 466.32672911664105 + "x": 726.3322163063365, + "y": 466.33348062024606 } ] } diff --git a/src/test/ValentinaTest/share/smart_pattern_#120_piece_2/output.json b/src/test/ValentinaTest/share/smart_pattern_#120_piece_2/output.json index e0af32b77..642d5ba62 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#120_piece_2/output.json +++ b/src/test/ValentinaTest/share/smart_pattern_#120_piece_2/output.json @@ -2,53 +2,58 @@ "vector": [ { "type": "QPointF", - "x": 692.3267996783844, - "y": 425.0547824881589 + "x": 692.3261052756233, + "y": 425.0615341837444 }, { "type": "QPointF", - "x": 729.9490299580725, - "y": 428.66735023800396 + "x": 729.9483370353505, + "y": 428.6740865199937 }, { "type": "QPointF", - "x": 1047.3703808444025, - "y": 444.96790138807927 + "x": 902.7455713572524, + "y": 437.5462567725415 }, { "type": "QPointF", - "x": 1215.5816229877987, - "y": 451.8288691084969 + "x": 1047.3696525420976, + "y": 444.9718933918166 }, { "type": "QPointF", - "x": 1395.6762590253597, - "y": 457.54894156875224 + "x": 1215.5810630008064, + "y": 451.83160031168995 }, { "type": "QPointF", - "x": 1530.7419780161567, - "y": 460.29607039967215 + "x": 1395.6758535700906, + "y": 457.55048966911664 }, { "type": "QPointF", - "x": 1618.0891925886142, - "y": 461.22144213169855 + "x": 1530.7416907204436, + "y": 460.29689039665897 }, { "type": "QPointF", - "x": 1701.5363613638349, - "y": 461.2186693763291 + "x": 1618.0889821611001, + "y": 461.2218788185078 }, { "type": "QPointF", - "x": 1779.4842113185928, - "y": 460.1465274137461 + "x": 1701.5362203007542, + "y": 461.2188309124919 }, { "type": "QPointF", - "x": 1852.4772835848457, - "y": 458.0590099929468 + "x": 1779.4841386550263, + "y": 460.14654157831995 + }, + { + "type": "QPointF", + "x": 1852.4772829708336, + "y": 458.0589966052169 }, { "type": "QPointF", @@ -90,6 +95,11 @@ "x": 1938.0436997249546, "y": 1395.9059868680563 }, + { + "type": "QPointF", + "x": 1942.5101838486996, + "y": 1402.798520806408 + }, { "type": "QPointF", "x": 1945.822628290763, @@ -112,8 +122,8 @@ }, { "type": "QPointF", - "x": 1986.415017807355, - "y": 1450.5995504284354 + "x": 1986.260985658532, + "y": 1450.7939165792232 }, { "type": "QPointF", @@ -152,18 +162,23 @@ }, { "type": "QPointF", - "x": 639.9647244094485, + "x": 2100.5355463151377, + "y": 4737.637795275591 + }, + { + "type": "QPointF", + "x": 639.964724409449, "y": 4737.637795275591 }, { "type": "QPointF", "x": 639.9647244094488, - "y": 1183.067041495775 + "y": 1183.0719846460615 }, { "type": "QPointF", - "x": 642.759451136787, - "y": 1112.6635482583558 + "x": 642.7594469655363, + "y": 1112.6636533423161 }, { "type": "QPointF", @@ -192,8 +207,8 @@ }, { "type": "QPointF", - "x": 692.3267996783844, - "y": 425.0547824881589 + "x": 692.3261052756233, + "y": 425.0615341837444 } ] } diff --git a/src/test/ValentinaTest/share/smart_pattern_#133/input.json b/src/test/ValentinaTest/share/smart_pattern_#133/input.json index 2d5ec1350..fee3760ba 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#133/input.json +++ b/src/test/ValentinaTest/share/smart_pattern_#133/input.json @@ -3,19 +3,23 @@ { "angle": 4, "saAfter": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 2929.9770747304974, "y": -276.4297327130487 }, { "angle": 4, + "curvePoint": true, "saAfter": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 2929.494592436758, "y": -276.7606225402938 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -24,6 +28,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -32,6 +37,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -40,6 +46,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -48,6 +55,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -56,6 +64,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -64,6 +73,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -71,28 +81,34 @@ "y": -49.82580136992735 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", - "x": 3310.2958622918845, - "y": -33.638475438863175 + "x": 3310.1797450503414, + "y": -33.70408802277297 }, { "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", - "x": 3310.2958622918845, - "y": -33.638475438863175 + "x": 3310.1797450503414, + "y": -33.70408802277297 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", - "x": 3310.2958622918845, - "y": -33.638475438863175 + "x": 3310.1797450503414, + "y": -33.70408802277297 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -101,6 +117,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -109,6 +126,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -117,6 +135,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -125,6 +144,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -133,6 +153,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -141,7 +162,9 @@ }, { "angle": 5, + "curvePoint": true, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 3483.9089681080395, "y": 43.255120195555406 @@ -149,6 +172,7 @@ { "angle": 5, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 3483.9089681080395, "y": 43.255120195555406 @@ -156,19 +180,23 @@ { "angle": 4, "saAfter": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 3447.5678964202975, "y": 170.44883665362593 }, { "angle": 4, + "curvePoint": true, "saAfter": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 3447.5678964202975, "y": 170.44883665362593 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -177,6 +205,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -184,28 +213,34 @@ "y": 115.54965743238373 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", - "x": 3247.8444514992034, - "y": 114.3583692773959 + "x": 3247.9090183906005, + "y": 114.37605161163681 }, { "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", - "x": 3247.8444514992034, - "y": 114.3583692773959 + "x": 3247.9090183906005, + "y": 114.37605161163681 }, { + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", - "x": 3247.8444514992034, - "y": 114.3583692773959 + "x": 3247.9090183906005, + "y": 114.37605161163681 }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -214,6 +249,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -222,6 +258,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -230,6 +267,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -238,6 +276,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -246,6 +285,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -254,6 +294,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -262,6 +303,7 @@ }, { "angle": 6, + "curvePoint": true, "saAfter": 37.795275590551185, "saBefore": 37.795275590551185, "type": "VSAPoint", @@ -270,7 +312,9 @@ }, { "angle": 5, + "curvePoint": true, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 2842.1714408688977, "y": 30.88990256838886 @@ -278,6 +322,7 @@ { "angle": 5, "saBefore": 37.795275590551185, + "turnPoint": true, "type": "VSAPoint", "x": 2842.1714408688977, "y": 30.88990256838886 diff --git a/src/test/ValentinaTest/share/smart_pattern_#133/output.json b/src/test/ValentinaTest/share/smart_pattern_#133/output.json index 8fff4d070..878908acc 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#133/output.json +++ b/src/test/ValentinaTest/share/smart_pattern_#133/output.json @@ -17,8 +17,8 @@ }, { "type": "QPointF", - "x": 3108.6971255127173, - "y": -200.96114841642915 + "x": 3108.866320100226, + "y": -201.23175543163813 }, { "type": "QPointF", @@ -27,13 +27,18 @@ }, { "type": "QPointF", - "x": 3201.9395957269226, - "y": -143.55493133873182 + "x": 3166.4683978066782, + "y": -165.20060758196271 }, { "type": "QPointF", - "x": 3261.1271882374804, - "y": -107.36170019590531 + "x": 3201.9675326946353, + "y": -143.59983662963214 + }, + { + "type": "QPointF", + "x": 3260.845569709823, + "y": -106.90770647401519 }, { "type": "QPointF", @@ -70,6 +75,11 @@ "x": 3483.678198210371, "y": 3.788524764758021 }, + { + "type": "QPointF", + "x": 3494.292461367786, + "y": 6.912903629334259 + }, { "type": "QPointF", "x": 3519.731204659397, @@ -80,6 +90,11 @@ "x": 3462.6234754097254, "y": 214.0581162062353 }, + { + "type": "QPointF", + "x": 3437.184732118995, + "y": 206.78990186893776 + }, { "type": "QPointF", "x": 3378.7569662168626, @@ -100,6 +115,11 @@ "x": 3138.833989122527, "y": 124.87442658272099 }, + { + "type": "QPointF", + "x": 3113.743224395128, + "y": 119.08437612809912 + }, { "type": "QPointF", "x": 3034.0345168547487, diff --git a/src/test/ValentinaTest/share/smart_pattern_#145/input.json b/src/test/ValentinaTest/share/smart_pattern_#145/input.json index 3848eb44c..7ee0213ed 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#145/input.json +++ b/src/test/ValentinaTest/share/smart_pattern_#145/input.json @@ -1,343 +1,402 @@ { "vector": [ { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1457.2339374385072, "y": 1152.1895371589367 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1455.2792208254348, "y": 1154.7921899574008 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1451.3561253135774, "y": 1160.1038083868789 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1447.4171947995967, "y": 1165.5412786237416 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1443.463051217639, "y": 1171.102685566127 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1439.4943165018522, "y": 1176.786114112174 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1435.5116125863826, "y": 1182.5896491600192 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1431.5155614053776, "y": 1188.5113756078028 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1427.5067848929834, "y": 1194.5493783536617 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1423.4859049833478, "y": 1200.7017422957342 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1419.453543610617, "y": 1206.9665523321592 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1415.4103227089386, "y": 1213.3418933610742 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1411.3568642124592, "y": 1219.825850280618 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1407.2937900553256, "y": 1226.4165079889285 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1403.2217221716849, "y": 1233.1119513841436 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1399.1412824956838, "y": 1239.9102653644022 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1395.05309296147, "y": 1246.809534827842 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1390.9577755031894, "y": 1253.8078446726015 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1386.8559520549898, "y": 1260.903279796819 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1382.7482445510173, "y": 1268.0939250986323 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1378.6352749254195, "y": 1275.37786547618 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1374.5176651123434, "y": 1282.7531858275997 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1370.3960370459356, "y": 1290.2179710510304 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1366.2710126603429, "y": 1297.77030604461 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1362.143213889713, "y": 1305.4082757064766 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1355.9478266864771, "y": 1317.0115000527885 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1347.6830460447536, "y": 1332.7782661639033 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1339.4183626775239, "y": 1348.8530991146542 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1331.1587520579637, "y": 1365.2206780901474 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1322.9091896592486, "y": 1381.8656822754883 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1314.6746509545537, "y": 1398.7727908557827 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1306.460111417055, "y": 1415.9266830161364 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1298.2705465199278, "y": 1433.3120379416553 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1290.1109317363475, "y": 1450.9135348174448 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1281.98624253949, "y": 1468.7158528286107 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1273.90145440253, "y": 1486.7036711602589 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1265.8615427986438, "y": 1504.8616689974951 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1257.8714832010064, "y": 1523.1745255254248 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1249.9362510827937, "y": 1541.6269199291537 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1242.0608219171809, "y": 1560.2035313937881 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1234.2501711773434, "y": 1578.8890391044329 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1226.509274336457, "y": 1597.6681222461948 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1218.8431068676973, "y": 1616.5254600041785 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1211.2566442442396, "y": 1635.4457315634904 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1203.7548619392596, "y": 1654.4136161092365 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1196.3427354259325, "y": 1673.4137928265213 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1189.025240177434, "y": 1692.430940900452 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1181.8073516669394, "y": 1711.4497395161334 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1174.6940453676243, "y": 1730.4548678586716 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1167.6902967526644, "y": 1749.4310051131724 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1160.8010812952352, "y": 1768.362830464741 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1154.0313744685118, "y": 1787.235023098483 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1147.3861517456703, "y": 1806.0322621995053 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1140.8703885998857, "y": 1824.739226952913 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1134.4890605043336, "y": 1843.3405965438117 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1128.2471429321897, "y": 1861.821050157307 }, { "angle": 5, + "curvePoint": true, "saAfter": 94.48818897637796, + "turnPoint": true, "type": "VSAPoint", "x": 1122.3385503616407, "y": 1879.596850393701 @@ -345,6 +404,7 @@ { "angle": 5, "saAfter": 94.48818897637796, + "turnPoint": true, "type": "VSAPoint", "x": 1122.3385503616407, "y": 1879.596850393701 @@ -352,383 +412,450 @@ { "angle": 4, "saBefore": 94.48818897637796, + "turnPoint": true, "type": "VSAPoint", "x": 167.911937007874, "y": 1879.596850393701 }, { + "turnPoint": true, "type": "VSAPoint", "x": 167.911937007874, "y": 424.47874015748044 }, { + "turnPoint": true, "type": "VSAPoint", "x": 627.9840758158414, "y": 367.63389108940623 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1051.6150224241046, "y": 315.2915838962216 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1188.384377952756, "y": 794.8724409448816 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1188.384377952756, "y": 794.8724409448816 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1189.991012022951, "y": 800.4743047299322 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1193.227214578106, "y": 811.442794196091 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1196.4910895392684, "y": 822.1335625171128 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1199.7828048045383, "y": 832.551681448102 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1203.102528272016, "y": 842.7022227441635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1206.450427839801, "y": 852.5902581604014 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1209.826671405994, "y": 862.2208594519205 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1213.2314268686941, "y": 871.5990983738252 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1216.6648621260022, "y": 880.7300466812198 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1220.127145076018, "y": 889.6187761292092 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1223.6184436168412, "y": 898.2703584728977 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1227.1389256465723, "y": 906.6898654673896 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1230.688759063311, "y": 914.8823688677899 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1234.2681117651578, "y": 922.8529404292026 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1237.877151650212, "y": 930.6066519067324 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1241.516046616574, "y": 938.148575055484 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1245.1849645623438, "y": 945.4837816305617 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1248.8840733856214, "y": 952.6173433870702 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1252.6135409845065, "y": 959.5543320801137 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1256.3735352570995, "y": 966.2998194647968 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1260.1642241015004, "y": 972.858877296224 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1263.985775415809, "y": 979.2365773294999 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1267.8383570981255, "y": 985.4379913197292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1271.72213704655, "y": 991.4681910220161 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1275.6372831591825, "y": 997.3322481914649 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1279.5839633341225, "y": 1003.0352345831807 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1283.562345469471, "y": 1008.5822219522677 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1287.572597463327, "y": 1013.9782820538305 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1291.6148872137906, "y": 1019.2284866429734 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1295.6893826189626, "y": 1024.337907474801 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1299.7962515769423, "y": 1029.311616304418 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1303.9356619858304, "y": 1034.1546848869284 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1308.1077817437263, "y": 1038.8721849774374 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1312.3127787487301, "y": 1043.4691883310488 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1316.5508208989418, "y": 1047.950766702868 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1320.8220760924614, "y": 1052.3219918479983 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1325.1267122273894, "y": 1056.5879355215452 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1329.4648972018254, "y": 1060.753669478613 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1333.8367989138692, "y": 1064.8242654743062 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1338.2425852616216, "y": 1068.804795263729 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1342.6824241431814, "y": 1072.7003306019858 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1347.1564834566498, "y": 1076.5159432441817 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1351.664931100126, "y": 1080.2567049454208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1356.207934971711, "y": 1083.9276874608076 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1360.7856629695038, "y": 1087.5339625454471 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1365.3982829916044, "y": 1091.080601954443 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1370.0459629361135, "y": 1094.5726774429004 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1374.7288707011307, "y": 1098.0152607659238 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1379.447174184756, "y": 1101.4134236786176 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1384.2010412850896, "y": 1104.7722379360862 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1388.9906399002316, "y": 1108.096775293434 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1393.816137928282, "y": 1111.3921075057656 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1401.1175237518842, "y": 1116.2935063613058 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1410.9859310626343, "y": 1122.7698009771266 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1421.0009581908175, "y": 1129.220566604764 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1431.163948321234, "y": 1135.6863772850538 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 1446.6698872422676, "y": 1145.4874984741987 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 1457.2339374385072, "y": 1152.1895371589367 }, { + "turnPoint": true, "type": "VSAPoint", "x": 1457.2339374385072, "y": 1152.1895371589367 diff --git a/src/test/ValentinaTest/share/smart_pattern_#145/output.json b/src/test/ValentinaTest/share/smart_pattern_#145/output.json index e839d1453..2cf6fed98 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#145/output.json +++ b/src/test/ValentinaTest/share/smart_pattern_#145/output.json @@ -5,16 +5,86 @@ "x": 1511.8305390389505, "y": 1142.0669893384386 }, + { + "type": "QPointF", + "x": 1485.635670561508, + "y": 1177.3374759590408 + }, + { + "type": "QPointF", + "x": 1481.8980029039813, + "y": 1182.4480921288998 + }, + { + "type": "QPointF", + "x": 1478.1845563298384, + "y": 1187.6246331851905 + }, { "type": "QPointF", "x": 1474.443800428981, "y": 1192.9355590942193 }, + { + "type": "QPointF", + "x": 1470.6777880244517, + "y": 1198.3775321922988 + }, + { + "type": "QPointF", + "x": 1466.8880096235785, + "y": 1203.947970452923 + }, + { + "type": "QPointF", + "x": 1463.0757992793317, + "y": 1209.6444648458032 + }, + { + "type": "QPointF", + "x": 1459.2424080962357, + "y": 1215.4646738216948 + }, + { + "type": "QPointF", + "x": 1455.3890267403601, + "y": 1221.4062942834362 + }, { "type": "QPointF", "x": 1451.516795835868, "y": 1227.4670510358721 }, + { + "type": "QPointF", + "x": 1447.626812458377, + "y": 1233.6446919466928 + }, + { + "type": "QPointF", + "x": 1443.720134985473, + "y": 1239.9369852055165 + }, + { + "type": "QPointF", + "x": 1439.7977870658253, + "y": 1246.3417174679073 + }, + { + "type": "QPointF", + "x": 1435.8607610140382, + "y": 1252.8566924224963 + }, + { + "type": "QPointF", + "x": 1431.9100207787073, + "y": 1259.479729587496 + }, + { + "type": "QPointF", + "x": 1427.9465045676798, + "y": 1266.2086632488194 + }, { "type": "QPointF", "x": 1423.971127185616, @@ -22,54 +92,194 @@ }, { "type": "QPointF", - "x": 1399.5074247356981, - "y": 1317.1209284899264 + "x": 1419.9847821241096, + "y": 1279.9756253399257 + }, + { + "type": "QPointF", + "x": 1415.9883434361075, + "y": 1287.0093878809973 + }, + { + "type": "QPointF", + "x": 1411.9826674206822, + "y": 1294.1405135510963 + }, + { + "type": "QPointF", + "x": 1407.9685941402026, + "y": 1301.3668973928065 + }, + { + "type": "QPointF", + "x": 1403.9469487888496, + "y": 1308.6864443906716 + }, + { + "type": "QPointF", + "x": 1399.399546049501, + "y": 1317.0517082823758 }, { "type": "QPointF", "x": 1394.9047203078887, "y": 1324.2941763635806 }, + { + "type": "QPointF", + "x": 1389.2882428542102, + "y": 1334.8131715116153 + }, + { + "type": "QPointF", + "x": 1381.1580568935187, + "y": 1350.3255310687416 + }, { "type": "QPointF", "x": 1373.0312586255293, "y": 1366.134768101013 }, + { + "type": "QPointF", + "x": 1364.9011197371076, + "y": 1382.248169989165 + }, + { + "type": "QPointF", + "x": 1356.7734617260708, + "y": 1398.6494224531184 + }, { "type": "QPointF", "x": 1348.6540071995473, "y": 1415.3222985868726 }, + { + "type": "QPointF", + "x": 1340.548393946683, + "y": 1432.2506485621097 + }, + { + "type": "QPointF", + "x": 1332.462186763022, + "y": 1449.4183905533587 + }, { "type": "QPointF", "x": 1324.4008874285173, "y": 1466.8095027211164 }, + { + "type": "QPointF", + "x": 1316.3699431626962, + "y": 1484.4080161090405 + }, + { + "type": "QPointF", + "x": 1308.3747538190387, + "y": 1502.1980083292153 + }, { "type": "QPointF", "x": 1300.4206780315894, "y": 1520.1635979254643 }, + { + "type": "QPointF", + "x": 1292.5130384874255, + "y": 1538.2889393183393 + }, + { + "type": "QPointF", + "x": 1284.6571264677589, + "y": 1556.5582182473613 + }, { "type": "QPointF", "x": 1276.8582057747606, "y": 1574.955647636337 }, + { + "type": "QPointF", + "x": 1269.1215161412727, + "y": 1593.4654638160034 + }, + { + "type": "QPointF", + "x": 1261.4522762038084, + "y": 1612.0719230454222 + }, + { + "type": "QPointF", + "x": 1253.8556861059192, + "y": 1630.7592982796727 + }, { "type": "QPointF", "x": 1246.3369297881125, "y": 1649.5118761357044 }, + { + "type": "QPointF", + "x": 1238.9011770113289, + "y": 1668.3139540123352 + }, + { + "type": "QPointF", + "x": 1231.5535851538652, + "y": 1687.1498373227687 + }, + { + "type": "QPointF", + "x": 1224.2993008150895, + "y": 1706.00383679987 + }, { "type": "QPointF", "x": 1217.1434612547464, "y": 1724.8602658355578 }, + { + "type": "QPointF", + "x": 1210.0911956918108, + "y": 1743.7034378151952 + }, + { + "type": "QPointF", + "x": 1203.1476264837095, + "y": 1762.5176634074003 + }, + { + "type": "QPointF", + "x": 1196.3178702034738, + "y": 1781.2872477674036 + }, { "type": "QPointF", "x": 1189.6070386296342, "y": 1799.996487609299 }, + { + "type": "QPointF", + "x": 1183.0202396615216, + "y": 1818.6296680979747 + }, + { + "type": "QPointF", + "x": 1176.5625781703222, + "y": 1837.1710595062436 + }, + { + "type": "QPointF", + "x": 1170.239156794136, + "y": 1855.6049135747708 + }, + { + "type": "QPointF", + "x": 1164.0550766834342, + "y": 1873.9154595034543 + }, { "type": "QPointF", "x": 1162.1667584125148, @@ -85,6 +295,11 @@ "x": 130.11666141732292, "y": 1974.085039370079 }, + { + "type": "QPointF", + "x": 130.11666141732292, + "y": 1879.596850393701 + }, { "type": "QPointF", "x": 130.1166614173228, @@ -95,86 +310,291 @@ "x": 1079.0879675130438, "y": 273.8144485946352 }, + { + "type": "QPointF", + "x": 1226.3369709734334, + "y": 790.1082965813926 + }, { "type": "QPointF", "x": 1229.4775806795108, "y": 800.7472897909822 }, + { + "type": "QPointF", + "x": 1232.6392570694188, + "y": 811.0975831234201 + }, + { + "type": "QPointF", + "x": 1235.8219528919585, + "y": 821.1647300519331 + }, { "type": "QPointF", "x": 1239.0254257080933, "y": 830.9536782912108 }, + { + "type": "QPointF", + "x": 1242.2494190420537, + "y": 840.4694048130996 + }, + { + "type": "QPointF", + "x": 1245.493663968407, + "y": 849.7169201319168 + }, { "type": "QPointF", "x": 1248.7578811507517, "y": 858.7012728551457 }, + { + "type": "QPointF", + "x": 1252.0417833869194, + "y": 867.4275544686762 + }, + { + "type": "QPointF", + "x": 1255.34507871513, + "y": 875.9009043133377 + }, { "type": "QPointF", "x": 1258.6674741334623, "y": 884.1265146950946 }, + { + "type": "QPointF", + "x": 1262.0086799799783, + "y": 892.1096360558338 + }, + { + "type": "QPointF", + "x": 1265.3684150136833, + "y": 899.855582114474 + }, { "type": "QPointF", "x": 1268.7464122249098, "y": 907.3697348705016 }, + { + "type": "QPointF", + "x": 1272.1424253892458, + "y": 914.6575493440613 + }, + { + "type": "QPointF", + "x": 1275.5562363596964, + "y": 921.7245579093054 + }, { "type": "QPointF", "x": 1278.9876630682315, "y": 928.5763740621021 }, + { + "type": "QPointF", + "x": 1282.4365681801235, + "y": 935.2186954502139 + }, + { + "type": "QPointF", + "x": 1285.902868312255, + "y": 941.6573059854875 + }, { "type": "QPointF", "x": 1289.3865436912388, "y": 947.8980768545746 }, + { + "type": "QPointF", + "x": 1292.7382407140394, + "y": 953.6884455269735 + }, + { + "type": "QPointF", + "x": 1296.250341750988, + "y": 959.5497110335621 + }, { "type": "QPointF", "x": 1299.780315474649, "y": 965.2318302565064 }, + { + "type": "QPointF", + "x": 1303.328550340105, + "y": 970.7410416725644 + }, + { + "type": "QPointF", + "x": 1306.8955502192441, + "y": 976.0836497420814 + }, { "type": "QPointF", "x": 1310.4819413838827, "y": 981.2660154521719 }, + { + "type": "QPointF", + "x": 1314.0884779645162, + "y": 986.294545185697 + }, + { + "type": "QPointF", + "x": 1317.716045565642, + "y": 991.1756780492043 + }, { "type": "QPointF", "x": 1321.3656627724156, "y": 995.915871897362 }, + { + "type": "QPointF", + "x": 1325.038480322385, + "y": 1000.5215883444822 + }, + { + "type": "QPointF", + "x": 1328.7357777729121, + "y": 1004.9992771053227 + }, + { + "type": "QPointF", + "x": 1332.4589575919672, + "y": 1009.3553600803242 + }, { "type": "QPointF", "x": 1336.2095366697658, "y": 1013.5962156083782 }, + { + "type": "QPointF", + "x": 1339.9891353575715, + "y": 1017.728163341628 + }, + { + "type": "QPointF", + "x": 1343.7994642161088, + "y": 1021.75745016717 + }, + { + "type": "QPointF", + "x": 1347.6423087768267, + "y": 1025.690237605889 + }, { "type": "QPointF", "x": 1351.519512650729, "y": 1029.5325910170682 }, + { + "type": "QPointF", + "x": 1355.6428483237478, + "y": 1033.4920163368047 + }, + { + "type": "QPointF", + "x": 1359.5918938948407, + "y": 1037.1627770926812 + }, + { + "type": "QPointF", + "x": 1363.5801294996647, + "y": 1040.7603357583191 + }, { "type": "QPointF", "x": 1367.609456714784, "y": 1044.290369247915 }, + { + "type": "QPointF", + "x": 1371.6817508664624, + "y": 1047.758437868316 + }, + { + "type": "QPointF", + "x": 1375.7988432354505, + "y": 1051.169987323625 + }, + { + "type": "QPointF", + "x": 1379.9625045132927, + "y": 1054.5303528391148 + }, + { + "type": "QPointF", + "x": 1384.174429822225, + "y": 1057.8447651485014 + }, { "type": "QPointF", "x": 1388.4362255352653, "y": 1061.118358041136 }, + { + "type": "QPointF", + "x": 1392.7493980541108, + "y": 1064.3561771358068 + }, + { + "type": "QPointF", + "x": 1397.11534462498, + "y": 1067.5631895355064 + }, + { + "type": "QPointF", + "x": 1401.5353462003666, + "y": 1070.7442940206956 + }, + { + "type": "QPointF", + "x": 1406.010562290894, + "y": 1073.9043314560008 + }, + { + "type": "QPointF", + "x": 1410.542027698859, + "y": 1077.0480951134484 + }, { "type": "QPointF", "x": 1415.1306509839035, "y": 1080.1803406514637 }, + { + "type": "QPointF", + "x": 1422.1830579553111, + "y": 1084.9131601922495 + }, + { + "type": "QPointF", + "x": 1431.722893376273, + "y": 1091.1713635004298 + }, + { + "type": "QPointF", + "x": 1441.467170091799, + "y": 1097.4460952890954 + }, { "type": "QPointF", "x": 1451.4518511689084, "y": 1103.7977608991262 }, + { + "type": "QPointF", + "x": 1466.8639288250142, + "y": 1113.5393601634883 + }, { "type": "QPointF", "x": 1511.8305390389505, diff --git a/src/test/ValentinaTest/share/smart_pattern_#184_case1/input.json b/src/test/ValentinaTest/share/smart_pattern_#184_case1/input.json new file mode 100644 index 000000000..8e2494b2c --- /dev/null +++ b/src/test/ValentinaTest/share/smart_pattern_#184_case1/input.json @@ -0,0 +1,78 @@ +{ + "vector": [ + { + "turnPoint": true, + "type": "VSAPoint", + "x": 589.0064206717155, + "y": 782.4496746376101 + }, + { + "turnPoint": true, + "type": "VSAPoint", + "x": 597.0841810534489, + "y": 666.714504931189 + }, + { + "turnPoint": true, + "type": "VSAPoint", + "x": 658.8439751213995, + "y": 829.6285575700094 + }, + { + "turnPoint": true, + "type": "VSAPoint", + "x": 668.7920249877046, + "y": 713.62278781496 + }, + { + "turnPoint": true, + "type": "VSAPoint", + "x": 681.6851838985511, + "y": 749.9461773118659 + }, + { + "saAfter": 37.795275590551185, + "turnPoint": true, + "type": "VSAPoint", + "x": 878.9287903098608, + "y": 721.4082798757745 + }, + { + "saAfter": 37.795275590551185, + "saBefore": 37.795275590551185, + "turnPoint": true, + "type": "VSAPoint", + "x": 892.8692692510483, + "y": 929.4298158977432 + }, + { + "saAfter": 37.795275590551185, + "saBefore": 37.795275590551185, + "turnPoint": true, + "type": "VSAPoint", + "x": 669.9070856247861, + "y": 1038.0664013590958 + }, + { + "saAfter": 37.795275590551185, + "saBefore": 37.795275590551185, + "turnPoint": true, + "type": "VSAPoint", + "x": 425.2968981082859, + "y": 997.079828054777 + }, + { + "saBefore": 37.795275590551185, + "turnPoint": true, + "type": "VSAPoint", + "x": 379.70536635128207, + "y": 793.6376774711312 + }, + { + "turnPoint": true, + "type": "VSAPoint", + "x": 580.6895517317213, + "y": 764.5585799377853 + } + ] +} diff --git a/src/test/ValentinaTest/share/smart_pattern_#184_case1/output.json b/src/test/ValentinaTest/share/smart_pattern_#184_case1/output.json new file mode 100644 index 000000000..46ce36176 --- /dev/null +++ b/src/test/ValentinaTest/share/smart_pattern_#184_case1/output.json @@ -0,0 +1,74 @@ +{ + "vector": [ + { + "type": "QPointF", + "x": 588.3649734856448, + "y": 778.9784872844474 + }, + { + "type": "QPointF", + "x": 596.2541170835045, + "y": 665.9457492496151 + }, + { + "type": "QPointF", + "x": 597.6571516077917, + "y": 665.7389557340655 + }, + { + "type": "QPointF", + "x": 658.2963192477988, + "y": 825.696946170516 + }, + { + "type": "QPointF", + "x": 667.9744279101468, + "y": 712.8390031327132 + }, + { + "type": "QPointF", + "x": 669.3849599515413, + "y": 712.6577947901065 + }, + { + "type": "QPointF", + "x": 682.2742197194734, + "y": 748.9701993850377 + }, + { + "type": "QPointF", + "x": 916.3859644867284, + "y": 715.0980902591248 + }, + { + "type": "QPointF", + "x": 932.2799599616667, + "y": 952.2702395211089 + }, + { + "type": "QPointF", + "x": 675.5894289258003, + "y": 1077.340699266617 + }, + { + "type": "QPointF", + "x": 393.97611715611157, + "y": 1030.1539293143521 + }, + { + "type": "QPointF", + "x": 341.99572232904575, + "y": 798.2028869986758 + }, + { + "type": "QPointF", + "x": 581.2124761447806, + "y": 763.5921672415425 + }, + { + "type": "QPointF", + "x": 588.3649734856448, + "y": 778.9784872844474 + } + ] +} diff --git a/src/test/ValentinaTest/share/smart_pattern_#184_case2/input.json b/src/test/ValentinaTest/share/smart_pattern_#184_case2/input.json new file mode 100644 index 000000000..4c7512592 --- /dev/null +++ b/src/test/ValentinaTest/share/smart_pattern_#184_case2/input.json @@ -0,0 +1,532 @@ +{ + "vector": [ + { + "curvePoint": true, + "turnPoint": true, + "type": "VSAPoint", + "x": 224.6048503937008, + "y": 216.60472440944795 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 245.9831330966033, + "y": 220.17257958063607 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 291.46679343041006, + "y": 227.0461179118596 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 364.52518055401504, + "y": 236.70247215334314 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 469.1325076000883, + "y": 247.86857553312865 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 577.5743326676327, + "y": 256.7058416346813 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 658.7810280868638, + "y": 261.4134166599198 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 711.933684463613, + "y": 263.6292804346774 + }, + { + "curvePoint": true, + "saAfter": 26.45669291338583, + "turnPoint": true, + "type": "VSAPoint", + "x": 713.3613080810678, + "y": 263.64411171143365 + }, + { + "saAfter": 26.45669291338583, + "turnPoint": true, + "type": "VSAPoint", + "x": 713.3613080810678, + "y": 263.64411171143365 + }, + { + "curvePoint": true, + "saAfter": 26.45669291338583, + "turnPoint": true, + "type": "VSAPoint", + "x": 713.3613080810678, + "y": 263.64411171143365 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 713.3035236769979, + "y": 279.12505681465785 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 711.5329324608736, + "y": 308.3182431387012 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 707.8596291446635, + "y": 335.45485602052304 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 702.376185716696, + "y": 360.60808570086215 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 695.1751741652995, + "y": 383.85112242045693 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 686.3491664788025, + "y": 405.257156420046 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 675.9907346455333, + "y": 424.8993779403678 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 664.1924506538203, + "y": 442.8509772221611 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 651.0468864919919, + "y": 459.1851445061642 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 636.6466141483768, + "y": 473.97507003311586 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 621.084205611303, + "y": 487.2939440437546 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 604.452232869099, + "y": 499.214956778819 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 586.8432679100935, + "y": 509.8112984790474 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 568.3498827226143, + "y": 519.1561593851786 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 549.0646492949903, + "y": 527.322729737951 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 529.0801396155499, + "y": 534.3841997781034 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 508.4889256726213, + "y": 540.4137597463741 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 487.383579454533, + "y": 545.4845998835017 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 465.8566729496133, + "y": 549.669910430225 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 444.00077814619067, + "y": 553.0428816272822 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 410.8147788967925, + "y": 556.8179762623377 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 366.2399233588707, + "y": 559.5681654473192 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 322.01541041684857, + "y": 560.386421566931 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 278.88181597735314, + "y": 559.8582665470818 + }, + { + "angle": 6, + "curvePoint": true, + "saAfter": 26.45669291338583, + "saBefore": 26.45669291338583, + "type": "VSAPoint", + "x": 217.47911152245808, + "y": 557.807668134329 + }, + { + "curvePoint": true, + "saBefore": 26.45669291338583, + "turnPoint": true, + "type": "VSAPoint", + "x": 180.83408330506586, + "y": 556.5191060511406 + }, + { + "saBefore": 26.45669291338583, + "turnPoint": true, + "type": "VSAPoint", + "x": 180.83408330506586, + "y": 556.5191060511406 + }, + { + "curvePoint": true, + "saBefore": 26.45669291338583, + "turnPoint": true, + "type": "VSAPoint", + "x": 180.83408330506586, + "y": 556.5191060511406 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 182.38398581146782, + "y": 532.9852435860578 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 185.44048157061547, + "y": 494.0257283032287 + }, + { + "curvePoint": true, + "turnPoint": true, + "type": "VSAPoint", + "x": 186.8095748031496, + "y": 481.1716535433062 + }, + { + "turnPoint": true, + "type": "VSAPoint", + "x": 186.8095748031496, + "y": 481.1716535433062 + }, + { + "curvePoint": true, + "turnPoint": true, + "type": "VSAPoint", + "x": 186.8095748031496, + "y": 481.1716535433062 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 187.15428302912747, + "y": 476.5477474703052 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 187.87944258838428, + "y": 467.3298344951331 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 188.64644719709133, + "y": 458.15010131230974 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 189.4541338782364, + "y": 449.01110435222677 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 190.30133965480724, + "y": 439.91540004527576 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 191.18690154979166, + "y": 430.86554482184846 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 192.1096565861774, + "y": 421.86409511233677 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 193.0684417869523, + "y": 412.9136073471322 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 194.06209417510402, + "y": 404.0166379566264 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 195.0894507736204, + "y": 395.17574337121135 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 196.14934860548925, + "y": 386.3934800212787 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 197.24062469369824, + "y": 377.67240433722 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 198.93027019270912, + "y": 364.70266253339594 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 201.28713618302152, + "y": 347.6583143252233 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 203.74858161247448, + "y": 330.9047325275976 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 206.30530266497027, + "y": 314.4623685836526 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 208.94799552441106, + "y": 298.35167393652205 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 211.66735637469895, + "y": 282.5931000293396 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 214.45408139973614, + "y": 267.20709830523896 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 217.29886678342484, + "y": 252.2141202073538 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 220.19240870966712, + "y": 237.63461717881785 + }, + { + "angle": 6, + "curvePoint": true, + "type": "VSAPoint", + "x": 223.1254033623652, + "y": 223.4890406627648 + }, + { + "curvePoint": true, + "turnPoint": true, + "type": "VSAPoint", + "x": 224.6048503937008, + "y": 216.60472440944795 + }, + { + "turnPoint": true, + "type": "VSAPoint", + "x": 224.6048503937008, + "y": 216.60472440944795 + } + ] +} diff --git a/src/test/ValentinaTest/share/smart_pattern_#184_case2/output.json b/src/test/ValentinaTest/share/smart_pattern_#184_case2/output.json new file mode 100644 index 000000000..4ae1978a2 --- /dev/null +++ b/src/test/ValentinaTest/share/smart_pattern_#184_case2/output.json @@ -0,0 +1,309 @@ +{ + "vector": [ + { + "type": "QPointF", + "x": 195.15567853216373, + "y": 173.75248244594135 + }, + { + "type": "QPointF", + "x": 251.8496589775841, + "y": 182.60601155627035 + }, + { + "type": "QPointF", + "x": 296.85954307337846, + "y": 189.6349115552444 + }, + { + "type": "QPointF", + "x": 369.007905102917, + "y": 199.17098494982014 + }, + { + "type": "QPointF", + "x": 472.6737981640372, + "y": 210.2365968105307 + }, + { + "type": "QPointF", + "x": 580.2032976753702, + "y": 218.99951462712536 + }, + { + "type": "QPointF", + "x": 660.6187507187317, + "y": 223.66122110878825 + }, + { + "type": "QPointF", + "x": 714.5017169480079, + "y": 225.7839525376434 + }, + { + "type": "QPointF", + "x": 739.9503605644416, + "y": 228.2332063215173 + }, + { + "type": "QPointF", + "x": 739.7600322895237, + "y": 279.22380876899564 + }, + { + "type": "QPointF", + "x": 737.8818342069875, + "y": 310.89705814643605 + }, + { + "type": "QPointF", + "x": 733.9350112494886, + "y": 340.05430368020205 + }, + { + "type": "QPointF", + "x": 727.9838826838848, + "y": 367.3528626302937 + }, + { + "type": "QPointF", + "x": 720.0917296872077, + "y": 392.8267284322239 + }, + { + "type": "QPointF", + "x": 710.3329330819713, + "y": 416.4950889579415 + }, + { + "type": "QPointF", + "x": 698.798965618762, + "y": 438.3664250411599 + }, + { + "type": "QPointF", + "x": 685.6020167016862, + "y": 458.446153488792 + }, + { + "type": "QPointF", + "x": 670.8743765270159, + "y": 476.746146958088 + }, + { + "type": "QPointF", + "x": 654.7631831372755, + "y": 493.2932888939297 + }, + { + "type": "QPointF", + "x": 637.4220853257717, + "y": 508.1344297370945 + }, + { + "type": "QPointF", + "x": 619.0025505856497, + "y": 521.3366825073729 + }, + { + "type": "QPointF", + "x": 599.6472647992664, + "y": 532.9838873473826 + }, + { + "type": "QPointF", + "x": 580.2818460317859, + "y": 542.7693940535123 + }, + { + "type": "QPointF", + "x": 559.3811987652081, + "y": 551.6851066117657 + }, + { + "type": "QPointF", + "x": 537.8944645780342, + "y": 559.3294252805705 + }, + { + "type": "QPointF", + "x": 515.9238296398861, + "y": 565.8042855958079 + }, + { + "type": "QPointF", + "x": 493.56426020701815, + "y": 571.2092142702913 + }, + { + "type": "QPointF", + "x": 470.9058986086158, + "y": 575.6403151278347 + }, + { + "type": "QPointF", + "x": 448.036009293878, + "y": 579.1900327053227 + }, + { + "type": "QPointF", + "x": 413.8050913239095, + "y": 583.1051334213272 + }, + { + "type": "QPointF", + "x": 367.86915615355093, + "y": 585.9746457204247 + }, + { + "type": "QPointF", + "x": 322.5048368658643, + "y": 586.8385871052027 + }, + { + "type": "QPointF", + "x": 278.55788777337693, + "y": 586.312976343862 + }, + { + "type": "QPointF", + "x": 216.5960588135848, + "y": 584.2496199878984 + }, + { + "type": "QPointF", + "x": 141.30500035849337, + "y": 581.6021751325729 + }, + { + "type": "QPointF", + "x": 144.6704098156269, + "y": 530.5014878469375 + }, + { + "type": "QPointF", + "x": 147.7609847369758, + "y": 491.0696539926844 + }, + { + "type": "QPointF", + "x": 147.82560243889475, + "y": 490.3374055310549 + }, + { + "type": "QPointF", + "x": 149.50392925590208, + "y": 473.22120820648 + }, + { + "type": "QPointF", + "x": 150.2005794295075, + "y": 464.36569414414555 + }, + { + "type": "QPointF", + "x": 150.98241475569833, + "y": 455.00311589457493 + }, + { + "type": "QPointF", + "x": 151.80560259391274, + "y": 445.68380077440054 + }, + { + "type": "QPointF", + "x": 152.6689554001555, + "y": 436.4101878867955 + }, + { + "type": "QPointF", + "x": 153.5712882007978, + "y": 427.1847175582135 + }, + { + "type": "QPointF", + "x": 154.51141851569164, + "y": 418.00983111504837 + }, + { + "type": "QPointF", + "x": 155.4881662934569, + "y": 408.88797065230546 + }, + { + "type": "QPointF", + "x": 156.50035385891144, + "y": 399.82157879320533 + }, + { + "type": "QPointF", + "x": 157.54680587271017, + "y": 390.8130984383848 + }, + { + "type": "QPointF", + "x": 158.62634930339635, + "y": 381.8649725032467 + }, + { + "type": "QPointF", + "x": 159.73781341212927, + "y": 372.9796436417701 + }, + { + "type": "QPointF", + "x": 161.45169639136878, + "y": 359.82010554108183 + }, + { + "type": "QPointF", + "x": 163.8481003157607, + "y": 342.4813026103761 + }, + { + "type": "QPointF", + "x": 166.3547364853786, + "y": 325.4108082856301 + }, + { + "type": "QPointF", + "x": 168.95883039150078, + "y": 308.6551432829877 + }, + { + "type": "QPointF", + "x": 171.65116175672443, + "y": 292.2337455394885 + }, + { + "type": "QPointF", + "x": 174.42255615162088, + "y": 276.1659923354588 + }, + { + "type": "QPointF", + "x": 177.26389081868388, + "y": 260.47118103208635 + }, + { + "type": "QPointF", + "x": 180.1661026452782, + "y": 245.16850565456124 + }, + { + "type": "QPointF", + "x": 183.1201989181002, + "y": 230.27702802640368 + }, + { + "type": "QPointF", + "x": 186.11727175090903, + "y": 215.815641703057 + }, + { + "type": "QPointF", + "x": 195.15567853216373, + "y": 173.75248244594135 + } + ] +} diff --git a/src/test/ValentinaTest/share/smart_pattern_#36/input.json b/src/test/ValentinaTest/share/smart_pattern_#36/input.json index c884f25b1..41f34207e 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#36/input.json +++ b/src/test/ValentinaTest/share/smart_pattern_#36/input.json @@ -1,710 +1,848 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", - "x": -188.23334010667102, - "y": 21597.251791493014 + "x": -188.2197509445001, + "y": 21597.274895519862 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -188.0288159203024, - "y": 21597.69546369572 + "x": -188.01561739956534, + "y": 21597.717710460252 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -190.1962009592845, - "y": 21592.613481716297 + "x": -190.1830024385476, + "y": 21592.63572848083 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -192.78179634632448, - "y": 21582.00375313917 + "x": -192.7685978255878, + "y": 21582.0259999037 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -193.25596410665446, - "y": 21571.14352592585 + "x": -193.2427655859181, + "y": 21571.165772690387 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -191.60490646516234, - "y": 21560.348821082735 + "x": -191.59170794442645, + "y": 21560.37106784727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -189.88869289465669, - "y": 21555.097277526158 + "x": -189.87549437392107, + "y": 21555.119524290694 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -187.82776163364855, - "y": 21549.97120094815 + "x": -187.81456311291325, + "y": 21549.993447712688 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -182.15384264181108, - "y": 21540.64069789316 + "x": -182.14064412107635, + "y": 21540.662944657695 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -174.80978957281837, - "y": 21532.62607034666 + "x": -174.79659105208418, + "y": 21532.648317111198 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -168.31266532018316, - "y": 21527.712497791887 + "x": -168.3247259188584, + "y": 21527.751493379557 }, { + "turnPoint": true, "type": "VSAPoint", - "x": -168.31266532018316, - "y": 21527.712497791887 + "x": -168.3247259188584, + "y": 21527.751493379557 }, { + "turnPoint": true, "type": "VSAPoint", "x": -128.74015748031496, "y": 21501.488243584587 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -128.74015748031496, "y": 21501.488243584587 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -120.33246606279232, "y": 21514.123269165208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -104.47337041123777, "y": 21539.200423564977 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -89.75071568383099, "y": 21564.146905965034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -76.15216444052632, "y": 21589.074720936558 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -63.665379241278075, "y": 21614.095873050734 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -52.278022646040554, "y": 21639.32236687874 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -41.977757214768076, "y": 21664.866206991763 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -32.752245507414955, "y": 21690.839397960975 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -28.582677165354333, "y": 21704.04689134986 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -20.859019636473, "y": 21729.356389467157 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -6.6559976186818295, "y": 21779.91855500826 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2.3491950393391323, "y": 21817.84792880411 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 7.419848382114216, "y": 21843.158072724742 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 11.54949295787923, "y": 21868.501152615463 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 14.60610066081589, "y": 21893.88879293631 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 15.63779527559055, "y": 21906.60553911513 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 17.326926706217673, "y": 21931.92814003164 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 19.578089601275515, "y": 21982.58857656685 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 20.500199521052405, - "y": 22010.688342216938 + "x": 20.49987345403598, + "y": 22010.67814908247 }, { + "turnPoint": true, "type": "VSAPoint", - "x": 20.500199521052405, - "y": 22010.688342216938 + "x": 20.49987345403598, + "y": 22010.67814908247 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 20.500199521052405, - "y": 22010.688342216938 + "x": 20.49987345403598, + "y": 22010.67814908247 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 21.970984779797938, "y": 22058.568844072717 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 24.330708661417322, "y": 22109.1641868804 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 25.629921259842504, "y": 22134.484017851057 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 27.31299212598423, "y": 22185.123679792378 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 28.818897637795267, "y": 22261.083172704355 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 22311.722834645672 }, { + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 22311.722834645672 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 30, "y": 22311.722834645672 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 28.81889763779528, "y": 22362.36249658699 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 27.312992125984252, "y": 22438.321989498967 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 25.629921259842515, "y": 22488.961651440288 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 24.330708661417322, "y": 22514.281482410945 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 21.970984779797945, "y": 22564.876825218627 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 20.500199521052405, - "y": 22612.757327074407 + "x": 20.49987345403598, + "y": 22612.767520208876 }, { + "turnPoint": true, "type": "VSAPoint", - "x": 20.500199521052405, - "y": 22612.757327074407 + "x": 20.49987345403598, + "y": 22612.767520208876 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 20.500199521052405, - "y": 22612.757327074407 + "x": 20.49987345403598, + "y": 22612.767520208876 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 19.578089601275533, "y": 22640.857092724495 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 17.32692670621769, "y": 22691.517529259705 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 15.63779527559055, "y": 22716.840130176213 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 14.606100660815876, "y": 22729.556876355033 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 11.549492957879199, "y": 22754.94451667588 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 7.419848382114184, "y": 22780.287596566603 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 2.3491950393391043, "y": 22805.597740487236 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -6.655997618681845, "y": 22843.527114283086 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -20.859019636473, "y": 22894.089279824188 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -28.582677165354333, "y": 22919.398777941486 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -32.75224550741497, "y": 22932.60627133037 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -41.97775721476809, "y": 22958.57946229958 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -52.27802264604057, "y": 22984.123302412605 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -63.66537924127808, "y": 23009.34979624061 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -76.15216444052632, "y": 23034.370948354786 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -89.75071568383099, "y": 23059.29876332631 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -104.47337041123777, "y": 23084.245245726368 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -120.33246606279229, "y": 23109.322400126137 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -128.74015748031496, "y": 23121.957425706758 }, { + "turnPoint": true, "type": "VSAPoint", "x": -128.74015748031496, "y": 23121.957425706758 }, { + "turnPoint": true, "type": "VSAPoint", - "x": -168.31266532018316, - "y": 23095.733171499458 + "x": -168.3247259188584, + "y": 23095.694175911787 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -168.31266532018316, - "y": 23095.733171499458 + "x": -168.3247259188584, + "y": 23095.694175911787 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -171.93283235584602, - "y": 23093.234403464365 + "x": -171.91904332036037, + "y": 23093.212618926584 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -179.8307780091592, - "y": 23085.69291167279 + "x": -179.8170903233262, + "y": 23085.671233276455 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -186.08553237448535, - "y": 23076.802050183687 + "x": -186.0719641726788, + "y": 23076.780455846016 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -190.51508878378908, - "y": 23066.82053356537 + "x": -190.5016547235267, + "y": 23066.798998757557 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -191.90111533958498, - "y": 23061.472353582154 + "x": -191.88775315357267, + "y": 23061.450837401684 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -192.9291728004844, - "y": 23056.043983973945 + "x": -192.9158835664266, + "y": 23056.022481610064 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -193.18122374328198, - "y": 23045.12665305894 + "x": -193.16808122759502, + "y": 23045.10515408338 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -191.3172145200989, - "y": 23034.417085382996 + "x": -191.30421593083986, + "y": 23034.39556135793 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -188.23334010667102, - "y": 23026.19387779833 + "x": -188.2197509445001, + "y": 23026.170773771482 }, { + "turnPoint": true, "type": "VSAPoint", - "x": -188.23334010667102, - "y": 23026.19387779833 + "x": -188.2197509445001, + "y": 23026.170773771482 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -188.23334010667102, - "y": 23026.19387779833 + "x": -188.2197509445001, + "y": 23026.170773771482 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -174.98561803383961, - "y": 22997.75607286171 + "x": -174.97650989187352, + "y": 22997.74294951599 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -153.44798018734235, - "y": 22947.63768649724 + "x": -153.4456844728558, + "y": 22947.635922102272 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -138.25149685012127, - "y": 22905.438343816088 + "x": -138.25198764509906, + "y": 22905.440673130528 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -130.36074869016556, - "y": 22879.905308764373 + "x": -130.36153131488754, + "y": 22879.9080195383 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -124.41592709594758, - "y": 22859.97405523269 + "x": -124.41644069342138, + "y": 22859.975834178083 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -112.95809590602803, - "y": 22818.998769537815 + "x": -112.95827933369726, + "y": 22818.999404875452 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -103.03301701424698, - "y": 22776.40775012916 + "x": -103.03305369978084, + "y": 22776.407877196692 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -97.38277143573882, - "y": 22743.14921078075 + "x": -97.38277602143054, + "y": 22743.149226664187 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -94.62664819253418, "y": 22720.34981812865 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -93.66658986354132, "y": 22708.71041822326 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -90.28950709466001, "y": 22661.23204514134 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -86.63178802205015, "y": 22586.936959736497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -85.34331850360309, "y": 22536.532014248543 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -85.22040001399614, "y": 22511.20691337363 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -85.09747605487335, "y": 22485.854069677924 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -83.94175824927609, "y": 22435.343800520066 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -81.21332413858126, "y": 22360.427969273227 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -79.60629921259843, "y": 22311.722834645672 }, { + "turnPoint": true, "type": "VSAPoint", "x": -79.60629921259843, "y": 22311.722834645672 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": -79.60629921259843, "y": 22311.722834645672 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -81.21332413858124, "y": 22263.017700018117 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -83.94175824927609, "y": 22188.10186877128 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -85.09747605487335, "y": 22137.59159961342 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -85.22040001399614, "y": 22112.238755917715 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -85.34331850360307, "y": 22086.9136550428 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -86.63178802205015, "y": 22036.508709554848 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -90.28950709466001, "y": 21962.213624150005 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -93.66658986354132, "y": 21914.735251068083 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": -94.62664819253415, "y": 21903.095851162696 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -97.38277143573879, - "y": 21880.296458510595 + "x": -97.38277602143052, + "y": 21880.296442627157 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -103.03301701424697, - "y": 21847.037919162183 + "x": -103.03305369978081, + "y": 21847.037792094652 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -112.95809590602803, - "y": 21804.44689975353 + "x": -112.95827933369728, + "y": 21804.446264415892 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -124.41592709594758, - "y": 21763.471614058653 + "x": -124.41644069342138, + "y": 21763.46983511326 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -130.36074869016556, - "y": 21743.54036052697 + "x": -130.36153131488754, + "y": 21743.537649753045 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -138.2514968501212, - "y": 21718.007325475257 + "x": -138.251987645099, + "y": 21718.004996160817 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -153.4479801873423, - "y": 21675.807982794104 + "x": -153.4456844728558, + "y": 21675.809747189072 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": -174.98561803383961, - "y": 21625.689596429635 + "x": -174.97650989187355, + "y": 21625.702719775356 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": -188.23334010667102, - "y": 21597.251791493014 + "x": -188.2197509445001, + "y": 21597.274895519862 } ] } diff --git a/src/test/ValentinaTest/share/smart_pattern_#36/output.json b/src/test/ValentinaTest/share/smart_pattern_#36/output.json index dc94f7c47..22310cfc0 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#36/output.json +++ b/src/test/ValentinaTest/share/smart_pattern_#36/output.json @@ -2,123 +2,138 @@ "vector": [ { "type": "QPointF", - "x": -216.57559446259248, - "y": 21608.014646112726 + "x": -216.5619319959752, + "y": 21608.037933003514 }, { "type": "QPointF", - "x": -222.82601779268137, - "y": 21587.061010495858 + "x": -218.62550327190482, + "y": 21601.12031546093 }, { "type": "QPointF", - "x": -223.5926781800107, - "y": 21569.501600729036 + "x": -222.8128138319175, + "y": 21587.083381857487 }, { "type": "QPointF", - "x": -221.11763913635318, - "y": 21553.31966057138 + "x": -223.57947965927445, + "y": 21569.523847493572 }, { "type": "QPointF", - "x": -218.31711709775252, - "y": 21544.750177309146 + "x": -221.1044406156176, + "y": 21553.341907335915 }, { "type": "QPointF", - "x": -214.95408378080705, - "y": 21536.38543140849 + "x": -218.30391857701744, + "y": 21544.772424073682 }, { "type": "QPointF", - "x": -206.44852305285053, - "y": 21522.39842164138 + "x": -214.9408852600724, + "y": 21536.40767817303 }, { "type": "QPointF", - "x": -194.6943396034587, - "y": 21509.57098131993 + "x": -206.43532453211654, + "y": 21522.420668405917 }, { "type": "QPointF", - "x": -120.43942238262103, - "y": 21459.383110402876 + "x": -194.68594981181545, + "y": 21509.5984758914 }, { "type": "QPointF", - "x": -94.77769419281123, - "y": 21497.96212245061 + "x": -120.44725920945433, + "y": 21459.371333268988 }, { "type": "QPointF", - "x": -78.43377590118915, - "y": 21523.83264733643 + "x": -95.16002058668977, + "y": 21497.372835821283 }, { "type": "QPointF", - "x": -63.20717048632591, - "y": 21549.666946130616 + "x": -78.91859854125667, + "y": 21523.03927685038 }, { "type": "QPointF", - "x": -49.09778488238641, - "y": 21575.57325526863 + "x": -63.711121173782374, + "y": 21548.779129736486 }, { "type": "QPointF", - "x": -36.10682445695674, - "y": 21601.655813297744 + "x": -49.60861924302124, + "y": 21574.59476110214 }, { "type": "QPointF", - "x": -24.23582343635048, - "y": 21628.0146663193 + "x": -36.61099968313795, + "y": 21600.594407382807 }, { "type": "QPointF", - "x": -13.48549246436568, - "y": 21654.745936350544 + "x": -24.719467861719217, + "y": 21626.88230712575 }, { "type": "QPointF", - "x": -3.9187457009163325, - "y": 21681.736743547735 + "x": -13.935558005078, + "y": 21653.558506432324 }, { "type": "QPointF", - "x": 8.250543876860249, - "y": 21721.17944990996 + "x": -4.259980757012666, + "y": 21680.719127319757 }, { "type": "QPointF", - "x": 22.762455328454042, - "y": 21772.9340253423 + "x": 0.2508226411442891, + "y": 21694.94423693662 }, { "type": "QPointF", - "x": 31.996304179796386, - "y": 21811.90840457464 + "x": 8.060564966120161, + "y": 21720.531047838005 }, { "type": "QPointF", - "x": 37.262465441143874, - "y": 21838.295230394753 + "x": 22.453565894651444, + "y": 21771.74161545106 }, { "type": "QPointF", - "x": 41.568922145354556, - "y": 21864.886889244302 + "x": 31.76764798647502, + "y": 21810.86339913815 }, { "type": "QPointF", - "x": 44.74330398553326, - "y": 21891.4437971853 + "x": 37.06695752257146, + "y": 21837.21854849527 }, { "type": "QPointF", - "x": 47.53333931071059, - "y": 21930.58587849783 + "x": 41.39211001690889, + "y": 21863.638310285474 + }, + { + "type": "QPointF", + "x": 44.62552984829122, + "y": 21890.27452956515 + }, + { + "type": "QPointF", + "x": 45.774998600307924, + "y": 21904.16054336412 + }, + { + "type": "QPointF", + "x": 47.496102945402924, + "y": 21929.915720217865 }, { "type": "QPointF", @@ -130,6 +145,11 @@ "x": 52.19222150972855, "y": 22057.617067328072 }, + { + "type": "QPointF", + "x": 54.53409761370315, + "y": 22107.755526433364 + }, { "type": "QPointF", "x": 55.82641527988781, @@ -140,11 +160,26 @@ "x": 57.53252625825923, "y": 22184.119296754725 }, + { + "type": "QPointF", + "x": 59.04917791330391, + "y": 22260.483853989284 + }, + { + "type": "QPointF", + "x": 60.22799967698306, + "y": 22311.017806996333 + }, { "type": "QPointF", "x": 60.22799967698306, "y": 22312.42786229501 }, + { + "type": "QPointF", + "x": 59.04689731477834, + "y": 22363.06752423633 + }, { "type": "QPointF", "x": 57.54327240149289, @@ -155,6 +190,11 @@ "x": 55.84945539211752, "y": 22489.96603447794 }, + { + "type": "QPointF", + "x": 54.527202681462626, + "y": 22515.830926619452 + }, { "type": "QPointF", "x": 52.17437373208378, @@ -167,163 +207,183 @@ }, { "type": "QPointF", - "x": 47.49610294540294, - "y": 22693.52994907348 + "x": 47.5333393107106, + "y": 22692.859790793515 }, { "type": "QPointF", - "x": 44.62552984829121, - "y": 22733.171139726193 + "x": 45.806971514775746, + "y": 22718.852549989988 }, { "type": "QPointF", - "x": 41.39211001690886, - "y": 22759.80735900587 + "x": 44.743303985533245, + "y": 22732.001872106044 }, { "type": "QPointF", - "x": 37.06695752257143, - "y": 22786.227120796073 + "x": 41.56892214535453, + "y": 22758.558780047042 }, { "type": "QPointF", - "x": 31.767647986474977, - "y": 22812.582270153194 + "x": 37.262465441143846, + "y": 22785.15043889659 }, { "type": "QPointF", - "x": 22.45356589465143, - "y": 22851.704053840283 + "x": 31.996304179796358, + "y": 22811.537264716706 }, { "type": "QPointF", - "x": 8.060564966120161, - "y": 22902.91462145334 + "x": 22.762455328454028, + "y": 22850.511643949045 }, { "type": "QPointF", - "x": -4.259980757012681, - "y": 22942.726541971588 + "x": 8.250543876860249, + "y": 22902.266219381385 }, { "type": "QPointF", - "x": -13.935558005078015, - "y": 22969.88716285902 + "x": 0.3369074372388283, + "y": 22928.224119570637 }, { "type": "QPointF", - "x": -24.71946786171923, - "y": 22996.563362165594 + "x": -3.9187457009163467, + "y": 22941.70892574361 }, { "type": "QPointF", - "x": -36.61099968313795, - "y": 23022.851261908538 + "x": -13.485492464365695, + "y": 22968.6997329408 }, { "type": "QPointF", - "x": -49.60861924302124, - "y": 23048.850908189204 + "x": -24.235823436350493, + "y": 22995.431002972044 }, { "type": "QPointF", - "x": -63.711121173782374, - "y": 23074.66653955486 + "x": -36.106824456956744, + "y": 23021.7898559936 }, { "type": "QPointF", - "x": -78.91859854125667, - "y": 23100.406392440964 + "x": -49.09778488238641, + "y": 23047.872414022713 }, { "type": "QPointF", - "x": -95.16002058668974, - "y": 23126.07283347006 + "x": -63.20717048632591, + "y": 23073.77872316073 }, { "type": "QPointF", - "x": -120.31315520567594, - "y": 23163.87280537214 + "x": -78.43377590118915, + "y": 23099.613021954916 }, { "type": "QPointF", - "x": -190.8903779085056, - "y": 23116.939126378154 + "x": -94.7776941928112, + "y": 23125.483546840733 }, { "type": "QPointF", - "x": -202.85525414075397, - "y": 23105.514254664224 + "x": -120.32147815562412, + "y": 23163.885313048773 }, { "type": "QPointF", - "x": -212.52046074145298, - "y": 23091.775583546016 + "x": -190.88189352112775, + "y": 23116.91222732526 }, { "type": "QPointF", - "x": -219.16064384809474, - "y": 23076.8126635822 + "x": -202.84130007309327, + "y": 23105.492885692933 }, { "type": "QPointF", - "x": -221.42236580526438, - "y": 23068.085488732377 + "x": -212.5066913074198, + "y": 23091.75434446697 }, { "type": "QPointF", - "x": -223.09995280587424, - "y": 23059.227460231446 + "x": -219.14707550061067, + "y": 23076.791513742257 }, { "type": "QPointF", - "x": -223.47779299069944, - "y": 23042.861695894528 + "x": -221.40891474243068, + "y": 23068.064369288382 }, { "type": "QPointF", - "x": -220.46264595849237, - "y": 23025.538326035232 + "x": -223.08662078624388, + "y": 23059.20636333339 }, { "type": "QPointF", - "x": -202.6052425243754, - "y": 22985.452196583858 + "x": -223.464680911116, + "y": 23042.840604075805 }, { "type": "QPointF", - "x": -181.58729260253205, - "y": 22936.536448817904 + "x": -220.449740193719, + "y": 23025.517041460582 }, { "type": "QPointF", - "x": -166.93463706180071, - "y": 22895.847269707778 + "x": -202.59617587881118, + "y": 22985.43916638935 }, { "type": "QPointF", - "x": -153.3907628043003, - "y": 22851.331837685506 + "x": -181.58532814357736, + "y": 22936.535530331115 }, { "type": "QPointF", - "x": -142.25531333403683, - "y": 22811.492836099398 + "x": -166.93528268286073, + "y": 22895.85008539496 }, { "type": "QPointF", - "x": -132.6884639750548, - "y": 22770.439070061784 + "x": -159.2497605570011, + "y": 22870.980576471422 }, { "type": "QPointF", - "x": -127.31338834414937, - "y": 22738.800239167223 + "x": -153.39127994770902, + "y": 22851.33362851945 }, { "type": "QPointF", - "x": -124.71329691485195, - "y": 22717.29158364027 + "x": -142.25549338793525, + "y": 22811.493458794812 + }, + { + "type": "QPointF", + "x": -132.688497737423, + "y": 22770.43918203772 + }, + { + "type": "QPointF", + "x": -127.31339193704083, + "y": 22738.800247534535 + }, + { + "type": "QPointF", + "x": -124.71329677158629, + "y": 22717.29158190337 + }, + { + "type": "QPointF", + "x": -123.80047575928783, + "y": 22706.224870138754 }, { "type": "QPointF", @@ -340,6 +400,11 @@ "x": -115.57766364654971, "y": 22536.072259819528 }, + { + "type": "QPointF", + "x": -115.45626434549989, + "y": 22511.06015989004 + }, { "type": "QPointF", "x": -115.33334113373941, @@ -350,11 +415,21 @@ "x": -114.17006699521218, "y": 22434.65215117369 }, + { + "type": "QPointF", + "x": -111.42951163532062, + "y": 22359.3274959115 + }, { "type": "QPointF", "x": -109.85897382113089, "y": 22311.722834645672 }, + { + "type": "QPointF", + "x": -111.43309942417577, + "y": 22264.014800888763 + }, { "type": "QPointF", "x": -114.15794574601546, @@ -365,6 +440,11 @@ "x": -115.32578480080944, "y": 22138.283248959797 }, + { + "type": "QPointF", + "x": -115.4562650928622, + "y": 22112.385355340168 + }, { "type": "QPointF", "x": -115.5776636465497, @@ -382,48 +462,58 @@ }, { "type": "QPointF", - "x": -124.71329691485192, - "y": 21906.154085651073 + "x": -123.82661206016336, + "y": 21916.880499202263 }, { "type": "QPointF", - "x": -127.31338834414935, - "y": 21884.64543012412 + "x": -124.71329677158627, + "y": 21906.154087387975 }, { "type": "QPointF", - "x": -132.68846397505476, - "y": 21853.00659922956 + "x": -127.3133919370408, + "y": 21884.64542175681 }, { "type": "QPointF", - "x": -142.25531333403683, - "y": 21811.952833191946 + "x": -132.68849773742298, + "y": 21853.006487253624 }, { "type": "QPointF", - "x": -153.53513142803976, - "y": 21771.61415466484 + "x": -142.25549338793542, + "y": 21811.952210496533 }, { "type": "QPointF", - "x": -166.9346370618007, - "y": 21727.598399583567 + "x": -153.53564311149657, + "y": 21771.612382564337 }, { "type": "QPointF", - "x": -181.587292602532, - "y": 21686.90922047344 + "x": -159.33637056917476, + "y": 21752.17985541168 }, { "type": "QPointF", - "x": -202.58580499399324, - "y": 21638.045386629867 + "x": -166.93528268286067, + "y": 21727.595583896386 }, { "type": "QPointF", - "x": -216.57559446259248, - "y": 21608.014646112726 + "x": -181.58532814357733, + "y": 21686.91013896023 + }, + { + "type": "QPointF", + "x": -202.57687551409165, + "y": 21638.058131706406 + }, + { + "type": "QPointF", + "x": -216.5619319959752, + "y": 21608.037933003514 } ] } diff --git a/src/test/ValentinaTest/share/smart_pattern_#99/input.json b/src/test/ValentinaTest/share/smart_pattern_#99/input.json index 0142fbc46..2cc34fcd6 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#99/input.json +++ b/src/test/ValentinaTest/share/smart_pattern_#99/input.json @@ -1,2837 +1,3315 @@ { "vector": [ { + "turnPoint": true, "type": "VSAPoint", "x": 198.58635590551182, "y": 353.88472440944884 }, { + "turnPoint": true, "type": "VSAPoint", "x": 195.44059463069686, "y": 323.6609671191231 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 195.44059463069686, "y": 323.6609671191231 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 195.20762078055733, "y": 321.8797222362904 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 194.7976977608299, "y": 318.3158379812819 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 194.45370521825592, "y": 314.7550851910324 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 194.1741996644928, "y": 311.20280258995297 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 193.95773761119779, "y": 307.66432890245505 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 193.80287557002825, "y": 304.1450028529502 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 193.70817005264152, "y": 300.6501631658497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 193.67217757069486, "y": 297.1851485655649 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 193.6934546358456, "y": 293.7552977765071 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 193.77055775975109, "y": 290.3659495230879 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 193.90204345406858, "y": 287.02244252971855 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 194.08646823045552, "y": 283.7301155208104 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 194.32238860056913, "y": 280.494307220775 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 194.6083610760667, "y": 277.3203563540235 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 194.9429421686056, "y": 274.2136016449675 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 195.32468838984317, "y": 271.1793818180183 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 195.7521562514367, "y": 268.2230355975872 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 196.2239022650435, "y": 265.3499017080858 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 196.73848294232093, "y": 262.5653188739253 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 197.29445479492625, "y": 259.87462581951706 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 197.89037433451682, "y": 257.28316126927257 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 198.52479807274992, "y": 254.79626394760317 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 199.1962825212829, "y": 252.41927257892027 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 199.90338419177309, "y": 250.15752588763524 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 200.64465959587778, "y": 248.01636259815945 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 201.41866524525432, "y": 246.0011214349043 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 202.22395765156, "y": 244.11714112228117 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 203.0590933264521, "y": 242.36976038470146 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 203.922628781588, "y": 240.7643179465765 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 204.813120528625, "y": 239.30615253231772 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 205.7291250792205, "y": 238.00060286633655 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 206.66919894503167, "y": 236.8530076730443 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 207.14872345114864, "y": 236.34702646167284 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 207.5437859944171, "y": 235.94921354021335 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 208.38372570939168, "y": 235.16285990819495 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 209.28123047098472, "y": 234.38820159417082 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 210.23384193752233, "y": 233.62587044804485 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 211.23910176733048, "y": 232.8764983197209 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 212.29455161873523, "y": 232.14071705910297 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 213.9609495429977, "y": 231.06201390523137 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 216.34348927529902, "y": 229.67957878907822 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 218.88253894385514, "y": 228.3628804420194 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 221.55843181527422, "y": 227.11697366328622 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 224.3515011561645, "y": 225.94691325210994 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 227.24208023313406, "y": 224.8577540077218 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 230.21050231279122, "y": 223.8545507293532 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 233.23710066174408, "y": 222.9423582162354 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 236.30220854660087, "y": 222.12623126759968 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 239.38615923396975, "y": 221.4112246826773 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 242.4692859904589, "y": 220.8023932606996 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 245.53192208267654, "y": 220.30479180089787 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 248.5544007772309, "y": 219.92347510250346 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 250.04153285045976, "y": 219.78316428693768 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 251.36948934464183, "y": 219.6712363758457 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 254.01441676024405, "y": 219.4921394194099 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 256.63178653618434, "y": 219.3640065157158 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 259.20562650318743, "y": 219.28378590236764 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 261.7199644919781, "y": 219.24842581696987 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 264.15882833328124, "y": 219.25487449712676 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 266.5062458578217, "y": 219.30008018044273 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 268.7462448963241, "y": 219.38099110452202 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 270.8628532795133, "y": 219.4945555069691 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 272.8400988381141, "y": 219.63772162538817 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 274.6620094028513, "y": 219.8074376973837 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 276.3126128044497, "y": 220.00065196055994 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 277.77593687363407, "y": 220.21431265252124 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 279.0360094411292, "y": 220.44536801087196 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 280.0768583376599, "y": 220.69076627321652 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 280.88251139395106, "y": 220.94745567715916 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 281.18135009185187, "y": 221.07936061056466 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 281.948007948733, "y": 221.4519730655319 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 283.45715814901877, "y": 222.24744636182504 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 284.93781861237056, "y": 223.1011271432315 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 286.390554760164, "y": 224.0106925447323 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 287.81593201377444, "y": 224.97381970130846 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 289.21451579457744, "y": 225.9881857479409 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 290.58687152394856, "y": 227.0514678196107 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 291.9335646232631, "y": 228.16134305129876 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 293.2551605138968, "y": 229.31548857798614 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 294.5522246172249, "y": 230.51158153465383 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 295.8253223546231, "y": 231.74729905628277 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 297.0750191474667, "y": 233.02031827785407 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 298.9096728488409, "y": 234.99076971319937 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 301.27544582370706, "y": 237.73274397576768 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 303.5577926051139, "y": 240.58211346776312 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 305.76123656406554, "y": 243.52029526903362 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 307.89030107156583, "y": 246.52870645942727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 309.9495094986187, "y": 249.58876411879191 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 311.9433852162279, "y": 252.6818853269756 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 313.87645159539755, "y": 255.7894871638263 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 316.6781161425151, "y": 260.4413880439845 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 320.23367332226366, "y": 266.52048044786346 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 323.62741382632424, "y": 272.32300280367394 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 326.0852179376047, "y": 276.3871923316866 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 327.69465096539847, "y": 278.94165407240035 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 329.2839849937877, "y": 281.3433501604128 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 330.8577433937766, "y": 283.573697675572 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 332.420449536369, "y": 285.614113697726 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 333.5878491785744, "y": 287.0016527715505 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 334.3651537171393, "y": 287.8619906752309 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 335.14223958754485, "y": 288.6643928130745 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 335.9196722111664, "y": 289.40653632006234 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 336.6980170093795, "y": 290.08609833117526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 337.47783940355964, "y": 290.70075598139437 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 338.2597048150824, "y": 291.2481864057006 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 339.044178665323, "y": 291.726066739075 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 339.8318263756572, "y": 292.13207411649853 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 340.6232133674604, "y": 292.4638856729522 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 341.41890506210814, "y": 292.7191785434169 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 342.2194668809758, "y": 292.8956298628739 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 343.0254642454389, "y": 292.99091676630394 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 343.837462576873, "y": 293.0027163886881 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 344.2461741785104, "y": 292.97295875839563 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 346.88768992531834, "y": 292.73215489623624 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 351.23440304955113, "y": 292.2998320037016 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 354.75073308317246, "y": 291.87195323420866 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 357.7624566402359, "y": 291.38774339320213 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 360.59535033479494, "y": 290.786427286127 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 363.5751907809032, "y": 290.0072297184281 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 368.91293941662684, "y": 288.41318732099745 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 373.8592248347916, "y": 286.8658924179524 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 374.1451674476813, "y": 286.7679914601762 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 374.6964855145127, "y": 286.4934512822858 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 375.22373191009376, "y": 286.12694615697745 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 375.7275832116321, "y": 285.67127715912585 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 376.20871599633546, "y": 285.1292453636056 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 376.66780684141156, "y": 284.50365184529153 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 377.105532324068, "y": 283.7972976790584 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 377.5225690215127, "y": 283.01298393978084 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 377.91959351095335, "y": 282.1535117023336 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 378.2972823695976, "y": 281.2216820415914 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 378.8312468859348, "y": 279.70256407510203 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 379.4787297449376, "y": 277.4383731123447 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 380.06104847049403, "y": 274.9351718041527 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 380.58361568026555, "y": 272.2153687495237 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 381.05184399191415, "y": 269.3013725474557 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 381.4711460231015, "y": 266.21559179694646 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 381.8469343914894, "y": 262.9804350969937 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 382.1846217147396, "y": 259.6183110465954 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 382.48962061051395, "y": 256.1516282447492 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 382.9000628642084, "y": 250.81064235006716 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 383.6045465565004, "y": 239.84679130850327 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 384.2798399454308, "y": 229.06982569734083 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 384.7885816319727, "y": 222.2711764773906 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 385.2351809018886, "y": 217.52609914225883 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 385.57010284557026, "y": 214.55258204486802 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 385.94270039137905, "y": 211.76581798300094 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 386.35838615697674, "y": 209.1882155556554 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 386.8225727600252, "y": 206.84218336182926 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 387.3406728181859, "y": 204.75013000052024 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 387.769865392537, "y": 203.3704060699863 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 388.07442484200965, "y": 202.5358715752801 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 388.3955072526952, "y": 201.7774366256395 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 388.7337892018013, "y": 201.09790229593915 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 388.91035036714914, "y": 200.79206079247547 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 389.0789491499009, "y": 200.52494283760456 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 389.51941679452824, "y": 199.97212551072292 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 390.0783869975469, "y": 199.3987517970538 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 390.74983582944856, "y": 198.8067564896864 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 391.52773936072515, "y": 198.1980743817099 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 392.4060736618683, "y": 197.5746402662135 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 393.8880340930217, "y": 196.61730081685124 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 396.1750001604089, "y": 195.30513805780922 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 398.75525857611456, "y": 193.96879354429296 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 401.580617904073, "y": 192.62374562101598 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 404.6028867082182, "y": 191.28547263269178 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 407.7738735524845, "y": 189.96945292403387 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 411.04538700080604, "y": 188.6911648397558 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 414.3692356171171, "y": 187.46608672457103 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 417.6972279653519, "y": 186.30969692319317 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 420.9811726094447, "y": 185.2374737803357 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 424.1728781133296, "y": 184.26489564071207 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 427.2241530409409, "y": 183.40744084903588 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 430.08680595621274, "y": 182.6805877500206 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 431.42146812018257, "y": 182.37738295172255 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 432.40778613600355, "y": 182.17043424530877 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 434.57379710485645, "y": 181.82067086430652 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 436.9396769799911, "y": 181.54578946020342 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 439.46966907432835, "y": 181.34348018712024 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 442.12801670078903, "y": 181.21143319917775 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 444.8789631722939, "y": 181.14733865049678 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 447.6867518017637, "y": 181.14888669519812 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 450.51562590211927, "y": 181.21376748740252 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 453.32982878628127, "y": 181.33967118123084 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 456.0936037671706, "y": 181.52428793080375 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 458.7711941577081, "y": 181.76530789024216 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 461.3268432708144, "y": 182.06042121366676 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 463.7247944194104, "y": 182.4073180551984 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 465.9292909164168, "y": 182.8036885689579 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 467.90457607475446, "y": 183.247222909066 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 469.61489320734427, "y": 183.7356112296435 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 470.3462396719227, "y": 183.99762835625643 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 471.2428963773219, "y": 184.34082407915278 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 472.99763385976297, "y": 185.0951865733606 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 474.3203458571643, "y": 185.76426699960803 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 475.2194940889507, "y": 186.27196343294065 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 476.14227833240034, "y": 186.843263839264 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 477.0968866782507, "y": 187.48821767403535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 478.09150721723904, "y": 188.216874392712 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 479.13432804010256, "y": 189.03928345075119 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 480.23353723757873, "y": 189.96549430361011 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 481.3973229004048, "y": 191.00555640674617 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 482.6338731193182, "y": 192.16951921561653 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 483.9513759850562, "y": 193.46743218567843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 486.08465008573876, "y": 195.66755715183893 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 489.3036287870103, "y": 199.18767752459934 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 492.9938037088523, "y": 203.42448874035676 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 497.2206795771633, "y": 208.45838644276927 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 502.04976111784197, "y": 214.36976627549495 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 507.546553056787, "y": 221.23902388219187 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 513.7765601198969, "y": 229.14655490651813 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 520.8052870330705, "y": 238.17275499213184 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 528.6982385222061, "y": 248.3980197826911 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 533.0293721123036, "y": 254.04041083806976 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 534.2450543684041, "y": 255.63658711845704 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 536.6074619757014, "y": 258.8465679668583 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 538.8887326101642, "y": 262.0765850943268 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 541.0906566196262, "y": 265.3253966496571 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 543.2150243519209, "y": 268.59176078164404 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 545.2636261548815, "y": 271.8744356390823 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 547.2382523763418, "y": 275.1721793707667 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 549.1406933641352, "y": 278.48375012549184 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 550.9727394660949, "y": 281.80790605205254 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 552.736181030055, "y": 285.1434052992434 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 554.4328084038486, "y": 288.48900601585916 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 556.0644119353092, "y": 291.8434663506946 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 557.6327819722704, "y": 295.2055444525445 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 559.1397088625656, "y": 298.57399847020326 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 560.5869829540283, "y": 301.94758655246585 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 561.9763945944919, "y": 305.325066848127 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 563.3097341317903, "y": 308.7051975059814 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 564.5887919137565, "y": 312.08673667482367 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 565.8153582882244, "y": 315.4684425034485 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 566.1324325650127, "y": 316.38003586442824 }, { + "turnPoint": true, "type": "VSAPoint", "x": 566.1324325650127, "y": 316.38003586442824 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 566.1324325650127, "y": 316.38003586442824 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 566.0060154589853, "y": 317.33688343227095 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 565.4877605284323, "y": 320.8966321887548 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 564.9180623788752, "y": 324.46681985586895 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 564.2949167343879, "y": 328.0465917887784 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 563.616319319045, "y": 331.63509334264813 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 562.8802658569205, "y": 335.23146987264306 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 562.0847520720883, "y": 338.83486673392804 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 561.227773688623, "y": 342.44442928166825 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 560.3073264305983, "y": 346.0593028710284 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 559.3214060220887, "y": 349.6786328571736 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 558.2680081871683, "y": 353.3015645952688 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 557.1451286499112, "y": 356.92724344047895 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 555.9507631343915, "y": 360.554814747969 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 554.6829073646836, "y": 364.18342387290375 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 553.3395570648615, "y": 367.8122161704483 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 551.9187079589992, "y": 371.4403369957678 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 550.4183557711713, "y": 375.06693170402684 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 548.8364962254514, "y": 378.6911456503906 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 547.1711250459141, "y": 382.31212419002395 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 546.3028913385826, "y": 384.1209448818898 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 543.2006642598294, "y": 390.52184186191835 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 537.535670448618, "y": 402.1305699733798 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 532.4749042214539, "y": 412.3903913753097 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 527.9704490988856, "y": 421.3932752996892 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 523.9743886014617, "y": 429.2311909784995 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 520.4388062497305, "y": 435.9961076437221 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 517.3157855642405, "y": 441.7799945273381 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 514.5574100655404, "y": 446.67482086132884 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 512.1157632741781, "y": 450.7725558776757 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 510.4708339773115, "y": 453.35821166754323 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 509.4426354126483, "y": 454.89548184246604 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 508.4666660051281, "y": 456.28521188096727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 507.53693619481953, "y": 457.5388979370447 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 506.64745642179116, "y": 458.6680361646959 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 505.79223712611144, "y": 459.6841227179185 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 504.965288747849, "y": 460.59865375071024 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 504.16062172707245, "y": 461.4231254170687 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 503.3722465038503, "y": 462.1690338709916 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 502.5941735182511, "y": 462.84787526647654 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 501.433862530821, "y": 463.77032529618333 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 499.8676552661831, "y": 464.86355958449764 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 499.05879685039366, "y": 465.3807874015748 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 498.39544529339, "y": 465.78512060292104 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 496.81902180965926, "y": 466.60889050140497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 494.97403176316857, "y": 467.4422487052733 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 492.8950283549279, "y": 468.27571089278706 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 490.61656478594676, "y": 469.099792742207 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 488.17319425723497, "y": 469.905009931794 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 485.5994699698021, "y": 470.6818781398089 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 482.9299451246578, "y": 471.42091304451264 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 480.19917292281195, "y": 472.11263032416593 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 477.4417065652739, "y": 472.7475456570297 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 474.6920992530536, "y": 473.31617472136475 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 471.9849041871605, "y": 473.80903319543194 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 469.35467456860454, "y": 474.2166367574922 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 466.8359635983951, "y": 474.52950108580626 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 464.46332447754196, "y": 474.7381418586351 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 462.2713104070549, "y": 474.8330747542395 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 461.2635212598425, "y": 474.8296062992126 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 459.89512569180783, "y": 474.8022236217203 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 456.9446634814911, "y": 474.66854532746163 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 453.78308803321636, "y": 474.4450546374898 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 450.4607238482488, "y": 474.13717725337807 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 447.02789542785354, "y": 473.7503388766993 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 443.5349272732959, "y": 473.28996520902683 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 440.032143885841, "y": 472.76148195193366 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 436.5698697667541, "y": 472.17031480699274 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 433.19842941730053, "y": 471.5218894757774 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 429.9681473387453, "y": 470.8216316598606 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 426.9293480323538, "y": 470.0749670608155 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 424.1323559993911, "y": 469.2873213802151 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 421.6274957411225, "y": 468.46412031963257 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 419.9827165964786, "y": 467.82583581711526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 418.99656451830106, "y": 467.39265534706215 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 418.11175291575864, "y": 466.95363798914843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 417.33457235150956, "y": 466.5094619560706 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 416.671313388212, "y": 466.06080546052533 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 416.1282665885242, "y": 465.60834671520934 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 415.90919055118104, "y": 465.3807874015748 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 415.6744949121821, "y": 465.11691086342705 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 415.2059336467294, "y": 464.51970744510993 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 414.73828120790273, "y": 463.8417556151489 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 414.27144071967086, "y": 463.085935372191 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 413.5724192583051, "y": 461.8213352824725 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 412.6424474730342, "y": 459.8770443023384 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 411.7139797215789, "y": 457.6731196458617 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 410.78624099568907, "y": 455.23260130221774 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 409.85845628711434, "y": 452.5785292605823 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 408.92985058760416, "y": 449.73394351013076 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 407.5340521637328, "y": 445.17686587372935 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 405.6626147200966, "y": 438.62109199003635 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 402.8245238499593, "y": 428.2026348509896 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 399.92009745169366, "y": 417.60703981194797 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 398.4393501316662, "y": 412.4590323775087 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 397.4404418974062, "y": 409.1254012769567 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 396.4306375649564, "y": 405.90077632687087 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 395.4091621260667, "y": 402.8081975164265 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 394.37524057248663, "y": 399.8707048347992 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 393.3280978959659, "y": 397.1113382711645 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 392.2669590882542, "y": 394.55313781469806 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 391.1910491411011, "y": 392.21914345457526 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 390.09959304625636, "y": 390.1323951799718 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 389.2698043994204, "y": 388.75243565071 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 388.7116901709946, "y": 387.91609606739985 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 388.149253463505, "y": 387.1545279993808 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 387.5823974009204, "y": 386.4706114452996 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 387.01102510720943, "y": 385.86722640380333 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 386.4350397063409, "y": 385.347252873539 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 385.85434432228345, "y": 384.9135708531535 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 385.2688420790058, "y": 384.5690603412937 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 384.6784361004767, "y": 384.3166013366067 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 384.08302951066474, "y": 384.1590738377393 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 383.78320629921257, "y": 384.1209448818898 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 378.6263437405544, "y": 383.6045830842633 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 373.0766440496252, "y": 383.121504412122 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 370.0008370915018, "y": 382.96022983219746 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 367.10487653591144, "y": 382.94349048438045 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 364.05742475655484, "y": 383.0775636241024 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 360.52714412713283, "y": 383.3687265067947 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 356.18269702134603, "y": 383.8232563878887 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 353.5469858267717, "y": 384.1209448818898 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 353.140687387566, "y": 384.174351512309 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 352.3478076469671, "y": 384.3499141458275 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 351.5776678286232, "y": 384.6060313176218 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 350.8292449957345, "y": 384.94054223998114 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 350.10151621150135, "y": 385.3512861251944 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 349.39345853912414, "y": 385.83610218555054 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 348.70404904180305, "y": 386.39282963333847 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 348.03226478273837, "y": 387.0193076808472 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 347.3770828251304, "y": 387.71337554036575 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 346.73748023217945, "y": 388.47287242418304 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 346.11243406708576, "y": 389.29563754458786 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 345.5009213930497, "y": 390.1795101138695 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 344.90191927327146, "y": 391.1223293443167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 344.3144047709514, "y": 392.1219344482185 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 343.45131834152363, "y": 393.71666590565854 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 342.3329398000359, "y": 396.03066190165725 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 341.2420988659859, "y": 398.5329072126756 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 340.170612044976, "y": 401.2061155370253 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 339.1102958426086, "y": 404.0330005730182 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 337.52402606968593, "y": 408.5098505567174 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 335.37221544403303, "y": 414.8782452783023 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 333.11778439379134, "y": 421.55019341607033 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 331.3134462186173, "y": 426.6720944091589 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 330.047889167072, "y": 430.10608627751816 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 328.7198512845899, "y": 433.538178142326 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 327.3211490767732, "y": 436.95108370189405 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 325.8435990492243, "y": 440.32751665453395 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 324.2790177075454, "y": 443.6501906985576 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 322.6192215573389, "y": 446.9018195322766 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 320.85602710420704, "y": 450.0651168540026 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 319.45717451289846, "y": 452.365517795319 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 318.49035653314064, "y": 453.86471191435453 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 317.49308576205294, "y": 455.3320996106921 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 316.4643392628353, "y": 456.7655200966209 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 315.40309409868826, "y": 458.1628125844296 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 314.30832733281204, "y": 459.52181628640733 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 313.179016028407, "y": 460.840370414843 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 312.01413724867336, "y": 462.1163141820256 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 310.81266805681133, "y": 463.34748680024416 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 309.57358551602135, "y": 464.53172748178747 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 308.29586668950355, "y": 465.66687543894466 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 306.9784886404583, "y": 466.75076988400457 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 306.3028913385827, "y": 467.2705511811024 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 306.0368536792996, "y": 467.46009653890087 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 305.29965090725057, "y": 467.8742201558208 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 304.32981912363664, "y": 468.3247898441746 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 303.1423849202518, "y": 468.8055907037913 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 301.75237488889, "y": 469.31040783450027 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 300.17481562134526, "y": 469.83302633613084 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 298.4247337094115, "y": 470.36723130851203 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 296.51715574488264, "y": 470.9068078514732 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 294.4671083195528, "y": 471.4455410648434 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 292.28961802521576, "y": 471.977216048452 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 289.99971145366567, "y": 472.4956179021282 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 287.61241519669636, "y": 472.9945317257011 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 285.14275584610186, "y": 473.46774261900003 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 282.60575999367614, "y": 473.90903568185416 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 280.0164542312131, "y": 474.31219601409276 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 277.38986515050686, "y": 474.6710087155449 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 276.06667086614175, "y": 474.8296062992126 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 274.5818488819599, "y": 474.99255599538003 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 271.5446458311724, "y": 475.2295739520757 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 268.4446260071953, "y": 475.360814712133 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 265.3020717719389, "y": 475.3872566379167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 262.1372654873135, "y": 475.3098780917921 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 258.97048951522913, "y": 475.1296574361239 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 255.82202621759592, "y": 474.8475730332773 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 252.71215795632423, "y": 474.46460324561724 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 249.66116709332417, "y": 473.9817264355087 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 246.68933599050598, "y": 473.3999209653166 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 243.81694700977977, "y": 472.7201651974061 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 241.0642825130558, "y": 471.9434374941422 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 238.45162486224422, "y": 471.0707162178898 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 236.60169663070394, "y": 470.350821729573 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 235.4193876540233, "y": 469.84338312642257 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 234.28348921739519, "y": 469.3124964588554 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 233.1965366160585, "y": 468.758284022167 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 232.16106514525188, "y": 468.1808681116531 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 231.17961010021423, "y": 467.58037102260926 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 230.71234015748033, "y": 467.2705511811024 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 230.14050134808969, "y": 466.8718519030715 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 228.98801289411497, "y": 465.93778340220894 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 227.82719427887008, "y": 464.84415439310385 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 226.66053754786833, "y": 463.59590201522116 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 225.49053474662304, "y": 462.19796340802577 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 224.31967792064745, "y": 460.6552757109826 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 223.15045911545488, "y": 458.97277606355647 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 221.9853703765586, "y": 457.1554016052123 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 220.8269037494719, "y": 455.208089475415 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 219.67755127970813, "y": 453.1357768136295 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 218.5398050127805, "y": 450.9434007593206 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 217.41615699420237, "y": 448.63589845195327 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 216.30909926948698, "y": 446.2182070309924 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 215.22112388414763, "y": 443.69526363590296 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 214.15472288369767, "y": 441.0720054061497 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 213.11238831365034, "y": 438.35336948119766 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 212.09661221951887, "y": 435.54429300051163 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 211.10988664681668, "y": 432.6497131035565 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 210.15470364105698, "y": 429.67456692979727 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 209.2335552477531, "y": 426.62379161869876 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 208.34893351241834, "y": 423.50232430972596 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 207.50333048056592, "y": 420.3151021423437 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 206.69923819770924, "y": 417.0670622560168 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 205.93914870936152, "y": 413.7631417902103 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 205.225554061036, "y": 410.4082778843889 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 204.56094629824605, "y": 407.0074076780178 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 203.947817466505, "y": 403.56546831056164 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 203.38865961132603, "y": 400.08739692148544 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 202.88596477822256, "y": 396.578130650254 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 202.44222501270775, "y": 393.0426066363324 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 202.05993236029497, "y": 389.48576201918536 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", "x": 201.74157886649743, "y": 385.91253393827776 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", "x": 201.6099779527559, "y": 384.1209448818898 }, { + "turnPoint": true, "type": "VSAPoint", "x": 201.6099779527559, "y": 384.1209448818898 diff --git a/src/test/ValentinaTest/share/smart_pattern_#99/output.json b/src/test/ValentinaTest/share/smart_pattern_#99/output.json index 0b8e4e7ba..5bde4d76f 100644 --- a/src/test/ValentinaTest/share/smart_pattern_#99/output.json +++ b/src/test/ValentinaTest/share/smart_pattern_#99/output.json @@ -1,10 +1,40 @@ { "vector": [ + { + "type": "QPointF", + "x": 166.62175510365802, + "y": 321.2004616805807 + }, + { + "type": "QPointF", + "x": 166.2793358771866, + "y": 317.0063195835933 + }, { "type": "QPointF", "x": 166.02062314300517, "y": 312.9788859158875 }, + { + "type": "QPointF", + "x": 165.8292033783532, + "y": 308.9717528963612 + }, + { + "type": "QPointF", + "x": 165.7036991886769, + "y": 304.98919943386846 + }, + { + "type": "QPointF", + "x": 165.64275495245442, + "y": 301.03538140265255 + }, + { + "type": "QPointF", + "x": 165.64505339863834, + "y": 297.1143398796336 + }, { "type": "QPointF", "x": 165.70933046188543, @@ -12,29 +42,84 @@ }, { "type": "QPointF", - "x": 167.2238637734682, - "y": 274.49674146302095 + "x": 165.83438969569102, + "y": 289.3861784754609 }, { "type": "QPointF", - "x": 167.17190074847466, - "y": 270.89345471196157 + "x": 166.01911741454407, + "y": 285.58654810669873 + }, + { + "type": "QPointF", + "x": 166.26249972076215, + "y": 281.83464608080357 + }, + { + "type": "QPointF", + "x": 166.56364265568018, + "y": 278.1338390671346 + }, + { + "type": "QPointF", + "x": 166.92179691066806, + "y": 274.487296585985 + }, + { + "type": "QPointF", + "x": 167.33638886455216, + "y": 270.8979544041113 }, { "type": "QPointF", "x": 167.28869518172655, "y": 266.6239856783655 }, + { + "type": "QPointF", + "x": 168.25198632585264, + "y": 260.7571328554137 + }, + { + "type": "QPointF", + "x": 168.86398342597963, + "y": 257.4142137733961 + }, + { + "type": "QPointF", + "x": 169.53441216870624, + "y": 254.1386306631694 + }, { "type": "QPointF", "x": 170.26491480048924, "y": 250.9305560889531 }, + { + "type": "QPointF", + "x": 171.0580148726845, + "y": 247.7893082831347 + }, + { + "type": "QPointF", + "x": 171.9173979780174, + "y": 244.713166875104 + }, + { + "type": "QPointF", + "x": 172.84830055613054, + "y": 241.6991539100263 + }, { "type": "QPointF", "x": 173.85805304713168, "y": 238.74278094672138 }, + { + "type": "QPointF", + "x": 174.95684462917984, + "y": 235.83777273844 + }, { "type": "QPointF", "x": 176.1588063520679, @@ -65,41 +150,126 @@ "x": 192.86969320132343, "y": 211.19915416203753 }, + { + "type": "QPointF", + "x": 195.72098369889483, + "y": 209.14422920878863 + }, { "type": "QPointF", "x": 198.55721503265246, "y": 207.26607790393052 }, + { + "type": "QPointF", + "x": 202.11723125648055, + "y": 205.16152034585645 + }, { "type": "QPointF", "x": 205.83297494667457, "y": 203.19880909959312 }, + { + "type": "QPointF", + "x": 209.59355344099316, + "y": 201.41943890736292 + }, { "type": "QPointF", "x": 213.3989366119302, "y": 199.80187668782906 }, + { + "type": "QPointF", + "x": 217.24721516218452, + "y": 198.33183688395866 + }, + { + "type": "QPointF", + "x": 221.13485954939497, + "y": 197.00023421460259 + }, { "type": "QPointF", "x": 225.05715280056634, "y": 195.80179705712058 }, + { + "type": "QPointF", + "x": 229.0086913223859, + "y": 194.7341482226155 + }, + { + "type": "QPointF", + "x": 232.9839196853273, + "y": 193.79722577261293 + }, { "type": "QPointF", "x": 236.9777013259064, "y": 192.99296851089122 }, + { + "type": "QPointF", + "x": 240.9859463628896, + "y": 192.3252329802456 + }, + { + "type": "QPointF", + "x": 245.0063292397268, + "y": 191.79994766713384 + }, { "type": "QPointF", "x": 248.8397134110682, "y": 191.43789012059054 }, + { + "type": "QPointF", + "x": 252.0993678923476, + "y": 191.21044578418378 + }, + { + "type": "QPointF", + "x": 255.24575032218632, + "y": 191.05145610681262 + }, + { + "type": "QPointF", + "x": 258.32256210111353, + "y": 190.9510874021363 + }, + { + "type": "QPointF", + "x": 261.32135697439946, + "y": 190.9047718695664 + }, + { + "type": "QPointF", + "x": 264.23377987042534, + "y": 190.90851689495304 + }, + { + "type": "QPointF", + "x": 267.0520300592678, + "y": 190.958878253766 + }, { "type": "QPointF", "x": 269.76947892966894, "y": 191.0530084873955 }, + { + "type": "QPointF", + "x": 272.3815682508289, + "y": 191.18881206364767 + }, + { + "type": "QPointF", + "x": 274.88721716498935, + "y": 191.36528074033208 + }, { "type": "QPointF", "x": 279.2591974403315, @@ -125,56 +295,171 @@ "x": 301.84093082749814, "y": 200.22448982773844 }, + { + "type": "QPointF", + "x": 305.47411691609267, + "y": 202.7686470270179 + }, { "type": "QPointF", "x": 309.63111646503364, "y": 206.01821170428622 }, + { + "type": "QPointF", + "x": 313.48580867439205, + "y": 209.41558661160292 + }, { "type": "QPointF", "x": 317.06291126733686, "y": 212.92042336152053 }, + { + "type": "QPointF", + "x": 319.65577239756277, + "y": 215.6744305010782 + }, { "type": "QPointF", "x": 322.7375828174322, "y": 219.2152311107592 }, + { + "type": "QPointF", + "x": 325.68185326696005, + "y": 222.86072675920707 + }, + { + "type": "QPointF", + "x": 328.43911467273165, + "y": 226.5133716338877 + }, { "type": "QPointF", "x": 331.0285705097705, "y": 230.15366159083862 }, + { + "type": "QPointF", + "x": 333.4669694715237, + "y": 233.7631303726818 + }, + { + "type": "QPointF", + "x": 335.7687333062743, + "y": 237.32368245582865 + }, + { + "type": "QPointF", + "x": 337.94611732452876, + "y": 240.8170859291849 + }, { "type": "QPointF", "x": 340.96073277166533, "y": 245.8168833793835 }, + { + "type": "QPointF", + "x": 344.7022260625963, + "y": 252.20924242186646 + }, + { + "type": "QPointF", + "x": 348.0960687153913, + "y": 258.01193942728764 + }, + { + "type": "QPointF", + "x": 350.3411643264321, + "y": 261.718495326651 + }, { "type": "QPointF", "x": 351.508785916176, "y": 263.5628001891992 }, + { + "type": "QPointF", + "x": 351.56949625693943, + "y": 263.65454162637286 + }, + { + "type": "QPointF", + "x": 353.25438839165514, + "y": 263.34401622817546 + }, { "type": "QPointF", "x": 353.38281358068747, "y": 262.39889326973366 }, + { + "type": "QPointF", + "x": 353.68979788803426, + "y": 259.70976682140065 + }, + { + "type": "QPointF", + "x": 353.98007079988406, + "y": 256.7854830012464 + }, + { + "type": "QPointF", + "x": 354.2522388038705, + "y": 253.66730222969008 + }, { "type": "QPointF", "x": 354.6369381456461, "y": 248.63868742738416 }, + { + "type": "QPointF", + "x": 355.31642660240067, + "y": 238.02913443614037 + }, + { + "type": "QPointF", + "x": 355.9888693497998, + "y": 227.29709057885188 + }, + { + "type": "QPointF", + "x": 356.5211562082491, + "y": 220.15593016609938 + }, + { + "type": "QPointF", + "x": 357.0134466304332, + "y": 214.86991357746834 + }, { "type": "QPointF", "x": 357.40176367500453, "y": 211.37984262676693 }, + { + "type": "QPointF", + "x": 357.846262588904, + "y": 208.0092517510689 + }, + { + "type": "QPointF", + "x": 358.373501955151, + "y": 204.67513863922105 + }, { "type": "QPointF", "x": 359.0152017123353, "y": 201.34020894719677 }, + { + "type": "QPointF", + "x": 359.70149937337186, + "y": 198.43637573213033 + }, { "type": "QPointF", "x": 361.1564007628898, @@ -187,54 +472,144 @@ }, { "type": "QPointF", - "x": 374.33721518192135, - "y": 175.90560727292873 + "x": 374.23085282993867, + "y": 175.74396349446488 }, { "type": "QPointF", - "x": 377.14677256730516, - "y": 173.82943142819826 + "x": 377.2513455627961, + "y": 173.9880960377942 }, { "type": "QPointF", "x": 381.33993617958185, "y": 171.06579257618037 }, + { + "type": "QPointF", + "x": 385.7189488212055, + "y": 168.7978532555929 + }, + { + "type": "QPointF", + "x": 389.3961921522523, + "y": 167.02957878281708 + }, { "type": "QPointF", "x": 393.1258145202469, "y": 165.36639816936875 }, + { + "type": "QPointF", + "x": 396.90815814805933, + "y": 163.7882032251891 + }, + { + "type": "QPointF", + "x": 400.7290411191089, + "y": 162.28861544216133 + }, + { + "type": "QPointF", + "x": 404.5661746250576, + "y": 160.86868831365157 + }, { "type": "QPointF", "x": 408.3932500523315, "y": 159.53363294737295 }, + { + "type": "QPointF", + "x": 412.18301453453256, + "y": 158.2909708248115 + }, + { + "type": "QPointF", + "x": 415.9102295631378, + "y": 157.14939737903097 + }, + { + "type": "QPointF", + "x": 419.5554120051204, + "y": 156.1180286536672 + }, { "type": "QPointF", "x": 423.1107481311983, "y": 155.20594081388518 }, + { + "type": "QPointF", + "x": 426.32247406581433, + "y": 154.4848678965481 + }, { "type": "QPointF", "x": 430.0549996585841, "y": 153.83670980296333 }, + { + "type": "QPointF", + "x": 433.66823092653135, + "y": 153.3887433125243 + }, + { + "type": "QPointF", + "x": 437.2101744085694, + "y": 153.08721909513207 + }, { "type": "QPointF", "x": 440.7217089018201, "y": 152.89988245716148 }, + { + "type": "QPointF", + "x": 444.2186957222689, + "y": 152.8085727292775 + }, + { + "type": "QPointF", + "x": 447.70238031986275, + "y": 152.8024343105936 + }, + { + "type": "QPointF", + "x": 451.1655866202268, + "y": 152.8747633039784 + }, { "type": "QPointF", "x": 454.5967442920567, "y": 153.02154037878523 }, + { + "type": "QPointF", + "x": 457.98290160348563, + "y": 153.24086238281018 + }, + { + "type": "QPointF", + "x": 461.31249047708974, + "y": 153.5329962587036 + }, + { + "type": "QPointF", + "x": 464.5785394967882, + "y": 153.90108743786178 + }, { "type": "QPointF", "x": 467.78325484552295, "y": 154.35289761896638 }, + { + "type": "QPointF", + "x": 470.94557096580354, + "y": 154.90461077937235 + }, { "type": "QPointF", "x": 475.1843172784661, @@ -260,41 +635,156 @@ "x": 493.4116565843028, "y": 164.28248666249897 }, + { + "type": "QPointF", + "x": 496.3046057439489, + "y": 166.48483443030293 + }, { "type": "QPointF", "x": 499.98932468698433, "y": 169.60791455977923 }, + { + "type": "QPointF", + "x": 503.6236798438729, + "y": 173.05855990106622 + }, { "type": "QPointF", "x": 506.4354164747994, "y": 175.93514943202254 }, + { + "type": "QPointF", + "x": 510.22240531627483, + "y": 180.05847483442062 + }, + { + "type": "QPointF", + "x": 514.3692225121746, + "y": 184.8069411568055 + }, { "type": "QPointF", "x": 518.9290933463765, "y": 190.23021103578333 }, + { + "type": "QPointF", + "x": 524.0023556963948, + "y": 196.43641192353618 + }, + { + "type": "QPointF", + "x": 529.6792386289801, + "y": 203.52841021677506 + }, + { + "type": "QPointF", + "x": 536.0426969749838, + "y": 211.60401356856727 + }, + { + "type": "QPointF", + "x": 543.1705962852811, + "y": 220.75682696356714 + }, + { + "type": "QPointF", + "x": 551.1372691069275, + "y": 231.077179345195 + }, + { + "type": "QPointF", + "x": 555.515097165431, + "y": 236.78023193174266 + }, + { + "type": "QPointF", + "x": 556.795803569793, + "y": 238.46145051058045 + }, { "type": "QPointF", "x": 559.4375896091323, "y": 242.04457762986158 }, + { + "type": "QPointF", + "x": 562.04262558058, + "y": 245.7236389573817 + }, + { + "type": "QPointF", + "x": 564.5554739235806, + "y": 249.4218135334114 + }, + { + "type": "QPointF", + "x": 566.9778368645075, + "y": 253.13697678008336 + }, { "type": "QPointF", "x": 569.311475660773, "y": 256.86701943291433 }, + { + "type": "QPointF", + "x": 571.558208034816, + "y": 260.6098525026787 + }, + { + "type": "QPointF", + "x": 573.7199050935343, + "y": 264.3634116803772 + }, + { + "type": "QPointF", + "x": 575.7984878197819, + "y": 268.12566114404586 + }, { "type": "QPointF", "x": 577.7959232247036, "y": 271.8945967422089 }, + { + "type": "QPointF", + "x": 579.7142202492008, + "y": 275.66824854413056 + }, + { + "type": "QPointF", + "x": 581.5554254996498, + "y": 279.4446827609264 + }, + { + "type": "QPointF", + "x": 583.3216188979302, + "y": 283.22200305402066 + }, + { + "type": "QPointF", + "x": 585.014909318949, + "y": 286.9983512578358 + }, { "type": "QPointF", "x": 586.6374302807619, "y": 290.77190755205044 }, + { + "type": "QPointF", + "x": 588.191335743609, + "y": 294.54089012518807 + }, + { + "type": "QPointF", + "x": 589.6787960649057, + "y": 298.30355437565083 + }, { "type": "QPointF", "x": 591.1019941479228, @@ -302,49 +792,164 @@ }, { "type": "QPointF", - "x": 594.463807359789, - "y": 311.31911963852787 + "x": 592.4631218128573, + "y": 305.80312791061215 }, { "type": "QPointF", - "x": 593.6990292243912, - "y": 323.99124776525537 + "x": 595.1672654561864, + "y": 313.5700486655679 + }, + { + "type": "QPointF", + "x": 593.549804410284, + "y": 324.90204105880997 + }, + { + "type": "QPointF", + "x": 592.9103767972043, + "y": 328.93357936905505 + }, + { + "type": "QPointF", + "x": 592.221419393679, + "y": 332.90787312849625 + }, + { + "type": "QPointF", + "x": 591.4691411901464, + "y": 336.9021533252068 + }, + { + "type": "QPointF", + "x": 590.6510591717047, + "y": 340.91518746861993 }, { "type": "QPointF", "x": 589.7646953400841, "y": 344.94570527898077 }, + { + "type": "QPointF", + "x": 588.8075802406612, + "y": 348.99239672166993 + }, + { + "type": "QPointF", + "x": 587.7772567627065, + "y": 353.05391040771735 + }, + { + "type": "QPointF", + "x": 586.6712841858312, + "y": 357.12885241579517 + }, + { + "type": "QPointF", + "x": 585.4872424358157, + "y": 361.2157855904426 + }, { "type": "QPointF", "x": 584.2227365031622, "y": 365.3132293687304 }, + { + "type": "QPointF", + "x": 582.8754009676815, + "y": 369.4196601831339 + }, + { + "type": "QPointF", + "x": 581.4429045629125, + "y": 373.5335124817864 + }, + { + "type": "QPointF", + "x": 579.9229547052828, + "y": 377.65318039832954 + }, { "type": "QPointF", "x": 578.3133019054566, "y": 381.7770200926223 }, + { + "type": "QPointF", + "x": 576.611743973439, + "y": 385.90335277043425 + }, + { + "type": "QPointF", + "x": 574.8161299253355, + "y": 390.03046837544804 + }, + { + "type": "QPointF", + "x": 572.9243634986963, + "y": 394.1566299305505 + }, { "type": "QPointF", "x": 571.8578768835727, "y": 396.3873347680203 }, + { + "type": "QPointF", + "x": 568.7091425226228, + "y": 402.8846548007183 + }, + { + "type": "QPointF", + "x": 563.0106689428648, + "y": 414.56222548506827 + }, + { + "type": "QPointF", + "x": 557.8969064317038, + "y": 424.9300648425609 + }, + { + "type": "QPointF", + "x": 553.3208960252414, + "y": 434.0769832621563 + }, { "type": "QPointF", "x": 549.2280816776043, "y": 442.10646157989896 }, + { + "type": "QPointF", + "x": 545.5611088443278, + "y": 449.12590274451287 + }, + { + "type": "QPointF", + "x": 542.2584874399039, + "y": 455.24785368107814 + }, { "type": "QPointF", "x": 539.2526248226795, "y": 460.5912850366147 }, + { + "type": "QPointF", + "x": 536.467090503331, + "y": 465.2823618454322 + }, { "type": "QPointF", "x": 534.3876922246633, "y": 468.5735164170166 }, + { + "type": "QPointF", + "x": 531.8556761599269, + "y": 472.3000740727542 + }, { "type": "QPointF", "x": 529.1781397661937, @@ -375,41 +980,136 @@ "x": 509.7246407122665, "y": 491.8835609983093 }, + { + "type": "QPointF", + "x": 506.64264899665255, + "y": 493.27565689896 + }, + { + "type": "QPointF", + "x": 503.4429364308536, + "y": 494.58660677766693 + }, { "type": "QPointF", "x": 500.2577698167626, "y": 495.75628862214256 }, + { + "type": "QPointF", + "x": 497.04545277164203, + "y": 496.8272059027162 + }, + { + "type": "QPointF", + "x": 493.7907099080777, + "y": 497.8190333944921 + }, + { + "type": "QPointF", + "x": 490.4929482088775, + "y": 498.7398184287204 + }, { "type": "QPointF", "x": 487.15963071843686, "y": 499.5912335331815 }, + { + "type": "QPointF", + "x": 483.80214101228137, + "y": 500.37120364594495 + }, + { + "type": "QPointF", + "x": 480.43277949069653, + "y": 501.0752488675306 + }, + { + "type": "QPointF", + "x": 477.0620662015999, + "y": 501.69709574775675 + }, { "type": "QPointF", "x": 473.6956752771007, "y": 502.2287291443895 }, + { + "type": "QPointF", + "x": 470.3301943380872, + "y": 502.659768745056 + }, + { + "type": "QPointF", + "x": 466.9464209063044, + "y": 502.9756318173526 + }, { "type": "QPointF", "x": 463.49780394389967, "y": 503.15298507625994 }, + { + "type": "QPointF", + "x": 459.5271212238114, + "y": 503.1462914270793 + }, + { + "type": "QPointF", + "x": 455.6616703815631, + "y": 502.9859522664584 + }, { "type": "QPointF", "x": 451.7842745191419, "y": 502.7209516449965 }, + { + "type": "QPointF", + "x": 447.8451164046644, + "y": 502.3627012475266 + }, + { + "type": "QPointF", + "x": 443.8536819162971, + "y": 501.9185119737654 + }, + { + "type": "QPointF", + "x": 439.8308938836395, + "y": 501.39337681138477 + }, { "type": "QPointF", "x": 435.80322693895295, "y": 500.79071434419745 }, + { + "type": "QPointF", + "x": 431.79889144338995, + "y": 500.11238654266094 + }, + { + "type": "QPointF", + "x": 427.844706320561, + "y": 499.3581833391248 + }, + { + "type": "QPointF", + "x": 423.96271378849997, + "y": 498.5246346544244 + }, { "type": "QPointF", "x": 420.165515152396, "y": 497.60262899958593 }, + { + "type": "QPointF", + "x": 416.4487138206197, + "y": 496.572541736881 + }, { "type": "QPointF", "x": 411.8448883490633, @@ -435,41 +1135,156 @@ "x": 388.6017131401174, "y": 475.3093396372153 }, + { + "type": "QPointF", + "x": 387.0706174501917, + "y": 472.1082795762614 + }, + { + "type": "QPointF", + "x": 385.5910003161475, + "y": 468.67818911527337 + }, { "type": "QPointF", "x": 384.28967096039423, "y": 465.30500833370485 }, + { + "type": "QPointF", + "x": 383.0998328853401, + "y": 461.93254875410685 + }, + { + "type": "QPointF", + "x": 381.98288724618385, + "y": 458.53069141599417 + }, { "type": "QPointF", "x": 380.4304614262938, "y": 453.47849078579617 }, + { + "type": "QPointF", + "x": 378.4050164300868, + "y": 446.40215506031814 + }, + { + "type": "QPointF", + "x": 375.4746857594183, + "y": 435.65300151743065 + }, + { + "type": "QPointF", + "x": 372.5821244791299, + "y": 425.1008266246762 + }, + { + "type": "QPointF", + "x": 371.19741782914514, + "y": 420.294766642279 + }, + { + "type": "QPointF", + "x": 370.28681418775506, + "y": 417.2618691376963 + }, + { + "type": "QPointF", + "x": 369.379554016973, + "y": 414.37193244178184 + }, { "type": "QPointF", "x": 368.49295008766654, "y": 411.6985932639229 }, + { + "type": "QPointF", + "x": 368.3585533776428, + "y": 411.3196708014021 + }, + { + "type": "QPointF", + "x": 366.6410637213197, + "y": 411.355954584168 + }, { "type": "QPointF", "x": 366.600134420795, "y": 411.4580674097551 }, + { + "type": "QPointF", + "x": 365.651186995994, + "y": 413.9880346677526 + }, + { + "type": "QPointF", + "x": 364.2428177123902, + "y": 417.97704550543375 + }, + { + "type": "QPointF", + "x": 362.22709735306563, + "y": 423.95221489998005 + }, + { + "type": "QPointF", + "x": 359.972601534846, + "y": 430.6243547196689 + }, + { + "type": "QPointF", + "x": 358.04943252437073, + "y": 436.0906210084624 + }, + { + "type": "QPointF", + "x": 356.6455811261326, + "y": 439.9083507859947 + }, { "type": "QPointF", "x": 355.1561846360663, "y": 443.7676398081635 }, + { + "type": "QPointF", + "x": 353.5503508837454, + "y": 447.7005292509592 + }, + { + "type": "QPointF", + "x": 351.8123946871611, + "y": 451.6916382729561 + }, { "type": "QPointF", "x": 349.9245366242492, "y": 455.72615718311806 }, + { + "type": "QPointF", + "x": 347.866643405961, + "y": 459.78938319035035 + }, + { + "type": "QPointF", + "x": 345.6159679240672, + "y": 463.8660928209505 + }, { "type": "QPointF", "x": 343.6771811948498, "y": 467.09348043002854 }, + { + "type": "QPointF", + "x": 341.1287731059581, + "y": 470.98061042879897 + }, { "type": "QPointF", "x": 338.2073934961957, @@ -485,51 +1300,146 @@ "x": 330.74891265688393, "y": 483.5228111238356 }, + { + "type": "QPointF", + "x": 327.50564816743554, + "y": 486.5116806098587 + }, { "type": "QPointF", "x": 321.4103537755966, "y": 491.6954836904387 }, + { + "type": "QPointF", + "x": 316.0710243543959, + "y": 494.1252880326278 + }, { "type": "QPointF", "x": 311.8770733508292, "y": 495.78704070384396 }, + { + "type": "QPointF", + "x": 307.00494734707604, + "y": 497.3839213532834 + }, + { + "type": "QPointF", + "x": 304.23250796680315, + "y": 498.1830786217762 + }, + { + "type": "QPointF", + "x": 301.67167400263656, + "y": 498.8611541413616 + }, + { + "type": "QPointF", + "x": 299.01340648884684, + "y": 499.5146864431621 + }, { "type": "QPointF", "x": 296.2585603634165, "y": 500.1424697548824 }, + { + "type": "QPointF", + "x": 293.41117665937344, + "y": 500.741531068732 + }, + { + "type": "QPointF", + "x": 290.47717224660175, + "y": 501.3077427754172 + }, + { + "type": "QPointF", + "x": 287.46349142235135, + "y": 501.83615605632355 + }, + { + "type": "QPointF", + "x": 284.3775106376486, + "y": 502.3211730404517 + }, { "type": "QPointF", "x": 281.22657947205425, "y": 502.7566141079534 }, + { + "type": "QPointF", + "x": 277.80674055823584, + "y": 503.154972097687 + }, + { + "type": "QPointF", + "x": 273.7500479800164, + "y": 503.49010841986416 + }, { "type": "QPointF", "x": 269.643612257968, "y": 503.681902950646 }, + { + "type": "QPointF", + "x": 265.5405746955614, + "y": 503.73270994878476 + }, + { + "type": "QPointF", + "x": 261.4444103463087, + "y": 503.64786600196 + }, { "type": "QPointF", "x": 257.35990373752395, "y": 503.4303221013898 }, + { + "type": "QPointF", + "x": 253.29247716456757, + "y": 503.08093961665776 + }, + { + "type": "QPointF", + "x": 249.24755904908346, + "y": 502.59853580854195 + }, { "type": "QPointF", "x": 245.2299614750519, "y": 501.97969107245706 }, + { + "type": "QPointF", + "x": 241.2432394440372, + "y": 501.21828970702614 + }, { "type": "QPointF", "x": 237.28901472295553, "y": 500.30472078747965 }, + { + "type": "QPointF", + "x": 233.36627188308336, + "y": 499.22460754573746 + }, { "type": "QPointF", "x": 229.47069121160965, "y": 497.9568546130952 }, + { + "type": "QPointF", + "x": 226.32170112527356, + "y": 496.7675455887414 + }, { "type": "QPointF", "x": 221.80693076938473, @@ -555,31 +1465,136 @@ "x": 203.54654967368148, "y": 480.17262128419 }, + { + "type": "QPointF", + "x": 201.74012383113387, + "y": 477.7925259035297 + }, + { + "type": "QPointF", + "x": 199.8728231562732, + "y": 475.14909428480337 + }, { "type": "QPointF", "x": 198.12170691741215, "y": 472.4540019775285 }, + { + "type": "QPointF", + "x": 196.46543440013897, + "y": 469.7008607143716 + }, + { + "type": "QPointF", + "x": 194.88848334392037, + "y": 466.88436648377666 + }, + { + "type": "QPointF", + "x": 193.37960710509861, + "y": 464.0004313669853 + }, { "type": "QPointF", "x": 191.93071975565823, "y": 461.04614002105444 }, + { + "type": "QPointF", + "x": 190.5360912963628, + "y": 458.01963351512876 + }, + { + "type": "QPointF", + "x": 189.19176461684532, + "y": 454.91997134599296 + }, + { + "type": "QPointF", + "x": 187.89513047385668, + "y": 451.7469955003941 + }, + { + "type": "QPointF", + "x": 186.64461532197217, + "y": 448.5012066844739 + }, { "type": "QPointF", "x": 185.43945018518863, "y": 445.18365601466735 }, + { + "type": "QPointF", + "x": 184.27949816335519, + "y": 441.79585222723824 + }, + { + "type": "QPointF", + "x": 183.1651247359179, + "y": 438.3396830609576 + }, + { + "type": "QPointF", + "x": 182.09709960635647, + "y": 434.8173489820013 + }, + { + "type": "QPointF", + "x": 181.07652203439048, + "y": 431.23130737455057 + }, { "type": "QPointF", "x": 180.10476385574063, "y": 427.5842254696924 }, + { + "type": "QPointF", + "x": 179.18342598456445, + "y": 423.87894050611567 + }, + { + "type": "QPointF", + "x": 178.31430533286823, + "y": 420.11842584896306 + }, + { + "type": "QPointF", + "x": 177.4993699021941, + "y": 416.30576201180975 + }, + { + "type": "QPointF", + "x": 176.74074040059125, + "y": 412.44411172139985 + }, { "type": "QPointF", "x": 176.04067717773808, "y": 408.53669833403853 }, + { + "type": "QPointF", + "x": 175.40157159858703, + "y": 404.58678705909483 + }, + { + "type": "QPointF", + "x": 174.82594122279494, + "y": 400.59766857295676 + }, + { + "type": "QPointF", + "x": 174.31642834550638, + "y": 396.57264472089304 + }, + { + "type": "QPointF", + "x": 173.87580160021932, + "y": 392.5150161092508 + }, { "type": "QPointF", "x": 173.50696043694438, @@ -587,8 +1602,8 @@ }, { "type": "QPointF", - "x": 166.02062314300517, - "y": 312.9788859158875 + "x": 166.62175510365802, + "y": 321.2004616805807 } ] } diff --git a/src/test/ValentinaTest/share/test_data.qrc b/src/test/ValentinaTest/share/test_data.qrc index 054d83e76..3f753fe63 100644 --- a/src/test/ValentinaTest/share/test_data.qrc +++ b/src/test/ValentinaTest/share/test_data.qrc @@ -155,5 +155,9 @@ hood_1/output.json hood_2/input.json hood_2/output.json + smart_pattern_#184_case1/input.json + smart_pattern_#184_case1/output.json + smart_pattern_#184_case2/input.json + smart_pattern_#184_case2/output.json diff --git a/src/test/ValentinaTest/share/women_jacket/input.json b/src/test/ValentinaTest/share/women_jacket/input.json index 92b1e85dc..9532a6915 100644 --- a/src/test/ValentinaTest/share/women_jacket/input.json +++ b/src/test/ValentinaTest/share/women_jacket/input.json @@ -2,267 +2,328 @@ "vector": [ { "angle": 1, + "turnPoint": true, "type": "VSAPoint", - "x": 1757.5596850393704, - "y": 2348.3168503937004 + "x": 1568.5833070866145, + "y": 2423.9074015748038 }, { "angle": 4, + "turnPoint": true, "type": "VSAPoint", - "x": 1757.5596850393704, - "y": 1290.0491338582679 + "x": 1568.5833070866145, + "y": 1365.63968503937 }, { "angle": 4, + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 1757.5596850393704, - "y": 1290.0491338582679 + "x": 1568.5833070866145, + "y": 1365.63968503937 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1759.7912938759064, - "y": 1287.1278334010926 + "x": 1570.816242888147, + "y": 1362.71568744024 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1764.1822572849478, - "y": 1281.1948680109103 + "x": 1575.2230054741763, + "y": 1356.750609203653 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1768.4871147052577, - "y": 1275.155205603556 + "x": 1579.5592124425257, + "y": 1350.6472268176071 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1772.7065318347309, - "y": 1269.0107799055045 + "x": 1583.8252806851538, + "y": 1344.4079797226923 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1776.8411743712643, - "y": 1262.7635246432294 + "x": 1588.0216270940189, + "y": 1338.0353073595 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1780.8917080127517, - "y": 1256.4153735432055 + "x": 1592.1486685610794, + "y": 1331.5316491686203 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1784.8587984570895, - "y": 1249.9682603319068 + "x": 1596.2068219782946, + "y": 1324.899444590645 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1788.7431114021726, - "y": 1243.424118735807 + "x": 1600.196504237622, + "y": 1318.141133066164 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1792.5453125458966, - "y": 1236.7848824813811 + "x": 1604.118132231021, + "y": 1311.259154035769 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1796.2660675861569, - "y": 1230.052485295103 + "x": 1607.97212285045, + "y": 1304.2559469400499 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1799.9060422208486, - "y": 1223.2288609034467 + "x": 1611.7588929878673, + "y": 1297.1339512195982 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1803.4659021478674, - "y": 1216.315943032887 + "x": 1615.4788595352315, + "y": 1289.8956063150047 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1806.9463130651081, - "y": 1209.3156654098975 + "x": 1619.1324393845011, + "y": 1282.5433516668595 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1810.3479406704669, - "y": 1202.2299617609528 + "x": 1622.7200494276346, + "y": 1275.0796267157546 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1813.6714506618382, - "y": 1195.0607658125273 + "x": 1626.2421065565911, + "y": 1267.5068709022798 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1816.9175087371186, - "y": 1187.8100112910947 + "x": 1629.6990276633287, + "y": 1259.8275236670265 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1820.0867805942025, - "y": 1180.4796319231295 + "x": 1633.091229639806, + "y": 1252.0440244505858 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1823.1799319309857, - "y": 1173.071561435106 + "x": 1636.4191293779813, + "y": 1244.1588126935476 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1826.1976284453635, - "y": 1165.5877335534983 + "x": 1639.6831437698136, + "y": 1236.1743278365034 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1829.140535835231, - "y": 1158.0300820047808 + "x": 1642.883689707261, + "y": 1228.0930093200436 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1832.0093197984838, - "y": 1150.4005405154276 + "x": 1646.0211840822826, + "y": 1219.9172965847597 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1834.8046460330174, - "y": 1142.7010428119129 + "x": 1649.0960437868368, + "y": 1211.6496290712416 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1837.527180236727, - "y": 1134.9335226207108 + "x": 1652.1086857128817, + "y": 1203.2924462200808 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1840.177588107508, - "y": 1127.0999136682956 + "x": 1655.0595267523763, + "y": 1194.8481874718677 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1842.7565353432558, - "y": 1119.202149681142 + "x": 1657.9489837972794, + "y": 1186.3192922671938 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1845.2646876418657, - "y": 1111.2421643857233 + "x": 1660.777473739549, + "y": 1177.7082000466494 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1847.7027107012332, - "y": 1103.2218915085145 + "x": 1663.5454134711435, + "y": 1169.0173502508255 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1850.0712702192538, - "y": 1095.1432647759896 + "x": 1666.2532198840217, + "y": 1160.2491823203127 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1852.3710318938226, - "y": 1087.0082179146227 + "x": 1668.9013098701428, + "y": 1151.4061356957022 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1854.6026614228351, - "y": 1078.8186846508884 + "x": 1671.4901003214645, + "y": 1142.4906498175844 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1856.7668245041864, - "y": 1070.5765987112604 + "x": 1675.2702934849708, + "y": 1128.9952262578786 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1858.8641868357727, - "y": 1062.2838938222133 + "x": 1680.097079882322, + "y": 1110.758892267691 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1861.8945772046159, - "y": 1049.7598790642978 + "x": 1684.694172195731, + "y": 1092.2767111941098 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1865.6964857439384, - "y": 1032.893960307379 + "x": 1689.064905560866, + "y": 1073.568198561862 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1869.2431738463158, - "y": 1015.8603728293192 + "x": 1693.2126151133948, + "y": 1054.6528698956738 }, { "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1872.539967094911, - "y": 998.6745864419124 + "x": 1697.1406359889866, + "y": 1035.5502407202723 }, { + "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1872.687545744951, - "y": 997.8092862318668 + "x": 1700.8523033233098, + "y": 1016.279826560384 }, { + "angle": 6, + "curvePoint": true, "type": "VSAPoint", - "x": 1872.687545744951, - "y": 997.8092862318668 + "x": 1704.3509522520321, + "y": 996.8611429407354 }, { + "curvePoint": true, + "turnPoint": true, "type": "VSAPoint", - "x": 2265.327771139798, - "y": 1170.387598811537 + "x": 1706.1534437776002, + "y": 986.2600243836739 }, { + "turnPoint": true, "type": "VSAPoint", - "x": 2657.967996534599, - "y": 1342.9659113912467 + "x": 1706.1534437776002, + "y": 986.2600243836739 }, { + "turnPoint": true, + "type": "VSAPoint", + "x": 2182.0626973417393, + "y": 1164.6129752419465 + }, + { + "turnPoint": true, + "type": "VSAPoint", + "x": 2657.971950905902, + "y": 1342.9659261001907 + }, + { + "turnPoint": true, "type": "VSAPoint", "x": 2656.1423622047246, "y": 1834.301102362205 }, { + "turnPoint": true, "type": "VSAPoint", - "x": 2265.327771139798, - "y": 2057.8585550849384 + "x": 2182.0626973417393, + "y": 2091.3173585520426 } ] } diff --git a/src/test/ValentinaTest/share/women_jacket/output.json b/src/test/ValentinaTest/share/women_jacket/output.json index b504a51cc..6b3cde5a2 100644 --- a/src/test/ValentinaTest/share/women_jacket/output.json +++ b/src/test/ValentinaTest/share/women_jacket/output.json @@ -2,78 +2,198 @@ "vector": [ { "type": "QPointF", - "x": 1757.5596850393704, - "y": 2391.8588727177203 + "x": 1568.5833070866145, + "y": 2466.899636735323 }, { "type": "QPointF", - "x": 1719.7644094488192, - "y": 2369.93686082615 + "x": 1530.7880314960632, + "y": 2444.397629175589 }, { "type": "QPointF", - "x": 1719.7644094488192, - "y": 1227.7886349977343 + "x": 1530.7880314960632, + "y": 1303.3662717896852 }, { "type": "QPointF", - "x": 1754.0719713708854, - "y": 1227.7886349977343 + "x": 1565.0289488018286, + "y": 1303.3662717896852 }, { "type": "QPointF", - "x": 1766.5587070320596, - "y": 1205.4401540147435 + "x": 1567.6493985645845, + "y": 1298.9273679673188 }, { "type": "QPointF", - "x": 1776.2755472432077, - "y": 1185.8728573991182 + "x": 1571.2801978860612, + "y": 1292.546780457792 }, { "type": "QPointF", - "x": 1788.302784728011, - "y": 1158.5090252566972 + "x": 1574.859747823907, + "y": 1286.0336123731731 }, { "type": "QPointF", - "x": 1799.2782438989425, - "y": 1129.8030736549547 + "x": 1578.3875246522634, + "y": 1279.390371186944 }, { "type": "QPointF", - "x": 1809.2165874181878, - "y": 1099.8835849309908 + "x": 1581.8630519109536, + "y": 1272.6196017209706 }, { "type": "QPointF", - "x": 1818.1370232965867, - "y": 1068.8818796809192 + "x": 1585.2858997393514, + "y": 1265.7238804797166 }, { "type": "QPointF", - "x": 1825.0896552609504, - "y": 1041.159385364977 + "x": 1588.6556838522097, + "y": 1258.7058105781102 }, { "type": "QPointF", - "x": 1845.6878874516358, - "y": 945.2861252995574 + "x": 1591.9720642398365, + "y": 1251.5680172241252 }, { "type": "QPointF", - "x": 2695.855122546167, - "y": 1318.3163126506975 + "x": 1595.234743662734, + "y": 1244.313143715131 }, { "type": "QPointF", - "x": 2693.856271020773, - "y": 1856.2696584444384 + "x": 1598.4434659992562, + "y": 1236.9438479061146 }, { "type": "QPointF", - "x": 1757.5596850393704, - "y": 2391.8588727177203 + "x": 1601.5980144952289, + "y": 1229.4627991086452 + }, + { + "type": "QPointF", + "x": 1604.698209955552, + "y": 1221.8726753803262 + }, + { + "type": "QPointF", + "x": 1607.7439089105044, + "y": 1214.176161166765 + }, + { + "type": "QPointF", + "x": 1610.735001782967, + "y": 1206.3759452598424 + }, + { + "type": "QPointF", + "x": 1613.6714110772768, + "y": 1198.474719038978 + }, + { + "type": "QPointF", + "x": 1616.5530896059097, + "y": 1190.4751749643133 + }, + { + "type": "QPointF", + "x": 1619.3800187662557, + "y": 1182.3800052934528 + }, + { + "type": "QPointF", + "x": 1622.1522068764511, + "y": 1174.191900995926 + }, + { + "type": "QPointF", + "x": 1624.8696875768705, + "y": 1165.913550841992 + }, + { + "type": "QPointF", + "x": 1627.5325183013285, + "y": 1157.547640644499 + }, + { + "type": "QPointF", + "x": 1630.1407788206084, + "y": 1149.0968526351237 + }, + { + "type": "QPointF", + "x": 1632.6945698593415, + "y": 1140.5638649577156 + }, + { + "type": "QPointF", + "x": 1635.1940117861686, + "y": 1131.9513512639123 + }, + { + "type": "QPointF", + "x": 1638.8758356659234, + "y": 1118.800801456876 + }, + { + "type": "QPointF", + "x": 1643.5599522461314, + "y": 1101.0882583142047 + }, + { + "type": "QPointF", + "x": 1648.0164441038125, + "y": 1083.1538213569538 + }, + { + "type": "QPointF", + "x": 1652.2606667736309, + "y": 1064.96989266722 + }, + { + "type": "QPointF", + "x": 1656.2944813347976, + "y": 1046.5575468464467 + }, + { + "type": "QPointF", + "x": 1660.1199228246344, + "y": 1027.9377737240454 + }, + { + "type": "QPointF", + "x": 1663.7391787165288, + "y": 1009.1314813751314 + }, + { + "type": "QPointF", + "x": 1667.1545701696903, + "y": 990.1595000861684 + }, + { + "type": "QPointF", + "x": 1676.5639144432128, + "y": 934.8087564828446 + }, + { + "type": "QPointF", + "x": 2695.864905802183, + "y": 1316.80456400314 + }, + { + "type": "QPointF", + "x": 2693.8539399587016, + "y": 1856.8484856387308 + }, + { + "type": "QPointF", + "x": 1568.5833070866145, + "y": 2466.899636735323 } ] } diff --git a/src/test/ValentinaTest/tst_findpoint.cpp b/src/test/ValentinaTest/tst_findpoint.cpp index 86982d028..3c2eb3f34 100644 --- a/src/test/ValentinaTest/tst_findpoint.cpp +++ b/src/test/ValentinaTest/tst_findpoint.cpp @@ -170,7 +170,7 @@ void TST_FindPoint::TestPointOfIntersectionCurves() static_cast(vCross), static_cast(hCross), &result); - Comparison(result, expect, accuracyPointOnLine); + ComparePointsDistance(result, expect, accuracyPointOnLine); } //--------------------------------------------------------------------------------------------------------------------- @@ -211,8 +211,8 @@ void TST_FindPoint::TestTrueDarts() VToolTrueDarts::FindPoint(baseLineP1, baseLineP2, dartP1, dartP2, dartP3, p1, p2); - Comparison(p1, expectP1, accuracyPointOnLine); - Comparison(p2, expectP2, accuracyPointOnLine); + ComparePointsDistance(p1, expectP1, accuracyPointOnLine); + ComparePointsDistance(p2, expectP2, accuracyPointOnLine); } //--------------------------------------------------------------------------------------------------------------------- @@ -239,7 +239,7 @@ void TST_FindPoint::TestLineIntersectAxis() QPointF resultPoint; VToolLineIntersectAxis::FindPoint(axis, line, &resultPoint); - Comparison(resultPoint, point, accuracyPointOnLine); + ComparePointsDistance(resultPoint, point, accuracyPointOnLine); } //--------------------------------------------------------------------------------------------------------------------- @@ -272,7 +272,7 @@ void TST_FindPoint::TestTriangle() QPointF resultPoint; VToolTriangle::FindPoint(axisP1, axisP2, firstPoint, secondPoint, &resultPoint); - Comparison(point, resultPoint, accuracyPointOnLine); + ComparePointsDistance(point, resultPoint, accuracyPointOnLine); } //--------------------------------------------------------------------------------------------------------------------- @@ -312,7 +312,7 @@ void TST_FindPoint::TestShoulderPoint() QPointF resultPoint = VToolShoulderPoint::FindPoint(p1, p2, pShoulder, length); - Comparison(point, resultPoint, accuracyPointOnLine); + ComparePointsDistance(point, resultPoint, accuracyPointOnLine); } //--------------------------------------------------------------------------------------------------------------------- @@ -745,5 +745,5 @@ void TST_FindPoint::TestCurveIntersectAxis() QPointF resultPoint; VToolCurveIntersectAxis::FindPoint(basePoint, angle, curvePoints, &resultPoint); - Comparison(resultPoint, result, accuracyPointOnLine); + ComparePointsDistance(resultPoint, result, accuracyPointOnLine); } diff --git a/src/test/ValentinaTest/tst_vabstractcurve.cpp b/src/test/ValentinaTest/tst_vabstractcurve.cpp index 4b6660afd..72d8e4d68 100644 --- a/src/test/ValentinaTest/tst_vabstractcurve.cpp +++ b/src/test/ValentinaTest/tst_vabstractcurve.cpp @@ -180,12 +180,8 @@ void TST_VAbstractCurve::CurveIntersectLine_data() auto ASSERT_TEST_CASE = [this](const char *title, const QString &input, const QString &output, QLineF line) { - QVector points; - AbstractTest::VectorFromJson(input, points); - - QVector intersections; - AbstractTest::VectorFromJson(output, intersections); - + QVector points = AbstractTest::VectorFromJson(input); + QVector intersections = AbstractTest::VectorFromJson(output); QTest::newRow(title) << points << intersections << line; }; diff --git a/src/test/ValentinaTest/tst_vabstractpiece.cpp b/src/test/ValentinaTest/tst_vabstractpiece.cpp index d70343d2d..ec87c2c0b 100644 --- a/src/test/ValentinaTest/tst_vabstractpiece.cpp +++ b/src/test/ValentinaTest/tst_vabstractpiece.cpp @@ -47,14 +47,10 @@ void TST_VAbstractPiece::EquidistantRemoveLoop_data() QTest::addColumn("width"); QTest::addColumn>("ekvOrig"); - auto ASSERT_TEST_CASE = [this](const char *title, const QString &input, const QString &output, qreal width) + auto ASSERT_TEST_CASE = [](const char *title, const QString &input, const QString &output, qreal width) { - QVector inputPoints; - AbstractTest::VectorFromJson(input, inputPoints); - - QVector outputPoints; - AbstractTest::VectorFromJson(output, outputPoints); - + QVector inputPoints = AbstractTest::VectorFromJson(input); + QVector outputPoints = AbstractTest::VectorFromJson(output); QTest::newRow(title) << inputPoints << width << outputPoints; }; @@ -256,43 +252,43 @@ void TST_VAbstractPiece::EquidistantRemoveLoop_data() QStringLiteral("://loop_start_point_on_line/output.json"), 37.795275590551185 /*seam allowance width (1.0 cm)*/); - // See file src/app/share/collection/bugs/DP_6_hem.val (private collection) + // See file valentina_private_collection/bugs/DP_6_hem/DP_6_hem.val ASSERT_TEST_CASE("By length", QStringLiteral("://DP_6_hem_by_length/input.json"), QStringLiteral("://DP_6_hem_by_length/output.json"), 37.795275590551185 /*seam allowance width (1.0 cm)*/); - // See file src/app/share/collection/bugs/DP_6_hem.val (private collection) + // See file valentina_private_collection/bugs/DP_6_hem/DP_6_hem.val ASSERT_TEST_CASE("By intersection", QStringLiteral("://DP_6_hem_by_intersection/input.json"), QStringLiteral("://DP_6_hem_by_intersection/output.json"), 37.795275590551185 /*seam allowance width (1.0 cm)*/); - // See file src/app/share/collection/bugs/DP_6_hem.val (private collection) + // See file valentina_private_collection/bugs/DP_6_hem/DP_6_hem.val ASSERT_TEST_CASE("By first edge symmetry", QStringLiteral("://DP_6_hem_by_first_edge_symmetry/input.json"), QStringLiteral("://DP_6_hem_by_first_edge_symmetry/output.json"), 37.795275590551185 /*seam allowance width (1.0 cm)*/); - // See file src/app/share/collection/bugs/DP_6_hem.val (private collection) + // See file valentina_private_collection/bugs/DP_6_hem/DP_6_hem.val ASSERT_TEST_CASE("By second edge symmetry", QStringLiteral("://DP_6_hem_by_second_edge_symmetry/input.json"), QStringLiteral("://DP_6_hem_by_second_edge_symmetry/output.json"), 37.795275590551185 /*seam allowance width (1.0 cm)*/); - // See file src/app/share/collection/bugs/DP_6_hem.val (private collection) + // See file valentina_private_collection/bugs/DP_6_hem/DP_6_hem.val ASSERT_TEST_CASE("By first edge right angle", QStringLiteral("://DP_6_hem_by_first_edge_right_angle/input.json"), QStringLiteral("://DP_6_hem_by_first_edge_right_angle/output.json"), 37.795275590551185 /*seam allowance width (1.0 cm)*/); - // See file src/app/share/collection/bugs/DP_6_hem.val (private collection) + // See file valentina_private_collection/bugs/DP_6_hem/DP_6_hem.val ASSERT_TEST_CASE("By second edge right angle", QStringLiteral("://DP_6_hem_by_second_edge_right_angle/input.json"), QStringLiteral("://DP_6_hem_by_second_edge_right_angle/output.json"), 37.795275590551185 /*seam allowance width (1.0 cm)*/); - // See file src/app/share/collection/bugs/DP_6.val (private collection) + // See file valentina_private_collection/bugs/DP_6/DP_6.val ASSERT_TEST_CASE("Hem by seam allowance", QStringLiteral("://DP_6/input.json"), QStringLiteral("://DP_6/output.json"), @@ -312,10 +308,11 @@ void TST_VAbstractPiece::EquidistantRemoveLoop() const QFETCH(qreal, width); QFETCH(QVector, ekvOrig); - const QVector ekv = VAbstractPiece::Equidistant(points, width, QString()); + QVector ekv; + CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv); // Begin comparison - Comparison(ekv, ekvOrig); + ComparePathsDistance(ekv, ekvOrig); } //--------------------------------------------------------------------------------------------------------------------- @@ -325,14 +322,10 @@ void TST_VAbstractPiece::LayoutAllowanceRemoveLoop_data() QTest::addColumn("width"); QTest::addColumn>("ekvOrig"); - auto ASSERT_TEST_CASE = [this](const char *title, const QString &input, const QString &output, qreal width) + auto ASSERT_TEST_CASE = [](const char *title, const QString &input, const QString &output, qreal width) { - QVector inputPoints; - AbstractTest::VectorFromJson(input, inputPoints); - - QVector outputPoints; - AbstractTest::VectorFromJson(output, outputPoints); - + QVector inputPoints = AbstractTest::VectorFromJson(input); + QVector outputPoints = AbstractTest::VectorFromJson(output); QTest::newRow(title) << inputPoints << width << outputPoints; }; @@ -348,13 +341,13 @@ void TST_VAbstractPiece::LayoutAllowanceRemoveLoop_data() QStringLiteral("://smart_pattern_#99/output.json"), 28.346456692913389 /*seam allowance width*/); - // See file valentina_private_collection/test/smart_pattern_#120/smart_pattern_#120.val (private collection) + // See file valentina_private_collection/test/smart_pattern_#120/smart_pattern_#120.val ASSERT_TEST_CASE("Piece 1", QStringLiteral("://smart_pattern_#120_piece_1/input.json"), QStringLiteral("://smart_pattern_#120_piece_1/output.json"), 37.795275590551185); - // See file valentina_private_collection/test/smart_pattern_#120/smart_pattern_#120.val (private collection) + // See file valentina_private_collection/test/smart_pattern_#120/smart_pattern_#120.val ASSERT_TEST_CASE("Piece 2", QStringLiteral("://smart_pattern_#120_piece_2/input.json"), QStringLiteral("://smart_pattern_#120_piece_2/output.json"), @@ -368,10 +361,11 @@ void TST_VAbstractPiece::LayoutAllowanceRemoveLoop() const QFETCH(qreal, width); QFETCH(QVector, ekvOrig); - const QVector ekv = VAbstractPiece::Equidistant(points, width, QString()); + QVector ekv; + CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv); // Begin comparison - Comparison(ekv, ekvOrig); + ComparePathsDistance(ekv, ekvOrig); } //--------------------------------------------------------------------------------------------------------------------- @@ -391,14 +385,10 @@ void TST_VAbstractPiece::RawPathRemoveLoop_data() const QTest::addColumn>("path"); QTest::addColumn>("expect"); - auto ASSERT_TEST_CASE = [this](const char *title, const QString &input, const QString &output) + auto ASSERT_TEST_CASE = [](const char *title, const QString &input, const QString &output) { - QVector inputPoints; - AbstractTest::VectorFromJson(input, inputPoints); - - QVector outputPoints; - AbstractTest::VectorFromJson(output, outputPoints); - + QVector inputPoints = AbstractTest::VectorFromJson(input); + QVector outputPoints = AbstractTest::VectorFromJson(output); QTest::newRow(title) << inputPoints << outputPoints; }; @@ -414,8 +404,9 @@ void TST_VAbstractPiece::RawPathRemoveLoop() const QFETCH(QVector, path); QFETCH(QVector, expect); - QVector res = VAbstractPiece::CheckLoops(path); - Comparison(res, expect); + QVector res; + CastTo(VAbstractPiece::CheckLoops(path), res); + ComparePathsDistance(res, expect); } //--------------------------------------------------------------------------------------------------------------------- @@ -688,7 +679,7 @@ void TST_VAbstractPiece::PathRemoveLoop() const QFETCH(QVector, expect); QVector res = VAbstractPiece::CheckLoops(path); - Comparison(res, expect); + ComparePathsDistance(res, expect); } //--------------------------------------------------------------------------------------------------------------------- @@ -874,7 +865,7 @@ void TST_VAbstractPiece::PathLoopsCase() const QFETCH(QVector, expect); const QVector res = VAbstractPiece::CheckLoops(path); - Comparison(res, expect); + ComparePathsDistance(res, expect); } //--------------------------------------------------------------------------------------------------------------------- @@ -884,14 +875,10 @@ void TST_VAbstractPiece::BrokenDetailEquidistant_data() QTest::addColumn("width"); QTest::addColumn>("ekvOrig"); - auto ASSERT_TEST_CASE = [this](const char *title, const QString &input, const QString &output, qreal width) + auto ASSERT_TEST_CASE = [](const char *title, const QString &input, const QString &output, qreal width) { - QVector inputPoints; - AbstractTest::VectorFromJson(input, inputPoints); - - QVector outputPoints; - AbstractTest::VectorFromJson(output, outputPoints); - + QVector inputPoints = AbstractTest::VectorFromJson(input); + QVector outputPoints = AbstractTest::VectorFromJson(output); QTest::newRow(title) << inputPoints << width << outputPoints; }; @@ -939,7 +926,7 @@ void TST_VAbstractPiece::BrokenDetailEquidistant_data() QStringLiteral("://Issue_883_prong/output.json"), 37.795275590551185 /*seam allowance width*/); - // See the file "collection/bugs/doll.val" (private collection) + // See the file "valentina_private_collection/bugs/doll/doll.val" ASSERT_TEST_CASE("Doll.", QStringLiteral("://doll/input.json"), QStringLiteral("://doll/output.json"), @@ -969,6 +956,18 @@ void TST_VAbstractPiece::BrokenDetailEquidistant_data() QStringLiteral("://hood_2/input.json"), QStringLiteral("://hood_2/output.json"), 37.795275590551185 /*seam allowance width*/); + + // See the file "collection/bugs/smart_pattern_#184_case1.val" + ASSERT_TEST_CASE("Issue #184 case 1", + QStringLiteral("://smart_pattern_#184_case1/input.json"), + QStringLiteral("://smart_pattern_#184_case1/output.json"), + 0.88157480314960635 /*seam allowance width*/); + + // See the file "collection/bugs/smart_pattern_#184_case2.val" + ASSERT_TEST_CASE("Issue #184 case 2", + QStringLiteral("://smart_pattern_#184_case2/input.json"), + QStringLiteral("://smart_pattern_#184_case2/output.json"), + 37.795275590551185 /*seam allowance width*/); } //--------------------------------------------------------------------------------------------------------------------- @@ -978,10 +977,11 @@ void TST_VAbstractPiece::BrokenDetailEquidistant() const QFETCH(qreal, width); QFETCH(QVector, ekvOrig); - const QVector ekv = VAbstractPiece::Equidistant(points, width, QString());// Take result + QVector ekv; + CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv);// Take result // Begin comparison - Comparison(ekv, ekvOrig); + ComparePathsDistance(ekv, ekvOrig); } //--------------------------------------------------------------------------------------------------------------------- @@ -991,14 +991,10 @@ void TST_VAbstractPiece::EquidistantAngleType_data() QTest::addColumn("width"); QTest::addColumn>("ekvOrig"); - auto ASSERT_TEST_CASE = [this](const char *title, const QString &input, const QString &output, qreal width) + auto ASSERT_TEST_CASE = [](const char *title, const QString &input, const QString &output, qreal width) { - QVector inputPoints; - AbstractTest::VectorFromJson(input, inputPoints); - - QVector outputPoints; - AbstractTest::VectorFromJson(output, outputPoints); - + QVector inputPoints = AbstractTest::VectorFromJson(input); + QVector outputPoints = AbstractTest::VectorFromJson(output); QTest::newRow(title) << inputPoints << width << outputPoints; }; @@ -1050,37 +1046,37 @@ void TST_VAbstractPiece::EquidistantAngleType_data() QStringLiteral("://Issue_937_case_5/output.json"), 37.795275590551185 /*seam allowance width*/); - // See file src/app/share/collection/bugs/busty.val (private collection) + // See file valentina_private_collection/bugs/busty/busty.val ASSERT_TEST_CASE("Busty", QStringLiteral("://busty/input.json"), QStringLiteral("://busty/output.json"), 0 /*seam allowance width*/); - // See file src/app/share/collection/bugs/panties.val (private collection) + // See file valentina_private_collection/bugs/panties/panties.val ASSERT_TEST_CASE("Panties. Piece Case 1", QStringLiteral("://panties_case1/input.json"), QStringLiteral("://panties_case1/output.json"), 26.45669291338583 /*seam allowance width*/); - // See file src/app/share/collection/bugs/panties.val (private collection) + // See file valentina_private_collection/bugs/panties/panties.val ASSERT_TEST_CASE("Panties. Piece Case 2", QStringLiteral("://panties_case2/input.json"), QStringLiteral("://panties_case2/output.json"), 26.45669291338583 /*seam allowance width*/); - // See file valentina_private_collection/bugs/smart_pattern_#113/smart_pattern_#113.val (private collection) + // See file valentina_private_collection/bugs/smart_pattern_#113/smart_pattern_#113.val ASSERT_TEST_CASE("Эдит 6", QStringLiteral("://smart_pattern_#113/input.json"), QStringLiteral("://smart_pattern_#113/output.json"), 0.56692913385826771 /*seam allowance width*/); - // See file src/app/share/collection/bugs/smart_pattern_#118.val (private collection) + // See file valentina_private_collection/bugs/smart_pattern_#118/smart_pattern_#118.val ASSERT_TEST_CASE("Ретро стринги 3", QStringLiteral("://smart_pattern_#118/input.json"), QStringLiteral("://smart_pattern_#118/output.json"), 26.45669291338583 /*seam allowance width*/); - // See file src/app/share/collection/bugs/smart_pattern_#133.val (private collection) + // See file valentina_private_collection/bugs/smart_pattern_#133/smart_pattern_#133.val ASSERT_TEST_CASE("Эдит 1", QStringLiteral("://smart_pattern_#133/input.json"), QStringLiteral("://smart_pattern_#133/output.json"), @@ -1094,10 +1090,11 @@ void TST_VAbstractPiece::EquidistantAngleType() const QFETCH(qreal, width); QFETCH(QVector, ekvOrig); - const QVector ekv = VAbstractPiece::Equidistant(points, width, QString());// Take result + QVector ekv; + CastTo(VAbstractPiece::Equidistant(points, width, QString()), ekv);// Take result // Begin comparison - Comparison(ekv, ekvOrig); + ComparePathsDistance(ekv, ekvOrig); } //--------------------------------------------------------------------------------------------------------------------- @@ -1134,7 +1131,7 @@ void TST_VAbstractPiece::CorrectEquidistantPoints() const const QVector res = VAbstractPiece::CorrectEquidistantPoints(points, removeFirstAndLast); // Begin comparison - Comparison(res, expect); + ComparePathsDistance(res, expect); } //--------------------------------------------------------------------------------------------------------------------- @@ -1143,14 +1140,10 @@ void TST_VAbstractPiece::TestCorrectEquidistantPoints_data() QTest::addColumn>("before"); QTest::addColumn>("expect"); - auto ASSERT_TEST_CASE = [this](const char *title, const QString &input, const QString &output) + auto ASSERT_TEST_CASE = [](const char *title, const QString &input, const QString &output) { - QVector inputPoints; - AbstractTest::VectorFromJson(input, inputPoints); - - QVector outputPoints; - AbstractTest::VectorFromJson(output, outputPoints); - + QVector inputPoints = AbstractTest::VectorFromJson(input); + QVector outputPoints = AbstractTest::VectorFromJson(output); QTest::newRow(title) << inputPoints << outputPoints; }; @@ -1172,7 +1165,7 @@ void TST_VAbstractPiece::TestCorrectEquidistantPoints() const QFETCH(QVector, expect); QVector after = VAbstractPiece::CorrectEquidistantPoints(before); - Comparison(after, expect); + ComparePathsDistance(after, expect); } //--------------------------------------------------------------------------------------------------------------------- @@ -1289,7 +1282,7 @@ void TST_VAbstractPiece::PossibleInfiniteClearLoops() const QFETCH(QVector, expect); QVector res = VAbstractPiece::CheckLoops(path); - Comparison(res, expect); + ComparePathsDistance(res, expect); } //--------------------------------------------------------------------------------------------------------------------- @@ -1299,14 +1292,10 @@ void TST_VAbstractPiece::IsAllowanceValid_data() const QTest::addColumn>("allowance"); QTest::addColumn("valid"); - auto ASSERT_TEST_CASE = [this](const char *title, const QString &base, const QString &allowance, bool valid) + auto ASSERT_TEST_CASE = [](const char *title, const QString &base, const QString &allowance, bool valid) { - QVector basePoints; - AbstractTest::VectorFromJson(base, basePoints); - - QVector allowancePoints; - AbstractTest::VectorFromJson(allowance, allowancePoints); - + QVector basePoints = AbstractTest::VectorFromJson(base); + QVector allowancePoints = AbstractTest::VectorFromJson(allowance); QTest::newRow(title) << basePoints << allowancePoints << valid ; }; diff --git a/src/test/ValentinaTest/tst_varc.cpp b/src/test/ValentinaTest/tst_varc.cpp index 6b2bced6f..8c45f793a 100644 --- a/src/test/ValentinaTest/tst_varc.cpp +++ b/src/test/ValentinaTest/tst_varc.cpp @@ -458,7 +458,7 @@ void TST_VArc::TestCurveIntersectAxis() const bool found = VAbstractCurve::CurveIntersectAxis(basePoint, angle, curvePoints, &intersectionPoint); QCOMPARE(found, result); - Comparison(intersectionPoint, crosPoint, accuracyPointOnLine); + ComparePointsDistance(intersectionPoint, crosPoint, accuracyPointOnLine); } //--------------------------------------------------------------------------------------------------------------------- @@ -466,6 +466,6 @@ void TST_VArc::EmptyArc() { VArc empty; - Comparison(empty.GetPoints(), {QPointF()}); + ComparePathsDistance(empty.GetPoints(), {QPointF()}); QCOMPARE(empty.GetLength(), 0.); } diff --git a/src/test/ValentinaTest/tst_vellipticalarc.cpp b/src/test/ValentinaTest/tst_vellipticalarc.cpp index 80f068f60..b717b83c5 100644 --- a/src/test/ValentinaTest/tst_vellipticalarc.cpp +++ b/src/test/ValentinaTest/tst_vellipticalarc.cpp @@ -477,8 +477,8 @@ void TST_VEllipticalArc::TestGetPoints5() if (points.size() > 2 && qFuzzyIsNull(rotationAngle)) { const qreal testAccuracy = ToPixel(1.5, Unit::Mm); - Comparison(arc.GetP1(), ConstFirst(points), testAccuracy); - Comparison(arc.GetP2(), ConstLast(points), testAccuracy); + ComparePointsDistance(arc.GetP1(), ConstFirst(points), testAccuracy); + ComparePointsDistance(arc.GetP2(), ConstLast(points), testAccuracy); const qreal eps = 0.15; diff --git a/src/test/ValentinaTest/tst_vlayoutdetail.cpp b/src/test/ValentinaTest/tst_vlayoutdetail.cpp index 2ca09f79a..5353ec947 100644 --- a/src/test/ValentinaTest/tst_vlayoutdetail.cpp +++ b/src/test/ValentinaTest/tst_vlayoutdetail.cpp @@ -57,10 +57,14 @@ void TST_VLayoutDetail::Case1() const // https://bitbucket.org/dismine/valentina/issue/304/layout-appears-different-than-my-pattern VLayoutPiece det = VLayoutPiece(); - det.SetCountourPoints(InputPointsCase1()); + QVector inputPoints; + CastTo(InputPointsCase1(), inputPoints); + det.SetCountourPoints(inputPoints); // Begin comparison - Comparison(det.GetMappedContourPoints(), OutputPointsCase1()); + QVector contourPoints; + CastTo(det.GetMappedContourPoints(), contourPoints); + ComparePathsDistance(contourPoints, OutputPointsCase1()); } //--------------------------------------------------------------------------------------------------------------------- @@ -119,10 +123,14 @@ QVector TST_VLayoutDetail::OutputPointsCase1() const //-V524 void TST_VLayoutDetail::Case2() const { VLayoutPiece det = VLayoutPiece(); - det.SetCountourPoints(InputPointsCase2()); + QVector inputPoints; + CastTo(InputPointsCase2(), inputPoints); + det.SetCountourPoints(inputPoints); // Begin comparison - Comparison(det.GetMappedContourPoints(), OutputPointsCase2()); + QVector contourPoints; + CastTo(det.GetMappedContourPoints(), contourPoints); + ComparePathsDistance(contourPoints, OutputPointsCase2()); } //--------------------------------------------------------------------------------------------------------------------- @@ -160,10 +168,14 @@ QVector TST_VLayoutDetail::OutputPointsCase2() const void TST_VLayoutDetail::Case3() const { VLayoutPiece det = VLayoutPiece(); - det.SetCountourPoints(InputPointsCase3()); + QVector inputPoints; + CastTo(InputPointsCase3(), inputPoints); + det.SetCountourPoints(inputPoints); // Begin comparison - Comparison(det.GetMappedContourPoints(), OutputPointsCase3()); + QVector contourPoints; + CastTo(det.GetMappedContourPoints(), contourPoints); + ComparePathsDistance(contourPoints, OutputPointsCase3()); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/test/ValentinaTest/tst_vpiece.cpp b/src/test/ValentinaTest/tst_vpiece.cpp index 64767ffcb..3de24777b 100644 --- a/src/test/ValentinaTest/tst_vpiece.cpp +++ b/src/test/ValentinaTest/tst_vpiece.cpp @@ -44,22 +44,28 @@ TST_VPiece::TST_VPiece(QObject *parent) //--------------------------------------------------------------------------------------------------------------------- void TST_VPiece::Issue620() { - // See file /src/app/share/collection/bugs/Issue_#620.vit - // Check main path - const Unit unit = Unit::Cm; - QSharedPointer data(new VContainer(nullptr, &unit, VContainer::UniqueNamespace())); - VAbstractValApplication::VApp()->SetPatternUnits(unit); + try + { + // See file /src/app/share/collection/bugs/Issue_#620.vit + // Check main path + const Unit unit = Unit::Cm; + QSharedPointer data(new VContainer(nullptr, &unit, VContainer::UniqueNamespace())); + VAbstractValApplication::VApp()->SetPatternUnits(unit); - VPiece detail; - AbstractTest::PieceFromJson(QStringLiteral("://Issue_620/input.json"), detail, data); + VPiece detail; + AbstractTest::PieceFromJson(QStringLiteral("://Issue_620/input.json"), detail, data); - const QVector pointsEkv = detail.MainPathPoints(data.data()); + QVector pointsEkv; + CastTo(detail.MainPathPoints(data.data()), pointsEkv); + QVector origPoints = AbstractTest::VectorFromJson(QStringLiteral("://Issue_620/output.json")); - QVector origPoints; - AbstractTest::VectorFromJson(QStringLiteral("://Issue_620/output.json"), origPoints); - - // Begin comparison - Comparison(pointsEkv, origPoints); + // Begin comparison + ComparePathsDistance(pointsEkv, origPoints); + } + catch (const VException &e) + { + QFAIL(qUtf8Printable(e.ErrorMessage())); + } } //--------------------------------------------------------------------------------------------------------------------- @@ -78,8 +84,7 @@ void TST_VPiece::TestSAPassmark_data() VPiecePassmarkData inputPassmarkData; AbstractTest::PassmarkDataFromJson(passmarkData, inputPassmarkData); - QVector inputSeamAllowance; - AbstractTest::VectorFromJson(seamAllowance, inputSeamAllowance); + QVector inputSeamAllowance = AbstractTest::VectorFromJson(seamAllowance); QVector inputOutputShape; AbstractTest::PassmarkShapeFromJson(shape, inputOutputShape); @@ -105,5 +110,5 @@ void TST_VPiece::TestSAPassmark() VPassmark passmark(passmarkData); - Comparison(passmark.SAPassmark(seamAllowance, PassmarkSide::All), expectedResult); + CompareLinesDistance(passmark.SAPassmark(seamAllowance, PassmarkSide::All), expectedResult); } diff --git a/src/test/ValentinaTest/tst_vspline.cpp b/src/test/ValentinaTest/tst_vspline.cpp index eaee5b45b..907e7f7a8 100644 --- a/src/test/ValentinaTest/tst_vspline.cpp +++ b/src/test/ValentinaTest/tst_vspline.cpp @@ -162,7 +162,7 @@ void TST_VSpline::GetSegmentPoints() origPoints.append(QPointF(681.3372913240995, 1815.7969526662778)); // Begin comparison - Comparison(points, origPoints); + ComparePathsDistance(points, origPoints); } //--------------------------------------------------------------------------------------------------------------------- @@ -251,7 +251,7 @@ void TST_VSpline::GetSegmentPoints_issue412() origPoints.append(QPointF(758.4176810783842, 206.13572832247544)); // Begin comparison - Comparison(points, origPoints); + ComparePathsDistance(points, origPoints); } //--------------------------------------------------------------------------------------------------------------------- @@ -370,7 +370,7 @@ void TST_VSpline::GetSegmentPoints_TestPuzzle() origPoints.append(QPointF(957.69883966, 943.844812978)); // Begin comparison - Comparison(points, origPoints); + ComparePathsDistance(points, origPoints); } //--------------------------------------------------------------------------------------------------------------------- @@ -525,7 +525,7 @@ void TST_VSpline::GetSegmentPoints_NullSegment() origPoints.append(QPointF(146.3718263928647, 6.419281580065625)); // Begin comparison - Comparison(points, origPoints); + ComparePathsDistance(points, origPoints); } //--------------------------------------------------------------------------------------------------------------------- @@ -627,7 +627,7 @@ void TST_VSpline::GetSegmentPoints_RotateTool() origPoints.append(QPointF(46.623829088412336, 167.78988631718659)); // Begin comparison - Comparison(points, origPoints); + ComparePathsDistance(points, origPoints); } //--------------------------------------------------------------------------------------------------------------------- @@ -687,7 +687,7 @@ void TST_VSpline::GetSegmentPoints_issue767() origPoints.append(QPointF(4200.083592082314, 2559.5684873884893)); // Begin comparison - Comparison(res, origPoints); + ComparePathsDistance(res, origPoints); } //--------------------------------------------------------------------------------------------------------------------- @@ -928,5 +928,5 @@ void TST_VSpline::CompareSplines(const VSpline &spl1, const VSpline &spl2) const QCOMPARE(spl1.GetKcurve(), spl2.GetKcurve()); // Compare points - Comparison(spl1.GetPoints(), spl2.GetPoints()); + ComparePathsDistance(spl1.GetPoints(), spl2.GetPoints()); }