From e2a059287eeae33f387fea3146d82edc64619051 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Thu, 19 May 2016 15:56:50 +0300 Subject: [PATCH] Update an angle during processing editing rotation. --HG-- branch : feature --- .../visualization/line/vistoolrotation.cpp | 24 +++++++++++-------- .../visualization/line/vistoolrotation.h | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/libs/vtools/visualization/line/vistoolrotation.cpp b/src/libs/vtools/visualization/line/vistoolrotation.cpp index 9ff3edf06..8f2c329f2 100644 --- a/src/libs/vtools/visualization/line/vistoolrotation.cpp +++ b/src/libs/vtools/visualization/line/vistoolrotation.cpp @@ -77,6 +77,8 @@ void VisToolRotation::RefreshGeometry() QSharedPointer origin = QSharedPointer(new VPointF()); + qreal tempAngle = 0; + if (object1Id != NULL_ID) { origin = Visualization::data->GeometricObject(object1Id); @@ -93,20 +95,22 @@ void VisToolRotation::RefreshGeometry() } rLine.setP2(Ray(*origin, rLine.angle())); + tempAngle = rLine.angle(); } else { rLine = QLineF(*origin, Ray(*origin, angle)); + tempAngle = angle; } DrawLine(this, rLine, supportColor2, Qt::DashLine); DrawLine(xAxis, QLineF(*origin, Ray(*origin, 0)), supportColor2, Qt::DashLine); - VArc arc(*origin, ToPixel(DefPointRadius/*mm*/*2, Unit::Mm), 0, rLine.angle()); + VArc arc(*origin, ToPixel(DefPointRadius/*mm*/*2, Unit::Mm), 0, tempAngle); DrawPath(angleArc, arc.GetPath(PathDirection::Hide), supportColor2, Qt::SolidLine, Qt::RoundCap); Visualization::toolTip = tr("Rotating angle = %1°, Shift - sticking angle, " - "Mouse click - finish creation").arg(rLine.angle()); + "Mouse click - finish creation").arg(tempAngle); } int iPoint = -1; @@ -134,38 +138,38 @@ void VisToolRotation::RefreshGeometry() if (object1Id != NULL_ID) { - DrawPoint(point, p->Rotate(*origin, angle), supportColor); + DrawPoint(point, p->Rotate(*origin, tempAngle), supportColor); } break; } case GOType::Arc: { - iCurve = AddCurve(*origin, id, iCurve); + iCurve = AddCurve(tempAngle, *origin, id, iCurve); break; } case GOType::EllipticalArc: { - iCurve = AddCurve(*origin, id, iCurve); + iCurve = AddCurve(tempAngle, *origin, id, iCurve); break; } case GOType::Spline: { - iCurve = AddCurve(*origin, id, iCurve); + iCurve = AddCurve(tempAngle, *origin, id, iCurve); break; } case GOType::SplinePath: { - iCurve = AddCurve(*origin, id, iCurve); + iCurve = AddCurve(tempAngle, *origin, id, iCurve); break; } case GOType::CubicBezier: { - iCurve = AddCurve(*origin, id, iCurve); + iCurve = AddCurve(tempAngle, *origin, id, iCurve); break; } case GOType::CubicBezierPath: { - iCurve = AddCurve(*origin, id, iCurve); + iCurve = AddCurve(tempAngle, *origin, id, iCurve); break; } case GOType::Unknown: @@ -249,7 +253,7 @@ QGraphicsPathItem *VisToolRotation::GetCurve(quint32 i, const QColor &color) //--------------------------------------------------------------------------------------------------------------------- template -int VisToolRotation::AddCurve(const QPointF &origin, quint32 id, int i) +int VisToolRotation::AddCurve(qreal angle, const QPointF &origin, quint32 id, int i) { const QSharedPointer curve = Visualization::data->GeometricObject(id); diff --git a/src/libs/vtools/visualization/line/vistoolrotation.h b/src/libs/vtools/visualization/line/vistoolrotation.h index 42005ea5d..66030149c 100644 --- a/src/libs/vtools/visualization/line/vistoolrotation.h +++ b/src/libs/vtools/visualization/line/vistoolrotation.h @@ -66,7 +66,7 @@ private: QGraphicsPathItem * GetCurve(quint32 i, const QColor &color); template - int AddCurve(const QPointF &origin, quint32 id, int i); + int AddCurve(qreal angle, const QPointF &origin, quint32 id, int i); }; #endif // VISTOOLROTATION_H