Mercurial > hg > orthanc-stone
comparison Framework/Volumes/ISlicedVolume.h @ 405:3942123602ba
removing ObserversRegistry
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sun, 11 Nov 2018 17:50:11 +0100 |
parents | 885e1ebd315c |
children | f87f28624b96 b70e9be013e4 |
comparison
equal
deleted
inserted
replaced
404:ba4ace20454e | 405:3942123602ba |
---|---|
19 **/ | 19 **/ |
20 | 20 |
21 | 21 |
22 #pragma once | 22 #pragma once |
23 | 23 |
24 #include "../Messages/IObservable.h" | |
24 #include "../Toolbox/Slice.h" | 25 #include "../Toolbox/Slice.h" |
25 | 26 |
26 namespace OrthancStone | 27 namespace OrthancStone |
27 { | 28 { |
28 class ISlicedVolume : public boost::noncopyable | 29 class ISlicedVolume : public IObservable |
29 { | 30 { |
30 public: | 31 public: |
31 class IObserver : public boost::noncopyable | 32 typedef OriginMessage<MessageType_SlicedVolume_ContentChanged, ISlicedVolume> ContentChangedMessage; |
33 typedef OriginMessage<MessageType_SlicedVolume_GeometryError, ISlicedVolume> GeometryErrorMessage; | |
34 typedef OriginMessage<MessageType_SlicedVolume_GeometryReady, ISlicedVolume> GeometryReadyMessage; | |
35 typedef OriginMessage<MessageType_SlicedVolume_VolumeReady, ISlicedVolume> VolumeReadyMessage; | |
36 | |
37 class SliceContentChangedMessage : | |
38 public OriginMessage<MessageType_SlicedVolume_SliceContentChanged, ISlicedVolume> | |
32 { | 39 { |
40 private: | |
41 size_t sliceIndex_; | |
42 const Slice& slice_; | |
43 | |
33 public: | 44 public: |
34 virtual ~IObserver() | 45 SliceContentChangedMessage(ISlicedVolume& origin, |
46 size_t sliceIndex, | |
47 const Slice& slice) : | |
48 OriginMessage(origin), | |
49 sliceIndex_(sliceIndex), | |
50 slice_(slice) | |
35 { | 51 { |
36 } | 52 } |
37 | 53 |
38 virtual void NotifyGeometryReady(const ISlicedVolume& volume) = 0; | 54 size_t GetSliceIndex() const |
39 | 55 { |
40 virtual void NotifyGeometryError(const ISlicedVolume& volume) = 0; | 56 return sliceIndex_; |
41 | 57 } |
42 // Triggered if the content of several slices in the volume has | |
43 // changed | |
44 virtual void NotifyContentChange(const ISlicedVolume& volume) = 0; | |
45 | 58 |
46 // Triggered if the content of some individual slice in the | 59 const Slice& GetSlice() const |
47 // source volume has changed | 60 { |
48 virtual void NotifySliceContentChange(const ISlicedVolume& volume, | 61 return slice_; |
49 const size_t& sliceIndex, | 62 } |
50 const Slice& slice) = 0; | 63 }; |
51 | 64 |
52 // Triggered when the geometry *and* the content of the volume are available | 65 |
53 virtual void NotifyVolumeReady(const ISlicedVolume& volume) = 0; | 66 ISlicedVolume(MessageBroker& broker) : |
54 }; | 67 IObservable(broker) |
55 | |
56 virtual ~ISlicedVolume() | |
57 { | 68 { |
58 } | 69 } |
59 | 70 |
60 virtual void Register(IObserver& observer) = 0; | |
61 | |
62 virtual size_t GetSliceCount() const = 0; | 71 virtual size_t GetSliceCount() const = 0; |
63 | 72 |
64 virtual const Slice& GetSlice(size_t slice) const = 0; | 73 virtual const Slice& GetSlice(size_t slice) const = 0; |
65 }; | 74 }; |
66 } | 75 } |