comparison Framework/Radiography/RadiographyScene.h @ 1201:ab958fd99b07

RadiographyScene fixes
author Alain Mazy <alain@mazy.be>
date Fri, 29 Nov 2019 16:21:24 +0100
parents 922d2e61aa5d
children 9added0d371e
comparison
equal deleted inserted replaced
1199:922d2e61aa5d 1201:ab958fd99b07
177 void OnDicomExported(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message); 177 void OnDicomExported(const Deprecated::OrthancApiClient::JsonResponseReadyMessage& message);
178 178
179 void OnDicomWebReceived(const Deprecated::IWebService::HttpRequestSuccessMessage& message); 179 void OnDicomWebReceived(const Deprecated::IWebService::HttpRequestSuccessMessage& message);
180 180
181 virtual void OnLayerEdited(const RadiographyLayer::LayerEditedMessage& message); 181 virtual void OnLayerEdited(const RadiographyLayer::LayerEditedMessage& message);
182
182 public: 183 public:
183 RadiographyScene(MessageBroker& broker); 184 RadiographyScene(MessageBroker& broker);
184 185
185 virtual ~RadiographyScene(); 186 virtual ~RadiographyScene();
186 187
199 200
200 RadiographyLayer& LoadText(const std::string& utf8, 201 RadiographyLayer& LoadText(const std::string& utf8,
201 unsigned int fontSize, 202 unsigned int fontSize,
202 uint8_t foreground, 203 uint8_t foreground,
203 RadiographyLayer::Geometry* geometry); 204 RadiographyLayer::Geometry* geometry);
204 205
206 RadiographyLayer& UpdateText(size_t layerIndex,
207 const std::string& utf8,
208 unsigned int fontSize,
209 uint8_t foreground);
210
205 RadiographyLayer& LoadTestBlock(unsigned int width, 211 RadiographyLayer& LoadTestBlock(unsigned int width,
206 unsigned int height, 212 unsigned int height,
207 RadiographyLayer::Geometry* geometry); 213 RadiographyLayer::Geometry* geometry);
208 214
209 RadiographyLayer& LoadMask(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners, 215 RadiographyLayer& LoadMask(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners,
229 235
230 RadiographyLayer& LoadDicomWebFrame(Deprecated::IWebService& web); 236 RadiographyLayer& LoadDicomWebFrame(Deprecated::IWebService& web);
231 237
232 void RemoveLayer(size_t layerIndex); 238 void RemoveLayer(size_t layerIndex);
233 239
240 RadiographyLayer& GetLayer(size_t layerIndex);
241
234 const RadiographyLayer& GetLayer(size_t layerIndex) const; 242 const RadiographyLayer& GetLayer(size_t layerIndex) const;
235 243
236 template <typename TypeLayer> 244 template <typename TypeLayer>
237 TypeLayer* GetLayer(size_t index = 0) 245 TypeLayer* GetTypedLayer(size_t indexOfType = 0)
238 { 246 {
239 std::vector<size_t> layerIndexes; 247 std::vector<size_t> layerIndexes;
240 GetLayersIndexes(layerIndexes); 248 GetLayersIndexes(layerIndexes);
241 249
242 size_t count = 0; 250 size_t count = 0;
244 for (size_t i = 0; i < layerIndexes.size(); ++i) 252 for (size_t i = 0; i < layerIndexes.size(); ++i)
245 { 253 {
246 TypeLayer* typedLayer = dynamic_cast<TypeLayer*>(layers_[layerIndexes[i]]); 254 TypeLayer* typedLayer = dynamic_cast<TypeLayer*>(layers_[layerIndexes[i]]);
247 if (typedLayer != NULL) 255 if (typedLayer != NULL)
248 { 256 {
249 if (count == index) 257 if (count == indexOfType)
250 {
251 return typedLayer;
252 }
253 count++;
254 }
255 }
256
257 return NULL;
258 }
259
260 template <typename TypeLayer>
261 const TypeLayer* GetLayer(size_t index = 0) const
262 {
263 std::vector<size_t> layerIndexes;
264 GetLayersIndexes(layerIndexes);
265
266 size_t count = 0;
267
268 for (size_t i = 0; i < layerIndexes.size(); ++i)
269 {
270 const TypeLayer* typedLayer = dynamic_cast<const TypeLayer*>(layers_.at(layerIndexes[i]));
271 if (typedLayer != NULL)
272 {
273 if (count == index)
274 { 258 {
275 return typedLayer; 259 return typedLayer;
276 } 260 }
277 count++; 261 count++;
278 } 262 }