Seamly2D
Code documentation
vtooltriangle.h
Go to the documentation of this file.
1 /***************************************************************************
2  * *
3  * Copyright (C) 2017 Seamly, LLC *
4  * *
5  * https://github.com/fashionfreedom/seamly2d *
6  * *
7  ***************************************************************************
8  **
9  ** Seamly2D is free software: you can redistribute it and/or modify
10  ** it under the terms of the GNU General Public License as published by
11  ** the Free Software Foundation, either version 3 of the License, or
12  ** (at your option) any later version.
13  **
14  ** Seamly2D is distributed in the hope that it will be useful,
15  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
16  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  ** GNU General Public License for more details.
18  **
19  ** You should have received a copy of the GNU General Public License
20  ** along with Seamly2D. If not, see <http://www.gnu.org/licenses/>.
21  **
22  **************************************************************************
23 
24  ************************************************************************
25  **
26  ** @file vtooltriangle.h
27  ** @author Roman Telezhynskyi <dismine(at)gmail.com>
28  ** @date November 15, 2013
29  **
30  ** @brief
31  ** @copyright
32  ** This source code is part of the Valentine project, a pattern making
33  ** program, whose allow create and modeling patterns of clothing.
34  ** Copyright (C) 2013-2015 Seamly2D project
35  ** <https://github.com/fashionfreedom/seamly2d> All Rights Reserved.
36  **
37  ** Seamly2D is free software: you can redistribute it and/or modify
38  ** it under the terms of the GNU General Public License as published by
39  ** the Free Software Foundation, either version 3 of the License, or
40  ** (at your option) any later version.
41  **
42  ** Seamly2D is distributed in the hope that it will be useful,
43  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
44  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45  ** GNU General Public License for more details.
46  **
47  ** You should have received a copy of the GNU General Public License
48  ** along with Seamly2D. If not, see <http://www.gnu.org/licenses/>.
49  **
50  *************************************************************************/
51 
52 #ifndef VTOOLTRIANGLE_H
53 #define VTOOLTRIANGLE_H
54 
55 #include <qcompilerdetection.h>
56 #include <QDomElement>
57 #include <QGraphicsItem>
58 #include <QMetaObject>
59 #include <QObject>
60 #include <QPointF>
61 #include <QString>
62 #include <QtGlobal>
63 
64 #include "../ifc/xml/vabstractpattern.h"
65 #include "../vmisc/def.h"
66 #include "vtoolsinglepoint.h"
67 
68 template <class T> class QSharedPointer;
69 
70 /**
71  * @brief The VToolTriangle class for tool that find point intersection two foots right triangle
72  * (triangle with 90 degree).
73  */
75 {
76  Q_OBJECT
77 public:
78  virtual void setDialog() Q_DECL_OVERRIDE;
79 
81  VContainer *data);
82  static VToolTriangle *Create(const quint32 _id, const QString &pointName, quint32 axisP1Id,
83  quint32 axisP2Id, quint32 firstPointId, quint32 secondPointId,
84  qreal mx, qreal my, bool showPointName, VMainGraphicsScene *scene, VAbstractPattern *doc,
85  VContainer *data, const Document &parse, const Source &typeCreation);
86 
87  static QPointF FindPoint(const QPointF &axisP1, const QPointF &axisP2, const QPointF &firstPoint,
88  const QPointF &secondPoint);
89 
90  static const QString ToolType;
91  virtual int type() const Q_DECL_OVERRIDE {return Type;}
92  enum { Type = UserType + static_cast<int>(Tool::Triangle)};
93 
94  QString AxisP1Name() const;
95  QString AxisP2Name() const;
96  QString FirstPointName() const;
97  QString SecondPointName() const;
98 
99  quint32 GetAxisP1Id() const;
100  void SetAxisP1Id(const quint32 &value);
101 
102  quint32 GetAxisP2Id() const;
103  void SetAxisP2Id(const quint32 &value);
104 
105  quint32 GetFirstPointId() const;
106  void SetFirstPointId(const quint32 &value);
107 
108  quint32 GetSecondPointId() const;
109  void SetSecondPointId(const quint32 &value);
110 
111  virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE;
112 
113 protected slots:
114  virtual void showContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE;
115 
116 protected:
117  virtual void RemoveReferens() Q_DECL_OVERRIDE;
118  virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE;
119  virtual void SaveOptions(QDomElement &tag, QSharedPointer<VGObject> &obj) Q_DECL_OVERRIDE;
120  virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE;
121  virtual void SetVisualization() Q_DECL_OVERRIDE;
122 private:
123  Q_DISABLE_COPY(VToolTriangle)
124  /** @brief axisP1Id id first axis point. */
125  quint32 axisP1Id;
126 
127  /** @brief axisP2Id id second axis point. */
128  quint32 axisP2Id;
129 
130  /** @brief firstPointId id first triangle point, what lies on the hypotenuse. */
131  quint32 firstPointId;
132 
133  /** @brief secondPointId id second triangle point, what lies on the hypotenuse. */
134  quint32 secondPointId;
135 
136  VToolTriangle(VAbstractPattern *doc, VContainer *data, const quint32 &id,
137  const quint32 &axisP1Id, const quint32 &axisP2Id,
138  const quint32 &firstPointId, const quint32 &secondPointId,
139  const Source &typeCreation, QGraphicsItem * parent = nullptr);
140 };
141 
142 #endif // VTOOLTRIANGLE_H
VAbstractPattern * doc
doc dom document container
The VContainer class container of all variables.
Definition: vcontainer.h:141
VContainer data
data container with data
Definition: vdatatool.h:84
The VGObject class keep information graphical objects.
Definition: vgobject.h:74
The VMainGraphicsScene class main scene.
The VToolSinglePoint class parent for all tools what create points.
The VToolTriangle class for tool that find point intersection two foots right triangle (triangle with...
Definition: vtooltriangle.h:75
virtual void SaveOptions(QDomElement &tag, QSharedPointer< VGObject > &obj) Q_DECL_OVERRIDE
quint32 axisP2Id
axisP2Id id second axis point.
quint32 GetSecondPointId() const
quint32 axisP1Id
axisP1Id id first axis point.
void SetAxisP1Id(const quint32 &value)
quint32 secondPointId
secondPointId id second triangle point, what lies on the hypotenuse.
virtual void showContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE
contextMenuEvent handle context menu events.
virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE
SaveDialog save options into file after change in dialog.
virtual void SetVisualization() Q_DECL_OVERRIDE
static const QString ToolType
Definition: vtooltriangle.h:90
QString SecondPointName() const
QString AxisP2Name() const
quint32 firstPointId
firstPointId id first triangle point, what lies on the hypotenuse.
void SetSecondPointId(const quint32 &value)
static VToolTriangle * Create(QSharedPointer< DialogTool > dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data)
Create help create tool from GUI.
virtual int type() const Q_DECL_OVERRIDE
Definition: vtooltriangle.h:91
static QPointF FindPoint(const QPointF &axisP1, const QPointF &axisP2, const QPointF &firstPoint, const QPointF &secondPoint)
FindPoint find point intersection two foots right triangle.
quint32 GetAxisP2Id() const
virtual void setDialog() Q_DECL_OVERRIDE
setDialog set dialog when user want change tool option.
QString FirstPointName() const
virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE
void SetAxisP2Id(const quint32 &value)
quint32 GetAxisP1Id() const
quint32 GetFirstPointId() const
virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE
void SetFirstPointId(const quint32 &value)
virtual void RemoveReferens() Q_DECL_OVERRIDE
RemoveReferens decrement value of reference.
QString AxisP1Name() const
@ Triangle
Source
Definition: def.h:106
#define NULL_ID
Definition: ifcdef.h:76
Document