From 771113b26ca27707c96fdcd80d79a08e40884268 Mon Sep 17 00:00:00 2001 From: Shamus Hammons Date: Mon, 17 Mar 2014 10:51:02 -0500 Subject: [PATCH] Fixed 'flip sides' handle to work on Dimension object. --- src/dimension.cpp | 36 ++++++++++++++++++++++++------------ src/drawlineaction.cpp | 8 ++++++-- src/trimaction.h | 4 ---- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/dimension.cpp b/src/dimension.cpp index 675afaf..2d37eea 100644 --- a/src/dimension.cpp +++ b/src/dimension.cpp @@ -29,15 +29,6 @@ Dimension::Dimension(Vector p1, Vector p2, DimensionType dt/*= DTLinear*/, Objec type = OTDimension; } -#if 0 -// This is bad, p1 & p2 could be NULL, causing much consternation... -Dimension::Dimension(Connection p1, Connection p2, DimensionType dt/*= DTLinear*/, Object * p/*= NULL*/): - dragging(false), draggingHandle1(false), draggingHandle2(false), - length(0), dimensionType(dt), size(0.25)//, point1(p1), point2(p2) -{ - type = OTDimension; -} -#endif Dimension::~Dimension() { @@ -183,6 +174,7 @@ I believe they are pixels. // need to make another handle drawing function in Painter, instead of this if (hitLine) { +#if 0 Point p9 = ((position + endpoint) / 2.0) + (orthogonal * 14.0) + (unit * 7.0); @@ -194,6 +186,13 @@ I believe they are pixels. painter->DrawLine(p11, p12); painter->DrawLine(p12, p13); painter->DrawLine(p13, p10); +#else + if (hitFlipSwitch) + painter->SetPen(QPen(Qt::magenta, 2.0, Qt::DotLine)); + + Point hp1 = (p1 + p2) / 2.0; + painter->DrawHandle(hp1); +#endif } } @@ -237,6 +236,13 @@ I believe they are pixels. draggingHandle2 = true; return true; } + else if (hitFlipSwitch) + { + FlipSides(); + hitFlipSwitch = hitLine = false; +// state = OSInactive; +// return true; + } state = OSInactive; return false; @@ -327,7 +333,8 @@ about keeping track of old states... /*virtual*/ bool Dimension::HitTest(Point point) { - Vector orthogonal = Vector::Normal(position, endpoint); +// Vector orthogonal = Vector::Normal(position, endpoint); + Vector orthogonal = Vector::Normal(linePt1, linePt2); // Get our line parallel to our points #if 0 Point p1 = position + (orthogonal * 10.0 * size); @@ -346,6 +353,7 @@ about keeping track of old states... // double t = Geometry::ParameterOfLineAndPoint(position, endpoint, point); double t = Geometry::ParameterOfLineAndPoint(p1, p2, point); double distance; + Point hFSPoint = Point((p1 + p2) / 2.0, point); if (t < 0.0) distance = v1.Magnitude(); @@ -364,7 +372,10 @@ about keeping track of old states... else if ((distance * Painter::zoom) < 5.0) hitLine = true; - return (hitPoint1 || hitPoint2 || hitLine ? true : false); + if ((hFSPoint.Magnitude() * Painter::zoom) < 8.0) + hitFlipSwitch = true; + + return (hitPoint1 || hitPoint2 || hitLine || hitFlipSwitch ? true : false); } @@ -373,12 +384,13 @@ void Dimension::SaveHitState(void) oldHitPoint1 = hitPoint1; oldHitPoint2 = hitPoint2; oldHitLine = hitLine; + oldHitFlipSwitch = hitFlipSwitch; } bool Dimension::HitStateChanged(void) { - if ((hitPoint1 != oldHitPoint1) || (hitPoint2 != oldHitPoint2) || (hitLine != oldHitLine)) + if ((hitPoint1 != oldHitPoint1) || (hitPoint2 != oldHitPoint2) || (hitLine != oldHitLine) || (hitFlipSwitch != oldHitFlipSwitch)) return true; return false; diff --git a/src/drawlineaction.cpp b/src/drawlineaction.cpp index 5490e98..3dc9f7d 100644 --- a/src/drawlineaction.cpp +++ b/src/drawlineaction.cpp @@ -14,6 +14,7 @@ #include "drawlineaction.h" #include "line.h" +#include "mathconstants.h" #include "painter.h" @@ -46,8 +47,11 @@ DrawLineAction::~DrawLineAction() painter->DrawLine(p1, p2); painter->DrawHandle(p2); - QString text = tr("Length: %1 in."); - text = text.arg(Vector::Magnitude(p1, p2)); + Vector v(p1, p2); + double absAngle = v.Angle() * RADIANS_TO_DEGREES; + double absLength = v.Magnitude(); + QString text = tr("Length: %1 in.\n") + QChar(0x2221) + tr(": %2"); + text = text.arg(absLength).arg(absAngle); painter->DrawInformativeText(text); } } diff --git a/src/trimaction.h b/src/trimaction.h index 78f4425..67e7c85 100644 --- a/src/trimaction.h +++ b/src/trimaction.h @@ -21,11 +21,7 @@ class TrimAction: public Action private: int state; -// Line * line; Vector p1, p2, p1Save; -// bool shiftWasPressedOnNextPoint; -// bool ctrlWasPressed; -// Container * mirror; double t, u; Container * doc; }; -- 2.37.2