From 0c59884e833a5cd44dc3d45a4c238b9bb66b0e83 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 2 Nov 2021 15:57:54 +0100 Subject: [PATCH] Gui: [skip ci] add method NavigationStyle::getNormalizedPosition() to reduce code duplication --- src/Gui/BlenderNavigationStyle.cpp | 8 +++----- src/Gui/CADNavigationStyle.cpp | 8 +++----- src/Gui/InventorNavigationStyle.cpp | 8 +++----- src/Gui/NavigationStyle.cpp | 10 ++++++++++ src/Gui/NavigationStyle.h | 1 + src/Gui/OpenCascadeNavigationStyle.cpp | 8 +++----- src/Gui/OpenSCADNavigationStyle.cpp | 8 +++----- src/Gui/RevitNavigationStyle.cpp | 8 +++----- src/Gui/TouchpadNavigationStyle.cpp | 8 +++----- 9 files changed, 32 insertions(+), 35 deletions(-) diff --git a/src/Gui/BlenderNavigationStyle.cpp b/src/Gui/BlenderNavigationStyle.cpp index b67e8ee6e5..b7b6fc1759 100644 --- a/src/Gui/BlenderNavigationStyle.cpp +++ b/src/Gui/BlenderNavigationStyle.cpp @@ -88,13 +88,11 @@ SbBool BlenderNavigationStyle::processSoEvent(const SoEvent * const ev) const SoType type(ev->getTypeId()); const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); - const SbVec2s size(vp.getViewportSizePixels()); - const SbVec2f prevnormalized = this->lastmouseposition; - const SbVec2s pos(ev->getPosition()); - const SbVec2f posn((float) pos[0] / (float) std::max((int)(size[0] - 1), 1), - (float) pos[1] / (float) std::max((int)(size[1] - 1), 1)); + const SbVec2f posn = getNormalizedPosition(ev, vp); + const SbVec2f prevnormalized = this->lastmouseposition; this->lastmouseposition = posn; + const SbVec2s pos(ev->getPosition()); // Set to true if any event processing happened. Note that it is not // necessary to restrict ourselves to only do one "action" for an diff --git a/src/Gui/CADNavigationStyle.cpp b/src/Gui/CADNavigationStyle.cpp index 8b2c690bec..17a590933e 100644 --- a/src/Gui/CADNavigationStyle.cpp +++ b/src/Gui/CADNavigationStyle.cpp @@ -92,13 +92,11 @@ SbBool CADNavigationStyle::processSoEvent(const SoEvent * const ev) const SoType type(ev->getTypeId()); const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); - const SbVec2s size(vp.getViewportSizePixels()); - const SbVec2f prevnormalized = this->lastmouseposition; - const SbVec2s pos(ev->getPosition()); - const SbVec2f posn((float) pos[0] / (float) std::max((int)(size[0] - 1), 1), - (float) pos[1] / (float) std::max((int)(size[1] - 1), 1)); + const SbVec2f posn = getNormalizedPosition(ev, vp); + const SbVec2f prevnormalized = this->lastmouseposition; this->lastmouseposition = posn; + const SbVec2s pos(ev->getPosition()); // Set to true if any event processing happened. Note that it is not // necessary to restrict ourselves to only do one "action" for an diff --git a/src/Gui/InventorNavigationStyle.cpp b/src/Gui/InventorNavigationStyle.cpp index 27fdb07399..1a46fe8439 100644 --- a/src/Gui/InventorNavigationStyle.cpp +++ b/src/Gui/InventorNavigationStyle.cpp @@ -96,13 +96,11 @@ SbBool InventorNavigationStyle::processSoEvent(const SoEvent * const ev) const SoType type(ev->getTypeId()); const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); - const SbVec2s size(vp.getViewportSizePixels()); - const SbVec2f prevnormalized = this->lastmouseposition; - const SbVec2s pos(ev->getPosition()); - const SbVec2f posn((float) pos[0] / (float) std::max((int)(size[0] - 1), 1), - (float) pos[1] / (float) std::max((int)(size[1] - 1), 1)); + const SbVec2f posn = getNormalizedPosition(ev, vp); + const SbVec2f prevnormalized = this->lastmouseposition; this->lastmouseposition = posn; + const SbVec2s pos(ev->getPosition()); // Set to true if any event processing happened. Note that it is not // necessary to restrict ourselves to only do one "action" for an diff --git a/src/Gui/NavigationStyle.cpp b/src/Gui/NavigationStyle.cpp index dc66d74beb..0a38a210f9 100644 --- a/src/Gui/NavigationStyle.cpp +++ b/src/Gui/NavigationStyle.cpp @@ -1372,6 +1372,16 @@ void NavigationStyle::clearLog(void) this->log.historysize = 0; } +SbVec2f NavigationStyle::getNormalizedPosition(const SoEvent * const ev, + const SbViewportRegion & vpRgn) const +{ + const SbVec2s size(vpRgn.getViewportSizePixels()); + const SbVec2s pos(ev->getPosition()); + const SbVec2f posn((float) pos[0] / (float) std::max((int)(size[0] - 1), 1), + (float) pos[1] / (float) std::max((int)(size[1] - 1), 1)); + return posn; +} + void NavigationStyle::syncModifierKeys(const SoEvent * const ev) { // Mismatches in state of the modifier keys happens if the user diff --git a/src/Gui/NavigationStyle.h b/src/Gui/NavigationStyle.h index 5f394c550b..af68928008 100644 --- a/src/Gui/NavigationStyle.h +++ b/src/Gui/NavigationStyle.h @@ -213,6 +213,7 @@ protected: void clearLog(void); void addToLog(const SbVec2s pos, const SbTime time); + SbVec2f getNormalizedPosition(const SoEvent * const ev, const SbViewportRegion & vpRgn) const; void syncModifierKeys(const SoEvent * const ev); SbBool handleKeyboardEvent(const SoKeyboardEvent * const event, const SbVec2f & posn); diff --git a/src/Gui/OpenCascadeNavigationStyle.cpp b/src/Gui/OpenCascadeNavigationStyle.cpp index 376247f83d..62abcebb9f 100644 --- a/src/Gui/OpenCascadeNavigationStyle.cpp +++ b/src/Gui/OpenCascadeNavigationStyle.cpp @@ -88,13 +88,11 @@ SbBool OpenCascadeNavigationStyle::processSoEvent(const SoEvent * const ev) const SoType type(ev->getTypeId()); const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); - const SbVec2s size(vp.getViewportSizePixels()); - const SbVec2f prevnormalized = this->lastmouseposition; - const SbVec2s pos(ev->getPosition()); - const SbVec2f posn((float) pos[0] / (float) std::max((int)(size[0] - 1), 1), - (float) pos[1] / (float) std::max((int)(size[1] - 1), 1)); + const SbVec2f posn = getNormalizedPosition(ev, vp); + const SbVec2f prevnormalized = this->lastmouseposition; this->lastmouseposition = posn; + const SbVec2s pos(ev->getPosition()); // Set to true if any event processing happened. Note that it is not // necessary to restrict ourselves to only do one "action" for an diff --git a/src/Gui/OpenSCADNavigationStyle.cpp b/src/Gui/OpenSCADNavigationStyle.cpp index 4df1eefbe7..7b0c31682a 100644 --- a/src/Gui/OpenSCADNavigationStyle.cpp +++ b/src/Gui/OpenSCADNavigationStyle.cpp @@ -88,13 +88,11 @@ SbBool OpenSCADNavigationStyle::processSoEvent(const SoEvent * const ev) const SoType type(ev->getTypeId()); const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); - const SbVec2s size(vp.getViewportSizePixels()); - const SbVec2f prevnormalized = this->lastmouseposition; - const SbVec2s pos(ev->getPosition()); - const SbVec2f posn((float) pos[0] / (float) std::max((int)(size[0] - 1), 1), - (float) pos[1] / (float) std::max((int)(size[1] - 1), 1)); + const SbVec2f posn = getNormalizedPosition(ev, vp); + const SbVec2f prevnormalized = this->lastmouseposition; this->lastmouseposition = posn; + const SbVec2s pos(ev->getPosition()); // Set to true if any event processing happened. Note that it is not // necessary to restrict ourselves to only do one "action" for an diff --git a/src/Gui/RevitNavigationStyle.cpp b/src/Gui/RevitNavigationStyle.cpp index df547cd44c..8510dec8f2 100644 --- a/src/Gui/RevitNavigationStyle.cpp +++ b/src/Gui/RevitNavigationStyle.cpp @@ -88,13 +88,11 @@ SbBool RevitNavigationStyle::processSoEvent(const SoEvent * const ev) const SoType type(ev->getTypeId()); const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); - const SbVec2s size(vp.getViewportSizePixels()); - const SbVec2f prevnormalized = this->lastmouseposition; - const SbVec2s pos(ev->getPosition()); - const SbVec2f posn((float) pos[0] / (float) std::max((int)(size[0] - 1), 1), - (float) pos[1] / (float) std::max((int)(size[1] - 1), 1)); + const SbVec2f posn = getNormalizedPosition(ev, vp); + const SbVec2f prevnormalized = this->lastmouseposition; this->lastmouseposition = posn; + const SbVec2s pos(ev->getPosition()); // Set to true if any event processing happened. Note that it is not // necessary to restrict ourselves to only do one "action" for an diff --git a/src/Gui/TouchpadNavigationStyle.cpp b/src/Gui/TouchpadNavigationStyle.cpp index 4ee5b53e07..50d4d69672 100644 --- a/src/Gui/TouchpadNavigationStyle.cpp +++ b/src/Gui/TouchpadNavigationStyle.cpp @@ -88,13 +88,11 @@ SbBool TouchpadNavigationStyle::processSoEvent(const SoEvent * const ev) const SoType type(ev->getTypeId()); const SbViewportRegion & vp = viewer->getSoRenderManager()->getViewportRegion(); - const SbVec2s size(vp.getViewportSizePixels()); - const SbVec2f prevnormalized = this->lastmouseposition; - const SbVec2s pos(ev->getPosition()); - const SbVec2f posn((float) pos[0] / (float) std::max((int)(size[0] - 1), 1), - (float) pos[1] / (float) std::max((int)(size[1] - 1), 1)); + const SbVec2f posn = getNormalizedPosition(ev, vp); + const SbVec2f prevnormalized = this->lastmouseposition; this->lastmouseposition = posn; + const SbVec2s pos(ev->getPosition()); // Set to true if any event processing happened. Note that it is not // necessary to restrict ourselves to only do one "action" for an