From 2e5d7cdb384dd702edbf10813c3c6f85d83a14ca Mon Sep 17 00:00:00 2001 From: dismine Date: Sat, 16 Aug 2014 15:14:55 +0300 Subject: [PATCH] Also show pieces of arc after cutting. --HG-- branch : develop --- src/app/visualization/visline.h | 11 ----------- src/app/visualization/vistoolalongline.cpp | 2 +- src/app/visualization/vistoolbisector.cpp | 4 ++-- src/app/visualization/vistoolcutarc.cpp | 15 +++++++++++++-- src/app/visualization/vistoolcutarc.h | 2 ++ src/app/visualization/vistoolheight.cpp | 4 ++-- src/app/visualization/vistoollineintersect.cpp | 2 +- src/app/visualization/vistoolnormal.cpp | 2 +- src/app/visualization/vistoolpointofcontact.cpp | 2 +- .../visualization/vistoolpointofintersection.cpp | 2 +- src/app/visualization/vistoolshoulderpoint.cpp | 6 +++--- src/app/visualization/vistooltriangle.cpp | 6 +++--- src/app/visualization/visualization.h | 10 ++++++++++ 13 files changed, 40 insertions(+), 28 deletions(-) diff --git a/src/app/visualization/visline.h b/src/app/visualization/visline.h index 5a360747d..b271d6b87 100644 --- a/src/app/visualization/visline.h +++ b/src/app/visualization/visline.h @@ -46,17 +46,6 @@ protected: void DrawLine(QGraphicsLineItem *lineItem, const QLineF &line, const QColor &color, Qt::PenStyle style = Qt::SolidLine); QLineF Line(const QPointF &p1, const qreal& length, const qreal &angle); - - template - Item *InitItem(const QColor &color) - { - Item *item = new Item(this); - item->setPen(QPen(color, qApp->toPixel(qApp->widthHairLine())/factor)); - item->setZValue(1); - item->setFlags(QGraphicsItem::ItemStacksBehindParent); - return item; - } - qreal CorrectAngle(const qreal &angle) const; QPointF Ray(const QPointF &firstPoint, const qreal &angle) const; QPointF Ray(const QPointF &firstPoint) const; diff --git a/src/app/visualization/vistoolalongline.cpp b/src/app/visualization/vistoolalongline.cpp index 9e8b6b4e8..a20b33dda 100644 --- a/src/app/visualization/vistoolalongline.cpp +++ b/src/app/visualization/vistoolalongline.cpp @@ -39,7 +39,7 @@ VisToolAlongLine::VisToolAlongLine(const VContainer *data, QGraphicsItem *parent lineP1 = InitPoint(supportColor, this); lineP2 = InitPoint(supportColor, this); - line = InitItem(supportColor); + line = InitItem(supportColor, this); point = InitPoint(mainColor, this); } diff --git a/src/app/visualization/vistoolbisector.cpp b/src/app/visualization/vistoolbisector.cpp index 3e7d07171..4da80d9fd 100644 --- a/src/app/visualization/vistoolbisector.cpp +++ b/src/app/visualization/vistoolbisector.cpp @@ -38,10 +38,10 @@ VisToolBisector::VisToolBisector(const VContainer *data, QGraphicsItem *parent) { line1P1 = InitPoint(supportColor, this); line1P2 = InitPoint(supportColor, this); - line1 = InitItem(supportColor); + line1 = InitItem(supportColor, this); line2P2 = InitPoint(supportColor, this); - line2 = InitItem(supportColor); + line2 = InitItem(supportColor, this); point = InitPoint(mainColor, this); } diff --git a/src/app/visualization/vistoolcutarc.cpp b/src/app/visualization/vistoolcutarc.cpp index 128c49302..3da3d9105 100644 --- a/src/app/visualization/vistoolcutarc.cpp +++ b/src/app/visualization/vistoolcutarc.cpp @@ -32,8 +32,13 @@ //--------------------------------------------------------------------------------------------------------------------- VisToolCutArc::VisToolCutArc(const VContainer *data, QGraphicsItem *parent) - :VisPath(data, parent), point(nullptr), length(0) + :VisPath(data, parent), point(nullptr), arc1(nullptr), arc2(nullptr), length(0) { + arc1 = InitItem(Qt::darkGreen, this); + arc1->setFlag(QGraphicsItem::ItemStacksBehindParent, false); + arc2 = InitItem(Qt::darkRed, this); + arc2->setFlag(QGraphicsItem::ItemStacksBehindParent, false); + point = InitPoint(mainColor, this); point->setZValue(2); point->setFlag(QGraphicsItem::ItemStacksBehindParent, false); @@ -53,7 +58,13 @@ void VisToolCutArc::RefreshGeometry() if (qFuzzyCompare(1 + length, 1 + 0) == false) { - DrawPoint(point, arc->CutArc(length), mainColor); + VArc ar1; + VArc ar2; + QPointF p = arc->CutArc(length, ar1, ar2); + DrawPoint(point, p, mainColor); + + DrawPath(arc1, ar1.GetPath(), Qt::darkGreen); + DrawPath(arc2, ar2.GetPath(), Qt::darkRed); } } } diff --git a/src/app/visualization/vistoolcutarc.h b/src/app/visualization/vistoolcutarc.h index 0ece3790f..a97b7d5bb 100644 --- a/src/app/visualization/vistoolcutarc.h +++ b/src/app/visualization/vistoolcutarc.h @@ -43,6 +43,8 @@ public: protected: Q_DISABLE_COPY(VisToolCutArc) QGraphicsEllipseItem *point; + QGraphicsPathItem *arc1; + QGraphicsPathItem *arc2; qreal length; }; diff --git a/src/app/visualization/vistoolheight.cpp b/src/app/visualization/vistoolheight.cpp index 7991a4c34..45f548dd5 100644 --- a/src/app/visualization/vistoolheight.cpp +++ b/src/app/visualization/vistoolheight.cpp @@ -38,8 +38,8 @@ VisToolHeight::VisToolHeight(const VContainer *data, QGraphicsItem *parent) base_point = InitPoint(supportColor, this); lineP1 = InitPoint(supportColor, this); lineP2 = InitPoint(supportColor, this); - line = InitItem(supportColor); - line_intersection = InitItem(supportColor); + line = InitItem(supportColor, this); + line_intersection = InitItem(supportColor, this); point = InitPoint(mainColor, this); } diff --git a/src/app/visualization/vistoollineintersect.cpp b/src/app/visualization/vistoollineintersect.cpp index 4243df7d2..e2aa1fee3 100644 --- a/src/app/visualization/vistoollineintersect.cpp +++ b/src/app/visualization/vistoollineintersect.cpp @@ -37,7 +37,7 @@ VisToolLineIntersect::VisToolLineIntersect(const VContainer *data, QGraphicsItem { line1P1 = InitPoint(supportColor, this); line1P2 = InitPoint(supportColor, this); - line1 = InitItem(supportColor); + line1 = InitItem(supportColor, this); line2P1 = InitPoint(supportColor, this); line2P2 = InitPoint(supportColor, this); diff --git a/src/app/visualization/vistoolnormal.cpp b/src/app/visualization/vistoolnormal.cpp index a95a8302b..3883c38b8 100644 --- a/src/app/visualization/vistoolnormal.cpp +++ b/src/app/visualization/vistoolnormal.cpp @@ -39,7 +39,7 @@ VisToolNormal::VisToolNormal(const VContainer *data, QGraphicsItem *parent) lineP1 = InitPoint(supportColor, this); lineP2 = InitPoint(supportColor, this); - line = InitItem(supportColor); + line = InitItem(supportColor, this); point = InitPoint(mainColor, this); } diff --git a/src/app/visualization/vistoolpointofcontact.cpp b/src/app/visualization/vistoolpointofcontact.cpp index 5930b9310..c509efdb2 100644 --- a/src/app/visualization/vistoolpointofcontact.cpp +++ b/src/app/visualization/vistoolpointofcontact.cpp @@ -38,7 +38,7 @@ VisToolPointOfContact::VisToolPointOfContact(const VContainer *data, QGraphicsIt arc_point = InitPoint(supportColor, this); lineP1 = InitPoint(supportColor, this); lineP2 = InitPoint(supportColor, this); - circle = InitItem(supportColor); + circle = InitItem(supportColor, this); point = InitPoint(mainColor, this); } diff --git a/src/app/visualization/vistoolpointofintersection.cpp b/src/app/visualization/vistoolpointofintersection.cpp index 31131b120..1475fcd81 100644 --- a/src/app/visualization/vistoolpointofintersection.cpp +++ b/src/app/visualization/vistoolpointofintersection.cpp @@ -36,7 +36,7 @@ VisToolPointOfIntersection::VisToolPointOfIntersection(const VContainer *data, Q { axisP1 = InitPoint(supportColor, this); axisP2 = InitPoint(supportColor, this); - axis2 = InitItem(supportColor); + axis2 = InitItem(supportColor, this); point = InitPoint(mainColor, this); } diff --git a/src/app/visualization/vistoolshoulderpoint.cpp b/src/app/visualization/vistoolshoulderpoint.cpp index 85d3978d7..2142ebe0e 100644 --- a/src/app/visualization/vistoolshoulderpoint.cpp +++ b/src/app/visualization/vistoolshoulderpoint.cpp @@ -37,11 +37,11 @@ VisToolShoulderPoint::VisToolShoulderPoint(const VContainer *data, QGraphicsItem { line1P1 = InitPoint(supportColor, this); line1P2 = InitPoint(supportColor, this); - line1 = InitItem(supportColor); + line1 = InitItem(supportColor, this); line2P2 = InitPoint(supportColor, this); - line2 = InitItem(supportColor); - line3 = InitItem(supportColor); + line2 = InitItem(supportColor, this); + line3 = InitItem(supportColor, this); point = InitPoint(mainColor, this); } diff --git a/src/app/visualization/vistooltriangle.cpp b/src/app/visualization/vistooltriangle.cpp index b61ed7a01..ef9ea6a30 100644 --- a/src/app/visualization/vistooltriangle.cpp +++ b/src/app/visualization/vistooltriangle.cpp @@ -39,11 +39,11 @@ VisToolTriangle::VisToolTriangle(const VContainer *data, QGraphicsItem *parent) { axisP1 = InitPoint(supportColor, this); axisP2 = InitPoint(supportColor, this); - axis = InitItem(supportColor); + axis = InitItem(supportColor, this); hypotenuseP1 = InitPoint(supportColor, this); hypotenuseP2 = InitPoint(supportColor, this); - foot1 = InitItem(supportColor); - foot2 = InitItem(supportColor); + foot1 = InitItem(supportColor, this); + foot2 = InitItem(supportColor, this); point = InitPoint(mainColor, this); } diff --git a/src/app/visualization/visualization.h b/src/app/visualization/visualization.h index b6ff20e4f..db0968c14 100644 --- a/src/app/visualization/visualization.h +++ b/src/app/visualization/visualization.h @@ -85,6 +85,16 @@ protected: connect(scene, &VMainGraphicsScene::NewFactor, item, &Visualization::SetFactor); connect(scene, &VMainGraphicsScene::mouseMove, item, &Visualization::MousePos); } + + template + Item *InitItem(const QColor &color, QGraphicsItem *parent) + { + Item *item = new Item(parent); + item->setPen(QPen(color, qApp->toPixel(qApp->widthHairLine())/factor)); + item->setZValue(1); + item->setFlags(QGraphicsItem::ItemStacksBehindParent); + return item; + } private: Q_DISABLE_COPY(Visualization) };