diff --git a/src/app/dialogs/tools/dialogpointofintersection.cpp b/src/app/dialogs/tools/dialogpointofintersection.cpp
index 1cb8dc0e3..a15e56de2 100644
--- a/src/app/dialogs/tools/dialogpointofintersection.cpp
+++ b/src/app/dialogs/tools/dialogpointofintersection.cpp
@@ -45,7 +45,7 @@ DialogPointOfIntersection::DialogPointOfIntersection(const VContainer *data, con
ui->setupUi(this);
labelEditNamePoint = ui->labelEditNamePoint;
- InitOkCancel(ui);
+ InitOkCancelApply(ui);
flagName = false;
CheckState();
diff --git a/src/app/dialogs/tools/dialogpointofintersection.ui b/src/app/dialogs/tools/dialogpointofintersection.ui
index 88e61cdcd..db3a4c052 100644
--- a/src/app/dialogs/tools/dialogpointofintersection.ui
+++ b/src/app/dialogs/tools/dialogpointofintersection.ui
@@ -6,7 +6,7 @@
0
0
- 293
+ 285
180
@@ -23,7 +23,7 @@
-
-
+
0
0
@@ -71,7 +71,14 @@
-
-
+
+
+
+ 0
+ 0
+
+
+
@@ -80,11 +87,17 @@
-
-
+
0
0
+
+
+ 0
+ 0
+
+
vertical point
@@ -104,7 +117,7 @@
-
-
+
0
0
@@ -129,7 +142,7 @@
Qt::Horizontal
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+ QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok
diff --git a/src/app/visualization/visline.cpp b/src/app/visualization/visline.cpp
index a3aff1ad5..7b03dcbd5 100644
--- a/src/app/visualization/visline.cpp
+++ b/src/app/visualization/visline.cpp
@@ -232,7 +232,9 @@ QPointF VisLine::Ray(const QPointF &firstPoint, const qreal &angle) const
{
if(this->scene() == nullptr)
{
- return scenePos;// We can't find ray because item doesn't have scene. We eill return cursor position on scene.
+ QLineF line = QLineF(firstPoint, scenePos);
+ line.setAngle(angle);
+ return line.p2();// We can't find ray because item doesn't have scene. We will return cursor position on scene.
}
QLineF line = QLineF();
diff --git a/src/app/visualization/vistoolpointofintersection.cpp b/src/app/visualization/vistoolpointofintersection.cpp
new file mode 100644
index 000000000..3dde9a150
--- /dev/null
+++ b/src/app/visualization/vistoolpointofintersection.cpp
@@ -0,0 +1,104 @@
+/************************************************************************
+ **
+ ** @file vistoolpointofintersection.cpp
+ ** @author Roman Telezhynskyi
+ ** @date 13 8, 2014
+ **
+ ** @brief
+ ** @copyright
+ ** This source code is part of the Valentine project, a pattern making
+ ** program, whose allow create and modeling patterns of clothing.
+ ** Copyright (C) 2014 Valentina project
+ ** All Rights Reserved.
+ **
+ ** Valentina is free software: you can redistribute it and/or modify
+ ** it under the terms of the GNU General Public License as published by
+ ** the Free Software Foundation, either version 3 of the License, or
+ ** (at your option) any later version.
+ **
+ ** Valentina is distributed in the hope that it will be useful,
+ ** but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ** GNU General Public License for more details.
+ **
+ ** You should have received a copy of the GNU General Public License
+ ** along with Valentina. If not, see .
+ **
+ *************************************************************************/
+
+#include "vistoolpointofintersection.h"
+#include "../geometry/vpointf.h"
+#include "../container/vcontainer.h"
+
+//---------------------------------------------------------------------------------------------------------------------
+VisToolPointOfIntersection::VisToolPointOfIntersection(const VContainer *data, QGraphicsItem *parent)
+ : VisLine(data, parent), point2Id(0), point(nullptr), axisP1(nullptr), axisP2(nullptr), axis2(nullptr)
+{
+ axisP1 = InitPoint(supportColor);
+ axisP2 = InitPoint(supportColor);
+ axis2 = InitLine(supportColor);
+
+ point = InitPoint(mainColor);
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+VisToolPointOfIntersection::~VisToolPointOfIntersection()
+{}
+
+//---------------------------------------------------------------------------------------------------------------------
+void VisToolPointOfIntersection::RefreshGeometry()
+{
+ if (point1Id > 0)
+ {
+ const VPointF *first = data->GeometricObject(point1Id);
+ DrawPoint(axisP1, first->toQPointF(), supportColor);
+
+ QLineF axisL1 = Axis(first->toQPointF(), 90);
+ DrawLine(this, axisL1, supportColor, Qt::DashLine);
+
+ QLineF axisL2;
+ if (point2Id <= 0)
+ {
+ DrawPoint(axisP2, scenePos, supportColor);
+ axisL2 = Axis(scenePos, 180);
+ }
+ else
+ {
+ const VPointF *second = data->GeometricObject(point2Id);
+ DrawPoint(axisP2, second->toQPointF(), supportColor);
+ axisL2 = Axis(second->toQPointF(), 180);
+ }
+ DrawLine(axis2, axisL2, supportColor, Qt::DashLine);
+ ShowIntersection(axisL1, axisL2);
+ }
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+void VisToolPointOfIntersection::setPoint2Id(const quint32 &value)
+{
+ point2Id = value;
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+QLineF VisToolPointOfIntersection::Axis(const QPointF &p, const qreal &angle) const
+{
+ QPointF endP1 = Ray(p, angle);
+ QPointF endP2 = Ray(p, angle+180);
+ return QLineF(endP1, endP2);
+}
+
+//---------------------------------------------------------------------------------------------------------------------
+void VisToolPointOfIntersection::ShowIntersection(const QLineF &axis1, const QLineF &axis2)
+{
+ QPointF p;
+ QLineF::IntersectType intersect = axis1.intersect(axis2, &p);
+ if (intersect == QLineF::UnboundedIntersection || intersect == QLineF::BoundedIntersection)
+ {
+ point->setVisible(true);
+ DrawPoint(point, p, mainColor);
+ }
+ else
+ {
+ point->setVisible(true);
+ }
+}
diff --git a/src/app/visualization/vistoolpointofintersection.h b/src/app/visualization/vistoolpointofintersection.h
new file mode 100644
index 000000000..291f7802a
--- /dev/null
+++ b/src/app/visualization/vistoolpointofintersection.h
@@ -0,0 +1,56 @@
+/************************************************************************
+ **
+ ** @file vistoolpointofintersection.h
+ ** @author Roman Telezhynskyi
+ ** @date 13 8, 2014
+ **
+ ** @brief
+ ** @copyright
+ ** This source code is part of the Valentine project, a pattern making
+ ** program, whose allow create and modeling patterns of clothing.
+ ** Copyright (C) 2014 Valentina project
+ ** All Rights Reserved.
+ **
+ ** Valentina is free software: you can redistribute it and/or modify
+ ** it under the terms of the GNU General Public License as published by
+ ** the Free Software Foundation, either version 3 of the License, or
+ ** (at your option) any later version.
+ **
+ ** Valentina is distributed in the hope that it will be useful,
+ ** but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ** GNU General Public License for more details.
+ **
+ ** You should have received a copy of the GNU General Public License
+ ** along with Valentina. If not, see .
+ **
+ *************************************************************************/
+
+#ifndef VISTOOLPOINTOFINTERSECTION_H
+#define VISTOOLPOINTOFINTERSECTION_H
+
+#include "visline.h"
+
+class VisToolPointOfIntersection : public VisLine
+{
+ Q_OBJECT
+public:
+ VisToolPointOfIntersection(const VContainer *data, QGraphicsItem *parent = 0);
+ virtual ~VisToolPointOfIntersection();
+
+ virtual void RefreshGeometry();
+
+ void setPoint2Id(const quint32 &value);
+private:
+ Q_DISABLE_COPY(VisToolPointOfIntersection)
+ quint32 point2Id;
+ QGraphicsEllipseItem *point;
+ QGraphicsEllipseItem *axisP1;//axis1 is class themself
+ QGraphicsEllipseItem *axisP2;
+ QGraphicsLineItem *axis2;//axis1 is class themself
+
+ QLineF Axis(const QPointF &p, const qreal &angle) const;
+ void ShowIntersection(const QLineF &axis1, const QLineF &axis2);
+};
+
+#endif // VISTOOLPOINTOFINTERSECTION_H
diff --git a/src/app/visualization/visualization.pri b/src/app/visualization/visualization.pri
index 0c9db6a78..63a4dd5ba 100644
--- a/src/app/visualization/visualization.pri
+++ b/src/app/visualization/visualization.pri
@@ -10,7 +10,8 @@ HEADERS += \
visualization/vistoolbisector.h \
visualization/vistoolshoulderpoint.h \
visualization/vistoolnormal.h \
- visualization/vistoolheight.h
+ visualization/vistoolheight.h \
+ visualization/vistoolpointofintersection.h
SOURCES += \
visualization/vgraphicssimpletextitem.cpp \
@@ -24,4 +25,5 @@ SOURCES += \
visualization/vistoolbisector.cpp \
visualization/vistoolshoulderpoint.cpp \
visualization/vistoolnormal.cpp \
- visualization/vistoolheight.cpp
+ visualization/vistoolheight.cpp \
+ visualization/vistoolpointofintersection.cpp