Mercurial > hg > orthanc-stone
diff 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 |
line wrap: on
line diff
--- a/Framework/Radiography/RadiographyScene.cpp Mon Feb 25 17:57:37 2019 +0100 +++ b/Framework/Radiography/RadiographyScene.cpp Tue Feb 26 12:58:03 2019 +0100 @@ -142,10 +142,15 @@ EmitMessage(GeometryChangedMessage(*this, *layer)); EmitMessage(ContentChangedMessage(*this, *layer)); + layer->RegisterObserverCallback(new Callable<RadiographyScene, RadiographyLayer::LayerEditedMessage>(*this, &RadiographyScene::OnLayerEdited)); return *layer; } + void RadiographyScene::OnLayerEdited(const RadiographyLayer::LayerEditedMessage& message) + { + EmitMessage(RadiographyScene::LayerEditedMessage(*this, message.GetOrigin())); + } RadiographyScene::RadiographyScene(MessageBroker& broker) : IObserver(broker), @@ -247,6 +252,8 @@ hasWindowing_ = true; windowingCenter_ = center; windowingWidth_ = width; + + EmitMessage(RadiographyScene::WindowingChangedMessage(*this)); } @@ -254,7 +261,7 @@ const std::string& utf8, RadiographyLayer::Geometry* geometry) { - std::auto_ptr<RadiographyTextLayer> alpha(new RadiographyTextLayer(*this)); + std::auto_ptr<RadiographyTextLayer> alpha(new RadiographyTextLayer(IObservable::GetBroker(), *this)); alpha->LoadText(font, utf8); if (geometry != NULL) { @@ -298,7 +305,7 @@ float foreground, RadiographyLayer::Geometry* geometry) { - std::auto_ptr<RadiographyMaskLayer> mask(new RadiographyMaskLayer(*this, dicomLayer, foreground)); + std::auto_ptr<RadiographyMaskLayer> mask(new RadiographyMaskLayer(IObservable::GetBroker(), *this, dicomLayer, foreground)); mask->SetCorners(corners); if (geometry != NULL) { @@ -311,7 +318,7 @@ RadiographyLayer& RadiographyScene::LoadAlphaBitmap(Orthanc::ImageAccessor* bitmap, RadiographyLayer::Geometry *geometry) { - std::auto_ptr<RadiographyAlphaLayer> alpha(new RadiographyAlphaLayer(*this)); + std::auto_ptr<RadiographyAlphaLayer> alpha(new RadiographyAlphaLayer(IObservable::GetBroker(), *this)); alpha->SetAlpha(bitmap); if (geometry != NULL) { @@ -327,7 +334,7 @@ bool httpCompression, RadiographyLayer::Geometry* geometry) { - RadiographyDicomLayer& layer = dynamic_cast<RadiographyDicomLayer&>(RegisterLayer(new RadiographyDicomLayer)); + RadiographyDicomLayer& layer = dynamic_cast<RadiographyDicomLayer&>(RegisterLayer(new RadiographyDicomLayer(IObservable::GetBroker(), *this))); layer.SetInstance(instance, frame); if (geometry != NULL) @@ -371,7 +378,7 @@ RadiographyLayer& RadiographyScene::LoadDicomWebFrame(IWebService& web) { - RadiographyLayer& layer = RegisterLayer(new RadiographyDicomLayer); + RadiographyLayer& layer = RegisterLayer(new RadiographyDicomLayer(IObservable::GetBroker(), *this)); return layer;