comparison Framework/Widgets/SliceViewerWidget.cpp @ 396:ed7146fa2c98

rename ILayerSource as IVolumeSlicer, and OrthancFrameLayerSource as as DicomSeriesVolumeSlicer
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 10 Nov 2018 09:29:08 +0100
parents 17d54c028805
children 885e1ebd315c
comparison
equal deleted inserted replaced
395:5f13809f3f76 396:ed7146fa2c98
235 } 235 }
236 }; 236 };
237 237
238 238
239 bool SliceViewerWidget::LookupLayer(size_t& index /* out */, 239 bool SliceViewerWidget::LookupLayer(size_t& index /* out */,
240 const ILayerSource& layer) const 240 const IVolumeSlicer& layer) const
241 { 241 {
242 LayersIndex::const_iterator found = layersIndex_.find(&layer); 242 LayersIndex::const_iterator found = layersIndex_.find(&layer);
243 243
244 if (found == layersIndex_.end()) 244 if (found == layersIndex_.end())
245 { 245 {
254 } 254 }
255 } 255 }
256 256
257 257
258 void SliceViewerWidget::GetLayerExtent(Extent2D& extent, 258 void SliceViewerWidget::GetLayerExtent(Extent2D& extent,
259 ILayerSource& source) const 259 IVolumeSlicer& source) const
260 { 260 {
261 extent.Reset(); 261 extent.Reset();
262 262
263 std::vector<Vector> points; 263 std::vector<Vector> points;
264 if (source.GetExtent(points, plane_)) 264 if (source.GetExtent(points, plane_))
380 { 380 {
381 delete layers_[i]; 381 delete layers_[i];
382 } 382 }
383 } 383 }
384 384
385 void SliceViewerWidget::ObserveLayer(ILayerSource& layer) 385 void SliceViewerWidget::ObserveLayer(IVolumeSlicer& layer)
386 { 386 {
387 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, ILayerSource::GeometryReadyMessage> 387 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, IVolumeSlicer::GeometryReadyMessage>
388 (*this, &SliceViewerWidget::OnGeometryReady)); 388 (*this, &SliceViewerWidget::OnGeometryReady));
389 // currently ignore errors layer->RegisterObserverCallback(new Callable<SliceViewerWidget, ILayerSource::GeometryErrorMessage>(*this, &SliceViewerWidget::...)); 389 // currently ignore errors layer->RegisterObserverCallback(new Callable<SliceViewerWidget, IVolumeSlicer::GeometryErrorMessage>(*this, &SliceViewerWidget::...));
390 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, ILayerSource::SliceChangedMessage> 390 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, IVolumeSlicer::SliceChangedMessage>
391 (*this, &SliceViewerWidget::OnSliceChanged)); 391 (*this, &SliceViewerWidget::OnSliceChanged));
392 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, ILayerSource::ContentChangedMessage> 392 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, IVolumeSlicer::ContentChangedMessage>
393 (*this, &SliceViewerWidget::OnContentChanged)); 393 (*this, &SliceViewerWidget::OnContentChanged));
394 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, ILayerSource::LayerReadyMessage> 394 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, IVolumeSlicer::LayerReadyMessage>
395 (*this, &SliceViewerWidget::OnLayerReady)); 395 (*this, &SliceViewerWidget::OnLayerReady));
396 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, ILayerSource::LayerErrorMessage> 396 layer.RegisterObserverCallback(new Callable<SliceViewerWidget, IVolumeSlicer::LayerErrorMessage>
397 (*this, &SliceViewerWidget::OnLayerError)); 397 (*this, &SliceViewerWidget::OnLayerError));
398 } 398 }
399 399
400 400
401 size_t SliceViewerWidget::AddLayer(ILayerSource* layer) // Takes ownership 401 size_t SliceViewerWidget::AddLayer(IVolumeSlicer* layer) // Takes ownership
402 { 402 {
403 if (layer == NULL) 403 if (layer == NULL)
404 { 404 {
405 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); 405 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
406 } 406 }
418 418
419 return index; 419 return index;
420 } 420 }
421 421
422 422
423 void SliceViewerWidget::ReplaceLayer(size_t index, ILayerSource* layer) // Takes ownership 423 void SliceViewerWidget::ReplaceLayer(size_t index, IVolumeSlicer* layer) // Takes ownership
424 { 424 {
425 if (layer == NULL) 425 if (layer == NULL)
426 { 426 {
427 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer); 427 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
428 } 428 }
449 if (index >= layers_.size()) 449 if (index >= layers_.size())
450 { 450 {
451 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); 451 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
452 } 452 }
453 453
454 ILayerSource* previousLayer = layers_[index]; 454 IVolumeSlicer* previousLayer = layers_[index];
455 layersIndex_.erase(layersIndex_.find(previousLayer)); 455 layersIndex_.erase(layersIndex_.find(previousLayer));
456 layers_.erase(layers_.begin() + index); 456 layers_.erase(layers_.begin() + index);
457 changedLayers_.erase(changedLayers_.begin() + index); 457 changedLayers_.erase(changedLayers_.begin() + index);
458 styles_.erase(styles_.begin() + index); 458 styles_.erase(styles_.begin() + index);
459 459
526 InvalidateAllLayers(); // TODO Removing this line avoid loading twice the image in WASM 526 InvalidateAllLayers(); // TODO Removing this line avoid loading twice the image in WASM
527 } 527 }
528 } 528 }
529 529
530 530
531 void SliceViewerWidget::OnGeometryReady(const ILayerSource::GeometryReadyMessage& message) 531 void SliceViewerWidget::OnGeometryReady(const IVolumeSlicer::GeometryReadyMessage& message)
532 { 532 {
533 size_t i; 533 size_t i;
534 if (LookupLayer(i, message.GetOrigin())) 534 if (LookupLayer(i, message.GetOrigin()))
535 { 535 {
536 LOG(INFO) << ": Geometry ready for layer " << i << " in " << GetName(); 536 LOG(INFO) << ": Geometry ready for layer " << i << " in " << GetName();
566 566
567 //layers_[layer]->ScheduleLayerCreation(plane_); 567 //layers_[layer]->ScheduleLayerCreation(plane_);
568 } 568 }
569 569
570 570
571 void SliceViewerWidget::OnContentChanged(const ILayerSource::ContentChangedMessage& message) 571 void SliceViewerWidget::OnContentChanged(const IVolumeSlicer::ContentChangedMessage& message)
572 { 572 {
573 size_t index; 573 size_t index;
574 if (LookupLayer(index, message.GetOrigin())) 574 if (LookupLayer(index, message.GetOrigin()))
575 { 575 {
576 InvalidateLayer(index); 576 InvalidateLayer(index);
578 578
579 EmitMessage(SliceViewerWidget::ContentChangedMessage(*this)); 579 EmitMessage(SliceViewerWidget::ContentChangedMessage(*this));
580 } 580 }
581 581
582 582
583 void SliceViewerWidget::OnSliceChanged(const ILayerSource::SliceChangedMessage& message) 583 void SliceViewerWidget::OnSliceChanged(const IVolumeSlicer::SliceChangedMessage& message)
584 { 584 {
585 if (message.GetSlice().ContainsPlane(plane_)) 585 if (message.GetSlice().ContainsPlane(plane_))
586 { 586 {
587 size_t index; 587 size_t index;
588 if (LookupLayer(index, message.GetOrigin())) 588 if (LookupLayer(index, message.GetOrigin()))
593 593
594 EmitMessage(SliceViewerWidget::ContentChangedMessage(*this)); 594 EmitMessage(SliceViewerWidget::ContentChangedMessage(*this));
595 } 595 }
596 596
597 597
598 void SliceViewerWidget::OnLayerReady(const ILayerSource::LayerReadyMessage& message) 598 void SliceViewerWidget::OnLayerReady(const IVolumeSlicer::LayerReadyMessage& message)
599 { 599 {
600 size_t index; 600 size_t index;
601 if (LookupLayer(index, message.GetOrigin())) 601 if (LookupLayer(index, message.GetOrigin()))
602 { 602 {
603 LOG(INFO) << "Renderer ready for layer " << index; 603 LOG(INFO) << "Renderer ready for layer " << index;
606 606
607 EmitMessage(SliceViewerWidget::ContentChangedMessage(*this)); 607 EmitMessage(SliceViewerWidget::ContentChangedMessage(*this));
608 } 608 }
609 609
610 610
611 void SliceViewerWidget::OnLayerError(const ILayerSource::LayerErrorMessage& message) 611 void SliceViewerWidget::OnLayerError(const IVolumeSlicer::LayerErrorMessage& message)
612 { 612 {
613 size_t index; 613 size_t index;
614 if (LookupLayer(index, message.GetOrigin())) 614 if (LookupLayer(index, message.GetOrigin()))
615 { 615 {
616 LOG(ERROR) << "Using error renderer on layer " << index; 616 LOG(ERROR) << "Using error renderer on layer " << index;