Mercurial > hg > orthanc-stone
comparison Framework/Scene2DViewport/LineMeasureTool.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 |
---|---|
30 | 30 |
31 namespace OrthancStone | 31 namespace OrthancStone |
32 { | 32 { |
33 | 33 |
34 LineMeasureTool::LineMeasureTool( | 34 LineMeasureTool::LineMeasureTool( |
35 IViewport& viewport) | 35 boost::shared_ptr<IViewport> viewport) |
36 : MeasureTool(viewport) | 36 : MeasureTool(viewport) |
37 #if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1 | 37 #if ORTHANC_STONE_ENABLE_OUTLINED_TEXT == 1 |
38 , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,5))) | 38 , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,5))) |
39 #else | 39 #else |
40 , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,1))) | 40 , layerHolder_(boost::shared_ptr<LayerHolder>(new LayerHolder(viewport,1,1))) |
42 , lineHighlightArea_(LineHighlightArea_None) | 42 , lineHighlightArea_(LineHighlightArea_None) |
43 { | 43 { |
44 | 44 |
45 } | 45 } |
46 | 46 |
47 boost::shared_ptr<LineMeasureTool> LineMeasureTool::Create(IViewport& viewport) | 47 boost::shared_ptr<LineMeasureTool> LineMeasureTool::Create(boost::shared_ptr<IViewport> viewport) |
48 { | 48 { |
49 boost::shared_ptr<LineMeasureTool> obj(new LineMeasureTool(viewport)); | 49 boost::shared_ptr<LineMeasureTool> obj(new LineMeasureTool(viewport)); |
50 obj->MeasureTool::PostConstructor(); | 50 obj->MeasureTool::PostConstructor(); |
51 obj->RefreshScene(); | 51 obj->RefreshScene(); |
52 return obj; | 52 return obj; |
114 SetLineHighlightArea(lineHighlightArea); | 114 SetLineHighlightArea(lineHighlightArea); |
115 } | 115 } |
116 | 116 |
117 LineMeasureTool::LineHighlightArea LineMeasureTool::LineHitTest(ScenePoint2D p) | 117 LineMeasureTool::LineHighlightArea LineMeasureTool::LineHitTest(ScenePoint2D p) |
118 { | 118 { |
119 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 119 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
120 ViewportController& controller = lock->GetController(); | 120 ViewportController& controller = lock->GetController(); |
121 Scene2D& scene = controller.GetScene(); | 121 Scene2D& scene = controller.GetScene(); |
122 | 122 |
123 const double pixelToScene = scene.GetCanvasToSceneTransform().ComputeZoom(); | 123 const double pixelToScene = scene.GetCanvasToSceneTransform().ComputeZoom(); |
124 const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = | 124 const double SQUARED_HIT_TEST_MAX_DISTANCE_SCENE_COORD = |
150 return LineHitTest(p) != LineHighlightArea_None; | 150 return LineHitTest(p) != LineHighlightArea_None; |
151 } | 151 } |
152 | 152 |
153 boost::shared_ptr<IFlexiblePointerTracker> LineMeasureTool::CreateEditionTracker(const PointerEvent& e) | 153 boost::shared_ptr<IFlexiblePointerTracker> LineMeasureTool::CreateEditionTracker(const PointerEvent& e) |
154 { | 154 { |
155 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 155 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
156 ViewportController& controller = lock->GetController(); | 156 ViewportController& controller = lock->GetController(); |
157 Scene2D& scene = controller.GetScene(); | 157 Scene2D& scene = controller.GetScene(); |
158 | 158 |
159 ScenePoint2D scenePos = e.GetMainPosition().Apply( | 159 ScenePoint2D scenePos = e.GetMainPosition().Apply( |
160 scene.GetCanvasToSceneTransform()); | 160 scene.GetCanvasToSceneTransform()); |
193 if (IsSceneAlive()) | 193 if (IsSceneAlive()) |
194 { | 194 { |
195 if (IsEnabled()) | 195 if (IsEnabled()) |
196 { | 196 { |
197 | 197 |
198 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 198 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
199 ViewportController& controller = lock->GetController(); | 199 ViewportController& controller = lock->GetController(); |
200 Scene2D& scene = controller.GetScene(); | 200 Scene2D& scene = controller.GetScene(); |
201 | 201 |
202 layerHolder_->CreateLayersIfNeeded(); | 202 layerHolder_->CreateLayersIfNeeded(); |
203 { | 203 { |