From 63292fa235731d3b018fa3a8cd662ea277db9d84 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 8 Feb 2024 18:37:51 +0200 Subject: [PATCH] Sonar warnings. --- src/libs/vdxf/vdxfengine.cpp | 6 +-- src/libs/vgeometry/vgobject.cpp | 42 ++++++++----------- src/libs/vgeometry/vpointf.cpp | 2 +- src/libs/vlayout/vabstractpiece.cpp | 33 ++++++++------- src/libs/vlayout/vabstractpiece.h | 5 +-- src/libs/vlayout/vfoldline.cpp | 30 ++++++------- src/libs/vlayout/vlayoutpiece.cpp | 5 ++- src/libs/vlayout/vlayoutpoint.cpp | 6 +++ src/libs/vlayout/vlayoutpoint.h | 1 + src/libs/vpatterndb/vpassmark.cpp | 2 +- src/libs/vpatterndb/vpiecepath.cpp | 4 +- src/libs/vpatterndb/vtranslatevars.cpp | 2 +- .../tools/piece/dialogseamallowance.cpp | 12 ------ 13 files changed, 72 insertions(+), 78 deletions(-) diff --git a/src/libs/vdxf/vdxfengine.cpp b/src/libs/vdxf/vdxfengine.cpp index 70a1eea19..274c28113 100644 --- a/src/libs/vdxf/vdxfengine.cpp +++ b/src/libs/vdxf/vdxfengine.cpp @@ -1993,13 +1993,13 @@ auto VDxfEngine::NotchPrecedingPoint(const QVector &boundary, QPoi if (VFuzzyComparePoints(boundary.constFirst(), notchBase)) { - point = boundary.constFirst(); + point = boundary.constFirst().ToQPointF(); return true; } if (VFuzzyComparePoints(boundary.constLast(), notchBase)) { - point = boundary.constLast(); + point = boundary.constLast().ToQPointF(); return true; } @@ -2016,7 +2016,7 @@ auto VDxfEngine::NotchPrecedingPoint(const QVector &boundary, QPoi const qreal length = QLineF(notchBase, cPoint).length(); if (length < bestDistance) { - candidatePoint = boundary.at(i); + candidatePoint = boundary.at(i).ToQPointF(); bestDistance = length; found = true; } diff --git a/src/libs/vgeometry/vgobject.cpp b/src/libs/vgeometry/vgobject.cpp index b88508e7f..ce5460f52 100644 --- a/src/libs/vgeometry/vgobject.cpp +++ b/src/libs/vgeometry/vgobject.cpp @@ -374,37 +374,31 @@ auto VGObject::ContactPoints(const QPointF &p, const QPointF ¢er, qreal radi */ auto VGObject::LineIntersectRect(const QRectF &rec, const QLineF &line) -> QPointF { - qreal x1, y1, x2, y2; + qreal x1 = 0; + qreal y1 = 0; + qreal x2 = 0; + qreal y2 = 0; rec.getCoords(&x1, &y1, &x2, &y2); + + // Define lines representing each side of the rectangle + QLineF const topLine(QPointF(x1, y1), QPointF(x2, y1)); + QLineF const bottomLine(QPointF(x1, y2), QPointF(x2, y2)); + QLineF const leftLine(QPointF(x1, y1), QPointF(x1, y2)); + QLineF const rightLine(QPointF(x2, y1), QPointF(x2, y2)); + QPointF point; - QLineF::IntersectType type = line.intersects(QLineF(QPointF(x1, y1), QPointF(x1, y2)), &point); - if (type == QLineF::BoundedIntersection) + // Check intersections with each side of the rectangle + if (line.intersects(topLine, &point) == QLineF::BoundedIntersection || + line.intersects(bottomLine, &point) == QLineF::BoundedIntersection || + line.intersects(leftLine, &point) == QLineF::BoundedIntersection || + line.intersects(rightLine, &point) == QLineF::BoundedIntersection) { return point; } - type = line.intersects(QLineF(QPointF(x1, y1), QPointF(x2, y1)), &point); - - if (type == QLineF::BoundedIntersection) - { - return point; - } - - type = line.intersects(QLineF(QPointF(x1, y2), QPointF(x2, y2)), &point); - - if (type == QLineF::BoundedIntersection) - { - return point; - } - - type = line.intersects(QLineF(QPointF(x2, y1), QPointF(x2, y2)), &point); - - if (type == QLineF::BoundedIntersection) - { - return point; - } - return point; + // Return the point (which would be (0,0) if no intersection is found) + return {}; } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vgeometry/vpointf.cpp b/src/libs/vgeometry/vpointf.cpp index b06901aa5..33d39413f 100644 --- a/src/libs/vgeometry/vpointf.cpp +++ b/src/libs/vgeometry/vpointf.cpp @@ -55,7 +55,7 @@ COPY_CONSTRUCTOR_IMPL_2(VPointF, VGObject) //--------------------------------------------------------------------------------------------------------------------- VPointF::VPointF(const QPointF &point) - : VGObject(VPointF()), + : VGObject(GOType::Point, 0, Draw::Calculation), d(new VPointFData(point)) { } diff --git a/src/libs/vlayout/vabstractpiece.cpp b/src/libs/vlayout/vabstractpiece.cpp index 8c1ca6826..54eb320ba 100644 --- a/src/libs/vlayout/vabstractpiece.cpp +++ b/src/libs/vlayout/vabstractpiece.cpp @@ -609,7 +609,7 @@ auto AngleBySecondRightAngle(QVector points, QPointF p1, QPointF p2 if (success) { points = temp; - px = points.constLast(); + px = points.constLast().ToQPointF(); } if (countBefore > 0) @@ -852,7 +852,7 @@ void RollbackBySecondEdgeRightAngle(QVector &ekvPoints, const QVect if (success) { ekvPoints = temp; - px = ekvPoints.constLast(); + px = ekvPoints.constLast().ToQPointF(); } QLineF seam(px, points.at(1)); @@ -1322,23 +1322,28 @@ auto VAbstractPiece::EkvPoint(QVector points, const VSAPoint &p1Lin break; case PieceNodeAngle::ByLength: case PieceNodeAngle::ByLengthCurve: - return AngleByLength(points, p1Line1, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2, p2Line1, - width, needRollback); + return AngleByLength(points, p1Line1.ToQPointF(), p2Line1.ToQPointF(), p1Line2.ToQPointF(), + bigLine1, crosPoint, bigLine2, p2Line1, width, needRollback); case PieceNodeAngle::ByPointsIntersection: - return AngleByIntersection(points, p1Line1, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2, - p2Line1, width, needRollback); + return AngleByIntersection(points, p1Line1.ToQPointF(), p2Line1.ToQPointF(), + p1Line2.ToQPointF(), bigLine1, crosPoint, bigLine2, p2Line1, width, + needRollback); case PieceNodeAngle::ByFirstEdgeSymmetry: - return AngleByFirstSymmetry(points, p1Line1, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2, - p2Line1, width, needRollback); + return AngleByFirstSymmetry(points, p1Line1.ToQPointF(), p2Line1.ToQPointF(), + p1Line2.ToQPointF(), bigLine1, crosPoint, bigLine2, p2Line1, width, + needRollback); case PieceNodeAngle::BySecondEdgeSymmetry: - return AngleBySecondSymmetry(points, p1Line1, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2, - p2Line1, width, needRollback); + return AngleBySecondSymmetry(points, p1Line1.ToQPointF(), p2Line1.ToQPointF(), + p1Line2.ToQPointF(), bigLine1, crosPoint, bigLine2, p2Line1, width, + needRollback); case PieceNodeAngle::ByFirstEdgeRightAngle: - return AngleByFirstRightAngle(points, p1Line1, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2, - p2Line1, width, needRollback); + return AngleByFirstRightAngle(points, p1Line1.ToQPointF(), p2Line1.ToQPointF(), + p1Line2.ToQPointF(), bigLine1, crosPoint, bigLine2, p2Line1, + width, needRollback); case PieceNodeAngle::BySecondEdgeRightAngle: - return AngleBySecondRightAngle(points, p1Line1, p2Line1, p1Line2, bigLine1, crosPoint, bigLine2, - p2Line1, width, needRollback); + return AngleBySecondRightAngle(points, p1Line1.ToQPointF(), p2Line1.ToQPointF(), + p1Line2.ToQPointF(), bigLine1, crosPoint, bigLine2, p2Line1, + width, needRollback); } QT_WARNING_POP diff --git a/src/libs/vlayout/vabstractpiece.h b/src/libs/vlayout/vabstractpiece.h index f5d5d04c6..464a2ef29 100644 --- a/src/libs/vlayout/vabstractpiece.h +++ b/src/libs/vlayout/vabstractpiece.h @@ -797,8 +797,7 @@ inline auto VAbstractPiece::SubdividePath(const QVector &boundary, const QPoi continue; } - if (!VGObject::IsPointOnLineSegment(p, static_cast(boundary.at(i)), - static_cast(boundary.at(i + 1)))) + if (!VGObject::IsPointOnLineSegment(p, boundary.at(i).ToQPointF(), boundary.at(i + 1).ToQPointF())) { sub1.append(boundary.at(i)); continue; @@ -858,7 +857,7 @@ inline auto VAbstractPiece::MirrorPath(const QVector for (const auto &p : points) { VLayoutPoint tmp = p; - QPointF const flippedPoint = matrix.map(static_cast(p)); + QPointF const flippedPoint = matrix.map(p.ToQPointF()); tmp.setX(flippedPoint.x()); tmp.setY(flippedPoint.y()); flipped.append(tmp); diff --git a/src/libs/vlayout/vfoldline.cpp b/src/libs/vlayout/vfoldline.cpp index 809aeb380..6f8545bf3 100644 --- a/src/libs/vlayout/vfoldline.cpp +++ b/src/libs/vlayout/vfoldline.cpp @@ -225,54 +225,54 @@ auto VFoldLine::LabelPosition(bool &ok) const -> FoldLabelPosData { FoldLabelPosData posData; - TextPosData data; + std::unique_ptr data; if (m_type == FoldLineType::Text) { - data = TextData(); + data = std::make_unique(TextData()); } else if (m_type == FoldLineType::TwoArrowsTextAbove) { - data = TwoArrowsTextAboveData(); + data = std::make_unique(TwoArrowsTextAboveData()); } else { - data = TwoArrowsTextUnderData(); + data = std::make_unique(TwoArrowsTextUnderData()); } - if (data.base.isNull()) + if (data->base.isNull()) { ok = false; return {}; } - qreal const height = data.labelHeight + (qFuzzyIsNull(m_height) ? defLabelMargin : m_height); - qreal const margin = qMax(0., height - data.labelHeight); + qreal const height = data->labelHeight + (qFuzzyIsNull(m_height) ? defLabelMargin : m_height); + qreal const margin = qMax(0., height - data->labelHeight); - QPointF const center = TrueCenter(data.base, data.labelWidth); + QPointF const center = TrueCenter(data->base, data->labelWidth); - QLineF baseLine(center, data.base.p1()); - baseLine.setLength(data.labelWidth / 2); + QLineF baseLine(center, data->base.p1()); + baseLine.setLength(data->labelWidth / 2); Swap(baseLine); baseLine.setLength(baseLine.length() * 2); - baseLine = SimpleParallelLine(baseLine.p1(), baseLine.p2(), -(margin + data.labelHeight)); + baseLine = SimpleParallelLine(baseLine.p1(), baseLine.p2(), -(margin + data->labelHeight)); posData.font = LabelOutlineFont(); QFontMetrics const fm(posData.font); - posData.label = fm.elidedText(FoldLineLabel(), Qt::ElideRight, qFloor(data.labelWidth)); + posData.label = fm.elidedText(FoldLineLabel(), Qt::ElideRight, qFloor(data->labelWidth)); if (m_alignment & Qt::AlignHCenter) // NOLINT(readability-implicit-bool-conversion) { - qreal const shift = (data.labelWidth - fm.horizontalAdvance(posData.label)) / 2; + qreal const shift = (data->labelWidth - fm.horizontalAdvance(posData.label)) / 2; baseLine.setLength(baseLine.length() - shift); } else if (m_alignment & Qt::AlignRight) // NOLINT(readability-implicit-bool-conversion) { - qreal const shift = data.labelWidth - fm.horizontalAdvance(posData.label); + qreal const shift = data->labelWidth - fm.horizontalAdvance(posData.label); baseLine.setLength(baseLine.length() - shift); } posData.pos = baseLine.p2(); - posData.angle = QLineF(center, data.base.p1()).angle(); + posData.angle = QLineF(center, data->base.p1()).angle(); ok = true; return posData; diff --git a/src/libs/vlayout/vlayoutpiece.cpp b/src/libs/vlayout/vlayoutpiece.cpp index abce97c5d..e2c32a310 100644 --- a/src/libs/vlayout/vlayoutpiece.cpp +++ b/src/libs/vlayout/vlayoutpiece.cpp @@ -544,7 +544,7 @@ void InitFoldLine(VLayoutPiece &det, const VPiece &piece, const VContainer *patt //--------------------------------------------------------------------------------------------------------------------- auto operator<<(QDataStream &dataStream, const VLayoutPoint &p) -> QDataStream & { - dataStream << static_cast(p); // NOLINT(cppcoreguidelines-slicing) + dataStream << p.ToQPointF(); dataStream << p.TurnPoint(); dataStream << p.CurvePoint(); return dataStream; @@ -570,7 +570,8 @@ auto operator>>(QDataStream &dataStream, VLayoutPoint &p) -> QDataStream & //--------------------------------------------------------------------------------------------------------------------- auto operator<<(QDataStream &dataStream, const VLayoutPiece &piece) -> QDataStream & { - dataStream << static_cast(piece); // NOLINT(cppcoreguidelines-slicing) + const VAbstractPiece &abstractPiece = piece; + dataStream << abstractPiece; dataStream << *piece.d; return dataStream; } diff --git a/src/libs/vlayout/vlayoutpoint.cpp b/src/libs/vlayout/vlayoutpoint.cpp index 9a3f482db..99ecb7463 100644 --- a/src/libs/vlayout/vlayoutpoint.cpp +++ b/src/libs/vlayout/vlayoutpoint.cpp @@ -56,3 +56,9 @@ auto VLayoutPoint::toJson() const -> QJsonObject return pointObject; } + +//--------------------------------------------------------------------------------------------------------------------- +auto VLayoutPoint::ToQPointF() const -> QPointF +{ + return {x(), y()}; +} diff --git a/src/libs/vlayout/vlayoutpoint.h b/src/libs/vlayout/vlayoutpoint.h index 05693313b..9c96cb9dc 100644 --- a/src/libs/vlayout/vlayoutpoint.h +++ b/src/libs/vlayout/vlayoutpoint.h @@ -52,6 +52,7 @@ public: Q_DECL_RELAXED_CONSTEXPR void SetCurvePoint(bool newCurvePoint); auto toJson() const -> QJsonObject; + auto ToQPointF() const -> QPointF; private: bool m_turnPoint{false}; diff --git a/src/libs/vpatterndb/vpassmark.cpp b/src/libs/vpatterndb/vpassmark.cpp index 4233d3c17..99b0238a1 100644 --- a/src/libs/vpatterndb/vpassmark.cpp +++ b/src/libs/vpatterndb/vpassmark.cpp @@ -69,7 +69,7 @@ auto GetSeamPassmarkSAPoint(const VPiecePassmarkData &passmarkData, const QVecto return PassmarkStatus::Error; // Something wrong } - point = ekvPoints.constFirst(); // NOLINT(cppcoreguidelines-slicing) + point = ekvPoints.constFirst().ToQPointF(); return needRollback ? PassmarkStatus::Rollback : PassmarkStatus::Common; } diff --git a/src/libs/vpatterndb/vpiecepath.cpp b/src/libs/vpatterndb/vpiecepath.cpp index 13467262b..b806cb667 100644 --- a/src/libs/vpatterndb/vpiecepath.cpp +++ b/src/libs/vpatterndb/vpiecepath.cpp @@ -510,8 +510,8 @@ auto VPiecePath::PathCurvePoints(const VContainer *data) const -> QVector curve = data->GeometricObject(at(i).GetId()); - const QPointF begin = StartSegment(data, i); - const QPointF end = EndSegment(data, i); + const QPointF begin = StartSegment(data, i).ToQPointF(); + const QPointF end = EndSegment(data, i).ToQPointF(); curves.append(curve->GetSegmentPoints(begin, end, at(i).GetReverse(), GetName())); break; diff --git a/src/libs/vpatterndb/vtranslatevars.cpp b/src/libs/vpatterndb/vtranslatevars.cpp index 518b7428b..6767c8ba4 100644 --- a/src/libs/vpatterndb/vtranslatevars.cpp +++ b/src/libs/vpatterndb/vtranslatevars.cpp @@ -686,7 +686,7 @@ auto VTranslateVars::VarFromUser(const QString &var) const -> QString { return newVar; } - return newVar; + return var; } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp b/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp index da98571b0..911a3170a 100644 --- a/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp +++ b/src/libs/vtools/dialogs/tools/piece/dialogseamallowance.cpp @@ -743,25 +743,13 @@ auto DialogSeamAllowance::GetMirrorLineEndPoint() const -> quint32 nextIndex = 0; } - int prevIndex = index - 1; - if (prevIndex < 0) - { - prevIndex = uiTabPaths->listWidgetMainPath->count() - 1; - } - const int next = FindNotExcludedNeighborNodeDown(uiTabPaths->listWidgetMainPath, nextIndex); - const int prev = FindNotExcludedNeighborNodeUp(uiTabPaths->listWidgetMainPath, prevIndex); if (next >= 0 && RowNode(uiTabPaths->listWidgetMainPath, next).GetId() == startPoint) { return startPoint; } - if (prev >= 0 && RowNode(uiTabPaths->listWidgetMainPath, prev).GetId() == startPoint) - { - return endPoint; - } - return endPoint; }