Mercurial > hg > orthanc-stone
annotate OrthancStone/Sources/Scene2DViewport/ViewportController.h @ 1535:301571299212
DefaultViewportInteractor::SetWindowingLayer()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 07 Aug 2020 22:23:36 +0200 |
parents | 244ad1e4e76a |
children | a6f339d8e4c2 |
rev | line source |
---|---|
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1 /** |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
2 * Stone of Orthanc |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
1270
2d8ab34c8c91
upgrade to year 2020
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1020
diff
changeset
|
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
6 * |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
7 * This program is free software: you can redistribute it and/or |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Affero General Public License |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
9 * as published by the Free Software Foundation, either version 3 of |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
10 * the License, or (at your option) any later version. |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
11 * |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, but |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
15 * Affero General Public License for more details. |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
16 * |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Affero General Public License |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
19 **/ |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
20 |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
21 #pragma once |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
22 |
818
e42b491f1fb2
Removed typedefs to shared_ptr by making them explicit. Removed using namespace
Benjamin Golinvaux <bgo@osimis.io>
parents:
774
diff
changeset
|
23 #include "PredeclaredTypes.h" |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
24 |
1215
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
25 #include "../Messages/IObservable.h" |
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
26 #include "../Scene2D/Scene2D.h" |
736
c0fcb2757b0a
enforce relative includes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
722
diff
changeset
|
27 #include "../Scene2DViewport/IFlexiblePointerTracker.h" |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
28 |
1455
30deba7bc8e2
simplifying include_directories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1331
diff
changeset
|
29 #include <Compatibility.h> |
1299
c38c89684d83
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1279
diff
changeset
|
30 |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
31 #include <boost/enable_shared_from_this.hpp> |
722
28b9e3a54200
Undo mechanism implemented (not connected to UI yet). Undo stack and measuring
Benjamin Golinvaux <bgo@osimis.io>
parents:
721
diff
changeset
|
32 #include <stack> |
28b9e3a54200
Undo mechanism implemented (not connected to UI yet). Undo stack and measuring
Benjamin Golinvaux <bgo@osimis.io>
parents:
721
diff
changeset
|
33 |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
34 namespace OrthancStone |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
35 { |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
36 // TODO - Move this to another file |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
37 class IViewportInteractor : public boost::noncopyable |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
38 { |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
39 public: |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
40 virtual ~IViewportInteractor() |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
41 { |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
42 } |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
43 |
1331
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
44 virtual IFlexiblePointerTracker* CreateTracker(boost::shared_ptr<IViewport> viewport, |
1215
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
45 const PointerEvent& event, |
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
46 unsigned int viewportWidth, |
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
47 unsigned int viewportHeight) = 0; |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
48 }; |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
49 |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
50 |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
51 // TODO - Move this to another file |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
52 class DefaultViewportInteractor : public IViewportInteractor |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
53 { |
1535
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
54 private: |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
55 // Index of the layer whose windowing is altered by clicking the |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
56 // left mouse button |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
57 int windowingLayer_; |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
58 |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
59 public: |
1535
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
60 DefaultViewportInteractor() : |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
61 windowingLayer_(0) |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
62 { |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
63 } |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
64 |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
65 int GetWindowingLayer() const |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
66 { |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
67 return windowingLayer_; |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
68 } |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
69 |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
70 void SetWindowingLayer(int layerIndex) |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
71 { |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
72 windowingLayer_ = layerIndex; |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
73 } |
301571299212
DefaultViewportInteractor::SetWindowingLayer()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1512
diff
changeset
|
74 |
1331
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
75 virtual IFlexiblePointerTracker* CreateTracker(boost::shared_ptr<IViewport> viewport, |
1215
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
76 const PointerEvent& event, |
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
77 unsigned int viewportWidth, |
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
78 unsigned int viewportHeight) ORTHANC_OVERRIDE; |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
79 }; |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
80 |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
81 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
82 class UndoStack; |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
83 |
774
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
84 const double ARC_RADIUS_CANVAS_COORD = 30.0; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
85 const double TEXT_CENTER_DISTANCE_CANVAS_COORD = 90; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
86 |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
87 const double HANDLE_SIDE_LENGTH_CANVAS_COORD = 10.0; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
88 const double HIT_TEST_MAX_DISTANCE_CANVAS_COORD = 15.0; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
89 |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
90 const uint8_t TEXT_COLOR_RED = 0; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
91 const uint8_t TEXT_COLOR_GREEN = 223; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
92 const uint8_t TEXT_COLOR_BLUE = 81; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
93 |
865
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
94 const uint8_t TOOL_ANGLE_LINES_COLOR_RED = 0; |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
95 const uint8_t TOOL_ANGLE_LINES_COLOR_GREEN = 183; |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
96 const uint8_t TOOL_ANGLE_LINES_COLOR_BLUE = 17; |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
97 |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
98 const uint8_t TOOL_ANGLE_LINES_HL_COLOR_RED = 0; |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
99 const uint8_t TOOL_ANGLE_LINES_HL_COLOR_GREEN = 17; |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
100 const uint8_t TOOL_ANGLE_LINES_HL_COLOR_BLUE = 183; |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
101 |
774
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
102 const uint8_t TOOL_LINES_COLOR_RED = 0; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
103 const uint8_t TOOL_LINES_COLOR_GREEN = 223; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
104 const uint8_t TOOL_LINES_COLOR_BLUE = 21; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
105 |
865
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
106 const uint8_t TOOL_LINES_HL_COLOR_RED = 0; |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
107 const uint8_t TOOL_LINES_HL_COLOR_GREEN = 21; |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
108 const uint8_t TOOL_LINES_HL_COLOR_BLUE = 223; |
774
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
109 |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
110 const uint8_t TEXT_OUTLINE_COLOR_RED = 0; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
111 const uint8_t TEXT_OUTLINE_COLOR_GREEN = 56; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
112 const uint8_t TEXT_OUTLINE_COLOR_BLUE = 21; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
113 |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
114 /** |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
115 This object is responsible for hosting a scene, responding to messages from |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
116 the model and updating the scene accordingly. |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
117 |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
118 It contains the list of active measuring tools as well as the stack |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
119 where measuring tool commands are stored. |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
120 |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
121 The active tracker is also stored in the viewport controller. |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
122 |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
123 Each canvas or other GUI area where we want to display a 2D image, either |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
124 directly or through slicing must be assigned a ViewportController. |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
125 */ |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
126 class ViewportController : |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
127 public IObservable, |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
128 public boost::enable_shared_from_this<ViewportController> |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
129 { |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
130 public: |
700
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
131 ORTHANC_STONE_DEFINE_ORIGIN_MESSAGE(__FILE__, __LINE__, \ |
1331
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
132 SceneTransformChanged, \ |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
133 ViewportController); |
700
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
134 |
1331
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
135 ViewportController(boost::shared_ptr<IViewport> viewport); |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
942
diff
changeset
|
136 |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
942
diff
changeset
|
137 ~ViewportController(); |
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
942
diff
changeset
|
138 |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
139 /** |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
140 This method returns the list of measure tools containing the supplied point |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
141 (in scene coords). A tracker can then be requested from the chosen |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
142 measure tool, if needed |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
143 */ |
1331
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
144 std::vector<boost::shared_ptr<MeasureTool> > HitTestMeasureTools( |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
145 ScenePoint2D p); |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
146 |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
147 /** |
865
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
148 This function will traverse the measuring tools and will clear their |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
149 highlighted state |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
150 */ |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
151 void ResetMeasuringToolsHighlight(); |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
152 |
a29c13497557
Added operators to ScenePoint2D + highlight support on MouseOver for measuring tools
Benjamin Golinvaux <bgo@osimis.io>
parents:
858
diff
changeset
|
153 /** |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
154 With this method, the object takes ownership of the supplied tracker and |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
155 updates it according to user interaction |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
156 */ |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
157 void AcquireActiveTracker(IFlexiblePointerTracker* tracker); |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
158 |
700
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
159 /** Forwarded to the underlying scene */ |
1203
f3bb9a6dd949
locking abstraction in IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1059
diff
changeset
|
160 AffineTransform2D GetCanvasToSceneTransform() const; |
700
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
161 |
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
162 /** Forwarded to the underlying scene */ |
1203
f3bb9a6dd949
locking abstraction in IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1059
diff
changeset
|
163 AffineTransform2D GetSceneToCanvasTransform() const; |
700
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
164 |
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
165 /** Forwarded to the underlying scene, and broadcasted to the observers */ |
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
166 void SetSceneToCanvasTransform(const AffineTransform2D& transform); |
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
167 |
721
af0aa0c149fa
FitContent is now wrapped by the controller (for observability)
Benjamin Golinvaux <bgo@osimis.io>
parents:
700
diff
changeset
|
168 /** Forwarded to the underlying scene, and broadcasted to the observers */ |
1215
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
169 void FitContent(unsigned int viewportWidth, |
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
170 unsigned int viewportHeight); |
700
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
698
diff
changeset
|
171 |
722
28b9e3a54200
Undo mechanism implemented (not connected to UI yet). Undo stack and measuring
Benjamin Golinvaux <bgo@osimis.io>
parents:
721
diff
changeset
|
172 /** Adds a new measure tool */ |
818
e42b491f1fb2
Removed typedefs to shared_ptr by making them explicit. Removed using namespace
Benjamin Golinvaux <bgo@osimis.io>
parents:
774
diff
changeset
|
173 void AddMeasureTool(boost::shared_ptr<MeasureTool> measureTool); |
722
28b9e3a54200
Undo mechanism implemented (not connected to UI yet). Undo stack and measuring
Benjamin Golinvaux <bgo@osimis.io>
parents:
721
diff
changeset
|
174 |
28b9e3a54200
Undo mechanism implemented (not connected to UI yet). Undo stack and measuring
Benjamin Golinvaux <bgo@osimis.io>
parents:
721
diff
changeset
|
175 /** Removes a measure tool or throws if it cannot be found */ |
818
e42b491f1fb2
Removed typedefs to shared_ptr by making them explicit. Removed using namespace
Benjamin Golinvaux <bgo@osimis.io>
parents:
774
diff
changeset
|
176 void RemoveMeasureTool(boost::shared_ptr<MeasureTool> measureTool); |
722
28b9e3a54200
Undo mechanism implemented (not connected to UI yet). Undo stack and measuring
Benjamin Golinvaux <bgo@osimis.io>
parents:
721
diff
changeset
|
177 |
774
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
178 /** |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
179 The square handle side length in *scene* coordinates |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
180 */ |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
181 double GetHandleSideLengthS() const; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
182 |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
183 /** |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
184 The angle measure too arc radius in *scene* coordinates |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
185 |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
186 Note: you might wonder why this is not part of the AngleMeasureTool itself, |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
187 but we prefer to put all such constants in the same location, to ease |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
188 */ |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
189 double GetAngleToolArcRadiusS() const; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
190 |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
191 /** |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
192 The hit test maximum distance in *scene* coordinates. |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
193 If a pointer event is less than GetHandleSideLengthS() to a GUI element, |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
194 the hit test for this GUI element is seen as true |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
195 */ |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
196 double GetHitTestMaximumDistanceS() const; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
197 |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
198 /** |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
199 Distance between the top of the angle measuring tool and the center of |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
200 the label showing the actual measure, in *scene* coordinates |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
201 */ |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
202 double GetAngleTopTextLabelDistanceS() const; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
203 |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
204 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
205 /** forwarded to the UndoStack */ |
1020
ac88989817e3
TrackerCommand --> MeasureCommand + fuse against exception in MeasureTool dtor
Benjamin Golinvaux <bgo@osimis.io>
parents:
942
diff
changeset
|
206 void PushCommand(boost::shared_ptr<MeasureCommand> command); |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
207 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
208 /** forwarded to the UndoStack */ |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
209 void Undo(); |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
210 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
211 /** forwarded to the UndoStack */ |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
212 void Redo(); |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
213 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
214 /** forwarded to the UndoStack */ |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
215 bool CanUndo() const; |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
216 |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
217 /** forwarded to the UndoStack */ |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
218 bool CanRedo() const; |
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
219 |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
220 |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
221 // Must be expressed in canvas coordinates |
1215
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
222 void HandleMousePress(IViewportInteractor& interactor, |
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
223 const PointerEvent& event, |
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
224 unsigned int viewportWidth, |
9efa66d8d3f8
removed ViewportBase, and removed dependency of ViewportController on IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1214
diff
changeset
|
225 unsigned int viewportHeight); |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
226 |
1249
964c89e15e7e
ViewportController::HandleMouseMove() returning a Boolean for invalidation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
227 // Must be expressed in canvas coordinates. Returns "true" if the |
964c89e15e7e
ViewportController::HandleMouseMove() returning a Boolean for invalidation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
228 // state has changed, so that "Invalidate()" can be called. |
964c89e15e7e
ViewportController::HandleMouseMove() returning a Boolean for invalidation
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1232
diff
changeset
|
229 bool HandleMouseMove(const PointerEvent& event); |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
230 |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
231 // Must be expressed in canvas coordinates |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
232 void HandleMouseRelease(const PointerEvent& event); |
891
0aff28f15ea2
new abstraction: IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
865
diff
changeset
|
233 |
0aff28f15ea2
new abstraction: IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
865
diff
changeset
|
234 const Scene2D& GetScene() const |
0aff28f15ea2
new abstraction: IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
865
diff
changeset
|
235 { |
1232
a28861abf888
viewports for WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1218
diff
changeset
|
236 return *scene_; |
1213
86a8266b8888
moving the scene from IViewport to ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1210
diff
changeset
|
237 } |
86a8266b8888
moving the scene from IViewport to ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1210
diff
changeset
|
238 |
86a8266b8888
moving the scene from IViewport to ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1210
diff
changeset
|
239 Scene2D& GetScene() |
86a8266b8888
moving the scene from IViewport to ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1210
diff
changeset
|
240 { |
1232
a28861abf888
viewports for WebAssembly
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1218
diff
changeset
|
241 return *scene_; |
1213
86a8266b8888
moving the scene from IViewport to ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1210
diff
changeset
|
242 } |
86a8266b8888
moving the scene from IViewport to ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1210
diff
changeset
|
243 |
1331
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
244 /** |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
245 This method is used in a move pattern: when the ownership of the scene |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
246 managed by this viewport controller must be transferred to another |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
247 controller. |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
248 */ |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
249 Scene2D* ReleaseScene() |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
250 { |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
251 return scene_.release(); |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
252 } |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
253 |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
254 /** |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
255 This method is used when one wishes to replace the scene that is currently |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
256 managed by the controller. The previous scene is deleted and the controller |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
257 now has ownership of the new one. |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
258 */ |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
259 void AcquireScene(Scene2D* scene) |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
260 { |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
261 scene_.reset(scene); |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
262 } |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
263 |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
264 /** |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
265 Sets the undo stack that is used by PushCommand, Undo... |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
266 */ |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
267 void SetUndoStack(boost::weak_ptr<UndoStack> undoStackW) |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
268 { |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
269 undoStackW_ = undoStackW; |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
270 } |
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
271 |
1218
6f3f1ef347a3
fix OneGesturePointerTracker if mouse release is outside the canvas
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1216
diff
changeset
|
272 bool HasActiveTracker() const |
6f3f1ef347a3
fix OneGesturePointerTracker if mouse release is outside the canvas
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1216
diff
changeset
|
273 { |
6f3f1ef347a3
fix OneGesturePointerTracker if mouse release is outside the canvas
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1216
diff
changeset
|
274 return activeTracker_.get() != NULL; |
891
0aff28f15ea2
new abstraction: IViewport
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
865
diff
changeset
|
275 } |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
276 |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
277 private: |
774
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
278 double GetCanvasToSceneFactor() const; |
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
279 |
1331
ab81ee8fce1f
- Viewport is not passed and stored as a shared_ptr instead
Benjamin Golinvaux <bgo@osimis.io>
parents:
1308
diff
changeset
|
280 boost::shared_ptr<IViewport> viewport_; |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
281 boost::weak_ptr<UndoStack> undoStackW_; // Global stack, possibly shared by all viewports |
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
282 std::vector<boost::shared_ptr<MeasureTool> > measureTools_; |
1299
c38c89684d83
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1279
diff
changeset
|
283 boost::shared_ptr<IFlexiblePointerTracker> activeTracker_; // TODO - Couldn't this be a "std::unique_ptr"? |
858
e3c56d4f863f
GuiAdapter : mouse event routing in SDL + split the undo stack from the
Benjamin Golinvaux <bgo@osimis.io>
parents:
842
diff
changeset
|
284 |
1299
c38c89684d83
replacing std::auto_ptr by std::unique_ptr
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1279
diff
changeset
|
285 std::unique_ptr<Scene2D> scene_; |
1213
86a8266b8888
moving the scene from IViewport to ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1210
diff
changeset
|
286 |
774
66ac7a2d1e3a
A few renames and cleanups + moved GUI constants to controller + start work on
Benjamin Golinvaux <bgo@osimis.io>
parents:
736
diff
changeset
|
287 // this is cached |
1208
00e6bff9ea39
handling of mouse interactions in ViewportController
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1203
diff
changeset
|
288 double canvasToSceneFactor_; |
698
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
289 }; |
8b6adfb62a2f
Code is broken -- stashing ongoing work in a branch
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
290 } |