Mercurial > hg > orthanc-stone
comparison Framework/Scene2DViewport/AngleMeasureTool.cpp @ 1331:ab81ee8fce1f broker
- Viewport is not passed and stored as a shared_ptr instead
of raw reference.
- ViewportController can now be injected with an undo
stack (not a ctor param anymore, as a preparation for the
move of the undo stack to an interactor)
- Added (temp) flag to disable emscripten events registration
in the WebAssemblyViewport (because legacy client code
deals with them directly)
- Added emscripten_clear_timeout in ~WebGLViewportsRegistry
- Removed GenericToolbox::HoldingRef whose responsibility is
better served with proper callback un-registration.
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Mon, 30 Mar 2020 14:23:46 +0200 |
parents | 9b126de2cde2 |
children | 30deba7bc8e2 |
comparison
equal
deleted
inserted
replaced
1329:8d3e669f01a2 | 1331:ab81ee8fce1f |
---|---|
40 namespace OrthancStone | 40 namespace OrthancStone |
41 { | 41 { |
42 // the params in the LayerHolder ctor specify the number of polyline and text | 42 // the params in the LayerHolder ctor specify the number of polyline and text |
43 // layers | 43 // layers |
44 AngleMeasureTool::AngleMeasureTool( | 44 AngleMeasureTool::AngleMeasureTool( |
45 IViewport& viewport) | 45 boost::shared_ptr<IViewport> viewport) |
46 : MeasureTool(viewport) | 46 : MeasureTool(viewport) |
47 #if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1 | 47 #if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1 |
48 , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,5))) | 48 , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,5))) |
49 #else | 49 #else |
50 , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,1))) | 50 , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,1))) |
51 #endif | 51 #endif |
52 , angleHighlightArea_(AngleHighlightArea_None) | 52 , angleHighlightArea_(AngleHighlightArea_None) |
53 { | 53 { |
54 } | 54 } |
55 | 55 |
56 boost::shared_ptr<AngleMeasureTool> AngleMeasureTool::Create(IViewport& viewport) | 56 boost::shared_ptr<AngleMeasureTool> AngleMeasureTool::Create(boost::shared_ptr<IViewport> viewport) |
57 { | 57 { |
58 boost::shared_ptr<AngleMeasureTool> obj(new AngleMeasureTool(viewport)); | 58 boost::shared_ptr<AngleMeasureTool> obj(new AngleMeasureTool(viewport)); |
59 obj->MeasureTool::PostConstructor(); | 59 obj->MeasureTool::PostConstructor(); |
60 obj->RefreshScene(); | 60 obj->RefreshScene(); |
61 return obj; | 61 return obj; |
139 SetAngleHighlightArea(angleHighlightArea); | 139 SetAngleHighlightArea(angleHighlightArea); |
140 } | 140 } |
141 | 141 |
142 AngleMeasureTool::AngleHighlightArea AngleMeasureTool::AngleHitTest(ScenePoint2D p) const | 142 AngleMeasureTool::AngleHighlightArea AngleMeasureTool::AngleHitTest(ScenePoint2D p) const |
143 { | 143 { |
144 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 144 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
145 ViewportController& controller = lock->GetController(); | 145 ViewportController& controller = lock->GetController(); |
146 Scene2D& scene = controller.GetScene(); | 146 Scene2D& scene = controller.GetScene(); |
147 | 147 |
148 const double pixelToScene = scene.GetCanvasToSceneTransform().ComputeZoom(); | 148 const double pixelToScene = scene.GetCanvasToSceneTransform().ComputeZoom(); |
149 | 149 |
199 } | 199 } |
200 | 200 |
201 | 201 |
202 boost::shared_ptr<IFlexiblePointerTracker> AngleMeasureTool::CreateEditionTracker(const PointerEvent& e) | 202 boost::shared_ptr<IFlexiblePointerTracker> AngleMeasureTool::CreateEditionTracker(const PointerEvent& e) |
203 { | 203 { |
204 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 204 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
205 ViewportController& controller = lock->GetController(); | 205 ViewportController& controller = lock->GetController(); |
206 Scene2D& scene = controller.GetScene(); | 206 Scene2D& scene = controller.GetScene(); |
207 | 207 |
208 ScenePoint2D scenePos = e.GetMainPosition().Apply( | 208 ScenePoint2D scenePos = e.GetMainPosition().Apply( |
209 scene.GetCanvasToSceneTransform()); | 209 scene.GetCanvasToSceneTransform()); |
213 | 213 |
214 /** | 214 /** |
215 new EditLineMeasureTracker( | 215 new EditLineMeasureTracker( |
216 boost::shared_ptr<LineMeasureTool> measureTool; | 216 boost::shared_ptr<LineMeasureTool> measureTool; |
217 MessageBroker & broker, | 217 MessageBroker & broker, |
218 IViewport& viewport, | 218 boost::shared_ptr<IViewport> viewport, |
219 const PointerEvent & e); | 219 const PointerEvent & e); |
220 */ | 220 */ |
221 | 221 |
222 boost::shared_ptr<EditAngleMeasureTracker> editAngleMeasureTracker( | 222 boost::shared_ptr<EditAngleMeasureTracker> editAngleMeasureTracker( |
223 new EditAngleMeasureTracker(shared_from_this(), viewport_, e)); | 223 new EditAngleMeasureTracker(shared_from_this(), viewport_, e)); |
232 | 232 |
233 void AngleMeasureTool::RefreshScene() | 233 void AngleMeasureTool::RefreshScene() |
234 { | 234 { |
235 if (IsSceneAlive()) | 235 if (IsSceneAlive()) |
236 { | 236 { |
237 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 237 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
238 ViewportController& controller = lock->GetController(); | 238 ViewportController& controller = lock->GetController(); |
239 Scene2D& scene = controller.GetScene(); | 239 Scene2D& scene = controller.GetScene(); |
240 | 240 |
241 if (IsEnabled()) | 241 if (IsEnabled()) |
242 { | 242 { |