Seamly2D
Code documentation
vtoolshoulderpoint.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 vtoolshoulderpoint.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 VTOOLSHOULDERPOINT_H
53 #define VTOOLSHOULDERPOINT_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 VToolShoulderPoint class tool for creation of point Length to Line. This tool for special situation, when you
72  * want find point along line, but have only length from another point (shoulder).
73  */
75 {
76  Q_OBJECT
77 public:
78  virtual void setDialog() Q_DECL_OVERRIDE;
79  static QPointF FindPoint(const QPointF &p1Line, const QPointF &p2Line, const QPointF &pShoulder,
80  const qreal &length);
81 
84  static VToolShoulderPoint *Create(const quint32 _id, QString &formula, quint32 p1Line, quint32 p2Line,
85  quint32 pShoulder, const QString &typeLine, const QString &lineWeight,
86  const QString &lineColor,
87  const QString &pointName, qreal mx, qreal my, bool showPointName,
89  const Document &parse,
90  const Source &typeCreation);
91 
92  static const QString ToolType;
93  virtual int type() const Q_DECL_OVERRIDE {return Type;}
94  enum { Type = UserType + static_cast<int>(Tool::ShoulderPoint) };
95 
96  QString SecondPointName() const;
97  QString ShoulderPointName() const;
98 
99  quint32 GetP2Line() const;
100  void SetP2Line(const quint32 &value);
101 
102  quint32 getPShoulder() const;
103  void setPShoulder(const quint32 &value);
104 
105  virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE;
106 
107 protected slots:
108  virtual void showContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE;
109 
110 
111 protected:
112  virtual void RemoveReferens() Q_DECL_OVERRIDE;
113  virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE;
114  virtual void SaveOptions(QDomElement &tag, QSharedPointer<VGObject> &obj) Q_DECL_OVERRIDE;
115  virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE;
116  virtual void SetVisualization() Q_DECL_OVERRIDE;
117  virtual QString makeToolTip() const Q_DECL_OVERRIDE;
118 
119 private:
120  Q_DISABLE_COPY(VToolShoulderPoint)
121 
122  quint32 p2Line; /** @brief p2Line id second line point. */
123  quint32 pShoulder; /** @brief pShoulder id shoulder line point. */
124 
125  VToolShoulderPoint(VAbstractPattern *doc, VContainer *data, const quint32 &id, const QString &typeLine,
126  const QString &lineWeight,
127  const QString &lineColor, const QString &formula, const quint32 &p1Line, const quint32 &p2Line,
128  const quint32 &pShoulder, const Source &typeCreation, QGraphicsItem * parent = nullptr);
129 };
130 
131 #endif // VTOOLSHOULDERPOINT_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.
QString lineColor
mainLine line item.
The VToolShoulderPoint class tool for creation of point Length to Line. This tool for special situati...
static VToolShoulderPoint * Create(QSharedPointer< DialogTool > dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data)
Create help create tool from GUI.
QString ShoulderPointName() const
void SetP2Line(const quint32 &value)
quint32 getPShoulder() const
QString SecondPointName() const
static const QString ToolType
quint32 pShoulder
p2Line id second line point.
virtual void RemoveReferens() Q_DECL_OVERRIDE
RemoveReferens decrement value of reference.
virtual void SaveOptions(QDomElement &tag, QSharedPointer< VGObject > &obj) Q_DECL_OVERRIDE
virtual void SetVisualization() Q_DECL_OVERRIDE
virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE
virtual int type() const 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.
static QPointF FindPoint(const QPointF &p1Line, const QPointF &p2Line, const QPointF &pShoulder, const qreal &length)
FindPoint find point.
void setPShoulder(const quint32 &value)
virtual void setDialog() Q_DECL_OVERRIDE
setDialog set dialog when user want change tool option.
virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE
quint32 GetP2Line() const
virtual QString makeToolTip() const Q_DECL_OVERRIDE
@ ShoulderPoint
Source
Definition: def.h:106
#define NULL_ID
Definition: ifcdef.h:76
Document