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)));