comparison Framework/Widgets/LayeredSceneWidget.cpp @ 61:ca644004d2ee wasm

MAJOR - removal of Start/Stop and observers in IWidget
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 10 May 2017 17:55:13 +0200
parents c2dc924f1a63
children f5f54ed8d307
comparison
equal deleted inserted replaced
60:288c948199e5 61:ca644004d2ee
393 393
394 394
395 bool LayeredSceneWidget::RenderScene(CairoContext& context, 395 bool LayeredSceneWidget::RenderScene(CairoContext& context,
396 const ViewportGeometry& view) 396 const ViewportGeometry& view)
397 { 397 {
398 assert(IsStarted());
399 return renderers_->RenderScene(context, view); 398 return renderers_->RenderScene(context, view);
400 } 399 }
401 400
402 401
403 LayeredSceneWidget::LayeredSceneWidget() 402 LayeredSceneWidget::LayeredSceneWidget()
488 487
489 488
490 ILayerRendererFactory& LayeredSceneWidget::AddLayer(size_t& layerIndex, 489 ILayerRendererFactory& LayeredSceneWidget::AddLayer(size_t& layerIndex,
491 ILayerRendererFactory* factory) 490 ILayerRendererFactory* factory)
492 { 491 {
493 if (IsStarted())
494 {
495 // Start() has already been invoked
496 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
497 }
498
499 layerIndex = layers_.size(); 492 layerIndex = layers_.size();
500 layers_.push_back(new Layer(factory, *pendingLayers_, layers_.size())); 493 layers_.push_back(new Layer(factory, *pendingLayers_, layers_.size()));
501 494
502 return *factory; 495 return *factory;
503 } 496 }
584 pendingLayers_->InvalidateAllLayers(); 577 pendingLayers_->InvalidateAllLayers();
585 //NotifyChange(); // TODO Understand why this makes the SDL engine not update the display subsequently 578 //NotifyChange(); // TODO Understand why this makes the SDL engine not update the display subsequently
586 } 579 }
587 580
588 581
582 #if 0
589 void LayeredSceneWidget::Start() 583 void LayeredSceneWidget::Start()
590 { 584 {
591 if (IsStarted())
592 {
593 // Start() has already been invoked
594 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
595 }
596
597 for (size_t i = 0; i < layers_.size(); i++) 585 for (size_t i = 0; i < layers_.size(); i++)
598 { 586 {
599 layers_[i]->Start(); 587 layers_[i]->Start();
600 } 588 }
601 589
608 } 596 }
609 597
610 598
611 void LayeredSceneWidget::Stop() 599 void LayeredSceneWidget::Stop()
612 { 600 {
613 if (!IsStarted())
614 {
615 // Stop() has already been invoked
616 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
617 }
618
619 pendingLayers_->Stop(); 601 pendingLayers_->Stop();
620 WorldSceneWidget::Stop();
621 602
622 renderers_.reset(NULL); 603 renderers_.reset(NULL);
623 pendingRenderers_.reset(NULL); 604 pendingRenderers_.reset(NULL);
624 605
625 for (size_t i = 0; i < layers_.size(); i++) 606 for (size_t i = 0; i < layers_.size(); i++)
626 { 607 {
627 layers_[i]->Stop(); 608 layers_[i]->Stop();
628 } 609 }
629 } 610 }
611 #endif
630 } 612 }