Seamly2D
Code documentation
vtoolellipticalarc.cpp
Go to the documentation of this file.
1 /******************************************************************************
2  * @file vtoolellipticalarc.cpp
3  ** @author Douglas S Caskey
4  ** @date 21 Mar, 2023
5  **
6  ** @brief
7  ** @copyright
8  ** This source code is part of the Seamly2D project, a pattern making
9  ** program to create and model patterns of clothing.
10  ** Copyright (C) 2017-2023 Seamly2D project
11  ** <https://github.com/fashionfreedom/seamly2d> All Rights Reserved.
12  **
13  ** Seamly2D is free software: you can redistribute it and/or modify
14  ** You should have received a copy of the GNU General Public License
15  ** along with Seamly2D. If not, see <http://www.gnu.org/licenses/>.
16  **
17  *****************************************************************************/
18 /************************************************************************
19  **
20  ** @file vtoolellipticalarc.cpp
21  ** @author Valentina Zhuravska <zhuravska19(at)gmail.com>
22  ** @date 20 10, 2016
23  **
24  ** @brief
25  ** @copyright
26  ** This source code is part of the Valentine project, a pattern making
27  ** program, whose allow create and modeling patterns of clothing.
28  ** Copyright (C) 2016 Seamly2D project
29  ** <https://github.com/fashionfreedom/seamly2d> All Rights Reserved.
30  **
31  ** Seamly2D is free software: you can redistribute it and/or modify
32  ** it under the terms of the GNU General Public License as published by
33  ** the Free Software Foundation, either version 3 of the License, or
34  ** (at your option) any later version.
35  **
36  ** Seamly2D is distributed in the hope that it will be useful,
37  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
38  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
39  ** GNU General Public License for more details.
40  **
41  ** You should have received a copy of the GNU General Public License
42  ** along with Seamly2D. If not, see <http://www.gnu.org/licenses/>.
43  **
44  *************************************************************************/
45 
46 #include "vtoolellipticalarc.h"
47 
48 #include <QPen>
49 #include <QSharedPointer>
50 #include <QStaticStringData>
51 #include <QStringData>
52 #include <QStringDataPtr>
53 #include <Qt>
54 #include <new>
55 
56 #include "../../../dialogs/tools/dialogtool.h"
57 #include "../../../dialogs/tools/dialogellipticalarc.h"
58 #include "../../../visualization/path/vistoolellipticalarc.h"
59 #include "../../../visualization/visualization.h"
60 #include "../ifc/exception/vexception.h"
61 #include "../ifc/xml/vdomdocument.h"
62 #include "../ifc/ifcdef.h"
63 #include "../vgeometry/vellipticalarc.h"
64 #include "../vgeometry/vgobject.h"
65 #include "../vgeometry/vpointf.h"
66 #include "../vmisc/vabstractapplication.h"
67 #include "../vmisc/vcommonsettings.h"
68 #include "../vpatterndb/vcontainer.h"
69 #include "../vpatterndb/vformula.h"
70 #include "../vpatterndb/vtranslatevars.h"
71 #include "../vwidgets/vmaingraphicsscene.h"
72 #include "../../vabstracttool.h"
73 #include "../vdrawtool.h"
74 #include "vabstractspline.h"
75 
76 const QString VToolEllipticalArc::ToolType = QStringLiteral("simple");
77 
78 //---------------------------------------------------------------------------------------------------------------------
79 /**
80  * @brief VToolEllipticalArc constuctor.
81  * @param doc dom document container
82  * @param data container with variables
83  * @param id object id in container
84  * @param typeCreation way we create this tool.
85  * @param parent parent object
86  */
87 VToolEllipticalArc::VToolEllipticalArc(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation,
88  QGraphicsItem *parent)
89  :VAbstractSpline(doc, data, id, parent)
90 {
92 
93  this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus
94 
95  ToolCreation(typeCreation);
96 }
97 
98 //---------------------------------------------------------------------------------------------------------------------
99 /**
100  * @brief setDialog set dialog when user want change tool option.
101  */
103 {
104  SCASSERT(not m_dialog.isNull())
106  SCASSERT(not dialogTool.isNull())
108  dialogTool->setArc(*elArc);
109  dialogTool->SetCenter(elArc->GetCenter().id());
110  dialogTool->SetF1(elArc->GetFormulaF1());
111  dialogTool->SetF2(elArc->GetFormulaF2());
112  dialogTool->SetRadius1(elArc->GetFormulaRadius1());
113  dialogTool->SetRadius2(elArc->GetFormulaRadius2());
114  dialogTool->SetRotationAngle(elArc->GetFormulaRotationAngle());
115  dialogTool->setLineColor(elArc->getLineColor());
116  dialogTool->setLineWeight(elArc->getLineWeight());
117  dialogTool->setPenStyle(elArc->GetPenStyle());
118 }
119 
120 //---------------------------------------------------------------------------------------------------------------------
121 /**
122  * @brief Create help create tool
123  * @param dialog dialog options.
124  * @param scene pointer to scene.
125  * @param doc dom document container
126  * @param data container with variables
127  */
129  VAbstractPattern *doc, VContainer *data)
130 {
131  SCASSERT(not dialog.isNull())
132  QSharedPointer<DialogEllipticalArc> dialogTool = dialog.objectCast<DialogEllipticalArc>();
133  SCASSERT(not dialogTool.isNull())
134 
135  const quint32 center = dialogTool->GetCenter();
136  QString radius1 = dialogTool->GetRadius1();
137  QString radius2 = dialogTool->GetRadius2();
138  QString f1 = dialogTool->GetF1();
139  QString f2 = dialogTool->GetF2();
140  QString rotationAngle = dialogTool->GetRotationAngle();
141  const QString color = dialogTool->getLineColor();
142  const QString penStyle = dialogTool->getPenStyle();
143  const QString lineWeight = dialogTool->getLineWeight();
144  VToolEllipticalArc* point = Create(0, center, radius1, radius2, f1, f2, rotationAngle, color, penStyle, lineWeight,
146  if (point != nullptr)
147  {
148  point->m_dialog = dialogTool;
149  }
150  return point;
151 }
152 
153 
154 //---------------------------------------------------------------------------------------------------------------------
155 /**
156  * @brief Create help create tool form GUI.
157  * @param _id tool id, 0 if tool doesn't exist yet.
158  * @param center id elliptical arc center point.
159  * @param radius1 elliptical arc radius1.
160  * @param radius2 elliptical arc radius2.
161  * @param f1 start angle of elliptical arc.
162  * @param f2 end angle of elliptical arc.
163  * @param rotationAngle rotation angle of elliptical arc.
164  * @param scene pointer to scene.
165  * @param doc dom document container.
166  * @param data container with variables.
167  * @param parse parser file mode.
168  * @param typeCreation way we create this tool.
169  */
170 VToolEllipticalArc* VToolEllipticalArc::Create(const quint32 _id, const quint32 &center, QString &radius1,
171  QString &radius2, QString &f1, QString &f2, QString &rotationAngle,
172  const QString &color, const QString &penStyle, const QString &lineWeight,
174  VContainer *data, const Document &parse, const Source &typeCreation)
175 {
176  qreal calcRadius1 = 0, calcRadius2 = 0, calcF1 = 0, calcF2 = 0, calcRotationAngle = 0;
177 
178  calcRadius1 = qApp->toPixel(CheckFormula(_id, radius1, data));
179  calcRadius2 = qApp->toPixel(CheckFormula(_id, radius2, data));
180 
181  calcF1 = CheckFormula(_id, f1, data);
182  calcF2 = CheckFormula(_id, f2, data);
183  calcRotationAngle = CheckFormula(_id, rotationAngle, data);
184 
185  const VPointF c = *data->GeometricObject<VPointF>(center);
186  VEllipticalArc *elArc = new VEllipticalArc(c, calcRadius1, calcRadius2, radius1, radius2, calcF1, f1, calcF2, f2,
187  calcRotationAngle, rotationAngle);
188  elArc->setLineColor(color);
189  elArc->SetPenStyle(penStyle);
190  elArc->setLineWeight(lineWeight);
191  quint32 id = _id;
192  if (typeCreation == Source::FromGui)
193  {
194  id = data->AddGObject(elArc);
196  }
197  else
198  {
199  data->UpdateGObject(id, elArc);
201  if (parse != Document::FullParse)
202  {
203  doc->UpdateToolData(id, data);
204  }
205  }
206 
207  if (parse == Document::FullParse)
208  {
210  VToolEllipticalArc *toolEllipticalArc = new VToolEllipticalArc(doc, data, id, typeCreation);
211  scene->addItem(toolEllipticalArc);
212  InitElArcToolConnections(scene, toolEllipticalArc);
213  VAbstractPattern::AddTool(id, toolEllipticalArc);
215  return toolEllipticalArc;
216  }
217  return nullptr;
218 }
219 
220 //---------------------------------------------------------------------------------------------------------------------
222 {
224 }
225 
226 //---------------------------------------------------------------------------------------------------------------------
228 {
229  return VAbstractTool::data.GetGObject(getCenter())->name();
230 }
231 
232 //---------------------------------------------------------------------------------------------------------------------
234 {
236  SCASSERT(elArc.isNull() == false)
237 
238  return elArc->GetCenter().id();
239 }
240 
241 //---------------------------------------------------------------------------------------------------------------------
242 void VToolEllipticalArc::setCenter(const quint32 &value)
243 {
244  if (value != NULL_ID)
245  {
247  QSharedPointer<VEllipticalArc> elArc = qSharedPointerDynamicCast<VEllipticalArc>(obj);
248 
250  elArc->SetCenter(*point.data());
251  SaveOption(obj);
252  }
253 }
254 
255 //---------------------------------------------------------------------------------------------------------------------
257 {
259  SCASSERT(elArc.isNull() == false)
260 
261  VFormula radius1(elArc->GetFormulaRadius1(), getData());
262  radius1.setCheckZero(true);
263  radius1.setToolId(m_id);
264  radius1.setPostfix(UnitsToStr(qApp->patternUnit()));
265  return radius1;
266 }
267 
268 //---------------------------------------------------------------------------------------------------------------------
270 {
271  if (value.error() == false)
272  {
273  if (value.getDoubleValue() > 0)// Formula don't check this, but radius1 can't be 0 or negative
274  {
276  QSharedPointer<VEllipticalArc> elArc = qSharedPointerDynamicCast<VEllipticalArc>(obj);
277  elArc->SetFormulaRadius1(value.GetFormula(FormulaType::FromUser), value.getDoubleValue());
278  SaveOption(obj);
279  }
280  }
281 }
282 
283 //---------------------------------------------------------------------------------------------------------------------
285 {
287  SCASSERT(elArc.isNull() == false)
288 
289  VFormula radius2(elArc->GetFormulaRadius2(), getData());
290  radius2.setCheckZero(true);
291  radius2.setToolId(m_id);
292  radius2.setPostfix(UnitsToStr(qApp->patternUnit()));
293  return radius2;
294 }
295 
296 //---------------------------------------------------------------------------------------------------------------------
298 {
299  if (value.error() == false)
300  {
301  if (value.getDoubleValue() > 0)// Formula don't check this, but radius2 can't be 0 or negative
302  {
304  QSharedPointer<VEllipticalArc> elArc = qSharedPointerDynamicCast<VEllipticalArc>(obj);
305  elArc->SetFormulaRadius2(value.GetFormula(FormulaType::FromUser), value.getDoubleValue());
306  SaveOption(obj);
307  }
308  }
309 }
310 
311 //---------------------------------------------------------------------------------------------------------------------
313 {
315  SCASSERT(elArc.isNull() == false)
316 
317  VFormula f1(elArc->GetFormulaF1(), getData());
318  f1.setCheckZero(false);
319  f1.setToolId(m_id);
320  f1.setPostfix(degreeSymbol);
321  return f1;
322 }
323 
324 //---------------------------------------------------------------------------------------------------------------------
326 {
327  if (value.error() == false)
328  {
330  QSharedPointer<VEllipticalArc> elArc = qSharedPointerDynamicCast<VEllipticalArc>(obj);
331 
332  if (not VFuzzyComparePossibleNulls(value.getDoubleValue(), elArc->GetEndAngle()))// Angles can't be equal
333  {
334  elArc->SetFormulaF1(value.GetFormula(FormulaType::FromUser), value.getDoubleValue());
335  SaveOption(obj);
336  }
337  }
338 }
339 
340 //---------------------------------------------------------------------------------------------------------------------
342 {
344  SCASSERT(elArc.isNull() == false)
345 
346  VFormula f2(elArc->GetFormulaF2(), getData());
347  f2.setCheckZero(false);
348  f2.setToolId(m_id);
349  f2.setPostfix(degreeSymbol);
350  return f2;
351 }
352 
353 //---------------------------------------------------------------------------------------------------------------------
355 {
356  if (value.error() == false)
357  {
359  QSharedPointer<VEllipticalArc> elArc = qSharedPointerDynamicCast<VEllipticalArc>(obj);
360  if (not VFuzzyComparePossibleNulls(value.getDoubleValue(), elArc->GetStartAngle()))// Angles can't be equal
361  {
362  elArc->SetFormulaF2(value.GetFormula(FormulaType::FromUser), value.getDoubleValue());
363  SaveOption(obj);
364  }
365  }
366 }
367 
368 //---------------------------------------------------------------------------------------------------------------------
370 {
372  SCASSERT(elArc.isNull() == false)
373 
374  VFormula rotationAngle(elArc->GetFormulaRotationAngle(), getData());
375  rotationAngle.setCheckZero(false);
376  rotationAngle.setToolId(m_id);
377  rotationAngle.setPostfix(degreeSymbol);
378  return rotationAngle;
379 }
380 
381 //---------------------------------------------------------------------------------------------------------------------
383 {
384  if (value.error() == false)
385  {
387  QSharedPointer<VEllipticalArc> elArc = qSharedPointerDynamicCast<VEllipticalArc>(obj);
388  elArc->SetFormulaRotationAngle(value.GetFormula(FormulaType::FromUser), value.getDoubleValue());
389  SaveOption(obj);
390  }
391 }
392 
393 //---------------------------------------------------------------------------------------------------------------------
395 {
396  ShowToolVisualization<VisToolEllipticalArc>(show);
397 }
398 
399 //---------------------------------------------------------------------------------------------------------------------
400 /**
401  * @brief contextMenuEvent handle context menu events.
402  * @param event context menu event.
403  */
404 void VToolEllipticalArc::showContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id)
405 {
406  Q_UNUSED(id)
407 
408  try
409  {
410  ContextMenu<DialogEllipticalArc>(event);
411  }
412  catch(const VExceptionToolWasDeleted &e)
413  {
414  Q_UNUSED(e)
415  return;//Leave this method immediately!!!
416  }
417 }
418 
419 //---------------------------------------------------------------------------------------------------------------------
420 /**
421  * @brief RemoveReferens decrement value of reference.
422  */
424 {
426  doc->DecrementReferens(elArc->GetCenter().getIdTool());
427 }
428 
429 //---------------------------------------------------------------------------------------------------------------------
430 /**
431  * @brief SaveDialog save options into file after change in dialog.
432  */
433 void VToolEllipticalArc::SaveDialog(QDomElement &domElement)
434 {
435  SCASSERT(not m_dialog.isNull())
437  SCASSERT(not dialogTool.isNull())
438  doc->SetAttribute(domElement, AttrCenter, QString().setNum(dialogTool->GetCenter()));
439  doc->SetAttribute(domElement, AttrRadius1, dialogTool->GetRadius1());
440  doc->SetAttribute(domElement, AttrRadius2, dialogTool->GetRadius2());
441  doc->SetAttribute(domElement, AttrAngle1, dialogTool->GetF1());
442  doc->SetAttribute(domElement, AttrAngle2, dialogTool->GetF2());
443  doc->SetAttribute(domElement, AttrRotationAngle, dialogTool->GetRotationAngle());
444  doc->SetAttribute(domElement, AttrColor, dialogTool->getLineColor());
445  doc->SetAttribute(domElement, AttrPenStyle, dialogTool->getPenStyle());
446  doc->SetAttribute(domElement, AttrLineWeight, dialogTool->getLineWeight());
447 }
448 
449 //---------------------------------------------------------------------------------------------------------------------
451 {
453 
454  QSharedPointer<VEllipticalArc> elArc = qSharedPointerDynamicCast<VEllipticalArc>(obj);
455  SCASSERT(elArc.isNull() == false)
456 
458  doc->SetAttribute(tag, AttrCenter, elArc->GetCenter().id());
459  doc->SetAttribute(tag, AttrRadius1, elArc->GetFormulaRadius1());
460  doc->SetAttribute(tag, AttrRadius2, elArc->GetFormulaRadius2());
461  doc->SetAttribute(tag, AttrAngle1, elArc->GetFormulaF1());
462  doc->SetAttribute(tag, AttrAngle2, elArc->GetFormulaF2());
463  doc->SetAttribute(tag, AttrRotationAngle, elArc->GetFormulaRotationAngle());
464 }
465 
466 //---------------------------------------------------------------------------------------------------------------------
468 {
469  if (not vis.isNull())
470  {
472  VisToolEllipticalArc *visual = qobject_cast<VisToolEllipticalArc *>(vis);
473  SCASSERT(visual != nullptr)
474 
475  const VTranslateVars *trVars = qApp->TrVars();
476  visual->setObject1Id(elArc->GetCenter().id());
477  visual->setRadius1(trVars->FormulaToUser(elArc->GetFormulaRadius1(), qApp->Settings()->GetOsSeparator()));
478  visual->setRadius2(trVars->FormulaToUser(elArc->GetFormulaRadius2(), qApp->Settings()->GetOsSeparator()));
479  visual->setF1(trVars->FormulaToUser(elArc->GetFormulaF1(), qApp->Settings()->GetOsSeparator()));
480  visual->setF2(trVars->FormulaToUser(elArc->GetFormulaF2(), qApp->Settings()->GetOsSeparator()));
481  visual->setRotationAngle(trVars->FormulaToUser(elArc->GetFormulaRotationAngle(),
482  qApp->Settings()->GetOsSeparator()));
483  visual->setLineStyle(lineTypeToPenStyle(elArc->GetPenStyle()));
484  visual->setLineWeight(elArc->getLineWeight());
485  visual->RefreshGeometry();
486  }
487 }
488 
489 //---------------------------------------------------------------------------------------------------------------------
491 {
493 
494  const QString toolTip = QString("<table>"
495  "<tr> <td><b>%12:</b> %13</td> </tr>"
496  "<tr> <td><b>%1:</b> %2 %3</td> </tr>"
497  "<tr> <td><b>%4:</b> %5 %3</td> </tr>"
498  "<tr> <td><b>%6:</b> %7 %3</td> </tr>"
499  "<tr> <td><b>%8:</b> %9°</td> </tr>"
500  "<tr> <td><b>%10:</b> %11°</td> </tr>"
501  "</table>")
502  .arg(tr(" Length"))
503  .arg(qApp->fromPixel(elArc->GetLength()))
504  .arg(UnitsToStr(qApp->patternUnit(), true))
505  .arg(tr(" Radius") + QLatin1String("1"))
506  .arg(qApp->fromPixel(elArc->GetRadius1()))
507  .arg(tr(" Radius") + QLatin1String("2"))
508  .arg(qApp->fromPixel(elArc->GetRadius2()))
509  .arg(tr("Start angle"))
510  .arg(qApp->fromPixel(elArc->GetStartAngle()))
511  .arg(tr(" End angle"))
512  .arg(qApp->fromPixel(elArc->GetEndAngle()))
513  .arg(tr(" Label"))
514  .arg(elArc->name());
515  return toolTip;
516 }
virtual void UpdateToolData(const quint32 &id, VContainer *data)=0
virtual void IncrementReferens(quint32 id) const =0
static void AddTool(quint32 id, VDataTool *tool)
AddTool add tool to list tools.
static const QString TagElArc
virtual void DecrementReferens(quint32 id) const =0
virtual void SaveOptions(QDomElement &tag, QSharedPointer< VGObject > &obj) Q_DECL_OVERRIDE
static void InitElArcToolConnections(VMainGraphicsScene *scene, T *tool)
SceneObject sceneType
VAbstractPattern * doc
doc dom document container
QPointer< Visualization > vis
const VContainer * getData() const
getData return pointer to data container.
virtual void ToolCreation(const Source &typeCreation)
static void AddRecord(const quint32 id, const Tool &toolType, VAbstractPattern *doc)
AddRecord add record about tool in history.
static qreal CheckFormula(const quint32 &toolId, QString &formula, VContainer *data)
CheckFormula check formula.
const quint32 m_id
id object id.
The VContainer class container of all variables.
Definition: vcontainer.h:141
void AddArc(const QSharedPointer< VAbstractCurve > &arc, const quint32 &id, const quint32 &parentId=null_id)
Definition: vcontainer.cpp:395
const QSharedPointer< VGObject > GetGObject(quint32 id) const
GetGObject returns a point by id.
Definition: vcontainer.cpp:150
const QSharedPointer< T > GeometricObject(const quint32 &id) const
Definition: vcontainer.h:266
quint32 AddGObject(VGObject *obj)
AddGObject add new GObject to container.
Definition: vcontainer.cpp:216
void UpdateGObject(quint32 id, T *obj)
UpdateGObject update GObject by id.
Definition: vcontainer.h:374
VContainer data
data container with data
Definition: vdatatool.h:84
void SetAttribute(QDomElement &domElement, const QString &name, const T &value) const
SetAttribute set attribute in pattern file. Replace "," by ".".
Definition: vdomdocument.h:185
void SaveOption(QSharedPointer< VGObject > &obj)
Definition: vdrawtool.cpp:142
bool error() const
Definition: vformula.cpp:238
qreal getDoubleValue() const
Definition: vformula.cpp:172
QString GetFormula(FormulaType type=FormulaType::ToUser) const
Definition: vformula.cpp:135
quint32 getIdTool() const
Definition: vgobject.cpp:221
QSharedPointer< DialogTool > m_dialog
m_dialog tool's dialog options.
The VMainGraphicsScene class main scene.
The VPointF class keep data of point.
Definition: vpointf.h:75
The VToolEllipticalArc class tool for creation elliptical arc.
virtual void showContextMenu(QGraphicsSceneContextMenuEvent *event, quint32 id=NULL_ID) Q_DECL_OVERRIDE
contextMenuEvent handle context menu events.
virtual void RemoveReferens() Q_DECL_OVERRIDE
RemoveReferens decrement value of reference.
void setCenter(const quint32 &value)
void SetFormulaF2(const VFormula &value)
virtual void SaveOptions(QDomElement &tag, QSharedPointer< VGObject > &obj) Q_DECL_OVERRIDE
virtual QString getTagName() const Q_DECL_OVERRIDE
void SetFormulaRotationAngle(const VFormula &value)
virtual QString makeToolTip() const Q_DECL_OVERRIDE
virtual void ShowVisualization(bool show) Q_DECL_OVERRIDE
VFormula GetFormulaRotationAngle() const
void SetFormulaRadius1(const VFormula &value)
VFormula GetFormulaF2() const
VFormula GetFormulaRadius1() const
static const QString ToolType
virtual void SetVisualization() Q_DECL_OVERRIDE
quint32 getCenter() const
static VToolEllipticalArc * Create(QSharedPointer< DialogTool > dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data)
Create help create tool.
void SetFormulaF1(const VFormula &value)
QString CenterPointName() const
VToolEllipticalArc(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, QGraphicsItem *parent=nullptr)
VToolEllipticalArc constuctor.
virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE
SaveDialog save options into file after change in dialog.
virtual void setDialog() Q_DECL_OVERRIDE
setDialog set dialog when user want change tool option.
void SetFormulaRadius2(const VFormula &value)
VFormula GetFormulaF1() const
VFormula GetFormulaRadius2() const
QString FormulaToUser(const QString &formula, bool osSeparator) const
FormulaToUser replace all known tokens in formula to user look. Also change decimal separator in numb...
const QString degreeSymbol
Definition: def.cpp:196
QString UnitsToStr(const Unit &unit, const bool translate)
UnitsToStr translate unit to string.
Definition: def.cpp:702
#define SCASSERT(cond)
Definition: def.h:317
static Q_REQUIRED_RESULT bool VFuzzyComparePossibleNulls(double p1, double p2)
Definition: def.h:490
@ EllipticalArc
Source
Definition: def.h:106
const QString AttrLineWeight
Definition: ifcdef.cpp:91
const QString AttrPenStyle
Definition: ifcdef.cpp:132
const QString AttrRadius2
Definition: ifcdef.cpp:102
const QString AttrRotationAngle
Definition: ifcdef.cpp:151
const QString AttrRadius1
Definition: ifcdef.cpp:101
const QString AttrType
Definition: ifcdef.cpp:73
const QString AttrAngle2
Definition: ifcdef.cpp:105
const QString AttrColor
Definition: ifcdef.cpp:131
Qt::PenStyle lineTypeToPenStyle(const QString &lineType)
LineStyle return pen style for current line style.
Definition: ifcdef.cpp:183
const QString AttrAngle1
Definition: ifcdef.cpp:104
const QString AttrCenter
Definition: ifcdef.cpp:99
#define NULL_ID
Definition: ifcdef.h:76
Document
#define qApp
Definition: vapplication.h:67