From ed970fe6f618d1d8ccaa5a1ae04eba22198a3157 Mon Sep 17 00:00:00 2001 From: llocram Date: Fri, 28 Aug 2020 13:57:14 +0200 Subject: [PATCH 1/4] Minor refactoring --- src/libs/vlayout/vlayoutpiece.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libs/vlayout/vlayoutpiece.cpp b/src/libs/vlayout/vlayoutpiece.cpp index 680683785..6a9f61a98 100644 --- a/src/libs/vlayout/vlayoutpiece.cpp +++ b/src/libs/vlayout/vlayoutpiece.cpp @@ -175,7 +175,7 @@ QVector PrepareAllowance(const QVector &points) { QVector allowancePoints; allowancePoints.reserve(points.size()); - for(auto point : points) + for(auto &point : points) { allowancePoints.append(VSAPoint(point)); } @@ -206,8 +206,9 @@ QStringList PieceLabelText(const QVector &labelShape, const VTextManage QStringList text; if (labelShape.count() > 2) { - text.reserve(tm.GetSourceLinesCount()); - for (int i = 0; i < tm.GetSourceLinesCount(); ++i) + int sourceCount = tm.GetSourceLinesCount(); + text.reserve(sourceCount); + for (int i = 0; i < sourceCount; ++i) { text.append(tm.GetSourceLine(i).m_qsText); } @@ -219,9 +220,9 @@ QStringList PieceLabelText(const QVector &labelShape, const VTextManage QVector ConvertPlaceLabels(const VPiece &piece, const VContainer *pattern) { QVector labels; - const QVector placeLabels = piece.GetPlaceLabels(); + const auto placeLabels = piece.GetPlaceLabels(); labels.reserve(placeLabels.size()); - for(auto placeLabel : placeLabels) + for(auto &placeLabel : placeLabels) { const auto label = pattern->GeometricObject(placeLabel); if (label->IsVisible()) From 1a2c5de357d8d3c15d3c27830e91cc8bea5a4b2f Mon Sep 17 00:00:00 2001 From: llocram Date: Fri, 28 Aug 2020 14:09:16 +0200 Subject: [PATCH 2/4] Replaced hand-crafted reverse algorithm with std::reverse --- src/libs/vlayout/vlayoutpiece.cpp | 15 +++------------ src/libs/vmisc/compatibility.h | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/src/libs/vlayout/vlayoutpiece.cpp b/src/libs/vlayout/vlayoutpiece.cpp index 6a9f61a98..c6d79c4da 100644 --- a/src/libs/vlayout/vlayoutpiece.cpp +++ b/src/libs/vlayout/vlayoutpiece.cpp @@ -508,20 +508,11 @@ VLayoutPiece VLayoutPiece::Create(const VPiece &piece, vidtype id, const VContai template QVector VLayoutPiece::Map(QVector points) const { - for (int i = 0; i < points.size(); ++i) - { - points[i] = d->matrix.map(points.at(i)); - } - + std::transform(points.begin(), points.end(), points.begin(), + [this](const auto &point) { return d->matrix.map(point); }); if (d->mirror) { - QList list = ConvertToList(points); - - for (int k=0, s=list.size(), max=(s/2); k ConvertToVector(const QSet &container) } //--------------------------------------------------------------------------------------------------------------------- -template -inline void SwapItemsAt(T &container, int i, int j) -{ -#if QT_VERSION >= QT_VERSION_CHECK(5, 13, 0) - container.swapItemsAt(i, j); -#else - container.swap(i, j); -#endif -} +// NOTE: Delete if not necessary anymore +//template +//inline void SwapItemsAt(T &container, int i, int j) +//{ +//#if QT_VERSION >= QT_VERSION_CHECK(5, 13, 0) +// container.swapItemsAt(i, j); +//#else +// container.swap(i, j); +//#endif +//} //--------------------------------------------------------------------------------------------------------------------- template From 819bcadee4ed866e3d87c4ad3513e7bf41ff421c Mon Sep 17 00:00:00 2001 From: llocram Date: Fri, 28 Aug 2020 14:18:41 +0200 Subject: [PATCH 3/4] Replaced hand-crafted find-algorithm with std::find_if. Removed a logical error (pos > points.size() never returns true). --- src/libs/vlayout/vlayoutpiece.cpp | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/src/libs/vlayout/vlayoutpiece.cpp b/src/libs/vlayout/vlayoutpiece.cpp index c6d79c4da..e4652fb52 100644 --- a/src/libs/vlayout/vlayoutpiece.cpp +++ b/src/libs/vlayout/vlayoutpiece.cpp @@ -1399,30 +1399,20 @@ QLineF VLayoutPiece::Edge(const QVector &path, int i) const } //--------------------------------------------------------------------------------------------------------------------- +// 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 { - if (p1.isNull()) + if (p1.isNull() || path.count() < 3) { return 0; } - if (path.count() < 3) + const auto points = Map(path); + const auto posIter = std::find_if(points.cbegin(), points.cend(), + [&p1](const auto &point){ return VFuzzyComparePoints(point, p1); }); + if (posIter != points.cend()) { - return 0; - } - - const QVector points = Map(path); - for (int i=0; i < points.size(); i++) - { - if (VFuzzyComparePoints(points.at(i), p1)) - { - int pos = i+1; - if (pos > points.size()) - { - pos = 1; - } - return pos; - } + return posIter - points.cbegin() + 1; } return 0; // Did not find edge } From c8119b88c9d483ec309acb48d8fa605a878f9893 Mon Sep 17 00:00:00 2001 From: llocram Date: Fri, 28 Aug 2020 17:32:35 +0200 Subject: [PATCH 4/4] Silenced conversion warning --- src/libs/vlayout/vlayoutpiece.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/vlayout/vlayoutpiece.cpp b/src/libs/vlayout/vlayoutpiece.cpp index e4652fb52..4de28a48b 100644 --- a/src/libs/vlayout/vlayoutpiece.cpp +++ b/src/libs/vlayout/vlayoutpiece.cpp @@ -1412,7 +1412,7 @@ int VLayoutPiece::EdgeByPoint(const QVector &path, const QPointF &p1) c [&p1](const auto &point){ return VFuzzyComparePoints(point, p1); }); if (posIter != points.cend()) { - return posIter - points.cbegin() + 1; + return static_cast(posIter - points.cbegin() + 1); } return 0; // Did not find edge }