From 423ff82409ca583ec2ff0838308ee3e7cc00f043 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Thu, 20 Apr 2023 19:34:59 +0200 Subject: [PATCH] Sketcher: SoZoomTranslation - expose scaling factor =================================================== This commit exposes the scale factor used. --- src/Mod/Sketcher/Gui/SoZoomTranslation.cpp | 12 ++++++------ src/Mod/Sketcher/Gui/SoZoomTranslation.h | 5 ++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp b/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp index f1431eb9f7..1f19dc20f5 100644 --- a/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp +++ b/src/Mod/Sketcher/Gui/SoZoomTranslation.cpp @@ -66,16 +66,16 @@ void SoZoomTranslation::initClass() SO_ENABLE(SoGetMatrixAction, SoViewVolumeElement); } -float SoZoomTranslation::getScaleFactor(SoAction* action) const +float SoZoomTranslation::calculateScaleFactor(SoAction* action) const { // Dividing by 5 seems to work well SbViewVolume vv = SoViewVolumeElement::get(action->getState()); float aspectRatio = SoViewportRegionElement::get(action->getState()).getViewportAspectRatio(); - float scale = vv.getWorldToScreenScale(SbVec3f(0.f, 0.f, 0.f), 0.1f) / (5*aspectRatio); - return scale; + scaleFactor = vv.getWorldToScreenScale(SbVec3f(0.f, 0.f, 0.f), 0.1f) / (5*aspectRatio); + return scaleFactor; } -SoZoomTranslation::SoZoomTranslation() +SoZoomTranslation::SoZoomTranslation(): scaleFactor(0) { SO_NODE_CONSTRUCTOR(SoZoomTranslation); SO_NODE_ADD_FIELD(abPos, (SbVec3f(0.f,0.f,0.f))); @@ -96,7 +96,7 @@ void SoZoomTranslation::doAction(SoAction * action) SbVec3f absVtr = this->abPos.getValue(); SbVec3f relVtr = this->translation.getValue(); - float sf = this->getScaleFactor(action); + float sf = this->calculateScaleFactor(action); // For Sketcher Keep Z value the same relVtr[0] = (relVtr[0] != 0) ? sf * relVtr[0] : 0; relVtr[1] = (relVtr[1] != 0) ? sf * relVtr[1] : 0; @@ -116,7 +116,7 @@ void SoZoomTranslation::getMatrix(SoGetMatrixAction * action) SbVec3f absVtr = this->abPos.getValue(); SbVec3f relVtr = this->translation.getValue(); - float sf = this->getScaleFactor(action); + float sf = this->calculateScaleFactor(action); // For Sketcher Keep Z value the same relVtr[0] = (relVtr[0] != 0) ? sf * relVtr[0] : 0; relVtr[1] = (relVtr[1] != 0) ? sf * relVtr[1] : 0; diff --git a/src/Mod/Sketcher/Gui/SoZoomTranslation.h b/src/Mod/Sketcher/Gui/SoZoomTranslation.h index d09fdd4aba..c1afbc0e32 100644 --- a/src/Mod/Sketcher/Gui/SoZoomTranslation.h +++ b/src/Mod/Sketcher/Gui/SoZoomTranslation.h @@ -39,6 +39,7 @@ public: static void initClass(); SoZoomTranslation(); SoSFVec3f abPos; + float getScaleFactor() const { return scaleFactor;} protected: ~SoZoomTranslation() override {} @@ -49,7 +50,9 @@ protected: void getBoundingBox(SoGetBoundingBoxAction * action) override; void callback(SoCallbackAction * action) override; void pick(SoPickAction * action) override; - float getScaleFactor(SoAction * action) const; + float calculateScaleFactor (SoAction * action) const; + + mutable float scaleFactor; }; }