Mercurial > hg > orthanc-stone
annotate OrthancStone/Sources/Scene2D/MacroSceneLayer.cpp @ 1798:41f3872bd7d2
create angle tool and delete measure tool
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 20 May 2021 11:10:14 +0200 |
parents | 013dec434a84 |
children | 757987cb5a68 |
rev | line source |
---|---|
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Stone of Orthanc |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
1739
9ac2a65d4172
upgrade to year 2021
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1624
diff
changeset
|
5 * Copyright (C) 2017-2021 Osimis S.A., Belgium |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 * |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * This program is free software: you can redistribute it and/or |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Lesser General Public License |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 * as published by the Free Software Foundation, either version 3 of |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * the License, or (at your option) any later version. |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, but |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 * Lesser General Public License for more details. |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 * |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Lesser General Public |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 * License along with this program. If not, see |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 * <http://www.gnu.org/licenses/>. |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 **/ |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 #include "MacroSceneLayer.h" |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
25 #include <OrthancException.h> |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 namespace OrthancStone |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 { |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 void MacroSceneLayer::Clear() |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
30 { |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 for (size_t i = 0; i < layers_.size(); i++) |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 { |
1797
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
33 if (layers_[i] != NULL) |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
34 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
35 delete layers_[i]; |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
36 } |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
37 } |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
38 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
39 layers_.clear(); |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
40 BumpRevision(); |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
41 } |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
42 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
43 |
1793 | 44 size_t MacroSceneLayer::AddLayer(ISceneLayer* layer) |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
45 { |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
46 if (layer == NULL) |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
47 { |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
48 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
49 } |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
50 else |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
51 { |
1797
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
52 // TODO - Use recycling list from DeleteLayer() |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
53 |
1793 | 54 size_t index = layers_.size(); |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 layers_.push_back(layer); |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 BumpRevision(); |
1793 | 57 return index; |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
58 } |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
59 } |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
60 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
61 |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
62 void MacroSceneLayer::UpdateLayer(size_t index, |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
63 ISceneLayer* layer) |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
64 { |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
65 if (layer == NULL) |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
66 { |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
67 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
68 } |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
69 else if (index >= layers_.size()) |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
70 { |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
71 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
72 } |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
73 else |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
74 { |
1797
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
75 if (layers_[index] != NULL) |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
76 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
77 delete layers_[index]; |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
78 } |
1796
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
79 |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
80 layers_[index] = layer; |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
81 BumpRevision(); |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
82 } |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
83 } |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
84 |
20a0aba0ede5
creation of AnnotationsOverlay
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1793
diff
changeset
|
85 |
1797
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
86 bool MacroSceneLayer::HasLayer(size_t index) const |
1611
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
87 { |
1797
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
88 if (index >= layers_.size()) |
1611
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
89 { |
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
90 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); |
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
91 } |
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
92 else |
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
93 { |
1797
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
94 return (layers_[index] != NULL); |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
95 } |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
96 } |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
97 |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
98 |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
99 void MacroSceneLayer::DeleteLayer(size_t index) |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
100 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
101 if (index >= layers_.size()) |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
102 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
103 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
104 } |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
105 else if (layers_[index] == NULL) |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
106 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
107 throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem); |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
108 } |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
109 else |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
110 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
111 // TODO - Add to a recycling list |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
112 |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
113 delete layers_[index]; |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
114 layers_[index] = NULL; |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
115 } |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
116 } |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
117 |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
118 |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
119 const ISceneLayer& MacroSceneLayer::GetLayer(size_t index) const |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
120 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
121 if (index >= layers_.size()) |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
122 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
123 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
124 } |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
125 else if (layers_[index] == NULL) |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
126 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
127 throw Orthanc::OrthancException(Orthanc::ErrorCode_InexistentItem); |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
128 } |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
129 else |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
130 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
131 return *layers_[index]; |
1611
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
132 } |
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
133 } |
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
134 |
787db80a5a1b
new class MacroLayerRenderer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1610
diff
changeset
|
135 |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
136 ISceneLayer* MacroSceneLayer::Clone() const |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
137 { |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
138 std::unique_ptr<MacroSceneLayer> copy(new MacroSceneLayer); |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
139 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
140 for (size_t i = 0; i < layers_.size(); i++) |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
141 { |
1797
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
142 if (layers_[i] == NULL) |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
143 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
144 copy->layers_.push_back(NULL); |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
145 } |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
146 else |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
147 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
148 copy->layers_.push_back(layers_[i]->Clone()); |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
149 } |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
150 } |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
151 |
1797
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
152 // TODO - Copy recycling list |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
153 |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
154 return copy.release(); |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
155 } |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
156 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
157 |
1610
b7630b1a0253
ISceneLayer::GetBoundingBox() returns void
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1609
diff
changeset
|
158 void MacroSceneLayer::GetBoundingBox(Extent2D& target) const |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
159 { |
1610
b7630b1a0253
ISceneLayer::GetBoundingBox() returns void
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1609
diff
changeset
|
160 target.Clear(); |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
161 |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
162 for (size_t i = 0; i < layers_.size(); i++) |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
163 { |
1797
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
164 if (layers_[i] != NULL) |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
165 { |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
166 Extent2D subextent; |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
167 layers_[i]->GetBoundingBox(subextent); |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
168 target.Union(subextent); |
013dec434a84
creation of segment or circle measures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1796
diff
changeset
|
169 } |
1609
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
170 } |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
171 } |
5f5c549499ff
new class MacroSceneLayer
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
172 } |