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