Seamly2D
Code documentation
vtoolnormal.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 vtoolnormal.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 VTOOLNORMAL_H
53 #define VTOOLNORMAL_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 "vtoollinepoint.h"
67 
68 template <class T> class QSharedPointer;
69 
70 /**
71  * @brief The VToolNormal class tool for creation point on normal. Normal begin from first point of line.
72  */
74 {
75  Q_OBJECT
76 public:
77  virtual void setDialog() Q_DECL_OVERRIDE;
78 
80  VContainer *data);
81  static VToolNormal *Create(const quint32 _id, QString &formula, quint32 firstPointId,
82  quint32 secondPointId, const QString &typeLine, const QString &lineWeight,
83  const QString &lineColor,
84  const QString &pointName, const qreal angle, qreal mx, qreal my, bool showPointName,
86  const Document &parse,
87  const Source &typeCreation);
88 
89  static QPointF FindPoint(const QPointF &firstPoint, const QPointF &secondPoint, const qreal &length,
90  const qreal &angle = 0);
91  static const QString ToolType;
92  virtual int type() const Q_DECL_OVERRIDE {return Type;}
93  enum { Type = UserType + static_cast<int>(Tool::Normal)};
94 
95  QString SecondPointName() const;
96 
97  quint32 GetSecondPointId() const;
98  void SetSecondPointId(const quint32 &value);
99 
100  virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE;
101 
102 protected slots:
103  virtual void showContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE;
104 
105 protected:
106  virtual void RemoveReferens() Q_DECL_OVERRIDE;
107  virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE;
108  virtual void SaveOptions(QDomElement &tag, QSharedPointer<VGObject> &obj) Q_DECL_OVERRIDE;
109  virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE;
110  virtual void SetVisualization() Q_DECL_OVERRIDE;
111 
112 private:
113  Q_DISABLE_COPY(VToolNormal)
114 
115  /** @brief secondPointId id second line point. */
116  quint32 secondPointId;
117 
118  VToolNormal(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine,
119  const QString &lineWeight, const QString &lineColor,
120  const QString &formula, const qreal &angle, const quint32 &firstPointId, const quint32 &secondPointId,
121  const Source &typeCreation, QGraphicsItem * parent = nullptr);
122 };
123 
124 #endif // VTOOLNORMAL_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 VToolLinePoint class parent for all tools what create point with line.
qreal angle
formula string with length formula.
QString lineColor
mainLine line item.
The VToolNormal class tool for creation point on normal. Normal begin from first point of line.
Definition: vtoolnormal.h:74
static const QString ToolType
Definition: vtoolnormal.h:91
virtual int type() const Q_DECL_OVERRIDE
Definition: vtoolnormal.h:92
virtual void SetVisualization() Q_DECL_OVERRIDE
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 SaveOptions(QDomElement &tag, QSharedPointer< VGObject > &obj) Q_DECL_OVERRIDE
virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE
quint32 secondPointId
secondPointId id second line point.
Definition: vtoolnormal.h:116
virtual void setDialog() Q_DECL_OVERRIDE
setDialog set dialog when user want change tool option.
QString SecondPointName() const
virtual void RemoveReferens() Q_DECL_OVERRIDE
RemoveReferens decrement value of reference.
void SetSecondPointId(const quint32 &value)
static QPointF FindPoint(const QPointF &firstPoint, const QPointF &secondPoint, const qreal &length, const qreal &angle=0)
FindPoint return normal point.
quint32 GetSecondPointId() const
static VToolNormal * Create(QSharedPointer< DialogTool > dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data)
Create help create tool from GUI.
virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE
@ Normal
Source
Definition: def.h:106
#define NULL_ID
Definition: ifcdef.h:76
Document