From b091acd87786ece7c47c70fef42f55773a7ad7b9 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Wed, 22 Mar 2017 12:44:32 +0800 Subject: [PATCH] PathGui: speed up path marker display User SoPointSet instead of SoMarkerSet --- src/Mod/Path/Gui/ViewProviderPath.cpp | 16 +++++++++++++--- src/Mod/Path/Gui/ViewProviderPath.h | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/Mod/Path/Gui/ViewProviderPath.cpp b/src/Mod/Path/Gui/ViewProviderPath.cpp index 107ea05b91..2ca6c23d3b 100644 --- a/src/Mod/Path/Gui/ViewProviderPath.cpp +++ b/src/Mod/Path/Gui/ViewProviderPath.cpp @@ -34,7 +34,7 @@ # include # include # include -# include +# include # include # include # include @@ -90,6 +90,8 @@ ViewProviderPath::ViewProviderPath() ADD_PROPERTY_TYPE(NormalColor,(lr,lg,lb),"Path",App::Prop_None,"The color of the feed rate moves"); ADD_PROPERTY_TYPE(MarkerColor,(mr,mg,mb),"Path",App::Prop_None,"The color of the markers"); ADD_PROPERTY_TYPE(LineWidth,(lwidth),"Path",App::Prop_None,"The line width of this path"); + int markerSize = hGrp->GetInt("DefaultPathMarkerSize",4); + ADD_PROPERTY_TYPE(MarkerSize,(markerSize),"Path",App::Prop_None,"The point size of the markers"); ADD_PROPERTY_TYPE(ShowNodes,(false),"Path",App::Prop_None,"Turns the display of nodes on/off"); @@ -115,6 +117,11 @@ ViewProviderPath::ViewProviderPath() pcMarkerCoords = new SoCoordinate3(); pcMarkerCoords->ref(); + pcMarkerStyle = new SoDrawStyle(); + pcMarkerStyle->ref(); + pcMarkerStyle->style = SoDrawStyle::POINTS; + pcMarkerStyle->pointSize = MarkerSize.getValue(); + pcDrawStyle = new SoDrawStyle(); pcDrawStyle->ref(); pcDrawStyle->style = SoDrawStyle::LINES; @@ -169,6 +176,7 @@ ViewProviderPath::~ViewProviderPath() pcMarkerCoords->unref(); pcMarkerSwitch->unref(); pcDrawStyle->unref(); + pcMarkerStyle->unref(); pcLines->unref(); pcLineColor->unref(); pcMatBind->unref(); @@ -190,10 +198,10 @@ void ViewProviderPath::attach(App::DocumentObject *pcObj) // Draw markers SoSeparator* markersep = new SoSeparator; - SoMarkerSet* marker = new SoMarkerSet; - marker->markerIndex=SoMarkerSet::PLUS_7_7; + SoPointSet* marker = new SoPointSet; markersep->addChild(pcMarkerColor); markersep->addChild(pcMarkerCoords); + markersep->addChild(pcMarkerStyle); markersep->addChild(marker); pcMarkerSwitch->addChild(markersep); @@ -288,6 +296,8 @@ void ViewProviderPath::onChanged(const App::Property* prop) if (prop == &LineWidth) { pcDrawStyle->lineWidth = LineWidth.getValue(); + } else if (prop == &MarkerSize) { + pcMarkerStyle->pointSize = MarkerSize.getValue(); } else if (prop == &NormalColor) { if (colorindex.size() > 0 && coordStart>=0 && coordStart<(int)colorindex.size()) { const App::Color& c = NormalColor.getValue(); diff --git a/src/Mod/Path/Gui/ViewProviderPath.h b/src/Mod/Path/Gui/ViewProviderPath.h index 7d19bfb475..5fe4926577 100644 --- a/src/Mod/Path/Gui/ViewProviderPath.h +++ b/src/Mod/Path/Gui/ViewProviderPath.h @@ -58,6 +58,7 @@ public: App::PropertyInteger LineWidth; App::PropertyColor NormalColor; App::PropertyColor MarkerColor; + App::PropertyInteger MarkerSize; App::PropertyBool ShowNodes; App::PropertyVector StartPosition; @@ -89,6 +90,7 @@ protected: SoCoordinate3 * pcLineCoords; SoCoordinate3 * pcMarkerCoords; SoDrawStyle * pcDrawStyle; + SoDrawStyle * pcMarkerStyle; PartGui::SoBrepEdgeSet * pcLines; SoMaterial * pcLineColor; SoBaseColor * pcMarkerColor;