From 01f66d3c347473158f12c611380f86a356816536 Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska Date: Sun, 3 Jul 2016 07:50:14 +0300 Subject: [PATCH] Resolved issue #461. Improve feature: Add a keyboard shortcut for getting pure 45, 90, 135, 180, 225, 270, 315 and 0 degree angles for all tools. --HG-- branch : feature --- .../vtools/tools/drawTools/toolcurve/vabstractspline.cpp | 8 ++++++++ .../vtools/tools/drawTools/toolcurve/vabstractspline.h | 1 + src/libs/vtools/visualization/line/visline.cpp | 2 +- src/libs/vtools/visualization/line/visline.h | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp index 57faed240..2bcfba7c3 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp @@ -261,6 +261,10 @@ VSpline VAbstractSpline::CorrectedSpline(const VSpline &spline, const SplinePoin if (position == SplinePointPosition::FirstPoint) { QLineF line(spline.GetP1(), pos); + if (QGuiApplication::keyboardModifiers() == Qt::ShiftModifier) + { + line.setAngle(VisLine::CorrectAngle(line.angle())); + } qreal newAngle1 = line.angle(); QString newAngle1F = QString().setNum(newAngle1); @@ -287,6 +291,10 @@ VSpline VAbstractSpline::CorrectedSpline(const VSpline &spline, const SplinePoin else { QLineF line(spline.GetP4(), pos); + if (QGuiApplication::keyboardModifiers() == Qt::ShiftModifier) + { + line.setAngle(VisLine::CorrectAngle(line.angle())); + } qreal newAngle2 = line.angle(); QString newAngle2F = QString().setNum(newAngle2); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h index 148d499b0..5b77b1dc9 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h @@ -30,6 +30,7 @@ #define VABSTRACTSPLINE_H #include "../vdrawtool.h" +#include "visualization/line/visline.h" #include diff --git a/src/libs/vtools/visualization/line/visline.cpp b/src/libs/vtools/visualization/line/visline.cpp index f8ccb91ce..7a245acdf 100644 --- a/src/libs/vtools/visualization/line/visline.cpp +++ b/src/libs/vtools/visualization/line/visline.cpp @@ -43,7 +43,7 @@ VisLine::~VisLine() {} //--------------------------------------------------------------------------------------------------------------------- -qreal VisLine::CorrectAngle(const qreal &angle) const +qreal VisLine::CorrectAngle(const qreal &angle) { qreal ang = angle; if (angle > 360) diff --git a/src/libs/vtools/visualization/line/visline.h b/src/libs/vtools/visualization/line/visline.h index 75c4783d6..80b2ca141 100644 --- a/src/libs/vtools/visualization/line/visline.h +++ b/src/libs/vtools/visualization/line/visline.h @@ -44,8 +44,8 @@ public: virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Vis::Line)}; + static qreal CorrectAngle(const qreal &angle); protected: - qreal CorrectAngle(const qreal &angle) const; QPointF Ray(const QPointF &firstPoint, const qreal &angle) const; QPointF Ray(const QPointF &firstPoint) const; QLineF Axis(const QPointF &p, const qreal &angle) const;