From 15157ad48c1ed5031384f46cc5ec20bcba1e6f35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Br=C3=A6strup=20Sayoc?= Date: Fri, 4 Oct 2024 00:06:31 +0200 Subject: [PATCH] [Gui] Make axis colors of corner axis changeable --- src/Gui/View3DInventorViewer.cpp | 31 ++++++++++++++++++++++++++----- src/Gui/View3DInventorViewer.h | 7 +++++++ src/Gui/View3DSettings.cpp | 6 +----- 3 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/Gui/View3DInventorViewer.cpp b/src/Gui/View3DInventorViewer.cpp index ff57cede1b..5ccacd7bd3 100644 --- a/src/Gui/View3DInventorViewer.cpp +++ b/src/Gui/View3DInventorViewer.cpp @@ -588,6 +588,8 @@ void View3DInventorViewer::init() naviCube = new NaviCube(this); naviCubeEnabled = true; + + updateColors(); } View3DInventorViewer::~View3DInventorViewer() @@ -3706,6 +3708,25 @@ void View3DInventorViewer::setAxisLetterColor(const SbColor& color) recolor(ZPM_PIXEL_MASK, ZPM_pixel_data, ZPM_WIDTH, ZPM_HEIGHT, ZPM_BYTES_PER_PIXEL); } +void View3DInventorViewer::updateColors() +{ + unsigned long colorLong; + + colorLong = Gui::ViewParams::instance()->getAxisXColor(); + m_xColor = App::Color(static_cast(colorLong)); + colorLong = Gui::ViewParams::instance()->getAxisYColor(); + m_yColor = App::Color(static_cast(colorLong)); + colorLong = Gui::ViewParams::instance()->getAxisZColor(); + m_zColor = App::Color(static_cast(colorLong)); + + naviCube->updateColors(); + + if(hasAxisCross()) { + setAxisCross(false); // Force redraw + setAxisCross(true); + } +} + void View3DInventorViewer::drawAxisCross() { // NOLINTBEGIN @@ -3813,10 +3834,10 @@ void View3DInventorViewer::drawAxisCross() glPushMatrix(); if (i == XAXIS) { // X axis. - if (stereoMode() != Quarter::SoQTQuarterAdaptor::MONO) - glColor3f(0.500F, 0.5F, 0.5F); + if (stereoMode() != Quarter::SoQTQuarterAdaptor::MONO) // What is this + glColor3f(0.500F, 0.5F, 0.5F); // Why different colors?? else - glColor3f(0.500F, 0.125F, 0.125F); + glColor3f(m_xColor.r, m_xColor.g, m_xColor.b); } else if (i == YAXIS) { // Y axis. glRotatef(90, 0, 0, 1); @@ -3824,7 +3845,7 @@ void View3DInventorViewer::drawAxisCross() if (stereoMode() != Quarter::SoQTQuarterAdaptor::MONO) glColor3f(0.400F, 0.4F, 0.4F); else - glColor3f(0.125F, 0.500F, 0.125F); + glColor3f(m_yColor.r, m_yColor.g, m_yColor.b); } else { // Z axis. glRotatef(-90, 0, 1, 0); @@ -3832,7 +3853,7 @@ void View3DInventorViewer::drawAxisCross() if (stereoMode() != Quarter::SoQTQuarterAdaptor::MONO) glColor3f(0.300F, 0.3F, 0.3F); else - glColor3f(0.125F, 0.125F, 0.500F); + glColor3f(m_zColor.r, m_zColor.g, m_zColor.b); } drawArrow(); diff --git a/src/Gui/View3DInventorViewer.h b/src/Gui/View3DInventorViewer.h index 1a520e616c..b19f23e2ed 100644 --- a/src/Gui/View3DInventorViewer.h +++ b/src/Gui/View3DInventorViewer.h @@ -434,6 +434,9 @@ public: bool isEnabledVBO() const; void setRenderCache(int); + //! Update colors of axis in corner to match preferences + void updateColors(); + void getDimensions(float& fHeight, float& fWidth) const; float getMaxDimension() const; SbVec3f getCenterPointOnFocalPlane() const; @@ -531,6 +534,10 @@ private: bool vboEnabled; bool naviCubeEnabled; + App::Color m_xColor; + App::Color m_yColor; + App::Color m_zColor; + bool editing; QCursor editCursor, zoomCursor, panCursor, spinCursor; bool redirected; diff --git a/src/Gui/View3DSettings.cpp b/src/Gui/View3DSettings.cpp index bad335a762..a91c21709c 100644 --- a/src/Gui/View3DSettings.cpp +++ b/src/Gui/View3DSettings.cpp @@ -346,11 +346,7 @@ 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); - } + _viewer->updateColors(); } } else if (strcmp(Reason,"UseVBO") == 0) {