From 32a16890a7ef8c18c6ddfc5313b83dcc6f1372f0 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Tue, 16 May 2017 13:07:53 +0300 Subject: [PATCH] Resolved issue #681. Enhance feature: Dashed line options for curves, arcs, etc. --HG-- branch : develop --- ChangeLog.txt | 1 + .../core/vtooloptionspropertybrowser.cpp | 127 ++- .../core/vtooloptionspropertybrowser.h | 3 + src/app/valentina/xml/vpattern.cpp | 39 +- src/libs/ifc/ifcdef.cpp | 109 ++ src/libs/ifc/ifcdef.h | 7 + src/libs/ifc/schema.qrc | 1 + src/libs/ifc/schema/pattern/v0.5.0.xsd | 928 ++++++++++++++++++ src/libs/ifc/xml/vpatternconverter.cpp | 24 +- src/libs/ifc/xml/vpatternconverter.h | 3 +- .../vgeometry/vabstractcubicbezierpath.cpp | 11 + src/libs/vgeometry/vabstractcubicbezierpath.h | 1 + src/libs/vgeometry/vabstractcurve.cpp | 30 +- src/libs/vgeometry/vabstractcurve.h | 6 +- src/libs/vgeometry/vabstractcurve_p.h | 10 +- src/libs/vgeometry/varc.cpp | 6 + src/libs/vgeometry/vcubicbezier.cpp | 6 + src/libs/vgeometry/vcubicbezierpath.cpp | 6 + src/libs/vgeometry/vellipticalarc.cpp | 6 + src/libs/vgeometry/vspline.cpp | 6 + src/libs/vgeometry/vsplinepath.cpp | 6 + .../vtools/dialogs/tools/dialogalongline.cpp | 7 +- src/libs/vtools/dialogs/tools/dialogarc.cpp | 13 + src/libs/vtools/dialogs/tools/dialogarc.h | 3 + src/libs/vtools/dialogs/tools/dialogarc.ui | 16 +- .../dialogs/tools/dialogarcwithlength.cpp | 13 + .../dialogs/tools/dialogarcwithlength.h | 3 + .../dialogs/tools/dialogarcwithlength.ui | 25 +- .../vtools/dialogs/tools/dialogbisector.cpp | 7 +- .../dialogs/tools/dialogcubicbezier.cpp | 14 + .../vtools/dialogs/tools/dialogcubicbezier.h | 3 + .../vtools/dialogs/tools/dialogcubicbezier.ui | 20 +- .../dialogs/tools/dialogcubicbezierpath.cpp | 14 + .../dialogs/tools/dialogcubicbezierpath.h | 3 + .../dialogs/tools/dialogcubicbezierpath.ui | 18 +- .../tools/dialogcurveintersectaxis.cpp | 7 +- .../dialogs/tools/dialogellipticalarc.cpp | 14 + .../dialogs/tools/dialogellipticalarc.h | 3 + .../dialogs/tools/dialogellipticalarc.ui | 16 +- .../vtools/dialogs/tools/dialogendline.cpp | 6 +- .../vtools/dialogs/tools/dialogheight.cpp | 7 +- src/libs/vtools/dialogs/tools/dialogline.cpp | 7 +- .../dialogs/tools/dialoglineintersectaxis.cpp | 6 +- .../vtools/dialogs/tools/dialognormal.cpp | 6 +- .../vtools/dialogs/tools/dialogpiecepath.cpp | 6 +- .../dialogs/tools/dialogshoulderpoint.cpp | 6 +- .../vtools/dialogs/tools/dialogspline.cpp | 14 + src/libs/vtools/dialogs/tools/dialogspline.h | 3 + src/libs/vtools/dialogs/tools/dialogspline.ui | 18 +- .../vtools/dialogs/tools/dialogsplinepath.cpp | 14 + .../vtools/dialogs/tools/dialogsplinepath.h | 3 + .../vtools/dialogs/tools/dialogsplinepath.ui | 18 +- src/libs/vtools/dialogs/tools/dialogtool.cpp | 6 +- .../operation/vabstractoperation.cpp | 3 +- .../drawTools/toolcurve/vabstractspline.cpp | 143 ++- .../drawTools/toolcurve/vabstractspline.h | 10 +- .../tools/drawTools/toolcurve/vtoolarc.cpp | 29 +- .../tools/drawTools/toolcurve/vtoolarc.h | 6 +- .../toolcurve/vtoolarcwithlength.cpp | 28 +- .../drawTools/toolcurve/vtoolarcwithlength.h | 9 +- .../drawTools/toolcurve/vtoolcubicbezier.cpp | 31 +- .../drawTools/toolcurve/vtoolcubicbezier.h | 8 +- .../toolcurve/vtoolcubicbezierpath.cpp | 25 +- .../toolcurve/vtoolcubicbezierpath.h | 8 +- .../toolcurve/vtoolellipticalarc.cpp | 31 +- .../drawTools/toolcurve/vtoolellipticalarc.h | 5 +- .../tools/drawTools/toolcurve/vtoolspline.cpp | 37 +- .../tools/drawTools/toolcurve/vtoolspline.h | 10 +- .../drawTools/toolcurve/vtoolsplinepath.cpp | 45 +- .../drawTools/toolcurve/vtoolsplinepath.h | 8 +- .../toolsinglepoint/toolcut/vtoolcutarc.cpp | 4 + .../toolcut/vtoolcutspline.cpp | 4 + .../toolcut/vtoolcutsplinepath.cpp | 4 + .../toollinepoint/vtoolalongline.cpp | 6 +- .../toollinepoint/vtoolbisector.cpp | 6 +- .../toollinepoint/vtoolcurveintersectaxis.cpp | 6 +- .../toollinepoint/vtoolendline.cpp | 6 +- .../toollinepoint/vtoolheight.cpp | 6 +- .../toollinepoint/vtoollineintersectaxis.cpp | 6 +- .../toollinepoint/vtoollinepoint.cpp | 8 +- .../toollinepoint/vtoolnormal.cpp | 6 +- .../toollinepoint/vtoolshoulderpoint.cpp | 6 +- src/libs/vtools/tools/drawTools/vdrawtool.cpp | 6 +- src/libs/vtools/tools/drawTools/vdrawtool.h | 2 +- src/libs/vtools/tools/drawTools/vtoolline.cpp | 20 +- src/libs/vtools/tools/vabstracttool.cpp | 92 -- src/libs/vtools/tools/vabstracttool.h | 5 - .../line/operation/visoperation.cpp | 5 +- .../line/operation/visoperation.h | 6 +- .../line/operation/vistoolmove.cpp | 4 +- .../line/operation/vistoolrotation.cpp | 4 +- .../line/operation/vistoolrotation.h | 2 +- .../line/vistoolcurveintersectaxis.cpp | 2 +- .../line/vistoolcurveintersectaxis.h | 2 +- .../line/vistoolpointfromarcandtangent.cpp | 2 +- .../line/vistoolpointfromarcandtangent.h | 2 +- .../line/vistoolpointofintersectionarcs.cpp | 4 +- .../line/vistoolpointofintersectionarcs.h | 4 +- .../vtools/visualization/path/vispath.cpp | 3 +- src/libs/vtools/visualization/path/vispath.h | 4 +- .../vtools/visualization/path/vistoolarc.cpp | 2 +- .../path/vistoolarcwithlength.cpp | 2 +- .../visualization/path/vistoolcubicbezier.cpp | 6 +- .../path/vistoolcubicbezierpath.cpp | 5 +- .../path/vistoolcubicbezierpath.h | 2 +- .../visualization/path/vistoolcutarc.cpp | 10 +- .../vtools/visualization/path/vistoolcutarc.h | 4 +- .../visualization/path/vistoolcutspline.cpp | 10 +- .../visualization/path/vistoolcutspline.h | 4 +- .../path/vistoolcutsplinepath.cpp | 10 +- .../visualization/path/vistoolcutsplinepath.h | 4 +- .../path/vistoolellipticalarc.cpp | 2 +- .../path/vistoolpointofintersectioncurves.cpp | 2 +- .../path/vistoolpointofintersectioncurves.h | 2 +- .../visualization/path/vistoolspline.cpp | 6 +- .../visualization/path/vistoolsplinepath.cpp | 4 +- .../visualization/path/vistoolsplinepath.h | 2 +- .../vtools/visualization/visualization.cpp | 12 +- src/libs/vtools/visualization/visualization.h | 5 +- src/libs/vwidgets/vabstractsimple.cpp | 11 +- src/libs/vwidgets/vabstractsimple.h | 15 +- src/libs/vwidgets/vcurvepathitem.cpp | 64 ++ src/libs/vwidgets/vcurvepathitem.h | 50 + src/libs/vwidgets/vsimplecurve.cpp | 30 +- src/libs/vwidgets/vsimplecurve.h | 8 +- src/libs/vwidgets/vsimplepoint.cpp | 5 +- src/libs/vwidgets/vsimplepoint.h | 3 + src/libs/vwidgets/vwidgets.pri | 6 +- 128 files changed, 2059 insertions(+), 555 deletions(-) create mode 100644 src/libs/ifc/schema/pattern/v0.5.0.xsd create mode 100644 src/libs/vwidgets/vcurvepathitem.cpp create mode 100644 src/libs/vwidgets/vcurvepathitem.h diff --git a/ChangeLog.txt b/ChangeLog.txt index d1822f9fe..8f5f95723 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,5 +1,6 @@ # Version 0.6.0 - [#682] New feature. Export increments to Excel .csv. +- [#681] Enhance feature: Dashed line options for curves, arcs, etc. # Version 0.5.1 - [#683] Tool Seam allowance's dialog is off screen on small resolutions. diff --git a/src/app/valentina/core/vtooloptionspropertybrowser.cpp b/src/app/valentina/core/vtooloptionspropertybrowser.cpp index d98c30fcc..0d7612e95 100644 --- a/src/app/valentina/core/vtooloptionspropertybrowser.cpp +++ b/src/app/valentina/core/vtooloptionspropertybrowser.cpp @@ -617,6 +617,22 @@ void VToolOptionsPropertyBrowser::AddPropertyLineType(Tool *i, const QString &pr AddProperty(lineTypeProperty, AttrTypeLine); } +//--------------------------------------------------------------------------------------------------------------------- +template +void VToolOptionsPropertyBrowser::AddPropertyCurvePenStyle(Tool *i, const QString &propertyName, + const QMap &styles) +{ + VPE::VLineTypeProperty *penStyleProperty = new VPE::VLineTypeProperty(propertyName); + penStyleProperty->setStyles(styles); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(styles, i->GetPenStyle()); + if (index == -1) + { + qWarning()<<"Can't find pen style" << i->getLineType()<<"in list"; + } + penStyleProperty->setValue(index); + AddProperty(penStyleProperty, AttrPenStyle); +} + //--------------------------------------------------------------------------------------------------------------------- template void VToolOptionsPropertyBrowser::AddPropertyLineColor(Tool *i, const QString &propertyName, @@ -955,6 +971,9 @@ void VToolOptionsPropertyBrowser::ChangeDataToolArc(VPE::VProperty *property) break; case 11: // AttrCenter (read only) break; + case 59: // AttrPenStyle + i->SetPenStyle(value.toString()); + break; default: qWarning()<<"Unknown property type. id = "<SetPenStyle(value.toString()); + break; default: qWarning()<<"Unknown property type. id = "<SetLineColor(value.toString()); break; + case 59: // AttrPenStyle + i->SetPenStyle(value.toString()); + break; default: qWarning()<<"Unknown property type. id = "<SetLineColor(value.toString()); break; + case 59: // AttrPenStyle + i->SetPenStyle(value.toString()); + break; case 55: // AttrPoint1 (read only) case 56: // AttrPoint2 (read only) case 57: // AttrPoint3 (read only) @@ -1598,6 +1626,9 @@ void VToolOptionsPropertyBrowser::ChangeDataToolSplinePath(VPE::VProperty *prope case 27: // AttrTypeColor i->SetLineColor(value.toString()); break; + case 59: // AttrPenStyle + i->SetPenStyle(value.toString()); + break; default: qWarning()<<"Unknown property type. id = "<SetLineColor(value.toString()); break; + case 59: // AttrPenStyle + i->SetPenStyle(value.toString()); + break; default: qWarning()<<"Unknown property type. id = "<SetLineColor(value.toString()); break; + case 59: // AttrPenStyle + i->SetPenStyle(value.toString()); + break; case 11: // AttrCenter (read only) break; default: @@ -1882,7 +1919,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolEndLine(QGraphicsItem *item) AddPropertyObjectName(i, tr("Point label:")); AddPropertyParentPointName(i->BasePointName(), tr("Base point:"), AttrBasePoint); - AddPropertyLineType(i, tr("Line type:"), VAbstractTool::LineStylesPics()); + AddPropertyLineType(i, tr("Line type:"), LineStylesPics()); AddPropertyLineColor(i, tr("Line color:"), VAbstractTool::ColorsList(), AttrLineColor); AddPropertyFormula(tr("Length:"), i->GetFormulaLength(), AttrLength); AddPropertyFormula(tr("Angle:"), i->GetFormulaAngle(), AttrAngle); @@ -1898,7 +1935,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolAlongLine(QGraphicsItem *item) AddPropertyObjectName(i, tr("Point label:")); AddPropertyParentPointName(i->BasePointName(), tr("First point:"), AttrBasePoint); AddPropertyParentPointName(i->SecondPointName(), tr("Second point:"), AttrSecondPoint); - AddPropertyLineType(i, tr("Line type:"), VAbstractTool::LineStylesPics()); + AddPropertyLineType(i, tr("Line type:"), LineStylesPics()); AddPropertyLineColor(i, tr("Line color:"), VAbstractTool::ColorsList(), AttrLineColor); AddPropertyFormula(tr("Length:"), i->GetFormulaLength(), AttrLength); } @@ -1914,6 +1951,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolArc(QGraphicsItem *item) AddPropertyFormula(tr("Radius:"), i->GetFormulaRadius(), AttrRadius); AddPropertyFormula(tr("First angle:"), i->GetFormulaF1(), AttrAngle1); AddPropertyFormula(tr("Second angle:"), i->GetFormulaF2(), AttrAngle2); + AddPropertyCurvePenStyle(i, tr("Pen style:"), CurvePenStylesPics()); AddPropertyLineColor(i, tr("Color:"), VAbstractTool::ColorsList(), AttrColor); } @@ -1928,6 +1966,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolArcWithLength(QGraphicsItem *it AddPropertyFormula(tr("Radius:"), i->GetFormulaRadius(), AttrRadius); AddPropertyFormula(tr("First angle:"), i->GetFormulaF1(), AttrAngle1); AddPropertyFormula(tr("Length:"), i->GetFormulaLength(), AttrLength); + AddPropertyCurvePenStyle(i, tr("Pen style:"), CurvePenStylesPics()); AddPropertyLineColor(i, tr("Color:"), VAbstractTool::ColorsList(), AttrColor); } @@ -1942,7 +1981,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolBisector(QGraphicsItem *item) AddPropertyParentPointName(i->FirstPointName(), tr("First point:"), AttrFirstPoint); AddPropertyParentPointName(i->BasePointName(), tr("Second point:"), AttrBasePoint); AddPropertyParentPointName(i->ThirdPointName(), tr("Third point:"), AttrThirdPoint); - AddPropertyLineType(i, tr("Line type:"), VAbstractTool::LineStylesPics()); + AddPropertyLineType(i, tr("Line type:"), LineStylesPics()); AddPropertyLineColor(i, tr("Line color:"), VAbstractTool::ColorsList(), AttrLineColor); AddPropertyFormula(tr("Length:"), i->GetFormulaLength(), AttrLength); } @@ -2010,7 +2049,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolHeight(QGraphicsItem *item) AddPropertyParentPointName(i->BasePointName(), tr("Base point:"), AttrBasePoint); AddPropertyParentPointName(i->FirstLinePointName(), tr("First line point:"), AttrP1Line); AddPropertyParentPointName(i->SecondLinePointName(), tr("Second line point:"), AttrP2Line); - AddPropertyLineType(i, tr("Line type:"), VAbstractTool::LineStylesPics()); + AddPropertyLineType(i, tr("Line type:"), LineStylesPics()); AddPropertyLineColor(i, tr("Line color:"), VAbstractTool::ColorsList(), AttrLineColor); } @@ -2023,7 +2062,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolLine(QGraphicsItem *item) AddPropertyParentPointName(i->FirstPointName(), tr("First point:"), AttrFirstPoint); AddPropertyParentPointName(i->SecondPointName(), tr("Second point:"), AttrSecondPoint); - QMap styles = VAbstractTool::LineStylesPics(); + QMap styles = LineStylesPics(); styles.remove(TypeLineNone); AddPropertyLineType(i, tr("Line type:"), styles); AddPropertyLineColor(i, tr("Line color:"), VAbstractTool::ColorsList(), AttrLineColor); @@ -2054,7 +2093,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolNormal(QGraphicsItem *item) AddPropertyObjectName(i, tr("Point label:")); AddPropertyParentPointName(i->BasePointName(), tr("First point:"), AttrBasePoint); AddPropertyParentPointName(i->SecondPointName(), tr("Second point:"), AttrSecondPoint); - AddPropertyLineType(i, tr("Line type:"), VAbstractTool::LineStylesPics()); + AddPropertyLineType(i, tr("Line type:"), LineStylesPics()); AddPropertyLineColor(i, tr("Line color:"), VAbstractTool::ColorsList(), AttrLineColor); VPE::VDoubleProperty* itemAngle = new VPE::VDoubleProperty(tr("Additional angle degrees:")); @@ -2171,7 +2210,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolShoulderPoint(QGraphicsItem *it AddPropertyParentPointName(i->BasePointName(), tr("First point:"), AttrBasePoint); AddPropertyParentPointName(i->SecondPointName(), tr("Second point:"), AttrSecondPoint); AddPropertyParentPointName(i->ShoulderPointName(), tr("Third point:"), AttrThirdPoint); - AddPropertyLineType(i, tr("Line type:"), VAbstractTool::LineStylesPics()); + AddPropertyLineType(i, tr("Line type:"), LineStylesPics()); AddPropertyLineColor(i, tr("Line color:"), VAbstractTool::ColorsList(), AttrLineColor); AddPropertyFormula(tr("Length:"), i->GetFormulaLength(), AttrLength); } @@ -2211,6 +2250,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolSpline(QGraphicsItem *item) length2.setPostfix(VDomDocument::UnitsToStr(qApp->patternUnit())); AddPropertyFormula(tr("C2: length:"), length2, AttrLength2); + AddPropertyCurvePenStyle(i, tr("Pen style:"), CurvePenStylesPics()); AddPropertyLineColor(i, tr("Color:"), VAbstractTool::ColorsList(), AttrColor); } @@ -2226,6 +2266,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolCubicBezier(QGraphicsItem *item AddPropertyParentPointName(i->SecondPointName(), tr("Second point:"), AttrPoint2); AddPropertyParentPointName(i->ThirdPointName(), tr("Third point:"), AttrPoint3); AddPropertyParentPointName(i->ForthPointName(), tr("Fourth point:"), AttrPoint4); + AddPropertyCurvePenStyle(i, tr("Pen style:"), CurvePenStylesPics()); AddPropertyLineColor(i, tr("Color:"), VAbstractTool::ColorsList(), AttrColor); } @@ -2237,6 +2278,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolSplinePath(QGraphicsItem *item) formView->setTitle(tr("Tool for path curve")); AddPropertyObjectName(i, tr("Name:"), true); + AddPropertyCurvePenStyle(i, tr("Pen style:"), CurvePenStylesPics()); AddPropertyLineColor(i, tr("Color:"), VAbstractTool::ColorsList(), AttrColor); } @@ -2248,6 +2290,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolCubicBezierPath(QGraphicsItem * formView->setTitle(tr("Tool cubic bezier curve")); AddPropertyObjectName(i, tr("Name:"), true); + AddPropertyCurvePenStyle(i, tr("Pen style:"), CurvePenStylesPics()); AddPropertyLineColor(i, tr("Color:"), VAbstractTool::ColorsList(), AttrColor); } @@ -2276,7 +2319,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolLineIntersectAxis(QGraphicsItem AddPropertyParentPointName(i->BasePointName(), tr("Axis point:"), AttrBasePoint); AddPropertyParentPointName(i->FirstLinePoint(), tr("First line point:"), AttrFirstPoint); AddPropertyParentPointName(i->SecondLinePoint(), tr("Second line point:"), AttrSecondPoint); - AddPropertyLineType(i, tr("Line type:"), VAbstractTool::LineStylesPics()); + AddPropertyLineType(i, tr("Line type:"), LineStylesPics()); AddPropertyLineColor(i, tr("Line color:"), VAbstractTool::ColorsList(), AttrLineColor); AddPropertyFormula(tr("Angle:"), i->GetFormulaAngle(), AttrAngle); } @@ -2291,7 +2334,7 @@ void VToolOptionsPropertyBrowser::ShowOptionsToolCurveIntersectAxis(QGraphicsIte AddPropertyObjectName(i, tr("Point label:")); AddPropertyParentPointName(i->BasePointName(), tr("Axis point:"), AttrBasePoint); AddPropertyParentPointName(i->CurveName(), tr("Curve:"), AttrCurve); - AddPropertyLineType(i, tr("Line type:"), VAbstractTool::LineStylesPics()); + AddPropertyLineType(i, tr("Line type:"), LineStylesPics()); AddPropertyLineColor(i, tr("Line color:"), VAbstractTool::ColorsList(), AttrLineColor); AddPropertyFormula(tr("Angle:"), i->GetFormulaAngle(), AttrAngle); } @@ -2375,7 +2418,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolEndLine() idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(VAbstractTool::LineStylesPics(), i->getLineType()); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); idToProperty[AttrTypeLine]->setValue(index); } @@ -2404,7 +2447,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolAlongLine() idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(VAbstractTool::LineStylesPics(), i->getLineType()); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); idToProperty[AttrTypeLine]->setValue(index); } @@ -2443,8 +2486,15 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolArc() valueSecondAngle.setValue(i->GetFormulaF2()); idToProperty[AttrAngle2]->setValue(valueSecondAngle); - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); - idToProperty[AttrColor]->setValue(index); + { + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + idToProperty[AttrPenStyle]->setValue(index); + } + + { + const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + idToProperty[AttrColor]->setValue(index); + } QVariant valueCenterPoint; valueCenterPoint.setValue(i->CenterPointName()); @@ -2468,8 +2518,15 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolArcWithLength() valueLength.setValue(i->GetFormulaLength()); idToProperty[AttrLength]->setValue(valueLength); - const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); - idToProperty[AttrColor]->setValue(index); + { + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + idToProperty[AttrPenStyle]->setValue(index); + } + + { + const qint32 index = VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor()); + idToProperty[AttrColor]->setValue(index); + } QVariant valueCenterPoint; valueCenterPoint.setValue(i->CenterPointName()); @@ -2488,7 +2545,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolBisector() idToProperty[AttrLength]->setValue(valueFormula); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(VAbstractTool::LineStylesPics(), i->getLineType()); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); idToProperty[AttrTypeLine]->setValue(index); } @@ -2595,7 +2652,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolHeight() idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(VAbstractTool::LineStylesPics(), i->getLineType()); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); idToProperty[AttrTypeLine]->setValue(index); } @@ -2623,7 +2680,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolLine() VToolLine *i = qgraphicsitem_cast(currentItem); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(VAbstractTool::LineStylesPics(), i->getLineType()); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); idToProperty[AttrTypeLine]->setValue(index); } @@ -2679,7 +2736,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolNormal() idToProperty[AttrAngle]->setValue( i->GetAngle()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(VAbstractTool::LineStylesPics(), i->getLineType()); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); idToProperty[AttrTypeLine]->setValue(index); } @@ -2847,7 +2904,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolShoulderPoint() idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(VAbstractTool::LineStylesPics(), i->getLineType()); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); idToProperty[AttrTypeLine]->setValue(index); } @@ -2909,6 +2966,11 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolSpline() length2.setValue(length2F); idToProperty[AttrLength2]->setValue(length2); + { + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + idToProperty[AttrPenStyle]->setValue(index); + } + idToProperty[AttrColor]->setValue(VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor())); } @@ -2919,6 +2981,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolCubicBezier() auto i = qgraphicsitem_cast(currentItem); idToProperty[AttrName]->setValue(qApp->TrVars()->VarToUser(i->name())); + + { + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + idToProperty[AttrPenStyle]->setValue(index); + } + idToProperty[AttrColor]->setValue(VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor())); @@ -2945,6 +3013,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolSplinePath() auto i = qgraphicsitem_cast(currentItem); idToProperty[AttrName]->setValue(qApp->TrVars()->VarToUser(i->name())); + + { + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + idToProperty[AttrPenStyle]->setValue(index); + } + idToProperty[AttrColor]->setValue(VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor())); } @@ -2955,6 +3029,12 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolCubicBezierPath() auto i = qgraphicsitem_cast(currentItem); idToProperty[AttrName]->setValue(qApp->TrVars()->VarToUser(i->name())); + + { + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(CurvePenStylesPics(), i->GetPenStyle()); + idToProperty[AttrPenStyle]->setValue(index); + } + idToProperty[AttrColor]->setValue(VPE::VLineColorProperty::IndexOfColor(VAbstractTool::ColorsList(), i->GetLineColor())); } @@ -2990,7 +3070,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolLineIntersectAxis() idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(VAbstractTool::LineStylesPics(), i->getLineType()); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); idToProperty[AttrTypeLine]->setValue(index); } @@ -3023,7 +3103,7 @@ void VToolOptionsPropertyBrowser::UpdateOptionsToolCurveIntersectAxis() idToProperty[AttrName]->setValue(i->name()); { - const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(VAbstractTool::LineStylesPics(), i->getLineType()); + const qint32 index = VPE::VLineTypeProperty::IndexOfStyle(LineStylesPics(), i->getLineType()); idToProperty[AttrTypeLine]->setValue(index); } @@ -3196,6 +3276,7 @@ QStringList VToolOptionsPropertyBrowser::PropertiesList() const << AttrPoint1 /* 55 */ << AttrPoint2 /* 56 */ << AttrPoint3 /* 57 */ - << AttrPoint4; /* 58 */ + << AttrPoint4 /* 58 */ + << AttrPenStyle; /* 59 */ return attr; } diff --git a/src/app/valentina/core/vtooloptionspropertybrowser.h b/src/app/valentina/core/vtooloptionspropertybrowser.h index 5a7ec8fae..107c9e9e2 100644 --- a/src/app/valentina/core/vtooloptionspropertybrowser.h +++ b/src/app/valentina/core/vtooloptionspropertybrowser.h @@ -120,6 +120,9 @@ private: template void AddPropertyLineType(Tool *i, const QString &propertyName, const QMap &styles); + template + void AddPropertyCurvePenStyle(Tool *i, const QString &propertyName, const QMap &styles); + template void AddPropertyLineColor(Tool *i, const QString &propertyName, const QMap &colors, const QString &id); diff --git a/src/app/valentina/xml/vpattern.cpp b/src/app/valentina/xml/vpattern.cpp index eeee365e7..9341efddd 100644 --- a/src/app/valentina/xml/vpattern.cpp +++ b/src/app/valentina/xml/vpattern.cpp @@ -2120,8 +2120,9 @@ void VPattern::ParseOldToolSpline(VMainGraphicsScene *scene, const QDomElement & { spline->SetDuplicate(duplicate); } + spline->SetColor(color); - VToolSpline::Create(id, spline, color, scene, this, data, parse, Source::FromFile); + VToolSpline::Create(id, spline, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) { @@ -2158,10 +2159,11 @@ void VPattern::ParseToolSpline(VMainGraphicsScene *scene, QDomElement &domElemen QString l2 = length2;//need for saving fixed formula; const QString color = GetParametrString(domElement, AttrColor, ColorBlack); + const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); const quint32 duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); - VToolSpline *spl = VToolSpline::Create(id, point1, point4, a1, a2, l1, l2, duplicate, color, scene, this, - data, parse, Source::FromFile); + VToolSpline *spl = VToolSpline::Create(id, point1, point4, a1, a2, l1, l2, duplicate, color, penStyle, scene, + this, data, parse, Source::FromFile); if (spl != nullptr) { @@ -2212,6 +2214,7 @@ void VPattern::ParseToolCubicBezier(VMainGraphicsScene *scene, const QDomElement const quint32 point4 = GetParametrUInt(domElement, AttrPoint4, NULL_ID_STR); const QString color = GetParametrString(domElement, AttrColor, ColorBlack); + const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); const quint32 duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); auto p1 = data->GeometricObject(point1); @@ -2224,8 +2227,10 @@ void VPattern::ParseToolCubicBezier(VMainGraphicsScene *scene, const QDomElement { spline->SetDuplicate(duplicate); } + spline->SetColor(color); + spline->SetPenStyle(penStyle); - VToolCubicBezier::Create(id, spline, color, scene, this, data, parse, Source::FromFile); + VToolCubicBezier::Create(id, spline, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) { @@ -2285,8 +2290,9 @@ void VPattern::ParseOldToolSplinePath(VMainGraphicsScene *scene, const QDomEleme { path->SetDuplicate(duplicate); } + path->SetColor(color); - VToolSplinePath::Create(id, path, color, scene, this, data, parse, Source::FromFile); + VToolSplinePath::Create(id, path, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) { @@ -2308,6 +2314,7 @@ void VPattern::ParseToolSplinePath(VMainGraphicsScene *scene, const QDomElement ToolsCommonAttributes(domElement, id); const QString color = GetParametrString(domElement, AttrColor, ColorBlack); + const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); const quint32 duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); QVector points; @@ -2343,8 +2350,8 @@ void VPattern::ParseToolSplinePath(VMainGraphicsScene *scene, const QDomElement l1 = length1; l2 = length2; - VToolSplinePath *spl = VToolSplinePath::Create(id, points, a1, a2, l1, l2, color, duplicate, scene, this, data, - parse, Source::FromFile); + VToolSplinePath *spl = VToolSplinePath::Create(id, points, a1, a2, l1, l2, color, penStyle, duplicate, scene, + this, data, parse, Source::FromFile); if (spl != nullptr) { @@ -2400,6 +2407,7 @@ void VPattern::ParseToolCubicBezierPath(VMainGraphicsScene *scene, const QDomEle ToolsCommonAttributes(domElement, id); const QString color = GetParametrString(domElement, AttrColor, ColorBlack); + const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); const quint32 duplicate = GetParametrUInt(domElement, AttrDuplicate, "0"); QVector points; @@ -2429,8 +2437,10 @@ void VPattern::ParseToolCubicBezierPath(VMainGraphicsScene *scene, const QDomEle { path->SetDuplicate(duplicate); } + path->SetColor(color); + path->SetPenStyle(penStyle); - VToolCubicBezierPath::Create(id, path, color, scene, this, data, parse, Source::FromFile); + VToolCubicBezierPath::Create(id, path, scene, this, data, parse, Source::FromFile); } catch (const VExceptionBadId &e) { @@ -2550,8 +2560,9 @@ void VPattern::ParseToolArc(VMainGraphicsScene *scene, QDomElement &domElement, const QString f2 = GetParametrString(domElement, AttrAngle2, "270"); QString f2Fix = f2;//need for saving fixed formula; const QString color = GetParametrString(domElement, AttrColor, ColorBlack); + const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); - VToolArc::Create(id, center, r, f1Fix, f2Fix, color, scene, this, data, parse, Source::FromFile); + VToolArc::Create(id, center, r, f1Fix, f2Fix, color, penStyle, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (r != radius || f1Fix != f1 || f2Fix != f2) { @@ -2599,9 +2610,10 @@ void VPattern::ParseToolEllipticalArc(VMainGraphicsScene *scene, QDomElement &do const QString frotation = GetParametrString(domElement, AttrRotationAngle, "0"); QString frotationFix = frotation;//need for saving fixed formula; const QString color = GetParametrString(domElement, AttrColor, ColorBlack); + const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); - VToolEllipticalArc::Create(id, center, r1, r2, f1Fix, f2Fix, frotationFix, color, scene, this, data, parse, - Source::FromFile); + VToolEllipticalArc::Create(id, center, r1, r2, f1Fix, f2Fix, frotationFix, color, penStyle, scene, this, data, + parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (r1 != radius1 || r2 != radius2 || f1Fix != f1 || f2Fix != f2 || frotationFix != frotation) { @@ -2717,8 +2729,9 @@ void VPattern::ParseToolArcWithLength(VMainGraphicsScene *scene, QDomElement &do const QString length = GetParametrString(domElement, AttrLength, "10"); QString lengthFix = length;//need for saving fixed length; const QString color = GetParametrString(domElement, AttrColor, ColorBlack); + const QString penStyle = GetParametrString(domElement, AttrPenStyle, TypeLineLine); - VToolArcWithLength::Create(id, center, r, f1Fix, lengthFix, color, scene, this, data, parse, + VToolArcWithLength::Create(id, center, r, f1Fix, lengthFix, color, penStyle, scene, this, data, parse, Source::FromFile); //Rewrite attribute formula. Need for situation when we have wrong formula. if (r != radius || f1Fix != f1 || lengthFix != length) @@ -3227,7 +3240,7 @@ void VPattern::ParsePathElement(VMainGraphicsScene *scene, QDomElement &domEleme path.SetType(type); path.SetName(name); - path.SetPenType(VAbstractTool::LineStyleToPenStyle(penType)); + path.SetPenType(LineStyleToPenStyle(penType)); VToolPiecePath::Create(id, path, 0, scene, this, data, parse, Source::FromFile, "", idTool); } diff --git a/src/libs/ifc/ifcdef.cpp b/src/libs/ifc/ifcdef.cpp index 1ad4f6e97..888cde48b 100644 --- a/src/libs/ifc/ifcdef.cpp +++ b/src/libs/ifc/ifcdef.cpp @@ -28,10 +28,18 @@ #include "ifcdef.h" +#include +#include +#include +#include +#include +#include #include #include #include +#include "../vmisc/diagnostic.h" + const QString CustomMSign = QStringLiteral("@"); const QString CustomIncrSign = QStringLiteral("#"); @@ -119,6 +127,7 @@ const QString AttrCurve1 = QStringLiteral("curve1"); const QString AttrCurve2 = QStringLiteral("curve2"); const QString AttrLineColor = QStringLiteral("lineColor"); const QString AttrColor = QStringLiteral("color"); +const QString AttrPenStyle = QStringLiteral("penStyle"); const QString AttrFirstArc = QStringLiteral("firstArc"); const QString AttrSecondArc = QStringLiteral("secondArc"); const QString AttrCrossPoint = QStringLiteral("crossPoint"); @@ -146,6 +155,106 @@ const QString TypeLineDotLine = QStringLiteral("dotLine"); const QString TypeLineDashDotLine = QStringLiteral("dashDotLine"); const QString TypeLineDashDotDotLine = QStringLiteral("dashDotDotLine"); +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief Styles return list of all line styles. + * @return list of all line styles. + */ +QStringList StylesList() +{ + const QStringList styles = QStringList() << TypeLineNone << TypeLineLine << TypeLineDashLine + << TypeLineDotLine << TypeLineDashDotLine + << TypeLineDashDotDotLine; + return styles; +} + +//--------------------------------------------------------------------------------------------------------------------- +/** + * @brief LineStyle return pen style for current line style. + * @return pen style. + */ +Qt::PenStyle LineStyleToPenStyle(const QString &typeLine) +{ + const QStringList styles = StylesList(); + switch (styles.indexOf(typeLine)) + { + case 0: // TypeLineNone + return Qt::NoPen; + case 2: // TypeLineDashLine + return Qt::DashLine; + case 3: // TypeLineDotLine + return Qt::DotLine; + case 4: // TypeLineDashDotLine + return Qt::DashDotLine; + case 5: // TypeLineDashDotDotLine + return Qt::DashDotDotLine; + case 1: // TypeLineLine + default: + return Qt::SolidLine; + } +} + +//--------------------------------------------------------------------------------------------------------------------- +QString PenStyleToLineStyle(Qt::PenStyle penStyle) +{ + QT_WARNING_PUSH + QT_WARNING_DISABLE_GCC("-Wswitch-default") + + switch (penStyle) + { + case Qt::NoPen: + return TypeLineNone; + case Qt::DashLine: + return TypeLineDashLine; + case Qt::DotLine: + return TypeLineDotLine; + case Qt::DashDotLine: + return TypeLineDashDotLine; + case Qt::DashDotDotLine: + return TypeLineDashDotDotLine; + case Qt::SolidLine: + case Qt::CustomDashLine: + default: + break; + } + + QT_WARNING_POP + + return TypeLineLine; +} + +//--------------------------------------------------------------------------------------------------------------------- +QMap LineStylesPics() +{ + QMap map; + const QStringList styles = StylesList(); + + for (int i=0; i < styles.size(); ++i) + { + const Qt::PenStyle style = LineStyleToPenStyle(styles.at(i)); + QPixmap pix(80, 14); + pix.fill(Qt::white); + + QBrush brush(Qt::black); + QPen pen(brush, 2.5, style); + + QPainter painter(&pix); + painter.setPen(pen); + painter.drawLine(2, 7, 78, 7); + + map.insert(styles.at(i), QIcon(pix)); + } + return map; +} + +//--------------------------------------------------------------------------------------------------------------------- +QMap CurvePenStylesPics() +{ + QMap map = LineStylesPics(); + map.remove(TypeLineNone); + return map; +} + const QString ColorBlack = QStringLiteral("black"); const QString ColorGreen = QStringLiteral("green"); const QString ColorBlue = QStringLiteral("blue"); diff --git a/src/libs/ifc/ifcdef.h b/src/libs/ifc/ifcdef.h index 0f8de9771..3db1f37ba 100644 --- a/src/libs/ifc/ifcdef.h +++ b/src/libs/ifc/ifcdef.h @@ -123,6 +123,7 @@ extern const QString AttrCurve1; extern const QString AttrCurve2; extern const QString AttrLineColor; extern const QString AttrColor; +extern const QString AttrPenStyle; extern const QString AttrFirstArc; extern const QString AttrSecondArc; extern const QString AttrCrossPoint; @@ -149,6 +150,12 @@ extern const QString TypeLineDotLine; extern const QString TypeLineDashDotLine; extern const QString TypeLineDashDotDotLine; +QStringList StylesList(); +Qt::PenStyle LineStyleToPenStyle(const QString &typeLine); +QString PenStyleToLineStyle(Qt::PenStyle penStyle); +QMap LineStylesPics(); +QMap CurvePenStylesPics(); + extern const QString ColorBlack; extern const QString ColorGreen; extern const QString ColorBlue; diff --git a/src/libs/ifc/schema.qrc b/src/libs/ifc/schema.qrc index e624374fa..cce5e8f34 100644 --- a/src/libs/ifc/schema.qrc +++ b/src/libs/ifc/schema.qrc @@ -32,6 +32,7 @@ schema/pattern/v0.4.6.xsd schema/pattern/v0.4.7.xsd schema/pattern/v0.4.8.xsd + schema/pattern/v0.5.0.xsd schema/standard_measurements/v0.3.0.xsd schema/standard_measurements/v0.4.0.xsd schema/standard_measurements/v0.4.1.xsd diff --git a/src/libs/ifc/schema/pattern/v0.5.0.xsd b/src/libs/ifc/schema/pattern/v0.5.0.xsd new file mode 100644 index 000000000..0ac923dfa --- /dev/null +++ b/src/libs/ifc/schema/pattern/v0.5.0.xsd @@ -0,0 +1,928 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/libs/ifc/xml/vpatternconverter.cpp b/src/libs/ifc/xml/vpatternconverter.cpp index a4a5ca2bf..4779e9194 100644 --- a/src/libs/ifc/xml/vpatternconverter.cpp +++ b/src/libs/ifc/xml/vpatternconverter.cpp @@ -58,8 +58,8 @@ class QDomElement; */ const QString VPatternConverter::PatternMinVerStr = QStringLiteral("0.1.0"); -const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.4.8"); -const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.4.8.xsd"); +const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.5.0"); +const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.5.0.xsd"); //VPatternConverter::PatternMinVer; // <== DON'T FORGET TO UPDATE TOO!!!! //VPatternConverter::PatternMaxVer; // <== DON'T FORGET TO UPDATE TOO!!!! @@ -209,8 +209,10 @@ QString VPatternConverter::XSDSchema(int ver) const case (0x000406): return QStringLiteral("://schema/pattern/v0.4.6.xsd"); case (0x000407): - return QStringLiteral("://schema/pattern/v0.4.8.xsd"); + return QStringLiteral("://schema/pattern/v0.4.7.xsd"); case (0x000408): + return QStringLiteral("://schema/pattern/v0.4.8.xsd"); + case (0x000500): return CurrentSchema; default: InvalidVersion(ver); @@ -349,6 +351,10 @@ void VPatternConverter::ApplyPatches() ValidateXML(XSDSchema(0x000408), m_convertedFileName); V_FALLTHROUGH case (0x000408): + ToV0_5_0(); + ValidateXML(XSDSchema(0x000500), m_convertedFileName); + V_FALLTHROUGH + case (0x000500): break; default: InvalidVersion(m_ver); @@ -367,7 +373,7 @@ void VPatternConverter::DowngradeToCurrentMaxVersion() bool VPatternConverter::IsReadOnly() const { // Check if attribute readOnly was not changed in file format - Q_STATIC_ASSERT_X(VPatternConverter::PatternMaxVer == CONVERTER_VERSION_CHECK(0, 4, 8), + Q_STATIC_ASSERT_X(VPatternConverter::PatternMaxVer == CONVERTER_VERSION_CHECK(0, 5, 0), "Check attribute readOnly."); // Possibly in future attribute readOnly will change position etc. @@ -736,6 +742,16 @@ void VPatternConverter::ToV0_4_8() Save(); } +//--------------------------------------------------------------------------------------------------------------------- +void VPatternConverter::ToV0_5_0() +{ + // TODO. Delete if minimal supported version is 0.5.0 + Q_STATIC_ASSERT_X(VPatternConverter::PatternMinVer < CONVERTER_VERSION_CHECK(0, 5, 0), + "Time to refactor the code."); + SetVersion(QStringLiteral("0.5.0")); + Save(); +} + //--------------------------------------------------------------------------------------------------------------------- void VPatternConverter::TagUnitToV0_2_0() { diff --git a/src/libs/ifc/xml/vpatternconverter.h b/src/libs/ifc/xml/vpatternconverter.h index 37c727ecc..2e22f99b9 100644 --- a/src/libs/ifc/xml/vpatternconverter.h +++ b/src/libs/ifc/xml/vpatternconverter.h @@ -53,7 +53,7 @@ public: static const QString PatternMaxVerStr; static const QString CurrentSchema; static Q_DECL_CONSTEXPR const int PatternMinVer = CONVERTER_VERSION_CHECK(0, 1, 0); - static Q_DECL_CONSTEXPR const int PatternMaxVer = CONVERTER_VERSION_CHECK(0, 4, 8); + static Q_DECL_CONSTEXPR const int PatternMaxVer = CONVERTER_VERSION_CHECK(0, 5, 0); protected: virtual int MinVer() const Q_DECL_OVERRIDE; @@ -103,6 +103,7 @@ private: void ToV0_4_6(); void ToV0_4_7(); void ToV0_4_8(); + void ToV0_5_0(); void TagUnitToV0_2_0(); void TagIncrementToV0_2_0(); diff --git a/src/libs/vgeometry/vabstractcubicbezierpath.cpp b/src/libs/vgeometry/vabstractcubicbezierpath.cpp index e9542fa8d..b035b0f93 100644 --- a/src/libs/vgeometry/vabstractcubicbezierpath.cpp +++ b/src/libs/vgeometry/vabstractcubicbezierpath.cpp @@ -64,6 +64,17 @@ VAbstractCubicBezierPath::~VAbstractCubicBezierPath() { } +//--------------------------------------------------------------------------------------------------------------------- +QPainterPath VAbstractCubicBezierPath::GetDirectionPath() const +{ + QPainterPath painterPath; + for (qint32 i = 1; i <= CountSubSpl(); ++i) + { + painterPath.addPath(GetSpline(i).GetDirectionPath()); + } + return painterPath; +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief GetPath return QPainterPath which reprezent spline path. diff --git a/src/libs/vgeometry/vabstractcubicbezierpath.h b/src/libs/vgeometry/vabstractcubicbezierpath.h index 6f7586e84..97cc95d19 100644 --- a/src/libs/vgeometry/vabstractcubicbezierpath.h +++ b/src/libs/vgeometry/vabstractcubicbezierpath.h @@ -59,6 +59,7 @@ public: virtual VSpline GetSpline(qint32 index) const =0; virtual QVector GetSplinePath() const =0; + virtual QPainterPath GetDirectionPath() const; virtual QPainterPath GetPath(PathDirection direction = PathDirection::Hide) const Q_DECL_OVERRIDE; virtual QVector GetPoints() const Q_DECL_OVERRIDE; virtual qreal GetLength() const Q_DECL_OVERRIDE; diff --git a/src/libs/vgeometry/vabstractcurve.cpp b/src/libs/vgeometry/vabstractcurve.cpp index 5d00aca93..4ac60943f 100644 --- a/src/libs/vgeometry/vabstractcurve.cpp +++ b/src/libs/vgeometry/vabstractcurve.cpp @@ -92,7 +92,6 @@ QVector VAbstractCurve::GetSegmentPoints(const QPointF &begin, const QP return GetSegmentPoints(GetPoints(), begin, end, reverse); } - //--------------------------------------------------------------------------------------------------------------------- QVector VAbstractCurve::FromBegin(const QVector &points, const QPointF &begin, bool *ok) { @@ -169,24 +168,27 @@ QVector VAbstractCurve::ToEnd(const QVector &points, const QPo return GetReversePoints(reversed); } +//--------------------------------------------------------------------------------------------------------------------- +QPainterPath VAbstractCurve::GetDirectionPath() const +{ + return ShowDirection(GetPoints()); +} + //--------------------------------------------------------------------------------------------------------------------- QPainterPath VAbstractCurve::GetPath(PathDirection direction) const { QPainterPath path; - QVector points = GetPoints(); + const QVector points = GetPoints(); if (points.count() >= 2) { - for (qint32 i = 0; i < points.count()-1; ++i) - { - path.moveTo(points.at(i)); - path.lineTo(points.at(i+1)); - } + path.addPolygon(QPolygonF(points)); - if (direction == PathDirection::Show && points.count() >= 3) + if (direction == PathDirection::Show) { path.addPath(ShowDirection(points)); } + path.setFillRule(Qt::WindingFill); } else { @@ -292,6 +294,18 @@ void VAbstractCurve::SetColor(const QString &color) d->color = color; } +//--------------------------------------------------------------------------------------------------------------------- +QString VAbstractCurve::GetPenStyle() const +{ + return d->penStyle; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractCurve::SetPenStyle(const QString &penStyle) +{ + d->penStyle = penStyle; +} + //--------------------------------------------------------------------------------------------------------------------- QVector VAbstractCurve::CurveIntersectLine(const QVector &points, const QLineF &line) { diff --git a/src/libs/vgeometry/vabstractcurve.h b/src/libs/vgeometry/vabstractcurve.h index 4ff9c838c..af743ad72 100644 --- a/src/libs/vgeometry/vabstractcurve.h +++ b/src/libs/vgeometry/vabstractcurve.h @@ -68,6 +68,7 @@ public: bool reverse = false); QVector GetSegmentPoints(const QPointF &begin, const QPointF &end, bool reverse = false) const; + virtual QPainterPath GetDirectionPath() const; virtual QPainterPath GetPath(PathDirection direction = PathDirection::Hide) const; virtual qreal GetLength() const =0; qreal GetLengthByPoint(const QPointF &point) const; @@ -86,13 +87,16 @@ public: QString GetColor() const; void SetColor(const QString &color); + QString GetPenStyle() const; + void SetPenStyle(const QString &penStyle); + static qreal PathLength(const QVector &path); static QVector CurveIntersectLine(const QVector &points, const QLineF &line); virtual QString NameForHistory(const QString &toolName) const=0; -protected: QPainterPath ShowDirection(const QVector &points) const; +protected: virtual void CreateName() =0; private: QSharedDataPointer d; diff --git a/src/libs/vgeometry/vabstractcurve_p.h b/src/libs/vgeometry/vabstractcurve_p.h index 29338ef7e..8af49c6de 100644 --- a/src/libs/vgeometry/vabstractcurve_p.h +++ b/src/libs/vgeometry/vabstractcurve_p.h @@ -42,11 +42,16 @@ class VAbstractCurveData : public QSharedData public: VAbstractCurveData () - : duplicate(0), color(ColorBlack) + : duplicate(0), + color(ColorBlack), + penStyle(TypeLineLine) {} VAbstractCurveData(const VAbstractCurveData &curve) - : QSharedData(curve), duplicate(curve.duplicate), color(curve.color) + : QSharedData(curve), + duplicate(curve.duplicate), + color(curve.color), + penStyle(curve.penStyle) {} virtual ~VAbstractCurveData(); @@ -55,6 +60,7 @@ public: quint32 duplicate; QString color; + QString penStyle; private: VAbstractCurveData &operator=(const VAbstractCurveData &) Q_DECL_EQ_DELETE; diff --git a/src/libs/vgeometry/varc.cpp b/src/libs/vgeometry/varc.cpp index 0b9fe9c88..f19d0562b 100644 --- a/src/libs/vgeometry/varc.cpp +++ b/src/libs/vgeometry/varc.cpp @@ -127,6 +127,8 @@ VArc VArc::Rotate(const QPointF &originPoint, qreal degrees, const QString &pref VArc arc(center, GetRadius(), QLineF(static_cast(center), p1).angle(), QLineF(static_cast(center), p2).angle()); arc.setName(name() + prefix); + arc.SetColor(GetColor()); + arc.SetPenStyle(GetPenStyle()); return arc; } @@ -142,6 +144,8 @@ VArc VArc::Flip(const QLineF &axis, const QString &prefix) const QLineF(static_cast(center), p2).angle()); arc.setName(name() + prefix); arc.SetFlipped(true); + arc.SetColor(GetColor()); + arc.SetPenStyle(GetPenStyle()); return arc; } @@ -156,6 +160,8 @@ VArc VArc::Move(qreal length, qreal angle, const QString &prefix) const VArc arc(center, GetRadius(), QLineF(static_cast(center), p1).angle(), QLineF(static_cast(center), p2).angle()); arc.setName(name() + prefix); + arc.SetColor(GetColor()); + arc.SetPenStyle(GetPenStyle()); return arc; } diff --git a/src/libs/vgeometry/vcubicbezier.cpp b/src/libs/vgeometry/vcubicbezier.cpp index 7aedc0e97..453bf0fba 100644 --- a/src/libs/vgeometry/vcubicbezier.cpp +++ b/src/libs/vgeometry/vcubicbezier.cpp @@ -73,6 +73,8 @@ VCubicBezier VCubicBezier::Rotate(const QPointF &originPoint, qreal degrees, con const VPointF p4 = GetP4().Rotate(originPoint, degrees); VCubicBezier curve(p1, p2, p3, p4); curve.setName(name() + prefix); + curve.SetColor(GetColor()); + curve.SetPenStyle(GetPenStyle()); return curve; } @@ -85,6 +87,8 @@ VCubicBezier VCubicBezier::Flip(const QLineF &axis, const QString &prefix) const const VPointF p4 = GetP4().Flip(axis); VCubicBezier curve(p1, p2, p3, p4); curve.setName(name() + prefix); + curve.SetColor(GetColor()); + curve.SetPenStyle(GetPenStyle()); return curve; } @@ -97,6 +101,8 @@ VCubicBezier VCubicBezier::Move(qreal length, qreal angle, const QString &prefix const VPointF p4 = GetP4().Move(length, angle); VCubicBezier curve(p1, p2, p3, p4); curve.setName(name() + prefix); + curve.SetColor(GetColor()); + curve.SetPenStyle(GetPenStyle()); return curve; } diff --git a/src/libs/vgeometry/vcubicbezierpath.cpp b/src/libs/vgeometry/vcubicbezierpath.cpp index fbe2b9970..6069ace91 100644 --- a/src/libs/vgeometry/vcubicbezierpath.cpp +++ b/src/libs/vgeometry/vcubicbezierpath.cpp @@ -88,6 +88,8 @@ VCubicBezierPath VCubicBezierPath::Rotate(const QPointF &originPoint, qreal degr curve.append(points.at(i).Rotate(originPoint, degrees)); } curve.setName(name() + prefix); + curve.SetColor(GetColor()); + curve.SetPenStyle(GetPenStyle()); return curve; } @@ -101,6 +103,8 @@ VCubicBezierPath VCubicBezierPath::Flip(const QLineF &axis, const QString &prefi curve.append(points.at(i).Flip(axis)); } curve.setName(name() + prefix); + curve.SetColor(GetColor()); + curve.SetPenStyle(GetPenStyle()); return curve; } @@ -114,6 +118,8 @@ VCubicBezierPath VCubicBezierPath::Move(qreal length, qreal angle, const QString curve.append(points.at(i).Move(length, angle)); } curve.setName(name() + prefix); + curve.SetColor(GetColor()); + curve.SetPenStyle(GetPenStyle()); return curve; } diff --git a/src/libs/vgeometry/vellipticalarc.cpp b/src/libs/vgeometry/vellipticalarc.cpp index b330c9f36..07aaf0335 100644 --- a/src/libs/vgeometry/vellipticalarc.cpp +++ b/src/libs/vgeometry/vellipticalarc.cpp @@ -133,6 +133,8 @@ VEllipticalArc VEllipticalArc::Rotate(const QPointF &originPoint, qreal degrees, const qreal f2 = QLineF(static_cast(center), p2).angle() - GetRotationAngle(); VEllipticalArc elArc(center, GetRadius1(), GetRadius2(), f1, f2, GetRotationAngle()); elArc.setName(name() + prefix); + elArc.SetColor(GetColor()); + elArc.SetPenStyle(GetPenStyle()); return elArc; } @@ -147,6 +149,8 @@ VEllipticalArc VEllipticalArc::Flip(const QLineF &axis, const QString &prefix) c VEllipticalArc elArc(center, GetRadius1(), GetRadius2(), f1, f2, GetRotationAngle()); elArc.setName(name() + prefix); elArc.SetFlipped(true); + elArc.SetColor(GetColor()); + elArc.SetPenStyle(GetPenStyle()); return elArc; } @@ -160,6 +164,8 @@ VEllipticalArc VEllipticalArc::Move(qreal length, qreal angle, const QString &pr const qreal f2 = QLineF(static_cast(center), p2).angle() - GetRotationAngle(); VEllipticalArc elArc(center, GetRadius1(), GetRadius2(), f1, f2, GetRotationAngle()); elArc.setName(name() + prefix); + elArc.SetColor(GetColor()); + elArc.SetPenStyle(GetPenStyle()); return elArc; } diff --git a/src/libs/vgeometry/vspline.cpp b/src/libs/vgeometry/vspline.cpp index 4660d59cd..6c10293b4 100644 --- a/src/libs/vgeometry/vspline.cpp +++ b/src/libs/vgeometry/vspline.cpp @@ -121,6 +121,8 @@ VSpline VSpline::Rotate(const QPointF &originPoint, qreal degrees, const QString VSpline spl(p1, p2, p3, p4); spl.setName(name() + prefix); + spl.SetColor(GetColor()); + spl.SetPenStyle(GetPenStyle()); return spl; } @@ -135,6 +137,8 @@ VSpline VSpline::Flip(const QLineF &axis, const QString &prefix) const VSpline spl(p1, p2, p3, p4); spl.setName(name() + prefix); + spl.SetColor(GetColor()); + spl.SetPenStyle(GetPenStyle()); return spl; } @@ -149,6 +153,8 @@ VSpline VSpline::Move(qreal length, qreal angle, const QString &prefix) const VSpline spl(p1, p2, p3, p4); spl.setName(name() + prefix); + spl.SetColor(GetColor()); + spl.SetPenStyle(GetPenStyle()); return spl; } diff --git a/src/libs/vgeometry/vsplinepath.cpp b/src/libs/vgeometry/vsplinepath.cpp index e4f1ece22..29fa55dc9 100644 --- a/src/libs/vgeometry/vsplinepath.cpp +++ b/src/libs/vgeometry/vsplinepath.cpp @@ -119,6 +119,8 @@ VSplinePath VSplinePath::Rotate(const QPointF &originPoint, qreal degrees, const VSplinePath splPath(newPoints); splPath.setName(name() + prefix); + splPath.SetColor(GetColor()); + splPath.SetPenStyle(GetPenStyle()); return splPath; } @@ -141,6 +143,8 @@ VSplinePath VSplinePath::Flip(const QLineF &axis, const QString &prefix) const VSplinePath splPath(newPoints); splPath.setName(name() + prefix); + splPath.SetColor(GetColor()); + splPath.SetPenStyle(GetPenStyle()); return splPath; } @@ -163,6 +167,8 @@ VSplinePath VSplinePath::Move(qreal length, qreal angle, const QString &prefix) VSplinePath splPath(newPoints); splPath.setName(name() + prefix); + splPath.SetColor(GetColor()); + splPath.SetPenStyle(GetPenStyle()); return splPath; } diff --git a/src/libs/vtools/dialogs/tools/dialogalongline.cpp b/src/libs/vtools/dialogs/tools/dialogalongline.cpp index ce0d71868..b0f769f90 100644 --- a/src/libs/vtools/dialogs/tools/dialogalongline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogalongline.cpp @@ -41,7 +41,6 @@ #include #include -#include "../../tools/vabstracttool.h" #include "../../visualization/line/vistoolalongline.h" #include "../../visualization/visualization.h" #include "../ifc/xml/vabstractpattern.h" @@ -85,7 +84,7 @@ DialogAlongLine::DialogAlongLine(const VContainer *data, const quint32 &toolId, FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxSecondPoint); - FillComboBoxTypeLine(ui->comboBoxLineType, VAbstractTool::LineStylesPics()); + FillComboBoxTypeLine(ui->comboBoxLineType, LineStylesPics()); FillComboBoxLineColors(ui->comboBoxLineColor); connect(ui->toolButtonExprLength, &QPushButton::clicked, this, &DialogAlongLine::FXLength); @@ -228,7 +227,7 @@ void DialogAlongLine::SaveData() line->setObject1Id(GetFirstPointId()); line->setObject2Id(GetSecondPointId()); line->setLength(formula); - line->setLineStyle(VAbstractTool::LineStyleToPenStyle(GetTypeLine())); + line->setLineStyle(LineStyleToPenStyle(GetTypeLine())); line->RefreshGeometry(); } @@ -320,7 +319,7 @@ void DialogAlongLine::SetFormula(const QString &value) void DialogAlongLine::SetTypeLine(const QString &value) { ChangeCurrentData(ui->comboBoxLineType, value); - vis->setLineStyle(VAbstractTool::LineStyleToPenStyle(value)); + vis->setLineStyle(LineStyleToPenStyle(value)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/dialogs/tools/dialogarc.cpp b/src/libs/vtools/dialogs/tools/dialogarc.cpp index 4517cda7f..d4eb11b94 100644 --- a/src/libs/vtools/dialogs/tools/dialogarc.cpp +++ b/src/libs/vtools/dialogs/tools/dialogarc.cpp @@ -82,6 +82,7 @@ DialogArc::DialogArc(const VContainer *data, const quint32 &toolId, QWidget *par FillComboBoxPoints(ui->comboBoxBasePoint); FillComboBoxLineColors(ui->comboBoxColor); + FillComboBoxTypeLine(ui->comboBoxPenStyle, CurvePenStylesPics()); CheckState(); @@ -157,6 +158,18 @@ void DialogArc::SetF2(const QString &value) MoveCursorToEnd(ui->plainTextEditF2); } +//--------------------------------------------------------------------------------------------------------------------- +QString DialogArc::GetPenStyle() const +{ + return GetComboBoxCurrentData(ui->comboBoxPenStyle, TypeLineLine); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogArc::SetPenStyle(const QString &value) +{ + ChangeCurrentData(ui->comboBoxPenStyle, value); +} + //--------------------------------------------------------------------------------------------------------------------- QString DialogArc::GetColor() const { diff --git a/src/libs/vtools/dialogs/tools/dialogarc.h b/src/libs/vtools/dialogs/tools/dialogarc.h index dbab66e2b..9215294e3 100644 --- a/src/libs/vtools/dialogs/tools/dialogarc.h +++ b/src/libs/vtools/dialogs/tools/dialogarc.h @@ -65,6 +65,9 @@ public: QString GetF2() const; void SetF2(const QString &value); + QString GetPenStyle() const; + void SetPenStyle(const QString &value); + QString GetColor() const; void SetColor(const QString &value); public slots: diff --git a/src/libs/vtools/dialogs/tools/dialogarc.ui b/src/libs/vtools/dialogs/tools/dialogarc.ui index 1938c11e7..ca2f64f0a 100644 --- a/src/libs/vtools/dialogs/tools/dialogarc.ui +++ b/src/libs/vtools/dialogs/tools/dialogarc.ui @@ -7,7 +7,7 @@ 0 0 425 - 341 + 374 @@ -586,20 +586,30 @@ - + - + Color: + + + + Pen style: + + + + + + diff --git a/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp b/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp index 547d22897..ef28d59fb 100644 --- a/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp +++ b/src/libs/vtools/dialogs/tools/dialogarcwithlength.cpp @@ -77,6 +77,7 @@ DialogArcWithLength::DialogArcWithLength(const VContainer *data, const quint32 & FillComboBoxPoints(ui->comboBoxCenter); FillComboBoxLineColors(ui->comboBoxColor); + FillComboBoxTypeLine(ui->comboBoxPenStyle, CurvePenStylesPics()); CheckState(); @@ -185,6 +186,18 @@ void DialogArcWithLength::SetLength(const QString &value) MoveCursorToEnd(ui->plainTextEditLength); } +//--------------------------------------------------------------------------------------------------------------------- +QString DialogArcWithLength::GetPenStyle() const +{ + return GetComboBoxCurrentData(ui->comboBoxPenStyle, TypeLineLine); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogArcWithLength::SetPenStyle(const QString &value) +{ + ChangeCurrentData(ui->comboBoxPenStyle, value); +} + //--------------------------------------------------------------------------------------------------------------------- QString DialogArcWithLength::GetColor() const { diff --git a/src/libs/vtools/dialogs/tools/dialogarcwithlength.h b/src/libs/vtools/dialogs/tools/dialogarcwithlength.h index ed5947c3d..9c743d819 100644 --- a/src/libs/vtools/dialogs/tools/dialogarcwithlength.h +++ b/src/libs/vtools/dialogs/tools/dialogarcwithlength.h @@ -63,6 +63,9 @@ public: QString GetLength() const; void SetLength(const QString &value); + QString GetPenStyle() const; + void SetPenStyle(const QString &value); + QString GetColor() const; void SetColor(const QString &value); diff --git a/src/libs/vtools/dialogs/tools/dialogarcwithlength.ui b/src/libs/vtools/dialogs/tools/dialogarcwithlength.ui index f8f3ef857..2a2c8a665 100644 --- a/src/libs/vtools/dialogs/tools/dialogarcwithlength.ui +++ b/src/libs/vtools/dialogs/tools/dialogarcwithlength.ui @@ -7,7 +7,7 @@ 0 0 339 - 341 + 374 @@ -183,8 +183,7 @@ - - + .. @@ -364,8 +363,7 @@ - - + .. @@ -545,8 +543,7 @@ - - + .. @@ -582,16 +579,26 @@ - + - + Color: + + + + Pen style: + + + + + + diff --git a/src/libs/vtools/dialogs/tools/dialogbisector.cpp b/src/libs/vtools/dialogs/tools/dialogbisector.cpp index 8c74c2dc4..94f1924f3 100644 --- a/src/libs/vtools/dialogs/tools/dialogbisector.cpp +++ b/src/libs/vtools/dialogs/tools/dialogbisector.cpp @@ -39,7 +39,6 @@ #include #include -#include "../../tools/vabstracttool.h" #include "../../visualization/line/vistoolbisector.h" #include "../../visualization/visualization.h" #include "../ifc/xml/vabstractpattern.h" @@ -77,7 +76,7 @@ DialogBisector::DialogBisector(const VContainer *data, const quint32 &toolId, QW FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxSecondPoint); - FillComboBoxTypeLine(ui->comboBoxLineType, VAbstractTool::LineStylesPics()); + FillComboBoxTypeLine(ui->comboBoxLineType, LineStylesPics()); FillComboBoxPoints(ui->comboBoxThirdPoint); FillComboBoxLineColors(ui->comboBoxLineColor); @@ -239,7 +238,7 @@ void DialogBisector::SetPointName(const QString &value) void DialogBisector::SetTypeLine(const QString &value) { ChangeCurrentData(ui->comboBoxLineType, value); - vis->setLineStyle(VAbstractTool::LineStyleToPenStyle(value)); + vis->setLineStyle(LineStyleToPenStyle(value)); } //--------------------------------------------------------------------------------------------------------------------- @@ -333,7 +332,7 @@ void DialogBisector::SaveData() line->setObject2Id(GetSecondPointId()); line->setObject3Id(GetThirdPointId()); line->setLength(formula); - line->setLineStyle(VAbstractTool::LineStyleToPenStyle(GetTypeLine())); + line->setLineStyle(LineStyleToPenStyle(GetTypeLine())); line->RefreshGeometry(); } diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezier.cpp b/src/libs/vtools/dialogs/tools/dialogcubicbezier.cpp index a0d13de14..5780a8515 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezier.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezier.cpp @@ -35,6 +35,7 @@ #include #include +#include "../../tools/vabstracttool.h" #include "../../visualization/path/vistoolcubicbezier.h" #include "../../visualization/visualization.h" #include "../vgeometry/vpointf.h" @@ -57,6 +58,7 @@ DialogCubicBezier::DialogCubicBezier(const VContainer *data, const quint32 &tool FillComboBoxPoints(ui->comboBoxP3); FillComboBoxPoints(ui->comboBoxP4); FillComboBoxLineColors(ui->comboBoxColor); + FillComboBoxTypeLine(ui->comboBoxPenStyle, CurvePenStylesPics()); DialogTool::CheckState(); @@ -105,6 +107,18 @@ void DialogCubicBezier::SetSpline(const VCubicBezier &spline) path->setObject4Id(spl.GetP4().id()); } +//--------------------------------------------------------------------------------------------------------------------- +QString DialogCubicBezier::GetPenStyle() const +{ + return GetComboBoxCurrentData(ui->comboBoxPenStyle, TypeLineLine); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogCubicBezier::SetPenStyle(const QString &value) +{ + ChangeCurrentData(ui->comboBoxPenStyle, value); +} + //--------------------------------------------------------------------------------------------------------------------- QString DialogCubicBezier::GetColor() const { diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezier.h b/src/libs/vtools/dialogs/tools/dialogcubicbezier.h index 606cb4ead..66dad4753 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezier.h +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezier.h @@ -58,6 +58,9 @@ public: VCubicBezier GetSpline() const; void SetSpline(const VCubicBezier &spline); + QString GetPenStyle() const; + void SetPenStyle(const QString &value); + QString GetColor() const; void SetColor(const QString &value); public slots: diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezier.ui b/src/libs/vtools/dialogs/tools/dialogcubicbezier.ui index 1dc03ed5a..d51acb92f 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezier.ui +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezier.ui @@ -7,7 +7,7 @@ 0 0 285 - 245 + 278 @@ -23,14 +23,14 @@ QFormLayout::ExpandingFieldsGrow - + Color: - + @@ -40,14 +40,14 @@ - + Name: - + true @@ -94,6 +94,16 @@ + + + + Pen Style: + + + + + + diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp index 1973009e3..f20d5ab29 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.cpp @@ -44,6 +44,7 @@ #include #include +#include "../../tools/vabstracttool.h" #include "../../visualization/path/vistoolcubicbezierpath.h" #include "../../visualization/visualization.h" #include "../ifc/ifcdef.h" @@ -70,6 +71,7 @@ DialogCubicBezierPath::DialogCubicBezierPath(const VContainer *data, const quint FillComboBoxPoints(ui->comboBoxPoint); FillComboBoxLineColors(ui->comboBoxColor); + FillComboBoxTypeLine(ui->comboBoxPenStyle, CurvePenStylesPics()); connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogCubicBezierPath::PointChanged); connect(ui->comboBoxPoint, static_cast(&QComboBox::currentIndexChanged), @@ -114,6 +116,18 @@ void DialogCubicBezierPath::SetPath(const VCubicBezierPath &value) } } +//--------------------------------------------------------------------------------------------------------------------- +QString DialogCubicBezierPath::GetPenStyle() const +{ + return GetComboBoxCurrentData(ui->comboBoxPenStyle, TypeLineLine); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogCubicBezierPath::SetPenStyle(const QString &value) +{ + ChangeCurrentData(ui->comboBoxPenStyle, value); +} + //--------------------------------------------------------------------------------------------------------------------- QString DialogCubicBezierPath::GetColor() const { diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.h b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.h index 1774b4309..1b951b7b7 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.h +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.h @@ -57,6 +57,9 @@ public: VCubicBezierPath GetPath() const; void SetPath(const VCubicBezierPath &value); + QString GetPenStyle() const; + void SetPenStyle(const QString &value); + QString GetColor() const; void SetColor(const QString &value); public slots: diff --git a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.ui b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.ui index e4dbde5c1..8cd28ef51 100644 --- a/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.ui +++ b/src/libs/vtools/dialogs/tools/dialogcubicbezierpath.ui @@ -52,30 +52,40 @@ QFormLayout::ExpandingFieldsGrow - + Color: - + - + Name: - + true + + + + Pen style: + + + + + + diff --git a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp index d1143aef7..54cd14c04 100644 --- a/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp +++ b/src/libs/vtools/dialogs/tools/dialogcurveintersectaxis.cpp @@ -45,7 +45,6 @@ #include "../vpatterndb/vtranslatevars.h" #include "../vwidgets/vmaingraphicsscene.h" #include "../vwidgets/vabstractmainwindow.h" -#include "../../tools/vabstracttool.h" #include "../../visualization/line/vistoolcurveintersectaxis.h" #include "../../visualization/visualization.h" #include "../ifc/xml/vabstractpattern.h" @@ -80,7 +79,7 @@ DialogCurveIntersectAxis::DialogCurveIntersectAxis(const VContainer *data, const FillComboBoxPoints(ui->comboBoxAxisPoint); FillComboBoxCurves(ui->comboBoxCurve); - FillComboBoxTypeLine(ui->comboBoxLineType, VAbstractTool::LineStylesPics()); + FillComboBoxTypeLine(ui->comboBoxLineType, LineStylesPics()); FillComboBoxLineColors(ui->comboBoxLineColor); connect(ui->toolButtonExprAngle, &QPushButton::clicked, this, &DialogCurveIntersectAxis::FXAngle); @@ -115,7 +114,7 @@ QString DialogCurveIntersectAxis::GetTypeLine() const void DialogCurveIntersectAxis::SetTypeLine(const QString &value) { ChangeCurrentData(ui->comboBoxLineType, value); - vis->setLineStyle(VAbstractTool::LineStyleToPenStyle(value)); + vis->setLineStyle(LineStyleToPenStyle(value)); } //--------------------------------------------------------------------------------------------------------------------- @@ -322,7 +321,7 @@ void DialogCurveIntersectAxis::SaveData() line->setObject1Id(getCurveId()); line->setAxisPointId(GetBasePointId()); line->SetAngle(formulaAngle); - line->setLineStyle(VAbstractTool::LineStyleToPenStyle(GetTypeLine())); + line->setLineStyle(LineStyleToPenStyle(GetTypeLine())); line->RefreshGeometry(); } diff --git a/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp b/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp index 1cab6044d..a18dbf2d4 100644 --- a/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp +++ b/src/libs/vtools/dialogs/tools/dialogellipticalarc.cpp @@ -38,6 +38,7 @@ #include #include +#include "../../tools/vabstracttool.h" #include "../ifc/xml/vdomdocument.h" #include "../vpatterndb/vtranslatevars.h" #include "../../visualization/path/vistoolellipticalarc.h" @@ -113,6 +114,7 @@ DialogEllipticalArc::DialogEllipticalArc(const VContainer *data, const quint32 & FillComboBoxPoints(ui->comboBoxBasePoint); FillComboBoxLineColors(ui->comboBoxColor); + FillComboBoxTypeLine(ui->comboBoxPenStyle, CurvePenStylesPics()); CheckState(); @@ -326,6 +328,18 @@ void DialogEllipticalArc::SetRotationAngle(const QString &value) MoveCursorToEnd(ui->plainTextEditRotationAngle); } +//--------------------------------------------------------------------------------------------------------------------- +QString DialogEllipticalArc::GetPenStyle() const +{ + return GetComboBoxCurrentData(ui->comboBoxPenStyle, TypeLineLine); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogEllipticalArc::SetPenStyle(const QString &value) +{ + ChangeCurrentData(ui->comboBoxPenStyle, value); +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief GetColor return color of elliptical arc diff --git a/src/libs/vtools/dialogs/tools/dialogellipticalarc.h b/src/libs/vtools/dialogs/tools/dialogellipticalarc.h index c2b5a2917..0afaf9be1 100644 --- a/src/libs/vtools/dialogs/tools/dialogellipticalarc.h +++ b/src/libs/vtools/dialogs/tools/dialogellipticalarc.h @@ -68,6 +68,9 @@ public: QString GetRotationAngle() const; void SetRotationAngle(const QString &value); + QString GetPenStyle() const; + void SetPenStyle(const QString &value); + QString GetColor() const; void SetColor(const QString &value); diff --git a/src/libs/vtools/dialogs/tools/dialogellipticalarc.ui b/src/libs/vtools/dialogs/tools/dialogellipticalarc.ui index 2721767be..5b2e664ad 100644 --- a/src/libs/vtools/dialogs/tools/dialogellipticalarc.ui +++ b/src/libs/vtools/dialogs/tools/dialogellipticalarc.ui @@ -23,7 +23,7 @@ 10 10 401 - 501 + 512 @@ -984,20 +984,30 @@ - + - + Color: + + + + Pen style: + + + + + + diff --git a/src/libs/vtools/dialogs/tools/dialogendline.cpp b/src/libs/vtools/dialogs/tools/dialogendline.cpp index 48da2c57f..3169bc803 100644 --- a/src/libs/vtools/dialogs/tools/dialogendline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogendline.cpp @@ -90,7 +90,7 @@ DialogEndLine::DialogEndLine(const VContainer *data, const quint32 &toolId, QWid DialogTool::CheckState(); FillComboBoxPoints(ui->comboBoxBasePoint); - FillComboBoxTypeLine(ui->comboBoxLineType, VAbstractTool::LineStylesPics()); + FillComboBoxTypeLine(ui->comboBoxLineType, LineStylesPics()); FillComboBoxLineColors(ui->comboBoxLineColor); connect(ui->toolButtonExprLength, &QPushButton::clicked, this, &DialogEndLine::FXLength); @@ -217,7 +217,7 @@ void DialogEndLine::SetPointName(const QString &value) void DialogEndLine::SetTypeLine(const QString &value) { ChangeCurrentData(ui->comboBoxLineType, value); - vis->setLineStyle(VAbstractTool::LineStyleToPenStyle(value)); + vis->setLineStyle(LineStyleToPenStyle(value)); } //--------------------------------------------------------------------------------------------------------------------- @@ -360,7 +360,7 @@ void DialogEndLine::SaveData() line->setObject1Id(GetBasePointId()); line->setLength(formulaLength); line->SetAngle(formulaAngle); - line->setLineStyle(VAbstractTool::LineStyleToPenStyle(GetTypeLine())); + line->setLineStyle(LineStyleToPenStyle(GetTypeLine())); line->RefreshGeometry(); } diff --git a/src/libs/vtools/dialogs/tools/dialogheight.cpp b/src/libs/vtools/dialogs/tools/dialogheight.cpp index 94c0c7823..77bdc2e6c 100644 --- a/src/libs/vtools/dialogs/tools/dialogheight.cpp +++ b/src/libs/vtools/dialogs/tools/dialogheight.cpp @@ -40,7 +40,6 @@ #include #include -#include "../../tools/vabstracttool.h" #include "../../visualization/line/vistoolheight.h" #include "../../visualization/visualization.h" #include "../../visualization/line/visline.h" @@ -75,7 +74,7 @@ DialogHeight::DialogHeight(const VContainer *data, const quint32 &toolId, QWidge FillComboBoxPoints(ui->comboBoxBasePoint); FillComboBoxPoints(ui->comboBoxP1Line); FillComboBoxPoints(ui->comboBoxP2Line); - FillComboBoxTypeLine(ui->comboBoxLineType, VAbstractTool::LineStylesPics()); + FillComboBoxTypeLine(ui->comboBoxLineType, LineStylesPics()); FillComboBoxLineColors(ui->comboBoxLineColor); connect(ui->lineEditNamePoint, &QLineEdit::textChanged, this, &DialogHeight::NamePointChanged); @@ -114,7 +113,7 @@ void DialogHeight::SetPointName(const QString &value) void DialogHeight::SetTypeLine(const QString &value) { ChangeCurrentData(ui->comboBoxLineType, value); - vis->setLineStyle(VAbstractTool::LineStyleToPenStyle(value)); + vis->setLineStyle(LineStyleToPenStyle(value)); } //--------------------------------------------------------------------------------------------------------------------- @@ -243,7 +242,7 @@ void DialogHeight::SaveData() line->setObject1Id(GetBasePointId()); line->setLineP1Id(GetP1LineId()); line->setLineP2Id(GetP2LineId()); - line->setLineStyle(VAbstractTool::LineStyleToPenStyle(GetTypeLine())); + line->setLineStyle(LineStyleToPenStyle(GetTypeLine())); line->RefreshGeometry(); } diff --git a/src/libs/vtools/dialogs/tools/dialogline.cpp b/src/libs/vtools/dialogs/tools/dialogline.cpp index 73c0a9d41..054216599 100644 --- a/src/libs/vtools/dialogs/tools/dialogline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogline.cpp @@ -36,7 +36,6 @@ #include #include -#include "../../tools/vabstracttool.h" #include "../../visualization/visualization.h" #include "../../visualization/line/vistoolline.h" #include "../ifc/ifcdef.h" @@ -59,7 +58,7 @@ DialogLine::DialogLine(const VContainer *data, const quint32 &toolId, QWidget *p FillComboBoxPoints(ui->comboBoxSecondPoint); FillComboBoxLineColors(ui->comboBoxLineColor); - QMap stylesPics = VAbstractTool::LineStylesPics(); + QMap stylesPics = LineStylesPics(); stylesPics.remove(TypeLineNone);// Prevent hiding line FillComboBoxTypeLine(ui->comboBoxLineType, stylesPics); @@ -101,7 +100,7 @@ void DialogLine::SetSecondPoint(const quint32 &value) void DialogLine::SetTypeLine(const QString &value) { ChangeCurrentData(ui->comboBoxLineType, value); - vis->setLineStyle(VAbstractTool::LineStyleToPenStyle(value)); + vis->setLineStyle(LineStyleToPenStyle(value)); } //--------------------------------------------------------------------------------------------------------------------- @@ -163,7 +162,7 @@ void DialogLine::SaveData() line->setObject1Id(GetFirstPoint()); line->setPoint2Id(GetSecondPoint()); - line->setLineStyle(VAbstractTool::LineStyleToPenStyle(GetTypeLine())); + line->setLineStyle(LineStyleToPenStyle(GetTypeLine())); line->RefreshGeometry(); } diff --git a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp index 467b27768..0c1438644 100644 --- a/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp +++ b/src/libs/vtools/dialogs/tools/dialoglineintersectaxis.cpp @@ -85,7 +85,7 @@ DialogLineIntersectAxis::DialogLineIntersectAxis(const VContainer *data, const q FillComboBoxPoints(ui->comboBoxAxisPoint); FillComboBoxPoints(ui->comboBoxFirstLinePoint); FillComboBoxPoints(ui->comboBoxSecondLinePoint); - FillComboBoxTypeLine(ui->comboBoxLineType, VAbstractTool::LineStylesPics()); + FillComboBoxTypeLine(ui->comboBoxLineType, LineStylesPics()); FillComboBoxLineColors(ui->comboBoxLineColor); connect(ui->toolButtonExprAngle, &QPushButton::clicked, this, &DialogLineIntersectAxis::FXAngle); @@ -128,7 +128,7 @@ QString DialogLineIntersectAxis::GetTypeLine() const void DialogLineIntersectAxis::SetTypeLine(const QString &value) { ChangeCurrentData(ui->comboBoxLineType, value); - vis->setLineStyle(VAbstractTool::LineStyleToPenStyle(value)); + vis->setLineStyle(LineStyleToPenStyle(value)); } //--------------------------------------------------------------------------------------------------------------------- @@ -391,7 +391,7 @@ void DialogLineIntersectAxis::SaveData() line->setPoint2Id(GetSecondPointId()); line->setAxisPointId(GetBasePointId()); line->SetAngle(formulaAngle); - line->setLineStyle(VAbstractTool::LineStyleToPenStyle(GetTypeLine())); + line->setLineStyle(LineStyleToPenStyle(GetTypeLine())); line->RefreshGeometry(); } diff --git a/src/libs/vtools/dialogs/tools/dialognormal.cpp b/src/libs/vtools/dialogs/tools/dialognormal.cpp index 678065326..adcb11fce 100644 --- a/src/libs/vtools/dialogs/tools/dialognormal.cpp +++ b/src/libs/vtools/dialogs/tools/dialognormal.cpp @@ -77,7 +77,7 @@ DialogNormal::DialogNormal(const VContainer *data, const quint32 &toolId, QWidge FillComboBoxPoints(ui->comboBoxFirstPoint); FillComboBoxPoints(ui->comboBoxSecondPoint); - FillComboBoxTypeLine(ui->comboBoxLineType, VAbstractTool::LineStylesPics()); + FillComboBoxTypeLine(ui->comboBoxLineType, LineStylesPics()); FillComboBoxLineColors(ui->comboBoxLineColor); InitArrow(ui); @@ -210,7 +210,7 @@ void DialogNormal::SaveData() line->setObject2Id(GetSecondPointId()); line->setLength(formula); line->SetAngle(angle); - line->setLineStyle(VAbstractTool::LineStyleToPenStyle(GetTypeLine())); + line->setLineStyle(LineStyleToPenStyle(GetTypeLine())); line->RefreshGeometry(); } @@ -306,7 +306,7 @@ void DialogNormal::SetFormula(const QString &value) void DialogNormal::SetTypeLine(const QString &value) { ChangeCurrentData(ui->comboBoxLineType, value); - vis->setLineStyle(VAbstractTool::LineStyleToPenStyle(value)); + vis->setLineStyle(LineStyleToPenStyle(value)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp b/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp index ea75e9f19..b1931b5a6 100644 --- a/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogpiecepath.cpp @@ -703,7 +703,7 @@ void DialogPiecePath::InitPathTab() ui->lineEditName->setClearButtonEnabled(true); #endif - FillComboBoxTypeLine(ui->comboBoxPenType, VAbstractTool::LineStylesPics()); + FillComboBoxTypeLine(ui->comboBoxPenType, LineStylesPics()); connect(ui->lineEditName, &QLineEdit::textChanged, this, &DialogPiecePath::NameChanged); @@ -930,13 +930,13 @@ void DialogPiecePath::SetType(PiecePathType type) //--------------------------------------------------------------------------------------------------------------------- Qt::PenStyle DialogPiecePath::GetPenType() const { - return VAbstractTool::LineStyleToPenStyle(GetComboBoxCurrentData(ui->comboBoxPenType, TypeLineLine)); + return LineStyleToPenStyle(GetComboBoxCurrentData(ui->comboBoxPenType, TypeLineLine)); } //--------------------------------------------------------------------------------------------------------------------- void DialogPiecePath::SetPenType(const Qt::PenStyle &type) { - ChangeCurrentData(ui->comboBoxPenType, VAbstractTool::PenStyleToLineStyle(type)); + ChangeCurrentData(ui->comboBoxPenType, PenStyleToLineStyle(type)); vis->setLineStyle(type); } diff --git a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp index 678e58011..bf864bb50 100644 --- a/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp +++ b/src/libs/vtools/dialogs/tools/dialogshoulderpoint.cpp @@ -76,7 +76,7 @@ DialogShoulderPoint::DialogShoulderPoint(const VContainer *data, const quint32 & flagFormula = false; DialogTool::CheckState(); - FillComboBoxTypeLine(ui->comboBoxLineType, VAbstractTool::LineStylesPics()); + FillComboBoxTypeLine(ui->comboBoxLineType, LineStylesPics()); FillComboBoxPoints(ui->comboBoxP1Line); FillComboBoxPoints(ui->comboBoxP2Line); FillComboBoxPoints(ui->comboBoxP3); @@ -235,7 +235,7 @@ void DialogShoulderPoint::SaveData() line->setLineP1Id(GetP1Line()); line->setLineP2Id(GetP2Line()); line->setLength(formula); - line->setLineStyle(VAbstractTool::LineStyleToPenStyle(GetTypeLine())); + line->setLineStyle(LineStyleToPenStyle(GetTypeLine())); line->RefreshGeometry(); } @@ -329,7 +329,7 @@ void DialogShoulderPoint::SetFormula(const QString &value) void DialogShoulderPoint::SetTypeLine(const QString &value) { ChangeCurrentData(ui->comboBoxLineType, value); - vis->setLineStyle(VAbstractTool::LineStyleToPenStyle(value)); + vis->setLineStyle(LineStyleToPenStyle(value)); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/dialogs/tools/dialogspline.cpp b/src/libs/vtools/dialogs/tools/dialogspline.cpp index 6b8f4bedc..299d69d4c 100644 --- a/src/libs/vtools/dialogs/tools/dialogspline.cpp +++ b/src/libs/vtools/dialogs/tools/dialogspline.cpp @@ -43,6 +43,7 @@ #include #include +#include "../../tools/vabstracttool.h" #include "../../visualization/visualization.h" #include "../../visualization/path/vistoolspline.h" #include "../ifc/xml/vdomdocument.h" @@ -104,6 +105,7 @@ DialogSpline::DialogSpline(const VContainer *data, const quint32 &toolId, QWidge FillComboBoxPoints(ui->comboBoxP1); FillComboBoxPoints(ui->comboBoxP4); FillComboBoxLineColors(ui->comboBoxColor); + FillComboBoxTypeLine(ui->comboBoxPenStyle, CurvePenStylesPics()); CheckState(); @@ -608,6 +610,18 @@ void DialogSpline::SetSpline(const VSpline &spline) path->SetKCurve(spl.GetKcurve()); } +//--------------------------------------------------------------------------------------------------------------------- +QString DialogSpline::GetPenStyle() const +{ + return GetComboBoxCurrentData(ui->comboBoxPenStyle, TypeLineLine); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSpline::SetPenStyle(const QString &value) +{ + ChangeCurrentData(ui->comboBoxPenStyle, value); +} + //--------------------------------------------------------------------------------------------------------------------- QString DialogSpline::GetColor() const { diff --git a/src/libs/vtools/dialogs/tools/dialogspline.h b/src/libs/vtools/dialogs/tools/dialogspline.h index b69c71019..e7c90cdbb 100644 --- a/src/libs/vtools/dialogs/tools/dialogspline.h +++ b/src/libs/vtools/dialogs/tools/dialogspline.h @@ -60,6 +60,9 @@ public: VSpline GetSpline() const; void SetSpline(const VSpline &spline); + QString GetPenStyle() const; + void SetPenStyle(const QString &value); + QString GetColor() const; void SetColor(const QString &value); public slots: diff --git a/src/libs/vtools/dialogs/tools/dialogspline.ui b/src/libs/vtools/dialogs/tools/dialogspline.ui index 417d8d109..f1a3ce98d 100644 --- a/src/libs/vtools/dialogs/tools/dialogspline.ui +++ b/src/libs/vtools/dialogs/tools/dialogspline.ui @@ -832,14 +832,14 @@ QFormLayout::ExpandingFieldsGrow - + Color: - + @@ -849,20 +849,30 @@ - + Name: - + true + + + + Pen style: + + + + + + diff --git a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp index 3e4f273c2..ed701f55c 100644 --- a/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp +++ b/src/libs/vtools/dialogs/tools/dialogsplinepath.cpp @@ -47,6 +47,7 @@ #include #include +#include "../../tools/vabstracttool.h" #include "../../visualization/visualization.h" #include "../../visualization/path/vistoolsplinepath.h" #include "../ifc/xml/vdomdocument.h" @@ -102,6 +103,7 @@ DialogSplinePath::DialogSplinePath(const VContainer *data, const quint32 &toolId FillComboBoxPoints(ui->comboBoxPoint); FillComboBoxLineColors(ui->comboBoxColor); + FillComboBoxTypeLine(ui->comboBoxPenStyle, CurvePenStylesPics()); connect(ui->listWidget, &QListWidget::currentRowChanged, this, &DialogSplinePath::PointChanged); connect(ui->comboBoxPoint, static_cast(&QComboBox::currentIndexChanged), @@ -166,6 +168,18 @@ void DialogSplinePath::SetPath(const VSplinePath &value) ui->listWidget->blockSignals(false); } +//--------------------------------------------------------------------------------------------------------------------- +QString DialogSplinePath::GetPenStyle() const +{ + return GetComboBoxCurrentData(ui->comboBoxPenStyle, TypeLineLine); +} + +//--------------------------------------------------------------------------------------------------------------------- +void DialogSplinePath::SetPenStyle(const QString &value) +{ + ChangeCurrentData(ui->comboBoxPenStyle, value); +} + //--------------------------------------------------------------------------------------------------------------------- QString DialogSplinePath::GetColor() const { diff --git a/src/libs/vtools/dialogs/tools/dialogsplinepath.h b/src/libs/vtools/dialogs/tools/dialogsplinepath.h index 7d80190a7..1e10f03a7 100644 --- a/src/libs/vtools/dialogs/tools/dialogsplinepath.h +++ b/src/libs/vtools/dialogs/tools/dialogsplinepath.h @@ -59,6 +59,9 @@ public: VSplinePath GetPath() const; void SetPath(const VSplinePath &value); + QString GetPenStyle() const; + void SetPenStyle(const QString &value); + QString GetColor() const; void SetColor(const QString &value); public slots: diff --git a/src/libs/vtools/dialogs/tools/dialogsplinepath.ui b/src/libs/vtools/dialogs/tools/dialogsplinepath.ui index f0a5d6069..30a39a7ce 100644 --- a/src/libs/vtools/dialogs/tools/dialogsplinepath.ui +++ b/src/libs/vtools/dialogs/tools/dialogsplinepath.ui @@ -801,30 +801,40 @@ QFormLayout::ExpandingFieldsGrow - + Color: - + - + Name: - + true + + + + Pen style: + + + + + + diff --git a/src/libs/vtools/dialogs/tools/dialogtool.cpp b/src/libs/vtools/dialogs/tools/dialogtool.cpp index 34a133e2a..c9d75ff3a 100644 --- a/src/libs/vtools/dialogs/tools/dialogtool.cpp +++ b/src/libs/vtools/dialogs/tools/dialogtool.cpp @@ -299,7 +299,11 @@ void DialogTool::FillComboBoxTypeLine(QComboBox *box, const QMap ++i; } - box->setCurrentIndex(4); + const int index = box->findData(QVariant(TypeLineLine)); + if (index != -1) + { + box->setCurrentIndex(index); + } } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp index fa3b6c50f..8019e56c9 100644 --- a/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp +++ b/src/libs/vtools/tools/drawTools/operation/vabstractoperation.cpp @@ -498,7 +498,8 @@ void VAbstractOperation::SaveSourceDestination(QDomElement &tag) //--------------------------------------------------------------------------------------------------------------------- VSimpleCurve *VAbstractOperation::InitCurve(quint32 id, VContainer *data, GOType curveType) { - VSimpleCurve *curve = new VSimpleCurve(id, QColor(baseColor), *data->GetPatternUnit(), &factor); + const QSharedPointer initCurve = data->GeometricObject(id); + VSimpleCurve *curve = new VSimpleCurve(id, initCurve, *data->GetPatternUnit(), &factor); curve->setParentItem(this); curve->SetType(curveType); connect(curve, &VSimpleCurve::Selected, this, &VAbstractOperation::ObjectSelected); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp index f87cadde9..8e8c36a6c 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.cpp @@ -59,9 +59,77 @@ VAbstractSpline::VAbstractSpline(VAbstractPattern *doc, VContainer *data, quint3 :VDrawTool(doc, data, id), QGraphicsPathItem(parent), controlPoints(QVector()), sceneType(SceneObject::Unknown), isHovered(false), detailsMode(false) { + InitDefShape(); setAcceptHoverEvents(true); } +//--------------------------------------------------------------------------------------------------------------------- +QPainterPath VAbstractSpline::shape() const +{ + const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + const QVector points = curve->GetPoints(); + + QPainterPath path; + for (qint32 i = 0; i < points.count()-1; ++i) + { + path.moveTo(points.at(i)); + path.lineTo(points.at(i+1)); + } + + if (isHovered || detailsMode) + { + path.addPath(curve->GetDirectionPath()); + } + path.setFillRule(Qt::WindingFill); + + // We unfortunately need this hack as QPainterPathStroker will set a width of 1.0 + // if we pass a value of 0.0 to QPainterPathStroker::setWidth() + const qreal penWidthZero = qreal(0.00000001); + + if (path == QPainterPath() || pen() == Qt::NoPen) + { + return path; + } + + QPainterPathStroker ps; + ps.setCapStyle(pen().capStyle()); + if (pen().widthF() <= 0.0) + { + ps.setWidth(penWidthZero); + } + else + { + ps.setWidth(pen().widthF()); + } + ps.setJoinStyle(pen().joinStyle()); + ps.setMiterLimit(pen().miterLimit()); + QPainterPath p = ps.createStroke(path); + p.addPath(path); + return p; +} + +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractSpline::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + if (isHovered || detailsMode) + { + painter->save(); + + QPen arrowPen(pen()); + arrowPen.setStyle(Qt::SolidLine); + + painter->setPen(arrowPen); + painter->setBrush(brush()); + + const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + painter->drawPath(curve->GetDirectionPath()); + + painter->restore(); + } + + QGraphicsPathItem::paint(painter, option, widget); +} + //--------------------------------------------------------------------------------------------------------------------- QString VAbstractSpline::getTagName() const { @@ -85,8 +153,8 @@ void VAbstractSpline::Disable(bool disable, const QString &namePP) this->setEnabled(enabled); const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); this->setPen(QPen(CorrectColor(curve->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, Qt::SolidLine, - Qt::RoundCap)); + qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(curve->GetPenStyle()), Qt::RoundCap)); emit setEnabledPoint(enabled); } @@ -132,6 +200,13 @@ void VAbstractSpline::SetFactor(qreal factor) RefreshGeometry(); } +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractSpline::RefreshGeometry() +{ + InitDefShape(); + SetVisualization(); +} + //--------------------------------------------------------------------------------------------------------------------- /** * @brief hoverEnterEvent handle hover enter events. @@ -143,9 +218,9 @@ void VAbstractSpline::hoverEnterEvent(QGraphicsSceneHoverEvent *event) Q_UNUSED(event) const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); this->setPen(QPen(CorrectColor(curve->GetColor()), - qApp->toPixel(WidthMainLine(*VAbstractTool::data.GetPatternUnit()))/factor, Qt::SolidLine, - Qt::RoundCap)); - this->setPath(ToolPath(PathDirection::Show)); + qApp->toPixel(WidthMainLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(curve->GetPenStyle()), Qt::RoundCap)); + this->setPath(curve->GetPath()); isHovered = true; QGraphicsPathItem::hoverEnterEvent(event); } @@ -161,15 +236,9 @@ void VAbstractSpline::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) Q_UNUSED(event) const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); this->setPen(QPen(CorrectColor(curve->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); - if (detailsMode) - { - this->setPath(ToolPath(PathDirection::Show)); - } - else - { - this->setPath(ToolPath()); - } + qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(curve->GetPenStyle()), Qt::RoundCap)); + this->setPath(curve->GetPath()); isHovered = false; QGraphicsPathItem::hoverLeaveEvent(event); } @@ -246,16 +315,6 @@ void VAbstractSpline::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) QGraphicsPathItem::mouseReleaseEvent(event); } -//--------------------------------------------------------------------------------------------------------------------- -QPainterPath VAbstractSpline::ToolPath(PathDirection direction) const -{ - const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); - QPainterPath path; - path.addPath(curve->GetPath(direction)); - path.setFillRule( Qt::WindingFill ); - return path; -} - //--------------------------------------------------------------------------------------------------------------------- void VAbstractSpline::ReadToolAttributes(const QDomElement &domElement) { @@ -269,6 +328,7 @@ void VAbstractSpline::SaveOptions(QDomElement &tag, QSharedPointer &ob const QSharedPointer curve = qSharedPointerCast(obj); doc->SetAttribute(tag, AttrColor, curve->GetColor()); + doc->SetAttribute(tag, AttrPenStyle, curve->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -339,6 +399,16 @@ VSpline VAbstractSpline::CorrectedSpline(const VSpline &spline, const SplinePoin return spl; } +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractSpline::InitDefShape() +{ + const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + this->setPen(QPen(CorrectColor(curve->GetColor()), + qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(curve->GetPenStyle()))); + this->setPath(curve->GetPath()); +} + //--------------------------------------------------------------------------------------------------------------------- void VAbstractSpline::ShowHandles(bool show) { @@ -352,16 +422,19 @@ void VAbstractSpline::ShowHandles(bool show) void VAbstractSpline::setEnabled(bool enabled) { QGraphicsPathItem::setEnabled(enabled); + const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + if (enabled) { - const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); setPen(QPen(QColor(curve->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); + qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(curve->GetPenStyle()))); } else { setPen(QPen(Qt::gray, - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); + qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(curve->GetPenStyle()))); } } @@ -381,6 +454,22 @@ void VAbstractSpline::SetLineColor(const QString &value) SaveOption(obj); } +//--------------------------------------------------------------------------------------------------------------------- +QString VAbstractSpline::GetPenStyle() const +{ + const QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + return curve->GetPenStyle(); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractSpline::SetPenStyle(const QString &value) +{ + QSharedPointer curve = VAbstractTool::data.GeometricObject(id); + curve->SetPenStyle(value); + QSharedPointer obj = qSharedPointerCast(curve); + SaveOption(obj); +} + //--------------------------------------------------------------------------------------------------------------------- QString VAbstractSpline::name() const { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h index f91b5b674..c52c107fc 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vabstractspline.h @@ -61,6 +61,8 @@ public: VAbstractSpline(VAbstractPattern *doc, VContainer *data, quint32 id, QGraphicsItem * parent = nullptr); virtual ~VAbstractSpline() Q_DECL_EQ_DEFAULT; + virtual QPainterPath shape() const Q_DECL_OVERRIDE; + virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) Q_DECL_OVERRIDE; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::AbstractSpline)}; virtual QString getTagName() const Q_DECL_OVERRIDE; @@ -71,6 +73,9 @@ public: QString GetLineColor() const; void SetLineColor(const QString &value); + QString GetPenStyle() const; + void SetPenStyle(const QString &value); + QString name() const; virtual void GroupVisibility(quint32 object, bool visible) Q_DECL_OVERRIDE; @@ -98,7 +103,7 @@ protected: /** * @brief RefreshGeometry refresh item on scene. */ - virtual void RefreshGeometry ()=0; + virtual void RefreshGeometry(); virtual void ShowTool(quint32 id, bool enable) Q_DECL_OVERRIDE; virtual void hoverEnterEvent ( QGraphicsSceneHoverEvent * event ) Q_DECL_OVERRIDE; virtual void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event ) Q_DECL_OVERRIDE; @@ -106,12 +111,13 @@ protected: virtual void keyReleaseEvent(QKeyEvent * event) Q_DECL_OVERRIDE; virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) Q_DECL_OVERRIDE; virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event ) Q_DECL_OVERRIDE; - QPainterPath ToolPath(PathDirection direction = PathDirection::Hide) const; virtual void ReadToolAttributes(const QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; VSpline CorrectedSpline(const VSpline &spline, const SplinePointPosition &position, const QPointF &pos) const; + void InitDefShape(); + template void ShowToolVisualization(bool show); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp index 413d49e72..73cb42663 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.cpp @@ -69,12 +69,10 @@ const QString VToolArc::ToolType = QStringLiteral("simple"); */ VToolArc::VToolArc(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, QGraphicsItem *parent) - :VAbstractSpline(doc, data, id, parent) + : VAbstractSpline(doc, data, id, parent) { sceneType = SceneObject::Arc; - this->setPath(ToolPath()); - this->setPen(QPen(Qt::black, qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus ToolCreation(typeCreation); @@ -95,6 +93,7 @@ void VToolArc::setDialog() dialogTool->SetF2(arc->GetFormulaF2()); dialogTool->SetRadius(arc->GetFormulaRadius()); dialogTool->SetColor(arc->GetColor()); + dialogTool->SetPenStyle(arc->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -116,7 +115,8 @@ VToolArc* VToolArc::Create(QSharedPointer dialog, VMainGraphicsScene QString f1 = dialogTool->GetF1(); QString f2 = dialogTool->GetF2(); const QString color = dialogTool->GetColor(); - VToolArc* point = Create(0, center, radius, f1, f2, color, scene, doc, data, Document::FullParse, + const QString penStyle = dialogTool->GetPenStyle(); + VToolArc* point = Create(0, center, radius, f1, f2, color, penStyle, scene, doc, data, Document::FullParse, Source::FromGui); if (point != nullptr) { @@ -140,8 +140,8 @@ VToolArc* VToolArc::Create(QSharedPointer dialog, VMainGraphicsScene * @param typeCreation way we create this tool. */ VToolArc* VToolArc::Create(const quint32 _id, const quint32 ¢er, QString &radius, QString &f1, QString &f2, - const QString &color, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) + const QString &color, const QString &penStyle, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation) { qreal calcRadius = 0, calcF1 = 0, calcF2 = 0; @@ -153,6 +153,7 @@ VToolArc* VToolArc::Create(const quint32 _id, const quint32 ¢er, QString &ra const VPointF c = *data->GeometricObject(center); VArc *arc = new VArc(c, calcRadius, radius, calcF1, f1, calcF2, f2 ); arc->SetColor(color); + arc->SetPenStyle(penStyle); quint32 id = _id; if (typeCreation == Source::FromGui) { @@ -350,6 +351,7 @@ void VToolArc::SaveDialog(QDomElement &domElement) doc->SetAttribute(domElement, AttrAngle1, dialogTool->GetF1()); doc->SetAttribute(domElement, AttrAngle2, dialogTool->GetF2()); doc->SetAttribute(domElement, AttrColor, dialogTool->GetColor()); + doc->SetAttribute(domElement, AttrPenStyle, dialogTool->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -381,20 +383,7 @@ void VToolArc::SetVisualization() visual->setRadius(trVars->FormulaToUser(arc->GetFormulaRadius(), qApp->Settings()->GetOsSeparator())); visual->setF1(trVars->FormulaToUser(arc->GetFormulaF1(), qApp->Settings()->GetOsSeparator())); visual->setF2(trVars->FormulaToUser(arc->GetFormulaF2(), qApp->Settings()->GetOsSeparator())); + visual->setLineStyle(LineStyleToPenStyle(arc->GetPenStyle())); visual->RefreshGeometry(); } } - -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief RefreshGeometry refresh item on scene. - */ -void VToolArc::RefreshGeometry() -{ - const QSharedPointer arc = VAbstractTool::data.GeometricObject(id); - this->setPen(QPen(CorrectColor(arc->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); - this->setPath(ToolPath()); - - SetVisualization(); -} diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h index 4453d653e..5485d5f31 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarc.h @@ -54,8 +54,8 @@ public: static VToolArc* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); static VToolArc* Create(const quint32 _id, const quint32 ¢er, QString &radius, QString &f1, QString &f2, - const QString &color, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + const QString &color, const QString &penStyle, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -88,8 +88,6 @@ private: VToolArc(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, QGraphicsItem * parent = nullptr); - - virtual void RefreshGeometry() Q_DECL_OVERRIDE; }; #endif // VTOOLARC_H diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp index 6ac055539..6f273222a 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.cpp @@ -65,8 +65,6 @@ VToolArcWithLength::VToolArcWithLength(VAbstractPattern *doc, VContainer *data, { sceneType = SceneObject::Arc; - this->setPath(ToolPath()); - this->setPen(QPen(Qt::black, qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus ToolCreation(typeCreation); @@ -84,6 +82,7 @@ void VToolArcWithLength::setDialog() dialogTool->SetLength(arc->GetFormulaLength()); dialogTool->SetRadius(arc->GetFormulaRadius()); dialogTool->SetColor(arc->GetColor()); + dialogTool->SetPenStyle(arc->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -98,8 +97,9 @@ VToolArcWithLength *VToolArcWithLength::Create(QSharedPointer dialog QString f1 = dialogTool->GetF1(); QString length = dialogTool->GetLength(); const QString color = dialogTool->GetColor(); - VToolArcWithLength* point = Create(0, center, radius, f1, length, color, scene, doc, data, Document::FullParse, - Source::FromGui); + const QString penStyle = dialogTool->GetPenStyle(); + VToolArcWithLength* point = Create(0, center, radius, f1, length, color, penStyle, scene, doc, data, + Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -109,9 +109,9 @@ VToolArcWithLength *VToolArcWithLength::Create(QSharedPointer dialog //--------------------------------------------------------------------------------------------------------------------- VToolArcWithLength *VToolArcWithLength::Create(const quint32 _id, const quint32 ¢er, QString &radius, QString &f1, - QString &length, const QString &color, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) + QString &length, const QString &color, const QString &penStyle, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, + const Document &parse, const Source &typeCreation) { qreal calcRadius = 0, calcF1 = 0, calcLength = 0; @@ -122,6 +122,7 @@ VToolArcWithLength *VToolArcWithLength::Create(const quint32 _id, const quint32 const VPointF c = *data->GeometricObject(center); VArc *arc = new VArc(calcLength, length, c, calcRadius, radius, calcF1, f1); arc->SetColor(color); + arc->SetPenStyle(penStyle); quint32 id = _id; if (typeCreation == Source::FromGui) { @@ -306,6 +307,7 @@ void VToolArcWithLength::SaveDialog(QDomElement &domElement) doc->SetAttribute(domElement, AttrAngle1, dialogTool->GetF1()); doc->SetAttribute(domElement, AttrLength, dialogTool->GetLength()); doc->SetAttribute(domElement, AttrColor, dialogTool->GetColor()); + doc->SetAttribute(domElement, AttrPenStyle, dialogTool->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -337,17 +339,7 @@ void VToolArcWithLength::SetVisualization() visual->setRadius(trVars->FormulaToUser(arc->GetFormulaRadius(), qApp->Settings()->GetOsSeparator())); visual->setF1(trVars->FormulaToUser(arc->GetFormulaF1(), qApp->Settings()->GetOsSeparator())); visual->setLength(trVars->FormulaToUser(arc->GetFormulaLength(), qApp->Settings()->GetOsSeparator())); + visual->setLineStyle(LineStyleToPenStyle(arc->GetPenStyle())); visual->RefreshGeometry(); } } - -//--------------------------------------------------------------------------------------------------------------------- -void VToolArcWithLength::RefreshGeometry() -{ - QSharedPointer arc = VAbstractTool::data.GeometricObject(id); - this->setPen(QPen(CorrectColor(arc->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); - this->setPath(ToolPath()); - - SetVisualization(); -} diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h index 0b4af5c45..a002a2a64 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolarcwithlength.h @@ -51,9 +51,9 @@ public: static VToolArcWithLength* Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); static VToolArcWithLength* Create(const quint32 _id, const quint32 ¢er, QString &radius, QString &f1, - QString &length, const QString &color, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + QString &length, const QString &color, const QString &penStyle, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, + const Document &parse, const Source &typeCreation); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -86,9 +86,6 @@ private: VToolArcWithLength(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, QGraphicsItem * parent = nullptr); - - virtual void RefreshGeometry() Q_DECL_OVERRIDE; - }; #endif // VTOOLARCWITHLENGTH_H diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp index b7a3b1cfa..e6684c0d8 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.cpp @@ -63,8 +63,6 @@ VToolCubicBezier::VToolCubicBezier(VAbstractPattern *doc, VContainer *data, quin { sceneType = SceneObject::Spline; - this->setPen(QPen(Qt::black, qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); - this->setPath(ToolPath()); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus ToolCreation(typeCreation); @@ -79,6 +77,7 @@ void VToolCubicBezier::setDialog() const auto spl = VAbstractTool::data.GeometricObject(id); dialogTool->SetSpline(*spl); dialogTool->SetColor(spl->GetColor()); + dialogTool->SetPenStyle(spl->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -89,8 +88,11 @@ VToolCubicBezier *VToolCubicBezier::Create(QSharedPointer dialog, VM QSharedPointer dialogTool = dialog.objectCast(); SCASSERT(not dialogTool.isNull()) - auto spl = Create(0, new VCubicBezier(dialogTool->GetSpline()), dialogTool->GetColor(), scene, doc, data, - Document::FullParse, Source::FromGui); + VCubicBezier *spline = new VCubicBezier(dialogTool->GetSpline()); + spline->SetColor(dialogTool->GetColor()); + spline->SetPenStyle(dialogTool->GetPenStyle()); + + auto spl = Create(0, spline, scene, doc, data, Document::FullParse, Source::FromGui); if (spl != nullptr) { @@ -100,12 +102,11 @@ VToolCubicBezier *VToolCubicBezier::Create(QSharedPointer dialog, VM } //--------------------------------------------------------------------------------------------------------------------- -VToolCubicBezier *VToolCubicBezier::Create(const quint32 _id, VCubicBezier *spline, const QString &color, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolCubicBezier *VToolCubicBezier::Create(const quint32 _id, VCubicBezier *spline, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, + const Source &typeCreation) { quint32 id = _id; - spline->SetColor(color); if (typeCreation == Source::FromGui) { id = data->AddGObject(spline); @@ -222,6 +223,7 @@ void VToolCubicBezier::SaveDialog(QDomElement &domElement) SetSplineAttributes(domElement, spl); doc->SetAttribute(domElement, AttrColor, dialogTool->GetColor()); + doc->SetAttribute(domElement, AttrPenStyle, dialogTool->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -247,6 +249,7 @@ void VToolCubicBezier::SetVisualization() visual->setObject2Id(spl->GetP2().id()); visual->setObject3Id(spl->GetP3().id()); visual->setObject4Id(spl->GetP4().id()); + visual->setLineStyle(LineStyleToPenStyle(spl->GetPenStyle())); visual->SetMode(Mode::Show); visual->RefreshGeometry(); } @@ -257,15 +260,9 @@ void VToolCubicBezier::RefreshGeometry() { const QSharedPointer spl = VAbstractTool::data.GeometricObject(id); this->setPen(QPen(CorrectColor(spl->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); - if (isHovered || detailsMode) - { - this->setPath(ToolPath(PathDirection::Show)); - } - else - { - this->setPath(ToolPath()); - } + qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(spl->GetPenStyle()))); + this->setPath(spl->GetPath()); SetVisualization(); } diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h index d4ad9f00d..7abeaf983 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezier.h @@ -51,9 +51,9 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolCubicBezier *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolCubicBezier *Create(const quint32 _id, VCubicBezier *spline, const QString &color, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolCubicBezier *Create(const quint32 _id, VCubicBezier *spline, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, + const Source &typeCreation); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Tool::CubicBezier)}; @@ -73,13 +73,13 @@ protected: virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void SetVisualization() Q_DECL_OVERRIDE; + virtual void RefreshGeometry() Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolCubicBezier) VToolCubicBezier(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, QGraphicsItem * parent = nullptr); - virtual void RefreshGeometry() Q_DECL_OVERRIDE; void SetSplineAttributes(QDomElement &domElement, const VCubicBezier &spl); }; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp index e917a6d8d..80341c4f2 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.cpp @@ -65,8 +65,6 @@ VToolCubicBezierPath::VToolCubicBezierPath(VAbstractPattern *doc, VContainer *da { sceneType = SceneObject::SplinePath; - this->setPath(ToolPath()); - this->setPen(QPen(Qt::black, qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus ToolCreation(typeCreation); @@ -81,6 +79,7 @@ void VToolCubicBezierPath::setDialog() const QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); dialogTool->SetPath(*splPath); dialogTool->SetColor(splPath->GetColor()); + dialogTool->SetPenStyle(splPath->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -92,11 +91,15 @@ VToolCubicBezierPath *VToolCubicBezierPath::Create(QSharedPointer di SCASSERT(not dialogTool.isNull()) auto path = new VCubicBezierPath(dialogTool->GetPath()); const QString color = dialogTool->GetColor(); + const QString penStyle = dialogTool->GetPenStyle(); for (qint32 i = 0; i < path->CountPoints(); ++i) { doc->IncrementReferens((*path)[i].getIdTool()); } - VToolCubicBezierPath* spl = Create(0, path, color, scene, doc, data, Document::FullParse, Source::FromGui); + path->SetColor(color); + path->SetPenStyle(penStyle); + + VToolCubicBezierPath* spl = Create(0, path, scene, doc, data, Document::FullParse, Source::FromGui); if (spl != nullptr) { spl->m_dialog = dialogTool; @@ -105,12 +108,11 @@ VToolCubicBezierPath *VToolCubicBezierPath::Create(QSharedPointer di } //--------------------------------------------------------------------------------------------------------------------- -VToolCubicBezierPath *VToolCubicBezierPath::Create(const quint32 _id, VCubicBezierPath *path, const QString &color, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolCubicBezierPath *VToolCubicBezierPath::Create(const quint32 _id, VCubicBezierPath *path, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, + const Source &typeCreation) { quint32 id = _id; - path->SetColor(color); if (typeCreation == Source::FromGui) { id = data->AddGObject(path); @@ -202,6 +204,7 @@ void VToolCubicBezierPath::SaveDialog(QDomElement &domElement) SCASSERT(dialogTool != nullptr) doc->SetAttribute(domElement, AttrColor, dialogTool->GetColor()); + doc->SetAttribute(domElement, AttrPenStyle, dialogTool->GetPenStyle()); SetSplinePathAttributes(domElement, dialogTool->GetPath()); } @@ -226,6 +229,7 @@ void VToolCubicBezierPath::SetVisualization() QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); visual->setPath(*splPath.data()); + visual->setLineStyle(LineStyleToPenStyle(splPath->GetPenStyle())); visual->SetMode(Mode::Show); visual->RefreshGeometry(); } @@ -234,11 +238,12 @@ void VToolCubicBezierPath::SetVisualization() //--------------------------------------------------------------------------------------------------------------------- void VToolCubicBezierPath::RefreshGeometry() { - isHovered || detailsMode ? setPath(ToolPath(PathDirection::Show)) : setPath(ToolPath()); - QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); + setPath(splPath->GetPath()); + this->setPen(QPen(CorrectColor(splPath->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); + qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(splPath->GetPenStyle()))); SetVisualization(); } diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h index f71fb0c91..1537b616f 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolcubicbezierpath.h @@ -51,9 +51,9 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolCubicBezierPath *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolCubicBezierPath *Create(const quint32 _id, VCubicBezierPath *path, const QString &color, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation); + static VToolCubicBezierPath *Create(const quint32 _id, VCubicBezierPath *path, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, + const Source &typeCreation); static const QString ToolType; static void UpdatePathPoints(VAbstractPattern *doc, QDomElement &element, const VCubicBezierPath &path); @@ -70,13 +70,13 @@ protected: virtual void SaveDialog(QDomElement &domElement) Q_DECL_OVERRIDE; virtual void SaveOptions(QDomElement &tag, QSharedPointer &obj) Q_DECL_OVERRIDE; virtual void SetVisualization() Q_DECL_OVERRIDE; + virtual void RefreshGeometry() Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolCubicBezierPath) VToolCubicBezierPath(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, QGraphicsItem * parent = nullptr); - virtual void RefreshGeometry() Q_DECL_OVERRIDE; static void AddPathPoint(VAbstractPattern *doc, QDomElement &domElement, const VPointF &splPoint); void SetSplinePathAttributes(QDomElement &domElement, const VCubicBezierPath &path); }; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp index db616d158..081861c5f 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.cpp @@ -73,8 +73,6 @@ VToolEllipticalArc::VToolEllipticalArc(VAbstractPattern *doc, VContainer *data, { sceneType = SceneObject::ElArc; - this->setPath(ToolPath()); - this->setPen(QPen(Qt::black, qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus ToolCreation(typeCreation); @@ -97,9 +95,9 @@ void VToolEllipticalArc::setDialog() dialogTool->SetRadius2(elArc->GetFormulaRadius2()); dialogTool->SetRotationAngle(elArc->GetFormulaRotationAngle()); dialogTool->SetColor(elArc->GetColor()); + dialogTool->SetPenStyle(elArc->GetPenStyle()); } - //--------------------------------------------------------------------------------------------------------------------- /** * @brief Create help create tool @@ -122,8 +120,9 @@ VToolEllipticalArc* VToolEllipticalArc::Create(QSharedPointer dialog QString f2 = dialogTool->GetF2(); QString rotationAngle = dialogTool->GetRotationAngle(); const QString color = dialogTool->GetColor(); - VToolEllipticalArc* point = Create(0, center, radius1, radius2, f1, f2, rotationAngle, color, scene, doc, data, - Document::FullParse, Source::FromGui); + const QString penStyle = dialogTool->GetPenStyle(); + VToolEllipticalArc* point = Create(0, center, radius1, radius2, f1, f2, rotationAngle, color, penStyle, scene, doc, + data, Document::FullParse, Source::FromGui); if (point != nullptr) { point->m_dialog = dialogTool; @@ -150,8 +149,9 @@ VToolEllipticalArc* VToolEllipticalArc::Create(QSharedPointer dialog */ VToolEllipticalArc* VToolEllipticalArc::Create(const quint32 _id, const quint32 ¢er, QString &radius1, QString &radius2, QString &f1, QString &f2, QString &rotationAngle, - const QString &color, VMainGraphicsScene *scene, VAbstractPattern *doc, - VContainer *data, const Document &parse, const Source &typeCreation) + const QString &color, const QString &penStyle, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, + const Source &typeCreation) { qreal calcRadius1 = 0, calcRadius2 = 0, calcF1 = 0, calcF2 = 0, calcRotationAngle = 0; @@ -166,6 +166,7 @@ VToolEllipticalArc* VToolEllipticalArc::Create(const quint32 _id, const quint32 VEllipticalArc *elArc = new VEllipticalArc(c, calcRadius1, calcRadius2, radius1, radius2, calcF1, f1, calcF2, f2, calcRotationAngle, rotationAngle); elArc->SetColor(color); + elArc->SetPenStyle(penStyle); quint32 id = _id; if (typeCreation == Source::FromGui) { @@ -418,6 +419,7 @@ void VToolEllipticalArc::SaveDialog(QDomElement &domElement) doc->SetAttribute(domElement, AttrAngle2, dialogTool->GetF2()); doc->SetAttribute(domElement, AttrRotationAngle, dialogTool->GetRotationAngle()); doc->SetAttribute(domElement, AttrColor, dialogTool->GetColor()); + doc->SetAttribute(domElement, AttrPenStyle, dialogTool->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -454,20 +456,7 @@ void VToolEllipticalArc::SetVisualization() visual->setF2(trVars->FormulaToUser(elArc->GetFormulaF2(), qApp->Settings()->GetOsSeparator())); visual->setRotationAngle(trVars->FormulaToUser(elArc->GetFormulaRotationAngle(), qApp->Settings()->GetOsSeparator())); + visual->setLineStyle(LineStyleToPenStyle(elArc->GetPenStyle())); visual->RefreshGeometry(); } } - -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief RefreshGeometry refresh item on scene. - */ -void VToolEllipticalArc::RefreshGeometry() -{ - const QSharedPointer elArc = VAbstractTool::data.GeometricObject(id); - this->setPen(QPen(CorrectColor(elArc->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); - this->setPath(ToolPath()); - - SetVisualization(); -} diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h index 09b9b2587..2fceddf9a 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolellipticalarc.h @@ -55,7 +55,8 @@ public: VAbstractPattern *doc, VContainer *data); static VToolEllipticalArc* Create(const quint32 _id, const quint32 ¢er, QString &radius1, QString &radius2, QString &f1, QString &f2, QString &rotationAngle, const QString &color, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, + const QString &penStyle, VMainGraphicsScene *scene, VAbstractPattern *doc, + VContainer *data, const Document &parse, const Source &typeCreation); static const QString ToolType; virtual int type() const Q_DECL_OVERRIDE {return Type;} @@ -95,8 +96,6 @@ private: Q_DISABLE_COPY(VToolEllipticalArc) VToolEllipticalArc(VAbstractPattern *doc, VContainer *data, quint32 id, const Source &typeCreation, QGraphicsItem * parent = nullptr); - - virtual void RefreshGeometry() Q_DECL_OVERRIDE; }; #endif // VTOOLELLIPTICALARC_H diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp index 9d296eb28..b297d288d 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.cpp @@ -87,10 +87,8 @@ VToolSpline::VToolSpline(VAbstractPattern *doc, VContainer *data, quint32 id, co { sceneType = SceneObject::Spline; - this->setPen(QPen(Qt::black, qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); this->setFlag(QGraphicsItem::ItemIsMovable, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus - this->setPath(ToolPath()); const auto spl = VAbstractTool::data.GeometricObject(id); @@ -144,6 +142,7 @@ void VToolSpline::setDialog() const auto spl = VAbstractTool::data.GeometricObject(id); dialogTool->SetSpline(*spl); dialogTool->SetColor(spl->GetColor()); + dialogTool->SetPenStyle(spl->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -163,8 +162,10 @@ VToolSpline* VToolSpline::Create(QSharedPointer dialog, VMainGraphic SCASSERT(not dialogTool.isNull()) VSpline *spline = new VSpline(dialogTool->GetSpline()); + spline->SetColor(dialogTool->GetColor()); + spline->SetPenStyle(dialogTool->GetPenStyle()); - auto spl = Create(0, spline, dialogTool->GetColor(), scene, doc, data, Document::FullParse, Source::FromGui); + auto spl = Create(0, spline, scene, doc, data, Document::FullParse, Source::FromGui); if (spl != nullptr) { @@ -185,12 +186,11 @@ VToolSpline* VToolSpline::Create(QSharedPointer dialog, VMainGraphic * @param typeCreation way we create this tool. * @return the created tool */ -VToolSpline* VToolSpline::Create(const quint32 _id, VSpline *spline, const QString &color, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) +VToolSpline* VToolSpline::Create(const quint32 _id, VSpline *spline, VMainGraphicsScene *scene, VAbstractPattern *doc, + VContainer *data, const Document &parse, const Source &typeCreation) { quint32 id = _id; - spline->SetColor(color); + if (typeCreation == Source::FromGui) { id = data->AddGObject(spline); @@ -223,8 +223,8 @@ VToolSpline* VToolSpline::Create(const quint32 _id, VSpline *spline, const QStri //--------------------------------------------------------------------------------------------------------------------- VToolSpline *VToolSpline::Create(const quint32 _id, quint32 point1, quint32 point4, QString &a1, QString &a2, QString &l1, QString &l2, quint32 duplicate, const QString &color, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) + const QString &penStyle, VMainGraphicsScene *scene, VAbstractPattern *doc, + VContainer *data, const Document &parse, const Source &typeCreation) { const qreal calcAngle1 = CheckFormula(_id, a1, data); const qreal calcAngle2 = CheckFormula(_id, a2, data); @@ -241,7 +241,10 @@ VToolSpline *VToolSpline::Create(const quint32 _id, quint32 point1, quint32 poin spline->SetDuplicate(duplicate); } - return VToolSpline::Create(_id, spline, color, scene, doc, data, parse, typeCreation); + spline->SetColor(color); + spline->SetPenStyle(penStyle); + + return VToolSpline::Create(_id, spline, scene, doc, data, parse, typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -343,6 +346,7 @@ void VToolSpline::SaveDialog(QDomElement &domElement) SetSplineAttributes(domElement, spl); doc->SetAttribute(domElement, AttrColor, dialogTool->GetColor()); + doc->SetAttribute(domElement, AttrPenStyle, dialogTool->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -512,6 +516,7 @@ void VToolSpline::SetVisualization() visual->SetKAsm1(spl->GetKasm1()); visual->SetKAsm2(spl->GetKasm2()); visual->SetKCurve(spl->GetKcurve()); + visual->setLineStyle(LineStyleToPenStyle(spl->GetPenStyle())); visual->SetMode(Mode::Show); visual->RefreshGeometry(); } @@ -543,15 +548,9 @@ void VToolSpline::RefreshGeometry() const auto spl = VAbstractTool::data.GeometricObject(id); this->setPen(QPen(CorrectColor(spl->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); - if (isHovered || detailsMode) - { - this->setPath(ToolPath(PathDirection::Show)); - } - else - { - this->setPath(ToolPath()); - } + qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(spl->GetPenStyle()))); + this->setPath(spl->GetPath()); controlPoints[0]->blockSignals(true); controlPoints[1]->blockSignals(true); diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h index 1d3e2fed4..4dcfdb3d0 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolspline.h @@ -55,11 +55,11 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolSpline *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolSpline *Create(const quint32 _id, VSpline *spline, const QString &color, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + static VToolSpline *Create(const quint32 _id, VSpline *spline, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, + const Document &parse, const Source &typeCreation); static VToolSpline *Create(const quint32 _id, quint32 point1, quint32 point4, QString &a1, QString &a2, QString &l1, - QString &l2, quint32 duplicate, const QString &color, + QString &l2, quint32 duplicate, const QString &color, const QString &penStyle, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static const QString ToolType; @@ -86,6 +86,7 @@ protected: virtual void hoverEnterEvent ( QGraphicsSceneHoverEvent * event ) Q_DECL_OVERRIDE; virtual void hoverLeaveEvent ( QGraphicsSceneHoverEvent * event ) Q_DECL_OVERRIDE; virtual void SetVisualization() Q_DECL_OVERRIDE; + virtual void RefreshGeometry() Q_DECL_OVERRIDE; private: Q_DISABLE_COPY(VToolSpline) QPointF oldPosition; @@ -94,7 +95,6 @@ private: QGraphicsItem * parent = nullptr ); bool IsMovable() const; - virtual void RefreshGeometry() Q_DECL_OVERRIDE; void SetSplineAttributes(QDomElement &domElement, const VSpline &spl); }; diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp index d80b52228..3b97a9dc3 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.cpp @@ -94,8 +94,6 @@ VToolSplinePath::VToolSplinePath(VAbstractPattern *doc, VContainer *data, quint3 { sceneType = SceneObject::SplinePath; - this->setPath(ToolPath()); - this->setPen(QPen(Qt::black, qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); this->setFlag(QGraphicsItem::ItemIsMovable, true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus @@ -154,6 +152,7 @@ void VToolSplinePath::setDialog() const QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); dialogTool->SetPath(*splPath); dialogTool->SetColor(splPath->GetColor()); + dialogTool->SetPenStyle(splPath->GetPenStyle()); } //--------------------------------------------------------------------------------------------------------------------- @@ -175,8 +174,11 @@ VToolSplinePath* VToolSplinePath::Create(QSharedPointer dialog, VMai { doc->IncrementReferens((*path)[i].P().getIdTool()); } - VToolSplinePath* spl = Create(0, path, dialogTool->GetColor(), scene, doc, data, Document::FullParse, - Source::FromGui); + + path->SetColor(dialogTool->GetColor()); + path->SetPenStyle(dialogTool->GetPenStyle()); + + VToolSplinePath* spl = Create(0, path, scene, doc, data, Document::FullParse, Source::FromGui); if (spl != nullptr) { spl->m_dialog = dialogTool; @@ -195,12 +197,12 @@ VToolSplinePath* VToolSplinePath::Create(QSharedPointer dialog, VMai * @param parse parser file mode. * @param typeCreation way we create this tool. */ -VToolSplinePath* VToolSplinePath::Create(const quint32 _id, VSplinePath *path, const QString &color, - VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, - const Document &parse, const Source &typeCreation) +VToolSplinePath* VToolSplinePath::Create(const quint32 _id, VSplinePath *path, VMainGraphicsScene *scene, + VAbstractPattern *doc, VContainer *data, const Document &parse, + const Source &typeCreation) { quint32 id = _id; - path->SetColor(color); + if (typeCreation == Source::FromGui) { id = data->AddGObject(path); @@ -231,9 +233,9 @@ VToolSplinePath* VToolSplinePath::Create(const quint32 _id, VSplinePath *path, c //--------------------------------------------------------------------------------------------------------------------- VToolSplinePath *VToolSplinePath::Create(const quint32 _id, const QVector &points, QVector &a1, QVector &a2, QVector &l1, QVector &l2, - const QString &color, quint32 duplicate, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation) + const QString &color, const QString &penStyle, quint32 duplicate, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, + const Document &parse, const Source &typeCreation) { auto path = new VSplinePath(); @@ -256,7 +258,10 @@ VToolSplinePath *VToolSplinePath::Create(const quint32 _id, const QVectorSetColor(color); + path->SetPenStyle(penStyle); + + return VToolSplinePath::Create(_id, path, scene, doc, data, parse, typeCreation); } //--------------------------------------------------------------------------------------------------------------------- @@ -461,6 +466,7 @@ void VToolSplinePath::SaveDialog(QDomElement &domElement) } doc->SetAttribute(domElement, AttrColor, dialogTool->GetColor()); + doc->SetAttribute(domElement, AttrPenStyle, dialogTool->GetPenStyle()); SetSplinePathAttributes(domElement, splPath); } @@ -632,6 +638,7 @@ void VToolSplinePath::SetVisualization() QSharedPointer splPath = VAbstractTool::data.GeometricObject(id); visual->setPath(*splPath.data()); + visual->setLineStyle(LineStyleToPenStyle(splPath->GetPenStyle())); visual->SetMode(Mode::Show); visual->RefreshGeometry(); } @@ -666,18 +673,12 @@ void VToolSplinePath::RefreshGeometry() point->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false); } - if (isHovered || detailsMode) - { - this->setPath(ToolPath(PathDirection::Show)); - } - else - { - this->setPath(ToolPath()); - } - const auto splPath = VAbstractTool::data.GeometricObject(id); + this->setPath(splPath->GetPath()); + this->setPen(QPen(CorrectColor(splPath->GetColor()), - qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor)); + qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, + LineStyleToPenStyle(splPath->GetPenStyle()))); for (qint32 i = 1; i<=splPath->CountSubSpl(); ++i) { diff --git a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h index e3a287098..2182c2e45 100644 --- a/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h +++ b/src/libs/vtools/tools/drawTools/toolcurve/vtoolsplinepath.h @@ -57,14 +57,14 @@ public: virtual void setDialog() Q_DECL_OVERRIDE; static VToolSplinePath *Create(QSharedPointer dialog, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data); - static VToolSplinePath *Create(const quint32 _id, VSplinePath *path, const QString &color, + static VToolSplinePath *Create(const quint32 _id, VSplinePath *path, VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, const Document &parse, const Source &typeCreation); static VToolSplinePath *Create(const quint32 _id, const QVector &points, QVector &a1, QVector &a2, QVector &l1, QVector &l2, - const QString &color, quint32 duplicate, VMainGraphicsScene *scene, - VAbstractPattern *doc, VContainer *data, const Document &parse, - const Source &typeCreation); + const QString &color, const QString &penStyle, quint32 duplicate, + VMainGraphicsScene *scene, VAbstractPattern *doc, VContainer *data, + const Document &parse, const Source &typeCreation); static const QString ToolType; static const QString OldToolType; static void UpdatePathPoints(VAbstractPattern *doc, QDomElement &element, const VSplinePath &path); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp index 25462256a..4ff9341ee 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutarc.cpp @@ -246,6 +246,10 @@ void VToolCutArc::SetVisualization() visual->setObject1Id(curveCutId); visual->setLength(qApp->TrVars()->FormulaToUser(formula, qApp->Settings()->GetOsSeparator())); + + const QSharedPointer curve = VAbstractTool::data.GeometricObject(curveCutId); + visual->setLineStyle(LineStyleToPenStyle(curve->GetPenStyle())); + visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp index 9276fdf1b..724753c96 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutspline.cpp @@ -246,6 +246,10 @@ void VToolCutSpline::SetVisualization() visual->setObject1Id(curveCutId); visual->setLength(qApp->TrVars()->FormulaToUser(formula, qApp->Settings()->GetOsSeparator())); + + const QSharedPointer curve = VAbstractTool::data.GeometricObject(curveCutId); + visual->setLineStyle(LineStyleToPenStyle(curve->GetPenStyle())); + visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp index f15e28f25..f8b659915 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toolcut/vtoolcutsplinepath.cpp @@ -333,6 +333,10 @@ void VToolCutSplinePath::SetVisualization() visual->setObject1Id(curveCutId); visual->setLength(qApp->TrVars()->FormulaToUser(formula, qApp->Settings()->GetOsSeparator())); + + const QSharedPointer curve = VAbstractTool::data.GeometricObject(curveCutId); + visual->setLineStyle(LineStyleToPenStyle(curve->GetPenStyle())); + visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp index 2b0c40a29..5ed0a4e40 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolalongline.cpp @@ -152,7 +152,7 @@ void VToolAlongLine::SaveOptions(QDomElement &tag, QSharedPointer &obj //--------------------------------------------------------------------------------------------------------------------- void VToolAlongLine::ReadToolAttributes(const QDomElement &domElement) { - typeLine = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); + m_lineType = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = doc->GetParametrString(domElement, AttrLineColor, ColorBlack); formulaLength = doc->GetParametrString(domElement, AttrLength, ""); basePointId = doc->GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); @@ -169,7 +169,7 @@ void VToolAlongLine::SetVisualization() visual->setObject1Id(basePointId); visual->setObject2Id(secondPointId); visual->setLength(qApp->TrVars()->FormulaToUser(formulaLength, qApp->Settings()->GetOsSeparator())); - visual->setLineStyle(VAbstractTool::LineStyleToPenStyle(typeLine)); + visual->setLineStyle(LineStyleToPenStyle(m_lineType)); visual->RefreshGeometry(); } } @@ -208,7 +208,7 @@ void VToolAlongLine::setDialog() QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) const QSharedPointer p = VAbstractTool::data.GeometricObject(id); - dialogTool->SetTypeLine(typeLine); + dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetFormula(formulaLength); dialogTool->SetFirstPointId(basePointId); diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp index ef9a19a41..e562a08a7 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolbisector.cpp @@ -125,7 +125,7 @@ void VToolBisector::setDialog() QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) const QSharedPointer p = VAbstractTool::data.GeometricObject(id); - dialogTool->SetTypeLine(typeLine); + dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetFormula(formulaLength); dialogTool->SetFirstPointId(firstPointId); @@ -317,7 +317,7 @@ void VToolBisector::SaveOptions(QDomElement &tag, QSharedPointer &obj) //--------------------------------------------------------------------------------------------------------------------- void VToolBisector::ReadToolAttributes(const QDomElement &domElement) { - typeLine = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); + m_lineType = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = doc->GetParametrString(domElement, AttrLineColor, ColorBlack); formulaLength = doc->GetParametrString(domElement, AttrLength, ""); firstPointId = doc->GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); @@ -337,7 +337,7 @@ void VToolBisector::SetVisualization() visual->setObject2Id(basePointId); visual->setObject3Id(thirdPointId); visual->setLength(qApp->TrVars()->FormulaToUser(formulaLength, qApp->Settings()->GetOsSeparator())); - visual->setLineStyle(VAbstractTool::LineStyleToPenStyle(typeLine)); + visual->setLineStyle(LineStyleToPenStyle(m_lineType)); visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp index 2ed2ec581..adc49e031 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolcurveintersectaxis.cpp @@ -89,7 +89,7 @@ void VToolCurveIntersectAxis::setDialog() QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) const QSharedPointer p = VAbstractTool::data.GeometricObject(id); - dialogTool->SetTypeLine(typeLine); + dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetAngle(formulaAngle); dialogTool->SetBasePointId(basePointId); @@ -303,7 +303,7 @@ void VToolCurveIntersectAxis::SaveOptions(QDomElement &tag, QSharedPointerGetParametrString(domElement, AttrTypeLine, TypeLineLine); + m_lineType = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = doc->GetParametrString(domElement, AttrLineColor, ColorBlack); basePointId = doc->GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); curveId = doc->GetParametrUInt(domElement, AttrCurve, NULL_ID_STR); @@ -321,7 +321,7 @@ void VToolCurveIntersectAxis::SetVisualization() visual->setObject1Id(curveId); visual->setAxisPointId(basePointId); visual->SetAngle(qApp->TrVars()->FormulaToUser(formulaAngle, qApp->Settings()->GetOsSeparator())); - visual->setLineStyle(VAbstractTool::LineStyleToPenStyle(typeLine)); + visual->setLineStyle(LineStyleToPenStyle(m_lineType)); visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp index 549ccb130..39a8a2512 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolendline.cpp @@ -89,7 +89,7 @@ void VToolEndLine::setDialog() QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) const QSharedPointer p = VAbstractTool::data.GeometricObject(id); - dialogTool->SetTypeLine(typeLine); + dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetFormula(formulaLength); dialogTool->SetAngle(formulaAngle); @@ -238,7 +238,7 @@ void VToolEndLine::SaveOptions(QDomElement &tag, QSharedPointer &obj) //--------------------------------------------------------------------------------------------------------------------- void VToolEndLine::ReadToolAttributes(const QDomElement &domElement) { - typeLine = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); + m_lineType = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = doc->GetParametrString(domElement, AttrLineColor, ColorBlack); formulaLength = doc->GetParametrString(domElement, AttrLength, ""); basePointId = doc->GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); @@ -256,7 +256,7 @@ void VToolEndLine::SetVisualization() visual->setObject1Id(basePointId); visual->setLength(qApp->TrVars()->FormulaToUser(formulaLength, qApp->Settings()->GetOsSeparator())); visual->SetAngle(qApp->TrVars()->FormulaToUser(formulaAngle, qApp->Settings()->GetOsSeparator())); - visual->setLineStyle(VAbstractTool::LineStyleToPenStyle(typeLine)); + visual->setLineStyle(LineStyleToPenStyle(m_lineType)); visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp index 23e1773c0..c4fcbec4c 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolheight.cpp @@ -84,7 +84,7 @@ void VToolHeight::setDialog() QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) const QSharedPointer p = VAbstractTool::data.GeometricObject(id); - dialogTool->SetTypeLine(typeLine); + dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetBasePointId(basePointId); dialogTool->SetP1LineId(p1LineId); @@ -262,7 +262,7 @@ void VToolHeight::SaveOptions(QDomElement &tag, QSharedPointer &obj) //--------------------------------------------------------------------------------------------------------------------- void VToolHeight::ReadToolAttributes(const QDomElement &domElement) { - typeLine = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); + m_lineType = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = doc->GetParametrString(domElement, AttrLineColor, ColorBlack); basePointId = doc->GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); p1LineId = doc->GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); @@ -280,7 +280,7 @@ void VToolHeight::SetVisualization() visual->setObject1Id(basePointId); visual->setLineP1Id(p1LineId); visual->setLineP2Id(p2LineId); - visual->setLineStyle(VAbstractTool::LineStyleToPenStyle(typeLine)); + visual->setLineStyle(LineStyleToPenStyle(m_lineType)); visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp index ec50f3f09..79ce1751a 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollineintersectaxis.cpp @@ -75,7 +75,7 @@ void VToolLineIntersectAxis::setDialog() QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) const QSharedPointer p = VAbstractTool::data.GeometricObject(id); - dialogTool->SetTypeLine(typeLine); + dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetAngle(formulaAngle); dialogTool->SetBasePointId(basePointId); @@ -307,7 +307,7 @@ void VToolLineIntersectAxis::SaveOptions(QDomElement &tag, QSharedPointerGetParametrString(domElement, AttrTypeLine, TypeLineLine); + m_lineType = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = doc->GetParametrString(domElement, AttrLineColor, ColorBlack); basePointId = doc->GetParametrUInt(domElement, AttrBasePoint, NULL_ID_STR); firstPointId = doc->GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); @@ -327,7 +327,7 @@ void VToolLineIntersectAxis::SetVisualization() visual->setPoint2Id(secondPointId); visual->setAxisPointId(basePointId); visual->SetAngle(qApp->TrVars()->FormulaToUser(formulaAngle, qApp->Settings()->GetOsSeparator())); - visual->setLineStyle(VAbstractTool::LineStyleToPenStyle(typeLine)); + visual->setLineStyle(LineStyleToPenStyle(m_lineType)); visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp index 6c9af4ef7..7e2cdc3a5 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoollinepoint.cpp @@ -70,7 +70,7 @@ VToolLinePoint::VToolLinePoint(VAbstractPattern *doc, VContainer *data, const qu :VToolSinglePoint(doc, data, id, parent), formulaLength(formula), angle(angle), basePointId(basePointId), mainLine(nullptr), lineColor(lineColor) { - this->typeLine = typeLine; + this->m_lineType = typeLine; Q_ASSERT_X(basePointId != 0, Q_FUNC_INFO, "basePointId == 0"); //-V654 //-V712 QPointF point1 = static_cast(*data->GeometricObject(basePointId)); QPointF point2 = static_cast(*data->GeometricObject(id)); @@ -95,7 +95,7 @@ void VToolLinePoint::RefreshGeometry() { mainLine->setPen(QPen(CorrectColor(lineColor), qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, - LineStyleToPenStyle(typeLine))); + LineStyleToPenStyle(m_lineType))); VToolSinglePoint::RefreshPointGeometry(*VDrawTool::data.GeometricObject(id)); QPointF point = static_cast(*VDrawTool::data.GeometricObject(id)); QPointF basePoint = static_cast(*VDrawTool::data.GeometricObject(basePointId)); @@ -117,7 +117,7 @@ void VToolLinePoint::SaveOptions(QDomElement &tag, QSharedPointer &obj { VToolSinglePoint::SaveOptions(tag, obj); - doc->SetAttribute(tag, AttrTypeLine, typeLine); + doc->SetAttribute(tag, AttrTypeLine, m_lineType); doc->SetAttribute(tag, AttrLineColor, lineColor); } @@ -138,7 +138,7 @@ void VToolLinePoint::Disable(bool disable, const QString &namePP) VToolSinglePoint::Disable(disable, namePP); mainLine->setPen(QPen(CorrectColor(lineColor), qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, - LineStyleToPenStyle(typeLine))); + LineStyleToPenStyle(m_lineType))); mainLine->setEnabled(enabled); } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp index e519f7eab..6a8902c1d 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolnormal.cpp @@ -91,7 +91,7 @@ void VToolNormal::setDialog() QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) const QSharedPointer p = VAbstractTool::data.GeometricObject(id); - dialogTool->SetTypeLine(typeLine); + dialogTool->SetTypeLine(m_lineType); dialogTool->SetFormula(formulaLength); dialogTool->SetAngle(angle); dialogTool->SetFirstPointId(basePointId); @@ -290,7 +290,7 @@ void VToolNormal::SaveOptions(QDomElement &tag, QSharedPointer &obj) //--------------------------------------------------------------------------------------------------------------------- void VToolNormal::ReadToolAttributes(const QDomElement &domElement) { - typeLine = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); + m_lineType = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = doc->GetParametrString(domElement, AttrLineColor, ColorBlack); formulaLength = doc->GetParametrString(domElement, AttrLength, ""); basePointId = doc->GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); @@ -310,7 +310,7 @@ void VToolNormal::SetVisualization() visual->setObject2Id(secondPointId); visual->setLength(qApp->TrVars()->FormulaToUser(formulaLength, qApp->Settings()->GetOsSeparator())); visual->SetAngle(angle); - visual->setLineStyle(VAbstractTool::LineStyleToPenStyle(typeLine)); + visual->setLineStyle(LineStyleToPenStyle(m_lineType)); visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp index 3fdee7b27..85bd0ab1f 100644 --- a/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp +++ b/src/libs/vtools/tools/drawTools/toolpoint/toolsinglepoint/toollinepoint/vtoolshoulderpoint.cpp @@ -93,7 +93,7 @@ void VToolShoulderPoint::setDialog() QSharedPointer dialogTool = m_dialog.objectCast(); SCASSERT(not dialogTool.isNull()) const QSharedPointer p = VAbstractTool::data.GeometricObject(id); - dialogTool->SetTypeLine(typeLine); + dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); dialogTool->SetFormula(formulaLength); dialogTool->SetP1Line(basePointId); @@ -335,7 +335,7 @@ void VToolShoulderPoint::SaveOptions(QDomElement &tag, QSharedPointer //--------------------------------------------------------------------------------------------------------------------- void VToolShoulderPoint::ReadToolAttributes(const QDomElement &domElement) { - typeLine = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); + m_lineType = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = doc->GetParametrString(domElement, AttrLineColor, ColorBlack); formulaLength = doc->GetParametrString(domElement, AttrLength, ""); basePointId = doc->GetParametrUInt(domElement, AttrP1Line, NULL_ID_STR); @@ -355,7 +355,7 @@ void VToolShoulderPoint::SetVisualization() visual->setLineP1Id(basePointId); visual->setLineP2Id(p2Line); visual->setLength(qApp->TrVars()->FormulaToUser(formulaLength, qApp->Settings()->GetOsSeparator())); - visual->setLineStyle(VAbstractTool::LineStyleToPenStyle(typeLine)); + visual->setLineStyle(LineStyleToPenStyle(m_lineType)); visual->RefreshGeometry(); } } diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.cpp b/src/libs/vtools/tools/drawTools/vdrawtool.cpp index 55d71c0b7..c5686393c 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.cpp +++ b/src/libs/vtools/tools/drawTools/vdrawtool.cpp @@ -61,7 +61,7 @@ qreal VDrawTool::factor = 1; VDrawTool::VDrawTool(VAbstractPattern *doc, VContainer *data, quint32 id, QObject *parent) : VInteractiveTool(doc, data, id, parent), nameActivDraw(doc->GetNameActivPP()), - typeLine(TypeLineLine), + m_lineType(TypeLineLine), enabled(true) { connect(this->doc, &VAbstractPattern::ChangedActivPP, this, &VDrawTool::ChangedActivDraw); @@ -263,13 +263,13 @@ void VDrawTool::AddToCalculation(const QDomElement &domElement) //--------------------------------------------------------------------------------------------------------------------- QString VDrawTool::getLineType() const { - return typeLine; + return m_lineType; } //--------------------------------------------------------------------------------------------------------------------- void VDrawTool::SetTypeLine(const QString &value) { - typeLine = value; + m_lineType = value; QSharedPointer obj = VAbstractTool::data.GetGObject(id); SaveOption(obj); diff --git a/src/libs/vtools/tools/drawTools/vdrawtool.h b/src/libs/vtools/tools/drawTools/vdrawtool.h index c1f428fb2..f2d52c90d 100644 --- a/src/libs/vtools/tools/drawTools/vdrawtool.h +++ b/src/libs/vtools/tools/drawTools/vdrawtool.h @@ -89,7 +89,7 @@ protected: QString nameActivDraw; /** @brief typeLine line type. */ - QString typeLine; + QString m_lineType; bool enabled; diff --git a/src/libs/vtools/tools/drawTools/vtoolline.cpp b/src/libs/vtools/tools/drawTools/vtoolline.cpp index 9b5179a95..cbe8d3641 100644 --- a/src/libs/vtools/tools/drawTools/vtoolline.cpp +++ b/src/libs/vtools/tools/drawTools/vtoolline.cpp @@ -72,7 +72,7 @@ VToolLine::VToolLine(VAbstractPattern *doc, VContainer *data, quint32 id, quint3 :VDrawTool(doc, data, id), QGraphicsLineItem(parent), firstPoint(firstPoint), secondPoint(secondPoint), lineColor(lineColor) { - this->typeLine = typeLine; + this->m_lineType = typeLine; //Line const QSharedPointer first = data->GeometricObject(firstPoint); const QSharedPointer second = data->GeometricObject(secondPoint); @@ -98,7 +98,7 @@ void VToolLine::setDialog() SCASSERT(not dialogTool.isNull()) dialogTool->SetFirstPoint(firstPoint); dialogTool->SetSecondPoint(secondPoint); - dialogTool->SetTypeLine(typeLine); + dialogTool->SetTypeLine(m_lineType); dialogTool->SetLineColor(lineColor); } @@ -245,7 +245,7 @@ void VToolLine::Disable(bool disable, const QString &namePP) this->setEnabled(enabled); this->setPen(QPen(CorrectColor(lineColor), qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, - LineStyleToPenStyle(typeLine))); + LineStyleToPenStyle(m_lineType))); } //--------------------------------------------------------------------------------------------------------------------- @@ -318,7 +318,7 @@ void VToolLine::hoverEnterEvent(QGraphicsSceneHoverEvent *event) Q_UNUSED(event) this->setPen(QPen(CorrectColor(lineColor), qApp->toPixel(WidthMainLine(*VAbstractTool::data.GetPatternUnit()))/factor, - LineStyleToPenStyle(typeLine))); + LineStyleToPenStyle(m_lineType))); } //--------------------------------------------------------------------------------------------------------------------- @@ -333,7 +333,7 @@ void VToolLine::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { this->setPen(QPen(CorrectColor(lineColor), qApp->toPixel(WidthHairLine(*VAbstractTool::data.GetPatternUnit()))/factor, - LineStyleToPenStyle(typeLine))); + LineStyleToPenStyle(m_lineType))); } } @@ -415,7 +415,7 @@ void VToolLine::SaveOptions(QDomElement &tag, QSharedPointer &obj) doc->SetAttribute(tag, AttrFirstPoint, firstPoint); doc->SetAttribute(tag, AttrSecondPoint, secondPoint); - doc->SetAttribute(tag, AttrTypeLine, typeLine); + doc->SetAttribute(tag, AttrTypeLine, m_lineType); doc->SetAttribute(tag, AttrLineColor, lineColor); } @@ -424,7 +424,7 @@ void VToolLine::ReadToolAttributes(const QDomElement &domElement) { firstPoint = doc->GetParametrUInt(domElement, AttrFirstPoint, NULL_ID_STR); secondPoint = doc->GetParametrUInt(domElement, AttrSecondPoint, NULL_ID_STR); - typeLine = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); + m_lineType = doc->GetParametrString(domElement, AttrTypeLine, TypeLineLine); lineColor = doc->GetParametrString(domElement, AttrLineColor, ColorBlack); } @@ -438,7 +438,7 @@ void VToolLine::SetVisualization() visual->setObject1Id(firstPoint); visual->setPoint2Id(secondPoint); - visual->setLineStyle(VAbstractTool::LineStyleToPenStyle(typeLine)); + visual->setLineStyle(LineStyleToPenStyle(m_lineType)); visual->RefreshGeometry(); } } @@ -489,7 +489,7 @@ void VToolLine::ShowVisualization(bool show) //--------------------------------------------------------------------------------------------------------------------- void VToolLine::SetTypeLine(const QString &value) { - typeLine = value; + m_lineType = value; QSharedPointer obj;//We don't have object for line in data container. Just will send empty object. SaveOption(obj); @@ -544,5 +544,5 @@ void VToolLine::RefreshGeometry() const QSharedPointer first = VAbstractTool::data.GeometricObject(firstPoint); const QSharedPointer second = VAbstractTool::data.GeometricObject(secondPoint); this->setLine(QLineF(static_cast(*first), static_cast(*second))); - this->setPen(QPen(CorrectColor(lineColor), pen().widthF(), LineStyleToPenStyle(typeLine))); + this->setPen(QPen(CorrectColor(lineColor), pen().widthF(), LineStyleToPenStyle(m_lineType))); } diff --git a/src/libs/vtools/tools/vabstracttool.cpp b/src/libs/vtools/tools/vabstracttool.cpp index 3e20f40fc..5bce7706c 100644 --- a/src/libs/vtools/tools/vabstracttool.cpp +++ b/src/libs/vtools/tools/vabstracttool.cpp @@ -290,85 +290,6 @@ int VAbstractTool::ConfirmDeletion() return dialogResult == QDialog::Accepted ? QMessageBox::Yes : QMessageBox::No; } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief LineStyle return pen style for current line style. - * @return pen style. - */ -Qt::PenStyle VAbstractTool::LineStyleToPenStyle(const QString &typeLine) -{ - const QStringList styles = StylesList(); - switch (styles.indexOf(typeLine)) - { - case 0: // TypeLineNone - return Qt::NoPen; - case 2: // TypeLineDashLine - return Qt::DashLine; - case 3: // TypeLineDotLine - return Qt::DotLine; - case 4: // TypeLineDashDotLine - return Qt::DashDotLine; - case 5: // TypeLineDashDotDotLine - return Qt::DashDotDotLine; - case 1: // TypeLineLine - default: - return Qt::SolidLine; - } -} - -//--------------------------------------------------------------------------------------------------------------------- -QString VAbstractTool::PenStyleToLineStyle(Qt::PenStyle penStyle) -{ - QT_WARNING_PUSH - QT_WARNING_DISABLE_GCC("-Wswitch-default") - - switch (penStyle) - { - case Qt::NoPen: - return TypeLineNone; - case Qt::DashLine: - return TypeLineDashLine; - case Qt::DotLine: - return TypeLineDotLine; - case Qt::DashDotLine: - return TypeLineDashDotLine; - case Qt::DashDotDotLine: - return TypeLineDashDotDotLine; - case Qt::SolidLine: - case Qt::CustomDashLine: - default: - break; - } - - QT_WARNING_POP - - return TypeLineLine; -} - -//--------------------------------------------------------------------------------------------------------------------- -QMap VAbstractTool::LineStylesPics() -{ - QMap map; - const QStringList styles = StylesList(); - - for (int i=0; i < styles.size(); ++i) - { - const Qt::PenStyle style = LineStyleToPenStyle(styles.at(i)); - QPixmap pix(80, 14); - pix.fill(Qt::white); - - QBrush brush(Qt::black); - QPen pen(brush, 2.5, style); - - QPainter painter(&pix); - painter.setPen(pen); - painter.drawLine(2, 7, 78, 7); - - map.insert(styles.at(i), QIcon(pix)); - } - return map; -} - //--------------------------------------------------------------------------------------------------------------------- const QStringList VAbstractTool::Colors() { @@ -492,19 +413,6 @@ void VAbstractTool::ToolCreation(const Source &typeCreation) } } -//--------------------------------------------------------------------------------------------------------------------- -/** - * @brief Styles return list of all line styles. - * @return list of all line styles. - */ -const QStringList VAbstractTool::StylesList() -{ - const QStringList styles = QStringList() << TypeLineNone << TypeLineLine << TypeLineDashLine - << TypeLineDotLine << TypeLineDashDotLine - << TypeLineDashDotDotLine; - return styles; -} - //--------------------------------------------------------------------------------------------------------------------- /** * @brief AddRecord add record about tool in history. diff --git a/src/libs/vtools/tools/vabstracttool.h b/src/libs/vtools/tools/vabstracttool.h index 24d985d45..8d71098e0 100644 --- a/src/libs/vtools/tools/vabstracttool.h +++ b/src/libs/vtools/tools/vabstracttool.h @@ -64,11 +64,6 @@ public: static qreal CheckFormula(const quint32 &toolId, QString &formula, VContainer *data); - static const QStringList StylesList(); - static Qt::PenStyle LineStyleToPenStyle(const QString &typeLine); - static QString PenStyleToLineStyle(Qt::PenStyle penStyle); - static QMap LineStylesPics(); - static const QStringList Colors(); static QMap ColorsList(); diff --git a/src/libs/vtools/visualization/line/operation/visoperation.cpp b/src/libs/vtools/visualization/line/operation/visoperation.cpp index 39bdd5147..12fbf0b07 100644 --- a/src/libs/vtools/visualization/line/operation/visoperation.cpp +++ b/src/libs/vtools/visualization/line/operation/visoperation.cpp @@ -46,7 +46,6 @@ VisOperation::VisOperation(const VContainer *data, QGraphicsItem *parent) points(), curves() { - } //--------------------------------------------------------------------------------------------------------------------- @@ -82,7 +81,7 @@ QGraphicsEllipseItem *VisOperation::GetPoint(quint32 i, const QColor &color) } //--------------------------------------------------------------------------------------------------------------------- -QGraphicsPathItem *VisOperation::GetCurve(quint32 i, const QColor &color) +VCurvePathItem *VisOperation::GetCurve(quint32 i, const QColor &color) { if (not curves.isEmpty() && static_cast(curves.size() - 1) >= i) { @@ -90,7 +89,7 @@ QGraphicsPathItem *VisOperation::GetCurve(quint32 i, const QColor &color) } else { - auto curve = InitItem(color, this); + auto curve = InitItem(color, this); curves.append(curve); return curve; } diff --git a/src/libs/vtools/visualization/line/operation/visoperation.h b/src/libs/vtools/visualization/line/operation/visoperation.h index 3bcc5099d..79d1769a1 100644 --- a/src/libs/vtools/visualization/line/operation/visoperation.h +++ b/src/libs/vtools/visualization/line/operation/visoperation.h @@ -51,10 +51,10 @@ protected: QColor supportColor2; QVector points; - QVector curves; + QVector curves; QGraphicsEllipseItem * GetPoint(quint32 i, const QColor &color); - QGraphicsPathItem * GetCurve(quint32 i, const QColor &color); + VCurvePathItem * GetCurve(quint32 i, const QColor &color); template int AddFlippedCurve(const QPointF &firstPoint, const QPointF &secondPoint, quint32 id, int i); @@ -71,7 +71,7 @@ int VisOperation::AddFlippedCurve(const QPointF &firstPoint, const QPointF &seco const QSharedPointer curve = Visualization::data->template GeometricObject(id); ++i; - QGraphicsPathItem *path = GetCurve(static_cast(i), supportColor2); + VCurvePathItem *path = GetCurve(static_cast(i), supportColor2); DrawPath(path, curve->GetPath(PathDirection::Show), supportColor2, Qt::SolidLine, Qt::RoundCap); ++i; diff --git a/src/libs/vtools/visualization/line/operation/vistoolmove.cpp b/src/libs/vtools/visualization/line/operation/vistoolmove.cpp index 3478123e8..dc381c2dc 100644 --- a/src/libs/vtools/visualization/line/operation/vistoolmove.cpp +++ b/src/libs/vtools/visualization/line/operation/vistoolmove.cpp @@ -165,7 +165,7 @@ QGraphicsPathItem *VisToolMove::AddOriginCurve(quint32 id, int &i) const QSharedPointer curve = Visualization::data->template GeometricObject(id); ++i; - QGraphicsPathItem *path = GetCurve(static_cast(i), supportColor2); + VCurvePathItem *path = GetCurve(static_cast(i), supportColor2); DrawPath(path, curve->GetPath(PathDirection::Show), supportColor2, Qt::SolidLine, Qt::RoundCap); return path; @@ -178,7 +178,7 @@ int VisToolMove::AddMovedCurve(qreal angle, qreal length, quint32 id, int i) const QSharedPointer curve = Visualization::data->template GeometricObject(id); ++i; - QGraphicsPathItem *path = GetCurve(static_cast(i), supportColor); + VCurvePathItem *path = GetCurve(static_cast(i), supportColor); const Item moved = curve->Move(length, angle); DrawPath(path, moved.GetPath(PathDirection::Show), supportColor, Qt::SolidLine, Qt::RoundCap); diff --git a/src/libs/vtools/visualization/line/operation/vistoolrotation.cpp b/src/libs/vtools/visualization/line/operation/vistoolrotation.cpp index f6ec72c55..520cde2cb 100644 --- a/src/libs/vtools/visualization/line/operation/vistoolrotation.cpp +++ b/src/libs/vtools/visualization/line/operation/vistoolrotation.cpp @@ -64,7 +64,7 @@ VisToolRotation::VisToolRotation(const VContainer *data, QGraphicsItem *parent) xAxis(nullptr) { point = InitPoint(supportColor2, this); - angleArc = InitItem(supportColor2, this); + angleArc = InitItem(supportColor2, this); xAxis = InitItem(supportColor2, this); } @@ -216,7 +216,7 @@ int VisToolRotation::AddCurve(qreal angle, const QPointF &origin, quint32 id, in const QSharedPointer curve = Visualization::data->template GeometricObject(id); ++i; - QGraphicsPathItem *path = GetCurve(static_cast(i), supportColor2); + VCurvePathItem *path = GetCurve(static_cast(i), supportColor2); DrawPath(path, curve->GetPath(PathDirection::Show), supportColor2, Qt::SolidLine, Qt::RoundCap); ++i; diff --git a/src/libs/vtools/visualization/line/operation/vistoolrotation.h b/src/libs/vtools/visualization/line/operation/vistoolrotation.h index 1c766cc1a..99e9e0edd 100644 --- a/src/libs/vtools/visualization/line/operation/vistoolrotation.h +++ b/src/libs/vtools/visualization/line/operation/vistoolrotation.h @@ -63,7 +63,7 @@ private: Q_DISABLE_COPY(VisToolRotation) qreal angle; QGraphicsEllipseItem *point; - QGraphicsPathItem *angleArc; + VCurvePathItem *angleArc; QGraphicsLineItem *xAxis; template diff --git a/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.cpp b/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.cpp index 98aa251d2..d70282b03 100644 --- a/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.cpp +++ b/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.cpp @@ -53,7 +53,7 @@ VisToolCurveIntersectAxis::VisToolCurveIntersectAxis(const VContainer *data, QGr { this->mainColor = Qt::red; - visCurve = InitItem(Qt::darkGreen, this); + visCurve = InitItem(Qt::darkGreen, this); basePoint = InitPoint(supportColor, this); baseLine = InitItem(supportColor, this); axisLine = InitItem(supportColor, this); //-V656 diff --git a/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.h b/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.h index a6cc7628d..c82d6aa38 100644 --- a/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.h +++ b/src/libs/vtools/visualization/line/vistoolcurveintersectaxis.h @@ -62,7 +62,7 @@ private: QGraphicsEllipseItem *basePoint; QGraphicsLineItem *baseLine; QGraphicsLineItem *axisLine; - QGraphicsPathItem *visCurve; + VCurvePathItem *visCurve; }; #endif // VISTOOLCURVEINTERSECTAXIS_H diff --git a/src/libs/vtools/visualization/line/vistoolpointfromarcandtangent.cpp b/src/libs/vtools/visualization/line/vistoolpointfromarcandtangent.cpp index fad152448..a19011796 100644 --- a/src/libs/vtools/visualization/line/vistoolpointfromarcandtangent.cpp +++ b/src/libs/vtools/visualization/line/vistoolpointfromarcandtangent.cpp @@ -51,7 +51,7 @@ VisToolPointFromArcAndTangent::VisToolPointFromArcAndTangent(const VContainer *d : VisLine(data, parent), arcId(NULL_ID), crossPoint(CrossCirclesPoint::FirstPoint), point(nullptr), tangent(nullptr), arcPath(nullptr), tangentLine2(nullptr) { - arcPath = InitItem(Qt::darkGreen, this); + arcPath = InitItem(Qt::darkGreen, this); point = InitPoint(mainColor, this); tangent = InitPoint(supportColor, this); tangentLine2 = InitItem(supportColor, this); diff --git a/src/libs/vtools/visualization/line/vistoolpointfromarcandtangent.h b/src/libs/vtools/visualization/line/vistoolpointfromarcandtangent.h index fb084044d..934486e07 100644 --- a/src/libs/vtools/visualization/line/vistoolpointfromarcandtangent.h +++ b/src/libs/vtools/visualization/line/vistoolpointfromarcandtangent.h @@ -61,7 +61,7 @@ private: CrossCirclesPoint crossPoint; QGraphicsEllipseItem *point; QGraphicsEllipseItem *tangent; - QGraphicsPathItem *arcPath; + VCurvePathItem *arcPath; QGraphicsLineItem *tangentLine2; void FindRays(const QPointF &p, const VArc *arc); diff --git a/src/libs/vtools/visualization/line/vistoolpointofintersectionarcs.cpp b/src/libs/vtools/visualization/line/vistoolpointofintersectionarcs.cpp index 8924bbd83..0c1b43a75 100644 --- a/src/libs/vtools/visualization/line/vistoolpointofintersectionarcs.cpp +++ b/src/libs/vtools/visualization/line/vistoolpointofintersectionarcs.cpp @@ -55,9 +55,9 @@ VisToolPointOfIntersectionArcs::VisToolPointOfIntersectionArcs(const VContainer { this->setPen(QPen(Qt::NoPen)); // don't use parent this time - arc1Path = InitItem(Qt::darkGreen, this); + arc1Path = InitItem(Qt::darkGreen, this); arc1Path->setFlag(QGraphicsItem::ItemStacksBehindParent, false); - arc2Path = InitItem(Qt::darkRed, this); + arc2Path = InitItem(Qt::darkRed, this); arc2Path->setFlag(QGraphicsItem::ItemStacksBehindParent, false); point = InitPoint(mainColor, this); diff --git a/src/libs/vtools/visualization/line/vistoolpointofintersectionarcs.h b/src/libs/vtools/visualization/line/vistoolpointofintersectionarcs.h index c42a0f0e3..b781578da 100644 --- a/src/libs/vtools/visualization/line/vistoolpointofintersectionarcs.h +++ b/src/libs/vtools/visualization/line/vistoolpointofintersectionarcs.h @@ -62,8 +62,8 @@ private: quint32 arc2Id; CrossCirclesPoint crossPoint; QGraphicsEllipseItem *point; - QGraphicsPathItem *arc1Path; - QGraphicsPathItem *arc2Path; + VCurvePathItem *arc1Path; + VCurvePathItem *arc2Path; }; #endif // VISTOOLPOINTOFINTERSECTIONARCS_H diff --git a/src/libs/vtools/visualization/path/vispath.cpp b/src/libs/vtools/visualization/path/vispath.cpp index 2013dd022..0b72bf396 100644 --- a/src/libs/vtools/visualization/path/vispath.cpp +++ b/src/libs/vtools/visualization/path/vispath.cpp @@ -38,7 +38,8 @@ //--------------------------------------------------------------------------------------------------------------------- VisPath::VisPath(const VContainer *data, QGraphicsItem *parent) - :Visualization(data), QGraphicsPathItem(parent) + : Visualization(data), + VCurvePathItem(parent) { this->setZValue(1);// Show on top real tool InitPen(); diff --git a/src/libs/vtools/visualization/path/vispath.h b/src/libs/vtools/visualization/path/vispath.h index b653642ba..f5ae641df 100644 --- a/src/libs/vtools/visualization/path/vispath.h +++ b/src/libs/vtools/visualization/path/vispath.h @@ -31,7 +31,6 @@ #include #include -#include #include #include #include @@ -39,10 +38,11 @@ #include "../visualization.h" #include "../vmisc/def.h" +#include "../vwidgets/vcurvepathitem.h" class VSimplePoint; -class VisPath : public Visualization, public QGraphicsPathItem +class VisPath : public Visualization, public VCurvePathItem { Q_OBJECT public: diff --git a/src/libs/vtools/visualization/path/vistoolarc.cpp b/src/libs/vtools/visualization/path/vistoolarc.cpp index ec53a9b41..46b66688c 100644 --- a/src/libs/vtools/visualization/path/vistoolarc.cpp +++ b/src/libs/vtools/visualization/path/vistoolarc.cpp @@ -60,7 +60,7 @@ void VisToolArc::RefreshGeometry() if (not qFuzzyIsNull(radius) && f1 >= 0 && f2 >= 0) { VArc arc = VArc (*first, radius, f1, f2); - DrawPath(this, arc.GetPath(PathDirection::Show), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, arc.GetPath(), arc.GetDirectionPath(), mainColor, lineStyle, Qt::RoundCap); } } } diff --git a/src/libs/vtools/visualization/path/vistoolarcwithlength.cpp b/src/libs/vtools/visualization/path/vistoolarcwithlength.cpp index 54cb5b104..becb6a7ce 100644 --- a/src/libs/vtools/visualization/path/vistoolarcwithlength.cpp +++ b/src/libs/vtools/visualization/path/vistoolarcwithlength.cpp @@ -60,7 +60,7 @@ void VisToolArcWithLength::RefreshGeometry() if (not qFuzzyIsNull(radius) && f1 >= 0 && not qFuzzyIsNull(length)) { VArc arc = VArc (length, *first, radius, f1); - DrawPath(this, arc.GetPath(PathDirection::Show), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, arc.GetPath(), arc.GetDirectionPath(), mainColor, lineStyle, Qt::RoundCap); } } } diff --git a/src/libs/vtools/visualization/path/vistoolcubicbezier.cpp b/src/libs/vtools/visualization/path/vistoolcubicbezier.cpp index de693b0a7..2bed2ff9f 100644 --- a/src/libs/vtools/visualization/path/vistoolcubicbezier.cpp +++ b/src/libs/vtools/visualization/path/vistoolcubicbezier.cpp @@ -89,7 +89,7 @@ void VisToolCubicBezier::RefreshGeometry() { VCubicBezier spline(*first, *second, VPointF(Visualization::scenePos), VPointF(Visualization::scenePos)); - DrawPath(this, spline.GetPath(PathDirection::Hide), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, spline.GetPath(PathDirection::Hide), mainColor, lineStyle, Qt::RoundCap); } else { @@ -99,7 +99,7 @@ void VisToolCubicBezier::RefreshGeometry() if (object4Id <= NULL_ID) { VCubicBezier spline(*first, *second, *third, VPointF(Visualization::scenePos)); - DrawPath(this, spline.GetPath(PathDirection::Hide), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, spline.GetPath(PathDirection::Hide), mainColor, lineStyle, Qt::RoundCap); DrawLine(helpLine2, QLineF(static_cast(*third), Visualization::scenePos), mainColor, Qt::DashLine); } @@ -111,7 +111,7 @@ void VisToolCubicBezier::RefreshGeometry() Qt::DashLine); VCubicBezier spline(*first, *second, *third, *fourth); - DrawPath(this, spline.GetPath(PathDirection::Show), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, spline.GetPath(), spline.GetDirectionPath(), mainColor, lineStyle, Qt::RoundCap); } } } diff --git a/src/libs/vtools/visualization/path/vistoolcubicbezierpath.cpp b/src/libs/vtools/visualization/path/vistoolcubicbezierpath.cpp index 4e3d53f19..20e0adbc1 100644 --- a/src/libs/vtools/visualization/path/vistoolcubicbezierpath.cpp +++ b/src/libs/vtools/visualization/path/vistoolcubicbezierpath.cpp @@ -56,7 +56,7 @@ VisToolCubicBezierPath::VisToolCubicBezierPath(const VContainer *data, QGraphics helpLine1 = InitItem(mainColor, this); helpLine2 = InitItem(mainColor, this); - newCurveSegment = InitItem(mainColor, this); + newCurveSegment = InitItem(mainColor, this); } //--------------------------------------------------------------------------------------------------------------------- @@ -96,7 +96,8 @@ void VisToolCubicBezierPath::RefreshGeometry() if (countSubSpl >= 1) { - DrawPath(this, path.GetPath(PathDirection::Show), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, path.GetPath(), mainColor, lineStyle, Qt::RoundCap); + DrawPath(this, path.GetDirectionPath(), mainColor, Qt::SolidLine, Qt::RoundCap); for (qint32 i = 1; i<=countSubSpl; ++i) { diff --git a/src/libs/vtools/visualization/path/vistoolcubicbezierpath.h b/src/libs/vtools/visualization/path/vistoolcubicbezierpath.h index c70b41621..14e1b2469 100644 --- a/src/libs/vtools/visualization/path/vistoolcubicbezierpath.h +++ b/src/libs/vtools/visualization/path/vistoolcubicbezierpath.h @@ -61,7 +61,7 @@ protected: QVector mainPoints; QVector ctrlPoints; QVector lines; - QGraphicsPathItem *newCurveSegment; + VCurvePathItem *newCurveSegment; VCubicBezierPath path; QGraphicsLineItem *helpLine1; QGraphicsLineItem *helpLine2; diff --git a/src/libs/vtools/visualization/path/vistoolcutarc.cpp b/src/libs/vtools/visualization/path/vistoolcutarc.cpp index 79a585525..1952e8ba0 100644 --- a/src/libs/vtools/visualization/path/vistoolcutarc.cpp +++ b/src/libs/vtools/visualization/path/vistoolcutarc.cpp @@ -47,9 +47,9 @@ VisToolCutArc::VisToolCutArc(const VContainer *data, QGraphicsItem *parent) :VisPath(data, parent), point(nullptr), arc1(nullptr), arc2(nullptr), length(0) { - arc1 = InitItem(Qt::darkGreen, this); + arc1 = InitItem(Qt::darkGreen, this); arc1->setFlag(QGraphicsItem::ItemStacksBehindParent, false); - arc2 = InitItem(Qt::darkRed, this); + arc2 = InitItem(Qt::darkRed, this); arc2->setFlag(QGraphicsItem::ItemStacksBehindParent, false); point = InitPoint(mainColor, this); @@ -63,7 +63,7 @@ void VisToolCutArc::RefreshGeometry() if (object1Id > NULL_ID) { const QSharedPointer arc = Visualization::data->GeometricObject(object1Id); - DrawPath(this, arc->GetPath(PathDirection::Show), supportColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, arc->GetPath(), arc->GetDirectionPath(), supportColor, lineStyle, Qt::RoundCap); if (not qFuzzyIsNull(length)) { @@ -72,8 +72,8 @@ void VisToolCutArc::RefreshGeometry() QPointF p = arc->CutArc(length, ar1, ar2); DrawPoint(point, p, mainColor); - DrawPath(arc1, ar1.GetPath(PathDirection::Show), Qt::darkGreen, Qt::SolidLine, Qt::RoundCap); - DrawPath(arc2, ar2.GetPath(PathDirection::Show), Qt::darkRed, Qt::SolidLine, Qt::RoundCap); + DrawPath(arc1, ar1.GetPath(), ar1.GetDirectionPath(), Qt::darkGreen, lineStyle, Qt::RoundCap); + DrawPath(arc2, ar2.GetPath(), ar2.GetDirectionPath(), Qt::darkRed, lineStyle, Qt::RoundCap); } } } diff --git a/src/libs/vtools/visualization/path/vistoolcutarc.h b/src/libs/vtools/visualization/path/vistoolcutarc.h index 1ba8c6bbf..7a6c50da5 100644 --- a/src/libs/vtools/visualization/path/vistoolcutarc.h +++ b/src/libs/vtools/visualization/path/vistoolcutarc.h @@ -53,8 +53,8 @@ public: protected: Q_DISABLE_COPY(VisToolCutArc) QGraphicsEllipseItem *point; - QGraphicsPathItem *arc1; - QGraphicsPathItem *arc2; + VCurvePathItem *arc1; + VCurvePathItem *arc2; qreal length; }; diff --git a/src/libs/vtools/visualization/path/vistoolcutspline.cpp b/src/libs/vtools/visualization/path/vistoolcutspline.cpp index 19edb23a4..bf78d1eae 100644 --- a/src/libs/vtools/visualization/path/vistoolcutspline.cpp +++ b/src/libs/vtools/visualization/path/vistoolcutspline.cpp @@ -49,9 +49,9 @@ VisToolCutSpline::VisToolCutSpline(const VContainer *data, QGraphicsItem *parent) :VisPath(data, parent), point(nullptr), spl1(nullptr), spl2(nullptr), length(0) { - spl1 = InitItem(Qt::darkGreen, this); + spl1 = InitItem(Qt::darkGreen, this); spl1->setFlag(QGraphicsItem::ItemStacksBehindParent, false); - spl2 = InitItem(Qt::darkRed, this); + spl2 = InitItem(Qt::darkRed, this); spl2->setFlag(QGraphicsItem::ItemStacksBehindParent, false); point = InitPoint(mainColor, this); @@ -65,7 +65,7 @@ void VisToolCutSpline::RefreshGeometry() if (object1Id > NULL_ID) { const auto spl = Visualization::data->GeometricObject(object1Id); - DrawPath(this, spl->GetPath(PathDirection::Show), supportColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, spl->GetPath(), spl->GetDirectionPath(), supportColor, lineStyle, Qt::RoundCap); if (not qFuzzyIsNull(length)) { @@ -80,8 +80,8 @@ void VisToolCutSpline::RefreshGeometry() DrawPoint(point, p, mainColor); - DrawPath(spl1, sp1.GetPath(PathDirection::Show), Qt::darkGreen, Qt::SolidLine, Qt::RoundCap); - DrawPath(spl2, sp2.GetPath(PathDirection::Show), Qt::darkRed, Qt::SolidLine, Qt::RoundCap); + DrawPath(spl1, sp1.GetPath(), sp1.GetDirectionPath(), Qt::darkGreen, lineStyle, Qt::RoundCap); + DrawPath(spl2, sp2.GetPath(), sp2.GetDirectionPath(), Qt::darkRed, lineStyle, Qt::RoundCap); } } } diff --git a/src/libs/vtools/visualization/path/vistoolcutspline.h b/src/libs/vtools/visualization/path/vistoolcutspline.h index a5fb9ef37..5f767ae49 100644 --- a/src/libs/vtools/visualization/path/vistoolcutspline.h +++ b/src/libs/vtools/visualization/path/vistoolcutspline.h @@ -53,8 +53,8 @@ public: protected: Q_DISABLE_COPY(VisToolCutSpline) QGraphicsEllipseItem *point; - QGraphicsPathItem *spl1; - QGraphicsPathItem *spl2; + VCurvePathItem *spl1; + VCurvePathItem *spl2; qreal length; }; diff --git a/src/libs/vtools/visualization/path/vistoolcutsplinepath.cpp b/src/libs/vtools/visualization/path/vistoolcutsplinepath.cpp index c336f2501..200310c6b 100644 --- a/src/libs/vtools/visualization/path/vistoolcutsplinepath.cpp +++ b/src/libs/vtools/visualization/path/vistoolcutsplinepath.cpp @@ -49,9 +49,9 @@ VisToolCutSplinePath::VisToolCutSplinePath(const VContainer *data, QGraphicsItem *parent) :VisPath(data, parent), point(nullptr), splPath1(nullptr), splPath2(nullptr), length(0) { - splPath1 = InitItem(Qt::darkGreen, this); + splPath1 = InitItem(Qt::darkGreen, this); splPath1->setFlag(QGraphicsItem::ItemStacksBehindParent, false); - splPath2 = InitItem(Qt::darkRed, this); + splPath2 = InitItem(Qt::darkRed, this); splPath2->setFlag(QGraphicsItem::ItemStacksBehindParent, false); point = InitPoint(mainColor, this); @@ -65,7 +65,7 @@ void VisToolCutSplinePath::RefreshGeometry() if (object1Id > NULL_ID) { const auto splPath = Visualization::data->GeometricObject(object1Id); - DrawPath(this, splPath->GetPath(PathDirection::Show), supportColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, splPath->GetPath(), splPath->GetDirectionPath(), supportColor, lineStyle, Qt::RoundCap); if (not qFuzzyIsNull(length)) { @@ -79,8 +79,8 @@ void VisToolCutSplinePath::RefreshGeometry() DrawPoint(point, static_cast(*p), mainColor); delete p; - DrawPath(splPath1, spPath1->GetPath(PathDirection::Show), Qt::darkGreen, Qt::SolidLine, Qt::RoundCap); - DrawPath(splPath2, spPath2->GetPath(PathDirection::Show), Qt::darkRed, Qt::SolidLine, Qt::RoundCap); + DrawPath(splPath1, spPath1->GetPath(), spPath1->GetDirectionPath(), Qt::darkGreen, lineStyle, Qt::RoundCap); + DrawPath(splPath2, spPath2->GetPath(), spPath2->GetDirectionPath(), Qt::darkRed, lineStyle, Qt::RoundCap); delete spPath1; delete spPath2; diff --git a/src/libs/vtools/visualization/path/vistoolcutsplinepath.h b/src/libs/vtools/visualization/path/vistoolcutsplinepath.h index 4accfa205..95ad6ca55 100644 --- a/src/libs/vtools/visualization/path/vistoolcutsplinepath.h +++ b/src/libs/vtools/visualization/path/vistoolcutsplinepath.h @@ -53,8 +53,8 @@ public: protected: Q_DISABLE_COPY(VisToolCutSplinePath) QGraphicsEllipseItem *point; - QGraphicsPathItem *splPath1; - QGraphicsPathItem *splPath2; + VCurvePathItem *splPath1; + VCurvePathItem *splPath2; qreal length; }; diff --git a/src/libs/vtools/visualization/path/vistoolellipticalarc.cpp b/src/libs/vtools/visualization/path/vistoolellipticalarc.cpp index fda916c68..612b39b2a 100644 --- a/src/libs/vtools/visualization/path/vistoolellipticalarc.cpp +++ b/src/libs/vtools/visualization/path/vistoolellipticalarc.cpp @@ -57,7 +57,7 @@ void VisToolEllipticalArc::RefreshGeometry() if (not qFuzzyIsNull(radius1) && not qFuzzyIsNull(radius2) && f1 >= 0 && f2 >= 0 && rotationAngle >= 0) { VEllipticalArc elArc = VEllipticalArc(*first, radius1, radius2, f1, f2, rotationAngle); - DrawPath(this, elArc.GetPath(PathDirection::Show), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, elArc.GetPath(), elArc.GetDirectionPath(), mainColor, lineStyle, Qt::RoundCap); } } } diff --git a/src/libs/vtools/visualization/path/vistoolpointofintersectioncurves.cpp b/src/libs/vtools/visualization/path/vistoolpointofintersectioncurves.cpp index 345440287..525f356a5 100644 --- a/src/libs/vtools/visualization/path/vistoolpointofintersectioncurves.cpp +++ b/src/libs/vtools/visualization/path/vistoolpointofintersectioncurves.cpp @@ -53,7 +53,7 @@ VisToolPointOfIntersectionCurves::VisToolPointOfIntersectionCurves(const VContai point(nullptr), visCurve2(nullptr) { - visCurve2 = InitItem(supportColor, this); + visCurve2 = InitItem(supportColor, this); point = InitPoint(mainColor, this); } diff --git a/src/libs/vtools/visualization/path/vistoolpointofintersectioncurves.h b/src/libs/vtools/visualization/path/vistoolpointofintersectioncurves.h index 6a8174f52..b7550f3d8 100644 --- a/src/libs/vtools/visualization/path/vistoolpointofintersectioncurves.h +++ b/src/libs/vtools/visualization/path/vistoolpointofintersectioncurves.h @@ -63,7 +63,7 @@ private: HCrossCurvesPoint hCrossPoint; QGraphicsEllipseItem *point; - QGraphicsPathItem *visCurve2; + VCurvePathItem *visCurve2; }; diff --git a/src/libs/vtools/visualization/path/vistoolspline.cpp b/src/libs/vtools/visualization/path/vistoolspline.cpp index dbb13d0da..bde97bc1b 100644 --- a/src/libs/vtools/visualization/path/vistoolspline.cpp +++ b/src/libs/vtools/visualization/path/vistoolspline.cpp @@ -122,7 +122,7 @@ void VisToolSpline::RefreshGeometry() if (object4Id <= NULL_ID) { VSpline spline(*first, p2, Visualization::scenePos, VPointF(Visualization::scenePos)); - DrawPath(this, spline.GetPath(PathDirection::Hide), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, spline.GetPath(PathDirection::Hide), mainColor, lineStyle, Qt::RoundCap); } else { @@ -160,12 +160,12 @@ void VisToolSpline::RefreshGeometry() if (VFuzzyComparePossibleNulls(angle1, EMPTY_ANGLE) || VFuzzyComparePossibleNulls(angle2, EMPTY_ANGLE)) { VSpline spline(*first, p2, p3, *second); - DrawPath(this, spline.GetPath(PathDirection::Hide), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, spline.GetPath(PathDirection::Hide), mainColor, lineStyle, Qt::RoundCap); } else { VSpline spline(*first, *second, angle1, angle2, kAsm1, kAsm2, kCurve); - DrawPath(this, spline.GetPath(PathDirection::Show), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, spline.GetPath(), spline.GetDirectionPath(), mainColor, lineStyle, Qt::RoundCap); Visualization::toolTip = tr("Use Shift for sticking angle!"); emit ToolTip(Visualization::toolTip); } diff --git a/src/libs/vtools/visualization/path/vistoolsplinepath.cpp b/src/libs/vtools/visualization/path/vistoolsplinepath.cpp index 3ce58b1ed..6f1215bfd 100644 --- a/src/libs/vtools/visualization/path/vistoolsplinepath.cpp +++ b/src/libs/vtools/visualization/path/vistoolsplinepath.cpp @@ -56,7 +56,7 @@ VisToolSplinePath::VisToolSplinePath(const VContainer *data, QGraphicsItem *pare pointSelected(false), ctrlPoint() { - newCurveSegment = InitItem(mainColor, this); + newCurveSegment = InitItem(mainColor, this); } //--------------------------------------------------------------------------------------------------------------------- @@ -106,7 +106,7 @@ void VisToolSplinePath::RefreshGeometry() if (size > 1) { - DrawPath(this, path.GetPath(PathDirection::Show), mainColor, Qt::SolidLine, Qt::RoundCap); + DrawPath(this, path.GetPath(), path.GetDirectionPath(), mainColor, lineStyle, Qt::RoundCap); } if (path.CountPoints() < 3) diff --git a/src/libs/vtools/visualization/path/vistoolsplinepath.h b/src/libs/vtools/visualization/path/vistoolsplinepath.h index b4c402920..fe9ef0f04 100644 --- a/src/libs/vtools/visualization/path/vistoolsplinepath.h +++ b/src/libs/vtools/visualization/path/vistoolsplinepath.h @@ -70,7 +70,7 @@ protected: Q_DISABLE_COPY(VisToolSplinePath) QVector points; QVector ctrlPoints; - QGraphicsPathItem *newCurveSegment; + VCurvePathItem *newCurveSegment; VSplinePath path; bool isLeftMousePressed; diff --git a/src/libs/vtools/visualization/visualization.cpp b/src/libs/vtools/visualization/visualization.cpp index 60bd372d9..daa7b2aee 100644 --- a/src/libs/vtools/visualization/visualization.cpp +++ b/src/libs/vtools/visualization/visualization.cpp @@ -34,7 +34,6 @@ #include #include #include -#include #include #include #include @@ -53,6 +52,7 @@ #include "../vmisc/vcommonsettings.h" #include "../vpatterndb/vcontainer.h" #include "../vwidgets/vmaingraphicsscene.h" +#include "../vwidgets/vcurvepathitem.h" template class QHash; @@ -221,14 +221,22 @@ void Visualization::DrawLine(QGraphicsLineItem *lineItem, const QLineF &line, co } //--------------------------------------------------------------------------------------------------------------------- -void Visualization::DrawPath(QGraphicsPathItem *pathItem, const QPainterPath &path, const QColor &color, +void Visualization::DrawPath(VCurvePathItem *pathItem, const QPainterPath &path, const QColor &color, Qt::PenStyle style, Qt::PenCapStyle cap) +{ + DrawPath(pathItem, path, QPainterPath(), color, style, cap); +} + +//--------------------------------------------------------------------------------------------------------------------- +void Visualization::DrawPath(VCurvePathItem *pathItem, const QPainterPath &path, const QPainterPath &direction, + const QColor &color, Qt::PenStyle style, Qt::PenCapStyle cap) { SCASSERT (pathItem != nullptr) pathItem->setPen(QPen(color, qApp->toPixel(WidthMainLine(*Visualization::data->GetPatternUnit()))/factor, style, cap)); pathItem->setPath(path); + pathItem->SetDirectionPath(direction); pathItem->setVisible(true); } diff --git a/src/libs/vtools/visualization/visualization.h b/src/libs/vtools/visualization/visualization.h index cdc7e8b2c..201f3323e 100644 --- a/src/libs/vtools/visualization/visualization.h +++ b/src/libs/vtools/visualization/visualization.h @@ -39,6 +39,7 @@ #include "../vmisc/vabstractapplication.h" #include "../vpatterndb/vcontainer.h" #include "../vwidgets/vmaingraphicsscene.h" +#include "../vwidgets/vcurvepathitem.h" Q_DECLARE_LOGGING_CATEGORY(vVis) @@ -91,8 +92,10 @@ protected: Qt::PenStyle style = Qt::SolidLine); virtual void DrawLine(QGraphicsLineItem *lineItem, const QLineF &line, const QColor &color, Qt::PenStyle style = Qt::SolidLine); - void DrawPath(QGraphicsPathItem *pathItem, const QPainterPath &path, const QColor &color, + void DrawPath(VCurvePathItem *pathItem, const QPainterPath &path, const QColor &color, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap); + void DrawPath(VCurvePathItem *pathItem, const QPainterPath &path, const QPainterPath &direction, + const QColor &color, Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap); template void AddItem(Item *item); diff --git a/src/libs/vwidgets/vabstractsimple.cpp b/src/libs/vwidgets/vabstractsimple.cpp index 47796cf74..81cd29828 100644 --- a/src/libs/vwidgets/vabstractsimple.cpp +++ b/src/libs/vwidgets/vabstractsimple.cpp @@ -31,12 +31,10 @@ const qreal VAbstractSimple::m_defFactor = 1; //--------------------------------------------------------------------------------------------------------------------- -VAbstractSimple::VAbstractSimple(quint32 id, const QColor ¤tColor, Unit patternUnit, qreal *factor, - QObject *parent) +VAbstractSimple::VAbstractSimple(quint32 id, Unit patternUnit, qreal *factor, QObject *parent) : QObject(parent), id (id), factor(factor), - currentColor(currentColor), enabled(true), patternUnit(patternUnit), selectionType(SelectionType::ByMouseRelease), @@ -71,13 +69,6 @@ QColor VAbstractSimple::CorrectColor(const QColor &color) const } } -//--------------------------------------------------------------------------------------------------------------------- -// cppcheck-suppress unusedFunction -QColor VAbstractSimple::GetCurrentColor() const -{ - return currentColor; -} - //--------------------------------------------------------------------------------------------------------------------- void VAbstractSimple::SetEnabled(bool enabled) { diff --git a/src/libs/vwidgets/vabstractsimple.h b/src/libs/vwidgets/vabstractsimple.h index 9c6a24cda..6d4e97eda 100644 --- a/src/libs/vwidgets/vabstractsimple.h +++ b/src/libs/vwidgets/vabstractsimple.h @@ -47,14 +47,10 @@ class VAbstractSimple : public QObject { Q_OBJECT public: - VAbstractSimple(quint32 id, const QColor ¤tColor, Unit patternUnit, qreal *factor = nullptr, - QObject *parent = nullptr); + VAbstractSimple(quint32 id, Unit patternUnit, qreal *factor = nullptr, QObject *parent = nullptr); virtual ~VAbstractSimple(); virtual void ToolSelectionType(const SelectionType &type); - - QColor GetCurrentColor() const; - virtual void SetEnabled(bool enabled); GOType GetType() const; @@ -74,9 +70,6 @@ protected: /** @brief factor scale factor. */ qreal *factor; - /** @brief currentColor current color. */ - QColor currentColor; - bool enabled; Unit patternUnit; @@ -88,7 +81,7 @@ protected: QColor CorrectColor(const QColor &color) const; template - void SetPen(T *item, const QColor &color, qreal width); + void SetPen(T *item, const QColor &color, qreal width, Qt::PenStyle penStyle = Qt::SolidLine); private: Q_DISABLE_COPY(VAbstractSimple) @@ -98,10 +91,10 @@ private: //--------------------------------------------------------------------------------------------------------------------- template -void VAbstractSimple::SetPen(T *item, const QColor &color, qreal width) +void VAbstractSimple::SetPen(T *item, const QColor &color, qreal width, Qt::PenStyle penStyle) { SCASSERT(item) - item->setPen(QPen(CorrectColor(color), ToPixel(width, patternUnit)/ *factor, Qt::SolidLine, Qt::RoundCap)); + item->setPen(QPen(CorrectColor(color), ToPixel(width, patternUnit)/ *factor, penStyle, Qt::RoundCap)); } #endif // VABSTRACTSIMPLE_H diff --git a/src/libs/vwidgets/vcurvepathitem.cpp b/src/libs/vwidgets/vcurvepathitem.cpp new file mode 100644 index 000000000..e840e4bf3 --- /dev/null +++ b/src/libs/vwidgets/vcurvepathitem.cpp @@ -0,0 +1,64 @@ +/************************************************************************ + ** + ** @file + ** @author Roman Telezhynskyi + ** @date 16 5, 2017 + ** + ** @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) 2017 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 "vcurvepathitem.h" + +#include + +//--------------------------------------------------------------------------------------------------------------------- +VCurvePathItem::VCurvePathItem(QGraphicsItem *parent) + : QGraphicsPathItem(parent), + m_direction() +{ +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCurvePathItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) +{ + if (m_direction != QPainterPath()) + { + painter->save(); + + QPen arrowPen(pen()); + arrowPen.setStyle(Qt::SolidLine); + + painter->setPen(arrowPen); + painter->setBrush(brush()); + painter->drawPath(m_direction); + + painter->restore(); + } + + QGraphicsPathItem::paint(painter, option, widget); +} + +//--------------------------------------------------------------------------------------------------------------------- +void VCurvePathItem::SetDirectionPath(const QPainterPath &path) +{ + m_direction = path; +} diff --git a/src/libs/vwidgets/vcurvepathitem.h b/src/libs/vwidgets/vcurvepathitem.h new file mode 100644 index 000000000..3ac101043 --- /dev/null +++ b/src/libs/vwidgets/vcurvepathitem.h @@ -0,0 +1,50 @@ +/************************************************************************ + ** + ** @file + ** @author Roman Telezhynskyi + ** @date 16 5, 2017 + ** + ** @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) 2017 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 VCURVEPATHITEM_H +#define VCURVEPATHITEM_H + +#include +#include + +class VCurvePathItem : public QGraphicsPathItem +{ +public: + VCurvePathItem(QGraphicsItem *parent = nullptr); + + virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, + QWidget *widget = nullptr) Q_DECL_OVERRIDE; + + void SetDirectionPath(const QPainterPath &path); +private: + Q_DISABLE_COPY(VCurvePathItem) + + QPainterPath m_direction; +}; + +#endif // VCURVEPATHITEM_H diff --git a/src/libs/vwidgets/vsimplecurve.cpp b/src/libs/vwidgets/vsimplecurve.cpp index b6a980c38..350943b53 100644 --- a/src/libs/vwidgets/vsimplecurve.cpp +++ b/src/libs/vwidgets/vsimplecurve.cpp @@ -45,27 +45,25 @@ template class QSharedPointer; //--------------------------------------------------------------------------------------------------------------------- -VSimpleCurve::VSimpleCurve(quint32 id, const QColor ¤tColor, Unit patternUnit, qreal *factor, QObject *parent) - : VAbstractSimple(id, currentColor, patternUnit, factor, parent), - QGraphicsPathItem(), - m_curve(), +VSimpleCurve::VSimpleCurve(quint32 id, const QSharedPointer &curve, Unit patternUnit, qreal *factor, + QObject *parent) + : VAbstractSimple(id, patternUnit, factor, parent), + VCurvePathItem(), + m_curve(curve), m_isHovered(false) { this->setBrush(QBrush(Qt::NoBrush)); - SetPen(this, currentColor, WidthHairLine(patternUnit)); + SetPen(this, m_curve->GetColor(), WidthHairLine(patternUnit), LineStyleToPenStyle(m_curve->GetPenStyle())); this->setAcceptHoverEvents(true); this->setFlag(QGraphicsItem::ItemIsFocusable, true);// For keyboard input focus } -//--------------------------------------------------------------------------------------------------------------------- -VSimpleCurve::~VSimpleCurve() -{ -} - //--------------------------------------------------------------------------------------------------------------------- void VSimpleCurve::RefreshGeometry(const QSharedPointer &curve) { m_curve = curve; + setPen(QPen(CorrectColor(m_curve->GetColor()), pen().width(), LineStyleToPenStyle(m_curve->GetPenStyle()), + Qt::RoundCap)); ShowPath(); } @@ -73,7 +71,7 @@ void VSimpleCurve::RefreshGeometry(const QSharedPointer &curve) void VSimpleCurve::SetEnabled(bool enabled) { VAbstractSimple::SetEnabled(enabled); - SetPen(this, currentColor, WidthHairLine(patternUnit)); + SetPen(this, m_curve->GetColor(), WidthHairLine(patternUnit), LineStyleToPenStyle(m_curve->GetPenStyle())); } //--------------------------------------------------------------------------------------------------------------------- @@ -130,7 +128,7 @@ void VSimpleCurve::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void VSimpleCurve::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { m_isHovered = true; - SetPen(this, currentColor, WidthMainLine(patternUnit)); + SetPen(this, m_curve->GetColor(), WidthMainLine(patternUnit), LineStyleToPenStyle(m_curve->GetPenStyle())); ShowPath(); QGraphicsPathItem::hoverEnterEvent(event); } @@ -139,7 +137,7 @@ void VSimpleCurve::hoverEnterEvent(QGraphicsSceneHoverEvent *event) void VSimpleCurve::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { m_isHovered = false; - SetPen(this, currentColor, WidthHairLine(patternUnit)); + SetPen(this, m_curve->GetColor(), WidthHairLine(patternUnit), LineStyleToPenStyle(m_curve->GetPenStyle())); ShowPath(); QGraphicsPathItem::hoverLeaveEvent(event); } @@ -180,10 +178,8 @@ void VSimpleCurve::ShowPath() { if (not m_curve.isNull()) { - QPainterPath path; - m_isHovered ? path = m_curve->GetPath(PathDirection::Show) : path = m_curve->GetPath(PathDirection::Hide); - path.setFillRule( Qt::WindingFill ); - setPath(path); + m_isHovered ? SetDirectionPath(m_curve->GetDirectionPath()) : SetDirectionPath(QPainterPath()); + setPath(m_curve->GetPath()); } else { diff --git a/src/libs/vwidgets/vsimplecurve.h b/src/libs/vwidgets/vsimplecurve.h index aa6df649e..ac26b7ec3 100644 --- a/src/libs/vwidgets/vsimplecurve.h +++ b/src/libs/vwidgets/vsimplecurve.h @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -42,17 +41,18 @@ #include "../vmisc/def.h" #include "vabstractsimple.h" +#include "vcurvepathitem.h" class VAbstractCurve; template class QSharedPointer; -class VSimpleCurve : public VAbstractSimple, public QGraphicsPathItem +class VSimpleCurve : public VAbstractSimple, public VCurvePathItem { Q_OBJECT public: - VSimpleCurve(quint32 id, const QColor ¤tColor, Unit patternUnit, qreal *factor = nullptr, + VSimpleCurve(quint32 id, const QSharedPointer &curve, Unit patternUnit, qreal *factor = nullptr, QObject *parent = nullptr); - virtual ~VSimpleCurve(); + virtual ~VSimpleCurve() Q_DECL_EQ_DEFAULT; virtual int type() const Q_DECL_OVERRIDE {return Type;} enum { Type = UserType + static_cast(Vis::SimpleCurve)}; diff --git a/src/libs/vwidgets/vsimplepoint.cpp b/src/libs/vwidgets/vsimplepoint.cpp index 87c751f33..46dd18bfe 100644 --- a/src/libs/vwidgets/vsimplepoint.cpp +++ b/src/libs/vwidgets/vsimplepoint.cpp @@ -48,14 +48,15 @@ //--------------------------------------------------------------------------------------------------------------------- VSimplePoint::VSimplePoint(quint32 id, const QColor ¤tColor, Unit patternUnit, qreal *factor, QObject *parent) - : VAbstractSimple(id, currentColor, patternUnit, factor, parent), + : VAbstractSimple(id, patternUnit, factor, parent), QGraphicsEllipseItem(), radius(ToPixel(DefPointRadius/*mm*/, Unit::Mm)), namePoint(nullptr), lineName(nullptr), m_onlyPoint(false), m_isHighlight(false), - m_visualizationMode(false) + m_visualizationMode(false), + currentColor(currentColor) { namePoint = new VGraphicsSimpleTextItem(this); connect(namePoint, &VGraphicsSimpleTextItem::ShowContextMenu, this, &VSimplePoint::ContextMenu); diff --git a/src/libs/vwidgets/vsimplepoint.h b/src/libs/vwidgets/vsimplepoint.h index 127e4e5eb..d9d1b83f4 100644 --- a/src/libs/vwidgets/vsimplepoint.h +++ b/src/libs/vwidgets/vsimplepoint.h @@ -111,6 +111,9 @@ private: bool m_onlyPoint; bool m_isHighlight; bool m_visualizationMode; + + /** @brief currentColor current color. */ + QColor currentColor; }; #endif // VSIMPLEPOINT_H diff --git a/src/libs/vwidgets/vwidgets.pri b/src/libs/vwidgets/vwidgets.pri index 5b16032b7..3ad0a39e0 100644 --- a/src/libs/vwidgets/vwidgets.pri +++ b/src/libs/vwidgets/vwidgets.pri @@ -17,7 +17,8 @@ SOURCES += \ $$PWD/vpieceitem.cpp \ $$PWD/fancytabbar/fancytab.cpp \ $$PWD/fancytabbar/fancytabbar.cpp \ - $$PWD/fancytabbar/stylehelper.cpp + $$PWD/fancytabbar/stylehelper.cpp \ + $$PWD/vcurvepathitem.cpp win32-msvc*:SOURCES += $$PWD/stable.cpp @@ -38,4 +39,5 @@ HEADERS += \ $$PWD/vpieceitem.h \ $$PWD/fancytabbar/fancytab.h \ $$PWD/fancytabbar/fancytabbar.h \ - $$PWD/fancytabbar/stylehelper.h + $$PWD/fancytabbar/stylehelper.h \ + $$PWD/vcurvepathitem.h