From 33a42e3b9b05c114a67654ff4cdb8e647e8a34c7 Mon Sep 17 00:00:00 2001 From: Valentina Zhuravska Date: Sat, 17 Dec 2016 03:06:20 +0200 Subject: [PATCH] Added VisToolEllipticalArc. --HG-- branch : feature --- .../path/vistoolellipticalarc.cpp | 98 +++++++++++ .../visualization/path/vistoolellipticalarc.h | 69 ++++++++ .../vtools/visualization/visualization.pri | 158 +++++++++--------- 3 files changed, 247 insertions(+), 78 deletions(-) create mode 100644 src/libs/vtools/visualization/path/vistoolellipticalarc.cpp create mode 100644 src/libs/vtools/visualization/path/vistoolellipticalarc.h diff --git a/src/libs/vtools/visualization/path/vistoolellipticalarc.cpp b/src/libs/vtools/visualization/path/vistoolellipticalarc.cpp new file mode 100644 index 000000000..5e636367e --- /dev/null +++ b/src/libs/vtools/visualization/path/vistoolellipticalarc.cpp @@ -0,0 +1,98 @@ +/************************************************************************ + ** + ** @file vistoolellipticalarc.cpp + ** @author Valentina Zhuravska + ** @date 24 10, 2016 + ** + ** @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) 2016 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 "vistoolellipticalarc.h" +#include +#include +#include +#include +#include + +#include "../ifc/ifcdef.h" +#include "../vgeometry/vabstractcurve.h" +#include "../vgeometry/vellipticalarc.h" +#include "../vgeometry/vpointf.h" +#include "../vpatterndb/vcontainer.h" +#include "../visualization.h" +#include "vispath.h" + +VisToolEllipticalArc::VisToolEllipticalArc(const VContainer *data, QGraphicsItem *parent) + :VisPath(data, parent), arcCenter(nullptr), radius1(0), radius2(0), f1(0), f2(0), rotationAngle(0) +{ + arcCenter = InitPoint(mainColor, this); +} + +//--------------------------------------------------------------------------------------------------------------------- +VisToolEllipticalArc::~VisToolEllipticalArc() +{} + +//--------------------------------------------------------------------------------------------------------------------- +void VisToolEllipticalArc::RefreshGeometry() +{ + if (object1Id > NULL_ID) + { + const QSharedPointer first = Visualization::data->GeometricObject(object1Id); + DrawPoint(arcCenter, *first, supportColor); + + if (not qFuzzyIsNull(radius1) && not qFuzzyIsNull(radius2) && f1 >= 0 && f2 >= 0 && rotationAngle >= 0 + && not VFuzzyComparePossibleNulls(f1, f2)) + { + VEllipticalArc elArc = VEllipticalArc(*first, radius1, radius2, f1, f2, rotationAngle); + DrawPath(this, elArc.GetPath(PathDirection::Show), mainColor, Qt::SolidLine, Qt::RoundCap); + } + } +} + +//--------------------------------------------------------------------------------------------------------------------- +void VisToolEllipticalArc::setRadius1(const QString &expression) +{ + radius1 = FindLength(expression, Visualization::data->PlainVariables()); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VisToolEllipticalArc::setRadius2(const QString &expression) +{ + radius2 = FindLength(expression, Visualization::data->PlainVariables()); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VisToolEllipticalArc::setF1(const QString &expression) +{ + f1 = FindVal(expression, Visualization::data->PlainVariables()); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VisToolEllipticalArc::setF2(const QString &expression) +{ + f2 = FindVal(expression, Visualization::data->PlainVariables()); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VisToolEllipticalArc::setRotationAngle(const QString &expression) +{ + rotationAngle = FindVal(expression, Visualization::data->PlainVariables()); +} diff --git a/src/libs/vtools/visualization/path/vistoolellipticalarc.h b/src/libs/vtools/visualization/path/vistoolellipticalarc.h new file mode 100644 index 000000000..cf8967456 --- /dev/null +++ b/src/libs/vtools/visualization/path/vistoolellipticalarc.h @@ -0,0 +1,69 @@ +/************************************************************************ + ** + ** @file vistoolellipticalarc.h + ** @author Valentina Zhuravska + ** @date 24 10, 2016 + ** + ** @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) 2016 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 VISTOOLELLIPTICALARC_H +#define VISTOOLELLIPTICALARC_H + +#include +#include +#include +#include +#include +#include + +#include "../vmisc/def.h" +#include "vispath.h" + +class VContainer; + +class VisToolEllipticalArc : public VisPath +{ + Q_OBJECT +public: + explicit VisToolEllipticalArc(const VContainer *data, QGraphicsItem *parent = 0); + virtual ~VisToolEllipticalArc() Q_DECL_OVERRIDE; + + virtual void RefreshGeometry() Q_DECL_OVERRIDE; + void setRadius1(const QString &expression); + void setRadius2(const QString &expression); + void setF1(const QString &expression); + void setF2(const QString &expression); + void setRotationAngle(const QString &expression); + + virtual int type() const Q_DECL_OVERRIDE {return Type;} + enum { Type = UserType + static_cast(Vis::ToolEllipticalArc)}; +private: + Q_DISABLE_COPY(VisToolEllipticalArc) + QGraphicsEllipseItem *arcCenter; + qreal radius1; + qreal radius2; + qreal f1; + qreal f2; + qreal rotationAngle; +}; + +#endif // VISTOOLELLIPTICALARC_H diff --git a/src/libs/vtools/visualization/visualization.pri b/src/libs/vtools/visualization/visualization.pri index 7eee605f6..5a02ea230 100644 --- a/src/libs/vtools/visualization/visualization.pri +++ b/src/libs/vtools/visualization/visualization.pri @@ -1,78 +1,80 @@ -# ADD TO EACH PATH $$PWD VARIABLE!!!!!! -# This need for corect working file translations.pro - -HEADERS += \ - $$PWD/visualization.h \ - $$PWD/line/visline.h \ - $$PWD/line/vistoolline.h \ - $$PWD/line/vistoolendline.h \ - $$PWD/line/vistoolalongline.h \ - $$PWD/line/vistoolbisector.h \ - $$PWD/line/vistoolshoulderpoint.h \ - $$PWD/line/vistoolnormal.h \ - $$PWD/line/vistoolheight.h \ - $$PWD/line/vistoolpointofintersection.h \ - $$PWD/line/vistooltriangle.h \ - $$PWD/line/vistoolpointofcontact.h \ - $$PWD/line/vistoollineintersect.h \ - $$PWD/line/vistoollineintersectaxis.h \ - $$PWD/line/vistooltruedarts.h \ - $$PWD/line/vistoolcurveintersectaxis.h \ - $$PWD/line/vistoolpointofintersectionarcs.h \ - $$PWD/line/vistoolpointofintersectioncircles.h \ - $$PWD/line/vistoolpointfromcircleandtangent.h \ - $$PWD/line/vistoolpointfromarcandtangent.h \ - $$PWD/line/operation/vistoolrotation.h \ - $$PWD/line/operation/vistoolflippingbyline.h \ - $$PWD/path/vispath.h \ - $$PWD/path/vistoolarc.h \ - $$PWD/path/vistoolcutarc.h \ - $$PWD/path/vistoolspline.h \ - $$PWD/path/vistoolcutspline.h \ - $$PWD/path/vistoolsplinepath.h \ - $$PWD/path/vistoolcutsplinepath.h \ - $$PWD/path/vistoolarcwithlength.h \ - $$PWD/path/vistoolpointofintersectioncurves.h \ - $$PWD/path/vistoolcubicbezier.h \ - $$PWD/path/vistoolcubicbezierpath.h \ - $$PWD/line/operation/visoperation.h \ - $$PWD/line/operation/vistoolflippingbyaxis.h \ - $$PWD/line/operation/vistoolmove.h - -SOURCES += \ - $$PWD/visualization.cpp \ - $$PWD/line/visline.cpp \ - $$PWD/line/vistoolline.cpp \ - $$PWD/line/vistoolendline.cpp \ - $$PWD/line/vistoolalongline.cpp \ - $$PWD/line/vistoolbisector.cpp \ - $$PWD/line/vistoolshoulderpoint.cpp \ - $$PWD/line/vistoolnormal.cpp \ - $$PWD/line/vistoolheight.cpp \ - $$PWD/line/vistoolpointofintersection.cpp \ - $$PWD/line/vistooltriangle.cpp \ - $$PWD/line/vistoolpointofcontact.cpp \ - $$PWD/line/vistoollineintersect.cpp \ - $$PWD/line/vistoollineintersectaxis.cpp \ - $$PWD/line/vistooltruedarts.cpp \ - $$PWD/line/vistoolcurveintersectaxis.cpp \ - $$PWD/line/vistoolpointofintersectionarcs.cpp \ - $$PWD/line/vistoolpointofintersectioncircles.cpp \ - $$PWD/line/vistoolpointfromcircleandtangent.cpp \ - $$PWD/line/vistoolpointfromarcandtangent.cpp \ - $$PWD/line/operation/vistoolrotation.cpp \ - $$PWD/line/operation/vistoolflippingbyline.cpp \ - $$PWD/path/vispath.cpp \ - $$PWD/path/vistoolarc.cpp \ - $$PWD/path/vistoolcutarc.cpp \ - $$PWD/path/vistoolspline.cpp \ - $$PWD/path/vistoolcutspline.cpp \ - $$PWD/path/vistoolsplinepath.cpp \ - $$PWD/path/vistoolcutsplinepath.cpp \ - $$PWD/path/vistoolarcwithlength.cpp \ - $$PWD/path/vistoolpointofintersectioncurves.cpp \ - $$PWD/path/vistoolcubicbezier.cpp \ - $$PWD/path/vistoolcubicbezierpath.cpp \ - $$PWD/line/operation/visoperation.cpp \ - $$PWD/line/operation/vistoolflippingbyaxis.cpp \ - $$PWD/line/operation/vistoolmove.cpp +# ADD TO EACH PATH $$PWD VARIABLE!!!!!! +# This need for corect working file translations.pro + +HEADERS += \ + $$PWD/visualization.h \ + $$PWD/line/visline.h \ + $$PWD/line/vistoolline.h \ + $$PWD/line/vistoolendline.h \ + $$PWD/line/vistoolalongline.h \ + $$PWD/line/vistoolbisector.h \ + $$PWD/line/vistoolshoulderpoint.h \ + $$PWD/line/vistoolnormal.h \ + $$PWD/line/vistoolheight.h \ + $$PWD/line/vistoolpointofintersection.h \ + $$PWD/line/vistooltriangle.h \ + $$PWD/line/vistoolpointofcontact.h \ + $$PWD/line/vistoollineintersect.h \ + $$PWD/line/vistoollineintersectaxis.h \ + $$PWD/line/vistooltruedarts.h \ + $$PWD/line/vistoolcurveintersectaxis.h \ + $$PWD/line/vistoolpointofintersectionarcs.h \ + $$PWD/line/vistoolpointofintersectioncircles.h \ + $$PWD/line/vistoolpointfromcircleandtangent.h \ + $$PWD/line/vistoolpointfromarcandtangent.h \ + $$PWD/line/operation/vistoolrotation.h \ + $$PWD/line/operation/vistoolflippingbyline.h \ + $$PWD/path/vispath.h \ + $$PWD/path/vistoolarc.h \ + $$PWD/path/vistoolcutarc.h \ + $$PWD/path/vistoolspline.h \ + $$PWD/path/vistoolcutspline.h \ + $$PWD/path/vistoolsplinepath.h \ + $$PWD/path/vistoolcutsplinepath.h \ + $$PWD/path/vistoolarcwithlength.h \ + $$PWD/path/vistoolpointofintersectioncurves.h \ + $$PWD/path/vistoolcubicbezier.h \ + $$PWD/path/vistoolcubicbezierpath.h \ + $$PWD/line/operation/visoperation.h \ + $$PWD/line/operation/vistoolflippingbyaxis.h \ + $$PWD/line/operation/vistoolmove.h \ + $$PWD/path/vistoolellipticalarc.h + +SOURCES += \ + $$PWD/visualization.cpp \ + $$PWD/line/visline.cpp \ + $$PWD/line/vistoolline.cpp \ + $$PWD/line/vistoolendline.cpp \ + $$PWD/line/vistoolalongline.cpp \ + $$PWD/line/vistoolbisector.cpp \ + $$PWD/line/vistoolshoulderpoint.cpp \ + $$PWD/line/vistoolnormal.cpp \ + $$PWD/line/vistoolheight.cpp \ + $$PWD/line/vistoolpointofintersection.cpp \ + $$PWD/line/vistooltriangle.cpp \ + $$PWD/line/vistoolpointofcontact.cpp \ + $$PWD/line/vistoollineintersect.cpp \ + $$PWD/line/vistoollineintersectaxis.cpp \ + $$PWD/line/vistooltruedarts.cpp \ + $$PWD/line/vistoolcurveintersectaxis.cpp \ + $$PWD/line/vistoolpointofintersectionarcs.cpp \ + $$PWD/line/vistoolpointofintersectioncircles.cpp \ + $$PWD/line/vistoolpointfromcircleandtangent.cpp \ + $$PWD/line/vistoolpointfromarcandtangent.cpp \ + $$PWD/line/operation/vistoolrotation.cpp \ + $$PWD/line/operation/vistoolflippingbyline.cpp \ + $$PWD/path/vispath.cpp \ + $$PWD/path/vistoolarc.cpp \ + $$PWD/path/vistoolcutarc.cpp \ + $$PWD/path/vistoolspline.cpp \ + $$PWD/path/vistoolcutspline.cpp \ + $$PWD/path/vistoolsplinepath.cpp \ + $$PWD/path/vistoolcutsplinepath.cpp \ + $$PWD/path/vistoolarcwithlength.cpp \ + $$PWD/path/vistoolpointofintersectioncurves.cpp \ + $$PWD/path/vistoolcubicbezier.cpp \ + $$PWD/path/vistoolcubicbezierpath.cpp \ + $$PWD/line/operation/visoperation.cpp \ + $$PWD/line/operation/vistoolflippingbyaxis.cpp \ + $$PWD/line/operation/vistoolmove.cpp \ + $$PWD/path/vistoolellipticalarc.cpp