Mercurial > hg > orthanc-stone
comparison Framework/Radiography/RadiographyScene.cpp @ 503:77e0eb83ff63 am-touch-events
layers are now Observable and emitting LayerEdited messages
author | amazy |
---|---|
date | Tue, 26 Feb 2019 12:58:03 +0100 |
parents | aede9b042cb7 |
children | ce49eae4c887 |
comparison
equal
deleted
inserted
replaced
502:3ae7563b4fe1 | 503:77e0eb83ff63 |
---|---|
140 raii->SetIndex(index); | 140 raii->SetIndex(index); |
141 layers_[index] = raii.release(); | 141 layers_[index] = raii.release(); |
142 | 142 |
143 EmitMessage(GeometryChangedMessage(*this, *layer)); | 143 EmitMessage(GeometryChangedMessage(*this, *layer)); |
144 EmitMessage(ContentChangedMessage(*this, *layer)); | 144 EmitMessage(ContentChangedMessage(*this, *layer)); |
145 layer->RegisterObserverCallback(new Callable<RadiographyScene, RadiographyLayer::LayerEditedMessage>(*this, &RadiographyScene::OnLayerEdited)); | |
145 | 146 |
146 return *layer; | 147 return *layer; |
147 } | 148 } |
148 | 149 |
150 void RadiographyScene::OnLayerEdited(const RadiographyLayer::LayerEditedMessage& message) | |
151 { | |
152 EmitMessage(RadiographyScene::LayerEditedMessage(*this, message.GetOrigin())); | |
153 } | |
149 | 154 |
150 RadiographyScene::RadiographyScene(MessageBroker& broker) : | 155 RadiographyScene::RadiographyScene(MessageBroker& broker) : |
151 IObserver(broker), | 156 IObserver(broker), |
152 IObservable(broker), | 157 IObservable(broker), |
153 countLayers_(0), | 158 countLayers_(0), |
245 float width) | 250 float width) |
246 { | 251 { |
247 hasWindowing_ = true; | 252 hasWindowing_ = true; |
248 windowingCenter_ = center; | 253 windowingCenter_ = center; |
249 windowingWidth_ = width; | 254 windowingWidth_ = width; |
255 | |
256 EmitMessage(RadiographyScene::WindowingChangedMessage(*this)); | |
250 } | 257 } |
251 | 258 |
252 | 259 |
253 RadiographyLayer& RadiographyScene::LoadText(const Orthanc::Font& font, | 260 RadiographyLayer& RadiographyScene::LoadText(const Orthanc::Font& font, |
254 const std::string& utf8, | 261 const std::string& utf8, |
255 RadiographyLayer::Geometry* geometry) | 262 RadiographyLayer::Geometry* geometry) |
256 { | 263 { |
257 std::auto_ptr<RadiographyTextLayer> alpha(new RadiographyTextLayer(*this)); | 264 std::auto_ptr<RadiographyTextLayer> alpha(new RadiographyTextLayer(IObservable::GetBroker(), *this)); |
258 alpha->LoadText(font, utf8); | 265 alpha->LoadText(font, utf8); |
259 if (geometry != NULL) | 266 if (geometry != NULL) |
260 { | 267 { |
261 alpha->SetGeometry(*geometry); | 268 alpha->SetGeometry(*geometry); |
262 } | 269 } |
296 RadiographyLayer& RadiographyScene::LoadMask(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners, | 303 RadiographyLayer& RadiographyScene::LoadMask(const std::vector<Orthanc::ImageProcessing::ImagePoint>& corners, |
297 const RadiographyDicomLayer& dicomLayer, | 304 const RadiographyDicomLayer& dicomLayer, |
298 float foreground, | 305 float foreground, |
299 RadiographyLayer::Geometry* geometry) | 306 RadiographyLayer::Geometry* geometry) |
300 { | 307 { |
301 std::auto_ptr<RadiographyMaskLayer> mask(new RadiographyMaskLayer(*this, dicomLayer, foreground)); | 308 std::auto_ptr<RadiographyMaskLayer> mask(new RadiographyMaskLayer(IObservable::GetBroker(), *this, dicomLayer, foreground)); |
302 mask->SetCorners(corners); | 309 mask->SetCorners(corners); |
303 if (geometry != NULL) | 310 if (geometry != NULL) |
304 { | 311 { |
305 mask->SetGeometry(*geometry); | 312 mask->SetGeometry(*geometry); |
306 } | 313 } |
309 } | 316 } |
310 | 317 |
311 | 318 |
312 RadiographyLayer& RadiographyScene::LoadAlphaBitmap(Orthanc::ImageAccessor* bitmap, RadiographyLayer::Geometry *geometry) | 319 RadiographyLayer& RadiographyScene::LoadAlphaBitmap(Orthanc::ImageAccessor* bitmap, RadiographyLayer::Geometry *geometry) |
313 { | 320 { |
314 std::auto_ptr<RadiographyAlphaLayer> alpha(new RadiographyAlphaLayer(*this)); | 321 std::auto_ptr<RadiographyAlphaLayer> alpha(new RadiographyAlphaLayer(IObservable::GetBroker(), *this)); |
315 alpha->SetAlpha(bitmap); | 322 alpha->SetAlpha(bitmap); |
316 if (geometry != NULL) | 323 if (geometry != NULL) |
317 { | 324 { |
318 alpha->SetGeometry(*geometry); | 325 alpha->SetGeometry(*geometry); |
319 } | 326 } |
325 const std::string& instance, | 332 const std::string& instance, |
326 unsigned int frame, | 333 unsigned int frame, |
327 bool httpCompression, | 334 bool httpCompression, |
328 RadiographyLayer::Geometry* geometry) | 335 RadiographyLayer::Geometry* geometry) |
329 { | 336 { |
330 RadiographyDicomLayer& layer = dynamic_cast<RadiographyDicomLayer&>(RegisterLayer(new RadiographyDicomLayer)); | 337 RadiographyDicomLayer& layer = dynamic_cast<RadiographyDicomLayer&>(RegisterLayer(new RadiographyDicomLayer(IObservable::GetBroker(), *this))); |
331 layer.SetInstance(instance, frame); | 338 layer.SetInstance(instance, frame); |
332 | 339 |
333 if (geometry != NULL) | 340 if (geometry != NULL) |
334 { | 341 { |
335 layer.SetGeometry(*geometry); | 342 layer.SetGeometry(*geometry); |
369 } | 376 } |
370 | 377 |
371 | 378 |
372 RadiographyLayer& RadiographyScene::LoadDicomWebFrame(IWebService& web) | 379 RadiographyLayer& RadiographyScene::LoadDicomWebFrame(IWebService& web) |
373 { | 380 { |
374 RadiographyLayer& layer = RegisterLayer(new RadiographyDicomLayer); | 381 RadiographyLayer& layer = RegisterLayer(new RadiographyDicomLayer(IObservable::GetBroker(), *this)); |
375 | 382 |
376 | 383 |
377 return layer; | 384 return layer; |
378 } | 385 } |
379 | 386 |