Mercurial > hg > orthanc-stone
comparison Framework/dev.h @ 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 | 0cb925325470 |
children | d257ea56b7be |
comparison
equal
deleted
inserted
replaced
395:5f13809f3f76 | 396:ed7146fa2c98 |
---|---|
20 | 20 |
21 | 21 |
22 #pragma once | 22 #pragma once |
23 | 23 |
24 #include "Layers/FrameRenderer.h" | 24 #include "Layers/FrameRenderer.h" |
25 #include "Layers/LayerSourceBase.h" | 25 #include "Layers/VolumeSlicerBase.h" |
26 #include "Layers/SliceOutlineRenderer.h" | 26 #include "Layers/SliceOutlineRenderer.h" |
27 #include "Layers/LineLayerRenderer.h" | 27 #include "Layers/LineLayerRenderer.h" |
28 #include "Widgets/SliceViewerWidget.h" | 28 #include "Widgets/SliceViewerWidget.h" |
29 #include "Toolbox/DownloadStack.h" | 29 #include "Toolbox/DownloadStack.h" |
30 #include "Toolbox/GeometryToolbox.h" | 30 #include "Toolbox/GeometryToolbox.h" |
493 }; | 493 }; |
494 | 494 |
495 | 495 |
496 | 496 |
497 class VolumeImageSource : | 497 class VolumeImageSource : |
498 public LayerSourceBase, | 498 public VolumeSlicerBase, |
499 private ISlicedVolume::IObserver | 499 private ISlicedVolume::IObserver |
500 { | 500 { |
501 private: | 501 private: |
502 class RendererFactory : public LayerReadyMessage::IRendererFactory | 502 class RendererFactory : public LayerReadyMessage::IRendererFactory |
503 { | 503 { |
535 } | 535 } |
536 | 536 |
537 | 537 |
538 virtual void NotifyGeometryReady(const ISlicedVolume& volume) | 538 virtual void NotifyGeometryReady(const ISlicedVolume& volume) |
539 { | 539 { |
540 // These 3 values are only used to speed up the ILayerSource | 540 // These 3 values are only used to speed up the IVolumeSlicer |
541 axialGeometry_.reset(new VolumeImageGeometry(volume_, VolumeProjection_Axial)); | 541 axialGeometry_.reset(new VolumeImageGeometry(volume_, VolumeProjection_Axial)); |
542 coronalGeometry_.reset(new VolumeImageGeometry(volume_, VolumeProjection_Coronal)); | 542 coronalGeometry_.reset(new VolumeImageGeometry(volume_, VolumeProjection_Coronal)); |
543 sagittalGeometry_.reset(new VolumeImageGeometry(volume_, VolumeProjection_Sagittal)); | 543 sagittalGeometry_.reset(new VolumeImageGeometry(volume_, VolumeProjection_Sagittal)); |
544 | 544 |
545 LayerSourceBase::NotifyGeometryReady(); | 545 VolumeSlicerBase::NotifyGeometryReady(); |
546 } | 546 } |
547 | 547 |
548 virtual void NotifyGeometryError(const ISlicedVolume& volume) | 548 virtual void NotifyGeometryError(const ISlicedVolume& volume) |
549 { | 549 { |
550 LayerSourceBase::NotifyGeometryError(); | 550 VolumeSlicerBase::NotifyGeometryError(); |
551 } | 551 } |
552 | 552 |
553 virtual void NotifyContentChange(const ISlicedVolume& volume) | 553 virtual void NotifyContentChange(const ISlicedVolume& volume) |
554 { | 554 { |
555 LayerSourceBase::NotifyContentChange(); | 555 VolumeSlicerBase::NotifyContentChange(); |
556 } | 556 } |
557 | 557 |
558 virtual void NotifySliceChange(const ISlicedVolume& volume, | 558 virtual void NotifySliceChange(const ISlicedVolume& volume, |
559 const size_t& sliceIndex, | 559 const size_t& sliceIndex, |
560 const Slice& slice) | 560 const Slice& slice) |
561 { | 561 { |
562 //LayerSourceBase::NotifySliceChange(slice); | 562 //VolumeSlicerBase::NotifySliceChange(slice); |
563 | 563 |
564 // TODO Improve this? | 564 // TODO Improve this? |
565 LayerSourceBase::NotifyContentChange(); | 565 VolumeSlicerBase::NotifyContentChange(); |
566 } | 566 } |
567 | 567 |
568 virtual void NotifyVolumeReady(const ISlicedVolume& volume) | 568 virtual void NotifyVolumeReady(const ISlicedVolume& volume) |
569 { | 569 { |
570 } | 570 } |
626 } | 626 } |
627 | 627 |
628 | 628 |
629 public: | 629 public: |
630 VolumeImageSource(MessageBroker& broker, OrthancVolumeImage& volume) : | 630 VolumeImageSource(MessageBroker& broker, OrthancVolumeImage& volume) : |
631 LayerSourceBase(broker), | 631 VolumeSlicerBase(broker), |
632 volume_(volume) | 632 volume_(volume) |
633 { | 633 { |
634 volume_.Register(*this); | 634 volume_.Register(*this); |
635 } | 635 } |
636 | 636 |
681 } | 681 } |
682 | 682 |
683 std::auto_ptr<Slice> slice(geometry.GetSlice(closest)); | 683 std::auto_ptr<Slice> slice(geometry.GetSlice(closest)); |
684 | 684 |
685 RendererFactory factory(*frame, *slice, isFullQuality); | 685 RendererFactory factory(*frame, *slice, isFullQuality); |
686 LayerSourceBase::NotifyLayerReady(factory, | 686 VolumeSlicerBase::NotifyLayerReady(factory, |
687 //new SliceOutlineRenderer(slice), | 687 //new SliceOutlineRenderer(slice), |
688 slice->GetGeometry()); | 688 slice->GetGeometry()); |
689 return; | 689 return; |
690 } | 690 } |
691 } | 691 } |
692 | 692 |
693 // Error | 693 // Error |
694 CoordinateSystem3D slice; | 694 CoordinateSystem3D slice; |
695 LayerSourceBase::NotifyLayerError(slice); | 695 VolumeSlicerBase::NotifyLayerError(slice); |
696 } | 696 } |
697 }; | 697 }; |
698 | 698 |
699 | 699 |
700 class VolumeImageInteractor : | 700 class VolumeImageInteractor : |
860 } | 860 } |
861 }; | 861 }; |
862 | 862 |
863 | 863 |
864 | 864 |
865 class ReferenceLineSource : public LayerSourceBase | 865 class ReferenceLineSource : public VolumeSlicerBase |
866 { | 866 { |
867 private: | 867 private: |
868 class RendererFactory : public LayerReadyMessage::IRendererFactory | 868 class RendererFactory : public LayerReadyMessage::IRendererFactory |
869 { | 869 { |
870 private: | 870 private: |
897 SliceViewerWidget& otherPlane_; | 897 SliceViewerWidget& otherPlane_; |
898 | 898 |
899 public: | 899 public: |
900 ReferenceLineSource(MessageBroker& broker, | 900 ReferenceLineSource(MessageBroker& broker, |
901 SliceViewerWidget& otherPlane) : | 901 SliceViewerWidget& otherPlane) : |
902 LayerSourceBase(broker), | 902 VolumeSlicerBase(broker), |
903 otherPlane_(otherPlane) | 903 otherPlane_(otherPlane) |
904 { | 904 { |
905 NotifyGeometryReady(); | 905 NotifyGeometryReady(); |
906 } | 906 } |
907 | 907 |