Gui: [skip ci] add method NavigationStyle::getNormalizedPosition() to reduce code duplication

This commit is contained in:
wmayer
2021-11-02 15:57:54 +01:00
parent 3b7a758563
commit 0c59884e83
9 changed files with 32 additions and 35 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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