Mercurial > hg > orthanc-stone
diff OrthancStone/Sources/Viewport/DefaultViewportInteractor.cpp @ 1561:cf652990abb1
tunable mouse actions
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 20 Aug 2020 17:44:35 +0200 |
parents | a6f339d8e4c2 |
children | c476b0d5e59c |
line wrap: on
line diff
--- a/OrthancStone/Sources/Viewport/DefaultViewportInteractor.cpp Thu Aug 20 13:57:52 2020 +0200 +++ b/OrthancStone/Sources/Viewport/DefaultViewportInteractor.cpp Thu Aug 20 17:44:35 2020 +0200 @@ -25,30 +25,64 @@ #include "../Scene2D/RotateSceneTracker.h" #include "../Scene2D/ZoomSceneTracker.h" +#include <OrthancException.h> + namespace OrthancStone { + IFlexiblePointerTracker* DefaultViewportInteractor::CreateTrackerInternal( + boost::shared_ptr<IViewport> viewport, + MouseAction action, + const PointerEvent& event, + unsigned int viewportWidth, + unsigned int viewportHeight) + { + switch (action) + { + case MouseAction_Rotate: + return new RotateSceneTracker(viewport, event); + + case MouseAction_GrayscaleWindowing: + return new GrayscaleWindowingSceneTracker( + viewport, windowingLayer_, event, viewportWidth, viewportHeight); + + case MouseAction_Pan: + return new PanSceneTracker(viewport, event); + + case MouseAction_Zoom: + return new ZoomSceneTracker(viewport, event, viewportHeight); + + default: + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); + } + } + + IFlexiblePointerTracker* DefaultViewportInteractor::CreateTracker( boost::shared_ptr<IViewport> viewport, const PointerEvent& event, unsigned int viewportWidth, unsigned int viewportHeight) { + MouseAction action; + switch (event.GetMouseButton()) { case MouseButton_Left: - //return new RotateSceneTracker(viewport, event); - - return new GrayscaleWindowingSceneTracker( - viewport, windowingLayer_, event, viewportWidth, viewportHeight); + action = leftButtonAction_; + break; case MouseButton_Middle: - return new PanSceneTracker(viewport, event); + action = middleButtonAction_; + break; case MouseButton_Right: - return new ZoomSceneTracker(viewport, event, viewportHeight); + action = rightButtonAction_; + break; default: return NULL; } + + return CreateTrackerInternal(viewport, action, event, viewportWidth, viewportHeight); } }