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 }