Mercurial > hg > orthanc-stone
comparison Framework/Scene2DViewport/LayerHolder.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 | adf234ecaa00 |
children |
comparison
equal
deleted
inserted
replaced
1329:8d3e669f01a2 | 1331:ab81ee8fce1f |
---|---|
26 #include "../StoneException.h" | 26 #include "../StoneException.h" |
27 | 27 |
28 namespace OrthancStone | 28 namespace OrthancStone |
29 { | 29 { |
30 LayerHolder::LayerHolder( | 30 LayerHolder::LayerHolder( |
31 IViewport& viewport, | 31 boost::shared_ptr<IViewport> viewport, |
32 int polylineLayerCount, | 32 int polylineLayerCount, |
33 int textLayerCount, | 33 int textLayerCount, |
34 int infoTextCount) | 34 int infoTextCount) |
35 : textLayerCount_(textLayerCount) | 35 : textLayerCount_(textLayerCount) |
36 , polylineLayerCount_(polylineLayerCount) | 36 , polylineLayerCount_(polylineLayerCount) |
41 | 41 |
42 } | 42 } |
43 | 43 |
44 void LayerHolder::CreateLayers() | 44 void LayerHolder::CreateLayers() |
45 { | 45 { |
46 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 46 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
47 ViewportController& controller = lock->GetController(); | 47 ViewportController& controller = lock->GetController(); |
48 Scene2D& scene = controller.GetScene(); | 48 Scene2D& scene = controller.GetScene(); |
49 | 49 |
50 assert(baseLayerIndex_ == -1); | 50 assert(baseLayerIndex_ == -1); |
51 | 51 |
82 DeleteLayers(); | 82 DeleteLayers(); |
83 } | 83 } |
84 | 84 |
85 void LayerHolder::DeleteLayers() | 85 void LayerHolder::DeleteLayers() |
86 { | 86 { |
87 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 87 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
88 Scene2D& scene = lock->GetController().GetScene(); | 88 Scene2D& scene = lock->GetController().GetScene(); |
89 | 89 |
90 for (int i = 0; i < textLayerCount_ + polylineLayerCount_; ++i) | 90 for (int i = 0; i < textLayerCount_ + polylineLayerCount_; ++i) |
91 { | 91 { |
92 ORTHANC_ASSERT(scene.HasLayer(baseLayerIndex_ + i), "No layer"); | 92 ORTHANC_ASSERT(scene.HasLayer(baseLayerIndex_ + i), "No layer"); |
96 lock->Invalidate(); | 96 lock->Invalidate(); |
97 } | 97 } |
98 | 98 |
99 PolylineSceneLayer* LayerHolder::GetPolylineLayer(int index /*= 0*/) | 99 PolylineSceneLayer* LayerHolder::GetPolylineLayer(int index /*= 0*/) |
100 { | 100 { |
101 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 101 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
102 Scene2D& scene = lock->GetController().GetScene(); | 102 Scene2D& scene = lock->GetController().GetScene(); |
103 | 103 |
104 using namespace Orthanc; | 104 using namespace Orthanc; |
105 ORTHANC_ASSERT(baseLayerIndex_ != -1); | 105 ORTHANC_ASSERT(baseLayerIndex_ != -1); |
106 ORTHANC_ASSERT(scene.HasLayer(GetPolylineLayerIndex(index))); | 106 ORTHANC_ASSERT(scene.HasLayer(GetPolylineLayerIndex(index))); |
113 return concreteLayer; | 113 return concreteLayer; |
114 } | 114 } |
115 | 115 |
116 TextSceneLayer* LayerHolder::GetTextLayer(int index /*= 0*/) | 116 TextSceneLayer* LayerHolder::GetTextLayer(int index /*= 0*/) |
117 { | 117 { |
118 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); | 118 std::unique_ptr<IViewport::ILock> lock(viewport_->Lock()); |
119 Scene2D& scene = lock->GetController().GetScene(); | 119 Scene2D& scene = lock->GetController().GetScene(); |
120 | 120 |
121 using namespace Orthanc; | 121 using namespace Orthanc; |
122 ORTHANC_ASSERT(baseLayerIndex_ != -1); | 122 ORTHANC_ASSERT(baseLayerIndex_ != -1); |
123 ORTHANC_ASSERT(scene.HasLayer(GetTextLayerIndex(index))); | 123 ORTHANC_ASSERT(scene.HasLayer(GetTextLayerIndex(index))); |