comparison Framework/Scene2DViewport/LayerHolder.cpp @ 891:0aff28f15ea2

new abstraction: IViewport
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 10 Jul 2019 18:18:42 +0200
parents e42b491f1fb2
children 52b1c6ff10c5
comparison
equal deleted inserted replaced
890:77c96ba899f9 891:0aff28f15ea2
41 41
42 void LayerHolder::CreateLayers() 42 void LayerHolder::CreateLayers()
43 { 43 {
44 assert(baseLayerIndex_ == -1); 44 assert(baseLayerIndex_ == -1);
45 45
46 baseLayerIndex_ = GetScene()->GetMaxDepth() + 100; 46 baseLayerIndex_ = GetScene().GetMaxDepth() + 100;
47 47
48 for (int i = 0; i < polylineLayerCount_; ++i) 48 for (int i = 0; i < polylineLayerCount_; ++i)
49 { 49 {
50 std::auto_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer()); 50 std::auto_ptr<PolylineSceneLayer> layer(new PolylineSceneLayer());
51 GetScene()->SetLayer(baseLayerIndex_ + i, layer.release()); 51 GetScene().SetLayer(baseLayerIndex_ + i, layer.release());
52 } 52 }
53 53
54 for (int i = 0; i < textLayerCount_; ++i) 54 for (int i = 0; i < textLayerCount_; ++i)
55 { 55 {
56 std::auto_ptr<TextSceneLayer> layer(new TextSceneLayer()); 56 std::auto_ptr<TextSceneLayer> layer(new TextSceneLayer());
57 GetScene()->SetLayer( 57 GetScene().SetLayer(
58 baseLayerIndex_ + polylineLayerCount_ + i, 58 baseLayerIndex_ + polylineLayerCount_ + i,
59 layer.release()); 59 layer.release());
60 } 60 }
61 61
62 } 62 }
70 bool LayerHolder::AreLayersCreated() const 70 bool LayerHolder::AreLayersCreated() const
71 { 71 {
72 return (baseLayerIndex_ != -1); 72 return (baseLayerIndex_ != -1);
73 } 73 }
74 74
75 boost::shared_ptr<Scene2D> LayerHolder::GetScene() 75 Scene2D& LayerHolder::GetScene()
76 { 76 {
77 boost::shared_ptr<ViewportController> controller = controllerW_.lock(); 77 boost::shared_ptr<ViewportController> controller = controllerW_.lock();
78 ORTHANC_ASSERT(controller.get() != 0, "Zombie attack!"); 78 ORTHANC_ASSERT(controller.get() != 0, "Zombie attack!");
79 return controller->GetScene(); 79 return controller->GetScene();
80 } 80 }
81 81
82 void LayerHolder::DeleteLayers() 82 void LayerHolder::DeleteLayers()
83 { 83 {
84 for (int i = 0; i < textLayerCount_ + polylineLayerCount_; ++i) 84 for (int i = 0; i < textLayerCount_ + polylineLayerCount_; ++i)
85 { 85 {
86 ORTHANC_ASSERT(GetScene()->HasLayer(baseLayerIndex_ + i), "No layer"); 86 ORTHANC_ASSERT(GetScene().HasLayer(baseLayerIndex_ + i), "No layer");
87 GetScene()->DeleteLayer(baseLayerIndex_ + i); 87 GetScene().DeleteLayer(baseLayerIndex_ + i);
88 } 88 }
89 baseLayerIndex_ = -1; 89 baseLayerIndex_ = -1;
90 } 90 }
91 91
92 PolylineSceneLayer* LayerHolder::GetPolylineLayer(int index /*= 0*/) 92 PolylineSceneLayer* LayerHolder::GetPolylineLayer(int index /*= 0*/)
93 { 93 {
94 using namespace Orthanc; 94 using namespace Orthanc;
95 ORTHANC_ASSERT(baseLayerIndex_ != -1); 95 ORTHANC_ASSERT(baseLayerIndex_ != -1);
96 ORTHANC_ASSERT(GetScene()->HasLayer(GetPolylineLayerIndex(index))); 96 ORTHANC_ASSERT(GetScene().HasLayer(GetPolylineLayerIndex(index)));
97 ISceneLayer* layer = 97 ISceneLayer* layer =
98 &(GetScene()->GetLayer(GetPolylineLayerIndex(index))); 98 &(GetScene().GetLayer(GetPolylineLayerIndex(index)));
99 99
100 PolylineSceneLayer* concreteLayer = 100 PolylineSceneLayer* concreteLayer =
101 dynamic_cast<PolylineSceneLayer*>(layer); 101 dynamic_cast<PolylineSceneLayer*>(layer);
102 102
103 ORTHANC_ASSERT(concreteLayer != NULL); 103 ORTHANC_ASSERT(concreteLayer != NULL);
106 106
107 TextSceneLayer* LayerHolder::GetTextLayer(int index /*= 0*/) 107 TextSceneLayer* LayerHolder::GetTextLayer(int index /*= 0*/)
108 { 108 {
109 using namespace Orthanc; 109 using namespace Orthanc;
110 ORTHANC_ASSERT(baseLayerIndex_ != -1); 110 ORTHANC_ASSERT(baseLayerIndex_ != -1);
111 ORTHANC_ASSERT(GetScene()->HasLayer(GetTextLayerIndex(index))); 111 ORTHANC_ASSERT(GetScene().HasLayer(GetTextLayerIndex(index)));
112 ISceneLayer* layer = 112 ISceneLayer* layer =
113 &(GetScene()->GetLayer(GetTextLayerIndex(index))); 113 &(GetScene().GetLayer(GetTextLayerIndex(index)));
114 114
115 TextSceneLayer* concreteLayer = 115 TextSceneLayer* concreteLayer =
116 dynamic_cast<TextSceneLayer*>(layer); 116 dynamic_cast<TextSceneLayer*>(layer);
117 117
118 ORTHANC_ASSERT(concreteLayer != NULL); 118 ORTHANC_ASSERT(concreteLayer != NULL);