From 82df41e1c3620a9ccf3af28882d92a4ce7734cf3 Mon Sep 17 00:00:00 2001 From: Benjamin Alterauge <5332429+ageeye@users.noreply.github.com> Date: Mon, 2 Aug 2021 21:29:17 +0200 Subject: [PATCH 1/2] Possible to use DefaultShapeVertexColor setting. Add a separate material for vertex. So, it is possible use DefaultShapeVertexColor. [Ticket #4692](https://forum.freecadweb.org/viewtopic.php?f=3&t=59576) --- src/Gui/ViewParams.h | 1 + src/Mod/Part/Gui/ViewProviderExt.cpp | 42 +++++++++++++++++++--------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/Gui/ViewParams.h b/src/Gui/ViewParams.h index cee80eb4fa..6dc897cff0 100644 --- a/src/Gui/ViewParams.h +++ b/src/Gui/ViewParams.h @@ -54,6 +54,7 @@ public: FC_VIEW_PARAM(MarkerSize,int,Int,9) \ FC_VIEW_PARAM(DefaultLinkColor,unsigned long,Unsigned,0x66FFFF00) \ FC_VIEW_PARAM(DefaultShapeLineColor,unsigned long,Unsigned,421075455UL) \ + FC_VIEW_PARAM(DefaultShapeVertexColor,unsigned long,Unsigned,421075455UL) \ FC_VIEW_PARAM(DefaultShapeColor,unsigned long,Unsigned,0xCCCCCC00) \ FC_VIEW_PARAM(DefaultShapeLineWidth,int,Int,2) \ FC_VIEW_PARAM(DefaultShapePointSize,int,Int,2) \ diff --git a/src/Mod/Part/Gui/ViewProviderExt.cpp b/src/Mod/Part/Gui/ViewProviderExt.cpp index 5dcfd97135..ba197f1811 100644 --- a/src/Mod/Part/Gui/ViewProviderExt.cpp +++ b/src/Mod/Part/Gui/ViewProviderExt.cpp @@ -236,11 +236,18 @@ ViewProviderPartExt::ViewProviderPartExt() forceUpdateCount = 0; NormalsFromUV = true; + // get default line color unsigned long lcol = Gui::ViewParams::instance()->getDefaultShapeLineColor(); // dark grey (25,25,25) - float r,g,b; - r = ((lcol >> 24) & 0xff) / 255.0; g = ((lcol >> 16) & 0xff) / 255.0; b = ((lcol >> 8) & 0xff) / 255.0; + float lr,lg,lb; + lr = ((lcol >> 24) & 0xff) / 255.0; lg = ((lcol >> 16) & 0xff) / 255.0; lb = ((lcol >> 8) & 0xff) / 255.0; + // get default vertex color + unsigned long vcol = Gui::ViewParams::instance()->getDefaultShapeVertexColor(); + float vr,vg,vb; + vr = ((vcol >> 24) & 0xff) / 255.0; vg = ((vcol >> 16) & 0xff) / 255.0; vb = ((vcol >> 8) & 0xff) / 255.0; int lwidth = Gui::ViewParams::instance()->getDefaultShapeLineWidth(); int psize = Gui::ViewParams::instance()->getDefaultShapePointSize(); + + ParameterGrp::handle hPart = App::GetApplication().GetParameterGroupByPath ("User parameter:BaseApp/Preferences/Mod/Part"); @@ -256,17 +263,26 @@ ViewProviderPartExt::ViewProviderPartExt() static const char *osgroup = "Object Style"; - App::Material mat; - mat.ambientColor.set(0.2f,0.2f,0.2f); - mat.diffuseColor.set(r,g,b); - mat.specularColor.set(0.0f,0.0f,0.0f); - mat.emissiveColor.set(0.0f,0.0f,0.0f); - mat.shininess = 1.0f; - mat.transparency = 0.0f; - ADD_PROPERTY_TYPE(LineMaterial,(mat), osgroup, App::Prop_None, "Object line material."); - ADD_PROPERTY_TYPE(PointMaterial,(mat), osgroup, App::Prop_None, "Object point material."); - ADD_PROPERTY_TYPE(LineColor, (mat.diffuseColor), osgroup, App::Prop_None, "Set object line color."); - ADD_PROPERTY_TYPE(PointColor, (mat.diffuseColor), osgroup, App::Prop_None, "Set object point color"); + App::Material lmat; + lmat.ambientColor.set(0.2f,0.2f,0.2f); + lmat.diffuseColor.set(lr,lg,lb); + lmat.specularColor.set(0.0f,0.0f,0.0f); + lmat.emissiveColor.set(0.0f,0.0f,0.0f); + lmat.shininess = 1.0f; + lmat.transparency = 0.0f; + + App::Material vmat; + vmat.ambientColor.set(0.2f,0.2f,0.2f); + vmat.diffuseColor.set(vr,vg,vb); + vmat.specularColor.set(0.0f,0.0f,0.0f); + vmat.emissiveColor.set(0.0f,0.0f,0.0f); + vmat.shininess = 1.0f; + vmat.transparency = 0.0f; + + ADD_PROPERTY_TYPE(LineMaterial,(lmat), osgroup, App::Prop_None, "Object line material."); + ADD_PROPERTY_TYPE(PointMaterial,(vmat), osgroup, App::Prop_None, "Object point material."); + ADD_PROPERTY_TYPE(LineColor, (lmat.diffuseColor), osgroup, App::Prop_None, "Set object line color."); + ADD_PROPERTY_TYPE(PointColor, (vmat.diffuseColor), osgroup, App::Prop_None, "Set object point color"); ADD_PROPERTY_TYPE(PointColorArray, (PointColor.getValue()), osgroup, App::Prop_None, "Object point color array."); ADD_PROPERTY_TYPE(DiffuseColor,(ShapeColor.getValue()), osgroup, App::Prop_None, "Object diffuse color."); ADD_PROPERTY_TYPE(LineColorArray,(LineColor.getValue()), osgroup, App::Prop_None, "Object line color array."); From 6128a073f32a742a8f6e1abdfd9516cda61d47e6 Mon Sep 17 00:00:00 2001 From: Benjamin Alterauge <5332429+ageeye@users.noreply.github.com> Date: Mon, 2 Aug 2021 21:29:17 +0200 Subject: [PATCH 2/2] Possible to use DefaultShapeVertexColor setting. Add a separate material for vertex. So, it is possible use DefaultShapeVertexColor. [Ticket #4692](https://forum.freecadweb.org/viewtopic.php?f=3&t=59576) --- src/Gui/ViewParams.h | 1 + src/Mod/Part/Gui/ViewProviderExt.cpp | 42 +++++++++++++++++++--------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/Gui/ViewParams.h b/src/Gui/ViewParams.h index cee80eb4fa..6dc897cff0 100644 --- a/src/Gui/ViewParams.h +++ b/src/Gui/ViewParams.h @@ -54,6 +54,7 @@ public: FC_VIEW_PARAM(MarkerSize,int,Int,9) \ FC_VIEW_PARAM(DefaultLinkColor,unsigned long,Unsigned,0x66FFFF00) \ FC_VIEW_PARAM(DefaultShapeLineColor,unsigned long,Unsigned,421075455UL) \ + FC_VIEW_PARAM(DefaultShapeVertexColor,unsigned long,Unsigned,421075455UL) \ FC_VIEW_PARAM(DefaultShapeColor,unsigned long,Unsigned,0xCCCCCC00) \ FC_VIEW_PARAM(DefaultShapeLineWidth,int,Int,2) \ FC_VIEW_PARAM(DefaultShapePointSize,int,Int,2) \ diff --git a/src/Mod/Part/Gui/ViewProviderExt.cpp b/src/Mod/Part/Gui/ViewProviderExt.cpp index 5dcfd97135..ba197f1811 100644 --- a/src/Mod/Part/Gui/ViewProviderExt.cpp +++ b/src/Mod/Part/Gui/ViewProviderExt.cpp @@ -236,11 +236,18 @@ ViewProviderPartExt::ViewProviderPartExt() forceUpdateCount = 0; NormalsFromUV = true; + // get default line color unsigned long lcol = Gui::ViewParams::instance()->getDefaultShapeLineColor(); // dark grey (25,25,25) - float r,g,b; - r = ((lcol >> 24) & 0xff) / 255.0; g = ((lcol >> 16) & 0xff) / 255.0; b = ((lcol >> 8) & 0xff) / 255.0; + float lr,lg,lb; + lr = ((lcol >> 24) & 0xff) / 255.0; lg = ((lcol >> 16) & 0xff) / 255.0; lb = ((lcol >> 8) & 0xff) / 255.0; + // get default vertex color + unsigned long vcol = Gui::ViewParams::instance()->getDefaultShapeVertexColor(); + float vr,vg,vb; + vr = ((vcol >> 24) & 0xff) / 255.0; vg = ((vcol >> 16) & 0xff) / 255.0; vb = ((vcol >> 8) & 0xff) / 255.0; int lwidth = Gui::ViewParams::instance()->getDefaultShapeLineWidth(); int psize = Gui::ViewParams::instance()->getDefaultShapePointSize(); + + ParameterGrp::handle hPart = App::GetApplication().GetParameterGroupByPath ("User parameter:BaseApp/Preferences/Mod/Part"); @@ -256,17 +263,26 @@ ViewProviderPartExt::ViewProviderPartExt() static const char *osgroup = "Object Style"; - App::Material mat; - mat.ambientColor.set(0.2f,0.2f,0.2f); - mat.diffuseColor.set(r,g,b); - mat.specularColor.set(0.0f,0.0f,0.0f); - mat.emissiveColor.set(0.0f,0.0f,0.0f); - mat.shininess = 1.0f; - mat.transparency = 0.0f; - ADD_PROPERTY_TYPE(LineMaterial,(mat), osgroup, App::Prop_None, "Object line material."); - ADD_PROPERTY_TYPE(PointMaterial,(mat), osgroup, App::Prop_None, "Object point material."); - ADD_PROPERTY_TYPE(LineColor, (mat.diffuseColor), osgroup, App::Prop_None, "Set object line color."); - ADD_PROPERTY_TYPE(PointColor, (mat.diffuseColor), osgroup, App::Prop_None, "Set object point color"); + App::Material lmat; + lmat.ambientColor.set(0.2f,0.2f,0.2f); + lmat.diffuseColor.set(lr,lg,lb); + lmat.specularColor.set(0.0f,0.0f,0.0f); + lmat.emissiveColor.set(0.0f,0.0f,0.0f); + lmat.shininess = 1.0f; + lmat.transparency = 0.0f; + + App::Material vmat; + vmat.ambientColor.set(0.2f,0.2f,0.2f); + vmat.diffuseColor.set(vr,vg,vb); + vmat.specularColor.set(0.0f,0.0f,0.0f); + vmat.emissiveColor.set(0.0f,0.0f,0.0f); + vmat.shininess = 1.0f; + vmat.transparency = 0.0f; + + ADD_PROPERTY_TYPE(LineMaterial,(lmat), osgroup, App::Prop_None, "Object line material."); + ADD_PROPERTY_TYPE(PointMaterial,(vmat), osgroup, App::Prop_None, "Object point material."); + ADD_PROPERTY_TYPE(LineColor, (lmat.diffuseColor), osgroup, App::Prop_None, "Set object line color."); + ADD_PROPERTY_TYPE(PointColor, (vmat.diffuseColor), osgroup, App::Prop_None, "Set object point color"); ADD_PROPERTY_TYPE(PointColorArray, (PointColor.getValue()), osgroup, App::Prop_None, "Object point color array."); ADD_PROPERTY_TYPE(DiffuseColor,(ShapeColor.getValue()), osgroup, App::Prop_None, "Object diffuse color."); ADD_PROPERTY_TYPE(LineColorArray,(LineColor.getValue()), osgroup, App::Prop_None, "Object line color array.");