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