comparison 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
comparison
equal deleted inserted replaced
1560:b4ccd4963d37 1561:cf652990abb1
23 #include "../Scene2D/GrayscaleWindowingSceneTracker.h" 23 #include "../Scene2D/GrayscaleWindowingSceneTracker.h"
24 #include "../Scene2D/PanSceneTracker.h" 24 #include "../Scene2D/PanSceneTracker.h"
25 #include "../Scene2D/RotateSceneTracker.h" 25 #include "../Scene2D/RotateSceneTracker.h"
26 #include "../Scene2D/ZoomSceneTracker.h" 26 #include "../Scene2D/ZoomSceneTracker.h"
27 27
28 #include <OrthancException.h>
29
28 namespace OrthancStone 30 namespace OrthancStone
29 { 31 {
32 IFlexiblePointerTracker* DefaultViewportInteractor::CreateTrackerInternal(
33 boost::shared_ptr<IViewport> viewport,
34 MouseAction action,
35 const PointerEvent& event,
36 unsigned int viewportWidth,
37 unsigned int viewportHeight)
38 {
39 switch (action)
40 {
41 case MouseAction_Rotate:
42 return new RotateSceneTracker(viewport, event);
43
44 case MouseAction_GrayscaleWindowing:
45 return new GrayscaleWindowingSceneTracker(
46 viewport, windowingLayer_, event, viewportWidth, viewportHeight);
47
48 case MouseAction_Pan:
49 return new PanSceneTracker(viewport, event);
50
51 case MouseAction_Zoom:
52 return new ZoomSceneTracker(viewport, event, viewportHeight);
53
54 default:
55 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
56 }
57 }
58
59
30 IFlexiblePointerTracker* DefaultViewportInteractor::CreateTracker( 60 IFlexiblePointerTracker* DefaultViewportInteractor::CreateTracker(
31 boost::shared_ptr<IViewport> viewport, 61 boost::shared_ptr<IViewport> viewport,
32 const PointerEvent& event, 62 const PointerEvent& event,
33 unsigned int viewportWidth, 63 unsigned int viewportWidth,
34 unsigned int viewportHeight) 64 unsigned int viewportHeight)
35 { 65 {
66 MouseAction action;
67
36 switch (event.GetMouseButton()) 68 switch (event.GetMouseButton())
37 { 69 {
38 case MouseButton_Left: 70 case MouseButton_Left:
39 //return new RotateSceneTracker(viewport, event); 71 action = leftButtonAction_;
40 72 break;
41 return new GrayscaleWindowingSceneTracker(
42 viewport, windowingLayer_, event, viewportWidth, viewportHeight);
43 73
44 case MouseButton_Middle: 74 case MouseButton_Middle:
45 return new PanSceneTracker(viewport, event); 75 action = middleButtonAction_;
76 break;
46 77
47 case MouseButton_Right: 78 case MouseButton_Right:
48 return new ZoomSceneTracker(viewport, event, viewportHeight); 79 action = rightButtonAction_;
80 break;
49 81
50 default: 82 default:
51 return NULL; 83 return NULL;
52 } 84 }
85
86 return CreateTrackerInternal(viewport, action, event, viewportWidth, viewportHeight);
53 } 87 }
54 } 88 }