comparison Framework/Widgets/LayerWidget.cpp @ 103:474d85e76499 wasm

mpr
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 31 May 2017 18:05:33 +0200
parents efd9ef2b67f1
children 53bd9277b025
comparison
equal deleted inserted replaced
102:fcec0ab44054 103:474d85e76499
373 layersIndex_[layer] = index; 373 layersIndex_[layer] = index;
374 374
375 ResetPendingScene(); 375 ResetPendingScene();
376 layer->Register(*this); 376 layer->Register(*this);
377 377
378 ResetChangedLayers();
379
378 return index; 380 return index;
379 } 381 }
380 382
381 383
382 void LayerWidget::SetLayerStyle(size_t layer, 384 void LayerWidget::SetLayerStyle(size_t layer,
433 { 435 {
434 size_t i; 436 size_t i;
435 if (LookupLayer(i, source)) 437 if (LookupLayer(i, source))
436 { 438 {
437 LOG(INFO) << "Geometry ready for layer " << i; 439 LOG(INFO) << "Geometry ready for layer " << i;
438 layers_[i]->ScheduleLayerCreation(slice_); 440
441 changedLayers_[i] = true;
442 //layers_[i]->ScheduleLayerCreation(slice_);
439 } 443 }
440 } 444 }
441 445
442 446
443 void LayerWidget::NotifyGeometryError(const ILayerSource& source) 447 void LayerWidget::NotifyGeometryError(const ILayerSource& source)
449 void LayerWidget::InvalidateAllLayers() 453 void LayerWidget::InvalidateAllLayers()
450 { 454 {
451 for (size_t i = 0; i < layers_.size(); i++) 455 for (size_t i = 0; i < layers_.size(); i++)
452 { 456 {
453 assert(layers_[i] != NULL); 457 assert(layers_[i] != NULL);
454 layers_[i]->ScheduleLayerCreation(slice_); 458 changedLayers_[i] = true;
459
460 //layers_[i]->ScheduleLayerCreation(slice_);
455 } 461 }
456 } 462 }
457 463
458 464
459 void LayerWidget::InvalidateLayer(size_t layer) 465 void LayerWidget::InvalidateLayer(size_t layer)
462 { 468 {
463 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); 469 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
464 } 470 }
465 471
466 assert(layers_[layer] != NULL); 472 assert(layers_[layer] != NULL);
467 layers_[layer]->ScheduleLayerCreation(slice_); 473 changedLayers_[layer] = true;
474
475 //layers_[layer]->ScheduleLayerCreation(slice_);
468 } 476 }
469 477
470 478
471 void LayerWidget::NotifyContentChange(const ILayerSource& source) 479 void LayerWidget::NotifyContentChange(const ILayerSource& source)
472 { 480 {
473 size_t index; 481 size_t index;
474 if (LookupLayer(index, source)) 482 if (LookupLayer(index, source))
475 { 483 {
476 layers_[index]->ScheduleLayerCreation(slice_); 484 InvalidateLayer(index);
477 } 485 }
478 } 486 }
479 487
480 488
481 void LayerWidget::NotifySliceChange(const ILayerSource& source, 489 void LayerWidget::NotifySliceChange(const ILayerSource& source,
484 if (slice.ContainsPlane(slice_)) 492 if (slice.ContainsPlane(slice_))
485 { 493 {
486 size_t index; 494 size_t index;
487 if (LookupLayer(index, source)) 495 if (LookupLayer(index, source))
488 { 496 {
489 layers_[index]->ScheduleLayerCreation(slice_); 497 InvalidateLayer(index);
490 } 498 }
491 } 499 }
492 } 500 }
493 501
494 502
519 { 527 {
520 UpdateLayer(index, new SliceOutlineRenderer(slice), slice); 528 UpdateLayer(index, new SliceOutlineRenderer(slice), slice);
521 } 529 }
522 } 530 }
523 } 531 }
532
533
534 void LayerWidget::ResetChangedLayers()
535 {
536 changedLayers_.resize(layers_.size());
537
538 for (size_t i = 0; i < changedLayers_.size(); i++)
539 {
540 changedLayers_[i] = false;
541 }
542 }
543
544
545 void LayerWidget::UpdateContent()
546 {
547 assert(changedLayers_.size() <= layers_.size());
548
549 for (size_t i = 0; i < changedLayers_.size(); i++)
550 {
551 if (changedLayers_[i])
552 {
553 layers_[i]->ScheduleLayerCreation(slice_);
554 }
555 }
556
557 ResetChangedLayers();
558 }
524 } 559 }