From d057d336f7f197804d5bf7561411358aca1a5c55 Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska Date: Mon, 7 Dec 2015 07:48:51 +0200 Subject: [PATCH 1/6] Fixed issue #415. Line appears between the point and mark in the detail mode --HG-- branch : feature --- .../vtools/tools/nodeDetails/vnodepoint.cpp | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp index 18b0f38cb..9ae32e966 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp @@ -278,18 +278,26 @@ void VNodePoint::RefreshPointGeometry(const VPointF &point) * @brief RefreshLine refresh label line on scene. */ void VNodePoint::RefreshLine() -{ - QRectF nameRec = namePoint->sceneBoundingRect(); - QPointF p1, p2; - VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center()- scenePos()), p1, p2); - QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(scenePos(), nameRec.center())); - lineName->setLine(QLineF(p1, pRec - scenePos())); - if (QLineF(p1, pRec - scenePos()).length() <= ToPixel(4, Unit::Mm)) - { - lineName->setVisible(false); - } - else - { - lineName->setVisible(true); - } +{ QRectF nRec = namePoint->sceneBoundingRect(); + nRec.translate(- scenePos()); + if (this->rect().intersects(nRec) == false) + { + QRectF nameRec = namePoint->sceneBoundingRect(); + QPointF p1, p2; + VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center()- scenePos()), p1, p2); + QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(scenePos(), nameRec.center())); + lineName->setLine(QLineF(p1, pRec - scenePos())); + if (QLineF(p1, pRec - scenePos()).length() <= ToPixel(4, Unit::Mm)) + { + lineName->setVisible(false); + } + else + { + lineName->setVisible(true); + } + } + else + { + lineName->setVisible(false); + } } From ece2c42e5fbd789cafc32b8da12c9ac39fe01678 Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska Date: Fri, 11 Dec 2015 11:31:21 +0200 Subject: [PATCH 2/6] We need one method RefreshLine in VAbstractTool instead of two similar methods in VNodePoint and VToolSinglePoint --HG-- branch : feature --- .../toolsinglepoint/vtoolsinglepoint.cpp | 28 ++-------------- .../vtools/tools/nodeDetails/vnodepoint.cpp | 24 ++------------ src/libs/vtools/tools/vabstracttool.cpp | 33 +++++++++++++++++++ src/libs/vtools/tools/vabstracttool.h | 4 +++ 4 files changed, 42 insertions(+), 47 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp index e53a9700e..9ae9d08f8 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp @@ -247,32 +247,10 @@ void VToolSinglePoint::RefreshPointGeometry(const VPointF &point) void VToolSinglePoint::RefreshLine(quint32 id) { Q_UNUSED(id) + QPen pen(CorrectColor(Qt::black)); + pen.setWidthF(qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor); - QRectF nRec = namePoint->sceneBoundingRect(); - nRec.translate(- scenePos()); - if (this->rect().intersects(nRec) == false) - { - const QRectF nameRec = namePoint->sceneBoundingRect(); - QPointF p1, p2; - VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center() - scenePos()), p1, p2); - const QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(scenePos(), nameRec.center())); - lineName->setLine(QLineF(p1, pRec - scenePos())); - lineName->setPen(QPen(CorrectColor(Qt::black), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); - - if (QLineF(p1, pRec - scenePos()).length() <= ToPixel(4, Unit::Mm)) - { - lineName->setVisible(false); - } - else - { - lineName->setVisible(true); - } - } - else - { - lineName->setVisible(false); - } + VAbstractTool::RefreshLine(this, namePoint, lineName, radius, pen); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp index 9ae32e966..68428f1da 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp @@ -278,26 +278,6 @@ void VNodePoint::RefreshPointGeometry(const VPointF &point) * @brief RefreshLine refresh label line on scene. */ void VNodePoint::RefreshLine() -{ QRectF nRec = namePoint->sceneBoundingRect(); - nRec.translate(- scenePos()); - if (this->rect().intersects(nRec) == false) - { - QRectF nameRec = namePoint->sceneBoundingRect(); - QPointF p1, p2; - VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center()- scenePos()), p1, p2); - QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(scenePos(), nameRec.center())); - lineName->setLine(QLineF(p1, pRec - scenePos())); - if (QLineF(p1, pRec - scenePos()).length() <= ToPixel(4, Unit::Mm)) - { - lineName->setVisible(false); - } - else - { - lineName->setVisible(true); - } - } - else - { - lineName->setVisible(false); - } +{ + VAbstractTool::RefreshLine(this, namePoint, lineName, radius, QPen(Qt::black)); } diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index f4883bcdb..27cc5fa0c 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -315,3 +315,36 @@ void VAbstractTool::AddRecord(const quint32 id, const Tool &toolType, VAbstractP history->insert(index+1, record); } } + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief RefreshLine refresh line to label on scene. + */ +void VAbstractTool::RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleTextItem *namePoint, QGraphicsLineItem *lineName, + qreal radius, const QPen pen) +{ + QRectF nRec = namePoint->sceneBoundingRect(); + nRec.translate(- point->scenePos()); + if (point->rect().intersects(nRec) == false) + { + const QRectF nameRec = namePoint->sceneBoundingRect(); + QPointF p1, p2; + VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center() - point->scenePos()), p1, p2); + const QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(point->scenePos(), nameRec.center())); + lineName->setLine(QLineF(p1, pRec - point->scenePos())); + lineName->setPen(pen); + + if (QLineF(p1, pRec - point->scenePos()).length() <= ToPixel(4, Unit::Mm)) + { + lineName->setVisible(false); + } + else + { + lineName->setVisible(true); + } + } + else + { + lineName->setVisible(false); + } +} diff --git a/src/libs/vtools/tools/vabstracttool.h b/src/libs/vtools/tools/vabstracttool.h index d157d6244..3aac8b09b 100644 --- a/src/libs/vtools/tools/vabstracttool.h +++ b/src/libs/vtools/tools/vabstracttool.h @@ -34,6 +34,7 @@ #include "../vmisc/vabstractapplication.h" #include "../vwidgets/vmaingraphicsscene.h" #include "visualization/visualization.h" +#include "../vwidgets/vgraphicssimpletextitem.h" class QDomElement; class QLineF; @@ -121,6 +122,9 @@ protected: virtual void SetVisualization()=0; void ToolCreation(const Source &typeCreation); + + static void RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleTextItem *namePoint, QGraphicsLineItem *lineName, + qreal radius, const QPen pen); private: Q_DISABLE_COPY(VAbstractTool) }; From 0869c7fed4a4a637c7475d11baaa98f4b9e1fe79 Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska Date: Fri, 11 Dec 2015 11:33:12 +0200 Subject: [PATCH 3/6] We don't need to change the radius, so we can make it const --HG-- branch : feature --- src/libs/vtools/tools/vabstracttool.cpp | 2 +- src/libs/vtools/tools/vabstracttool.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index 27cc5fa0c..37026468d 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -321,7 +321,7 @@ void VAbstractTool::AddRecord(const quint32 id, const Tool &toolType, VAbstractP * @brief RefreshLine refresh line to label on scene. */ void VAbstractTool::RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleTextItem *namePoint, QGraphicsLineItem *lineName, - qreal radius, const QPen pen) + const qreal radius, const QPen pen) { QRectF nRec = namePoint->sceneBoundingRect(); nRec.translate(- point->scenePos()); diff --git a/src/libs/vtools/tools/vabstracttool.h b/src/libs/vtools/tools/vabstracttool.h index 3aac8b09b..e0dd8358c 100644 --- a/src/libs/vtools/tools/vabstracttool.h +++ b/src/libs/vtools/tools/vabstracttool.h @@ -124,7 +124,7 @@ protected: void ToolCreation(const Source &typeCreation); static void RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleTextItem *namePoint, QGraphicsLineItem *lineName, - qreal radius, const QPen pen); + const qreal radius, const QPen pen); private: Q_DISABLE_COPY(VAbstractTool) }; From a1417fc127e4bc714ddce901c100334db60aaa46 Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska Date: Fri, 11 Dec 2015 13:35:48 +0200 Subject: [PATCH 4/6] We don't need to change pen inside RefreshLine method --HG-- branch : feature --- .../toolpoint/toolsinglepoint/vtoolsinglepoint.cpp | 6 ++---- src/libs/vtools/tools/nodeDetails/vnodepoint.cpp | 2 +- src/libs/vtools/tools/vabstracttool.cpp | 3 +-- src/libs/vtools/tools/vabstracttool.h | 2 +- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp index 9ae9d08f8..c8c4fcb81 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/vtoolsinglepoint.cpp @@ -247,10 +247,8 @@ void VToolSinglePoint::RefreshPointGeometry(const VPointF &point) void VToolSinglePoint::RefreshLine(quint32 id) { Q_UNUSED(id) - QPen pen(CorrectColor(Qt::black)); - pen.setWidthF(qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor); - - VAbstractTool::RefreshLine(this, namePoint, lineName, radius, pen); + VAbstractTool::RefreshLine(this, namePoint, lineName, radius); + lineName->setPen(QPen(CorrectColor(Qt::black), qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp index 68428f1da..fba04fa1c 100644 --- a/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp +++ b/src/libs/vtools/tools/nodeDetails/vnodepoint.cpp @@ -279,5 +279,5 @@ void VNodePoint::RefreshPointGeometry(const VPointF &point) */ void VNodePoint::RefreshLine() { - VAbstractTool::RefreshLine(this, namePoint, lineName, radius, QPen(Qt::black)); + VAbstractTool::RefreshLine(this, namePoint, lineName, radius); } diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index 37026468d..bfee484a6 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -321,7 +321,7 @@ void VAbstractTool::AddRecord(const quint32 id, const Tool &toolType, VAbstractP * @brief RefreshLine refresh line to label on scene. */ void VAbstractTool::RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleTextItem *namePoint, QGraphicsLineItem *lineName, - const qreal radius, const QPen pen) + const qreal radius) { QRectF nRec = namePoint->sceneBoundingRect(); nRec.translate(- point->scenePos()); @@ -332,7 +332,6 @@ void VAbstractTool::RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleText VGObject::LineIntersectCircle(QPointF(), radius, QLineF(QPointF(), nameRec.center() - point->scenePos()), p1, p2); const QPointF pRec = VGObject::LineIntersectRect(nameRec, QLineF(point->scenePos(), nameRec.center())); lineName->setLine(QLineF(p1, pRec - point->scenePos())); - lineName->setPen(pen); if (QLineF(p1, pRec - point->scenePos()).length() <= ToPixel(4, Unit::Mm)) { diff --git a/src/libs/vtools/tools/vabstracttool.h b/src/libs/vtools/tools/vabstracttool.h index e0dd8358c..b4a897c96 100644 --- a/src/libs/vtools/tools/vabstracttool.h +++ b/src/libs/vtools/tools/vabstracttool.h @@ -124,7 +124,7 @@ protected: void ToolCreation(const Source &typeCreation); static void RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleTextItem *namePoint, QGraphicsLineItem *lineName, - const qreal radius, const QPen pen); + const qreal radius); private: Q_DISABLE_COPY(VAbstractTool) }; From 5a22c6baf64a12a9d6a2683151807d267ef4318b Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska Date: Fri, 11 Dec 2015 15:07:05 +0200 Subject: [PATCH 5/6] Use SCASSERT for point, namePoint and lineName --HG-- branch : feature --- src/libs/vtools/tools/vabstracttool.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index bfee484a6..9dedca435 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -323,6 +323,10 @@ void VAbstractTool::AddRecord(const quint32 id, const Tool &toolType, VAbstractP void VAbstractTool::RefreshLine(QGraphicsEllipseItem *point, VGraphicsSimpleTextItem *namePoint, QGraphicsLineItem *lineName, const qreal radius) { + SCASSERT(point != nullptr); + SCASSERT(namePoint != nullptr); + SCASSERT(lineName != nullptr); + QRectF nRec = namePoint->sceneBoundingRect(); nRec.translate(- point->scenePos()); if (point->rect().intersects(nRec) == false) From 10c0ad2c5c312b71a163cf07de7cb20489cea677 Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska Date: Fri, 11 Dec 2015 16:20:32 +0200 Subject: [PATCH 6/6] Define class VGraphicsSimpleTextItem instead of #include "../vwidgets/vgraphicssimpletextitem.h" --HG-- branch : feature --- src/libs/vtools/tools/vabstracttool.cpp | 1 + src/libs/vtools/tools/vabstracttool.h | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index 9dedca435..dff63b2b1 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -33,6 +33,7 @@ #include "../../vmisc/vsettings.h" #include "../undocommands/deltool.h" #include "../undocommands/savetooloptions.h" +#include "../vwidgets/vgraphicssimpletextitem.h" #include #include diff --git a/src/libs/vtools/tools/vabstracttool.h b/src/libs/vtools/tools/vabstracttool.h index b4a897c96..062eb5bdd 100644 --- a/src/libs/vtools/tools/vabstracttool.h +++ b/src/libs/vtools/tools/vabstracttool.h @@ -34,7 +34,6 @@ #include "../vmisc/vabstractapplication.h" #include "../vwidgets/vmaingraphicsscene.h" #include "visualization/visualization.h" -#include "../vwidgets/vgraphicssimpletextitem.h" class QDomElement; class QLineF; @@ -44,6 +43,7 @@ class QGraphicsView; class QGraphicsItem; class QRectF; class Visualization; +class VGraphicsSimpleTextItem; /** * @brief The VAbstractTool abstract class for all tools.