Mercurial > hg > orthanc-stone
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 } |