From c6e590ce9dfb5d5d6f74d4a08ea3202edc490c9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Br=C3=A6strup=20Sayoc?= Date: Thu, 3 Oct 2024 23:44:40 +0200 Subject: [PATCH] [Gui] Make axis colors of axis kit (world origin axis) changeable --- src/Gui/Inventor/SoAxisCrossKit.cpp | 33 +++++++++++++++++++++++------ src/Gui/View3DSettings.cpp | 4 ++++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/Gui/Inventor/SoAxisCrossKit.cpp b/src/Gui/Inventor/SoAxisCrossKit.cpp index e894ff1ae2..ec95db0f03 100644 --- a/src/Gui/Inventor/SoAxisCrossKit.cpp +++ b/src/Gui/Inventor/SoAxisCrossKit.cpp @@ -29,6 +29,8 @@ # include # endif +#include + # include # include # include @@ -50,6 +52,9 @@ # include #endif +#include +#include + #include "SoAxisCrossKit.h" #include "SoDevicePixelRatioElement.h" @@ -218,12 +223,28 @@ SoAxisCrossKit::createAxes() set("xAxis.appearance.drawStyle", "lineWidth 1"); set("yAxis.appearance.drawStyle", "lineWidth 1"); set("zAxis.appearance.drawStyle", "lineWidth 1"); - set("xAxis.appearance.material", "diffuseColor 0.5 0.125 0.125"); - set("xHead.appearance.material", "diffuseColor 0.5 0.125 0.125"); - set("yAxis.appearance.material", "diffuseColor 0.125 0.5 0.125"); - set("yHead.appearance.material", "diffuseColor 0.125 0.5 0.125"); - set("zAxis.appearance.material", "diffuseColor 0.125 0.125 0.5"); - set("zHead.appearance.material", "diffuseColor 0.125 0.125 0.5"); + + unsigned long colorLong; + App::Color color; + std::stringstream parameterstring; + + colorLong = Gui::ViewParams::instance()->getAxisXColor(); + color = App::Color(static_cast(colorLong)); + parameterstring << "diffuseColor " << color.r << " " << color.g << " " << color.b; + set("xAxis.appearance.material", parameterstring.str().c_str()); + set("xHead.appearance.material", parameterstring.str().c_str()); + + colorLong = Gui::ViewParams::instance()->getAxisYColor(); + color = App::Color(static_cast(colorLong)); + parameterstring << "diffuseColor " << color.r << " " << color.g << " " << color.b; + set("yAxis.appearance.material", parameterstring.str().c_str()); + set("yHead.appearance.material", parameterstring.str().c_str()); + + colorLong = Gui::ViewParams::instance()->getAxisZColor(); + color = App::Color(static_cast(colorLong)); + parameterstring << "diffuseColor " << color.r << " " << color.g << " " << color.b; + set("zAxis.appearance.material", parameterstring.str().c_str()); + set("zHead.appearance.material", parameterstring.str().c_str()); // Make unpickable set("xAxis.pickStyle", "style UNPICKABLE"); diff --git a/src/Gui/View3DSettings.cpp b/src/Gui/View3DSettings.cpp index e4ac1c2036..bad335a762 100644 --- a/src/Gui/View3DSettings.cpp +++ b/src/Gui/View3DSettings.cpp @@ -347,6 +347,10 @@ void View3DSettings::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M else if (strcmp(Reason,"AxisXColor") == 0 || strcmp(Reason,"AxisYColor") == 0 || strcmp(Reason,"AxisZColor") == 0) { for (auto _viewer : _viewers) { _viewer->getNaviCube()->updateColors(); + if(_viewer->hasAxisCross()) { + _viewer->setAxisCross(false); // Force redraw + _viewer->setAxisCross(true); + } } } else if (strcmp(Reason,"UseVBO") == 0) {