Mercurial > hg > orthanc-stone
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 } |