Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/OrthancSlicesLoader.h @ 252:40b21c1f8b8d am-2
more usage of IObservable/IObserver
author | am@osimis.io |
---|---|
date | Tue, 03 Jul 2018 10:26:56 +0200 |
parents | 192e6e349e69 |
children | 9afafb192180 |
comparison
equal
deleted
inserted
replaced
251:192e6e349e69 | 252:40b21c1f8b8d |
---|---|
30 namespace OrthancStone | 30 namespace OrthancStone |
31 { | 31 { |
32 class OrthancSlicesLoader : public boost::noncopyable | 32 class OrthancSlicesLoader : public boost::noncopyable |
33 { | 33 { |
34 public: | 34 public: |
35 class ICallback : public boost::noncopyable | 35 struct SliceImageReadyMessage : public IMessage |
36 { | |
37 unsigned int sliceIndex_; | |
38 const Slice& slice_; | |
39 std::auto_ptr<Orthanc::ImageAccessor>& image_; | |
40 SliceImageQuality effectiveQuality_; | |
41 | |
42 SliceImageReadyMessage(unsigned int sliceIndex, | |
43 const Slice& slice, | |
44 std::auto_ptr<Orthanc::ImageAccessor>& image, | |
45 SliceImageQuality effectiveQuality) | |
46 : IMessage(MessageType_SliceImageReady), | |
47 sliceIndex_(sliceIndex), | |
48 slice_(slice), | |
49 image_(image), | |
50 effectiveQuality_(effectiveQuality) | |
51 { | |
52 } | |
53 }; | |
54 | |
55 struct SliceImageErrorMessage : public IMessage | |
56 { | |
57 const Slice& slice_; | |
58 unsigned int sliceIndex_; | |
59 SliceImageQuality effectiveQuality_; | |
60 | |
61 SliceImageErrorMessage(unsigned int sliceIndex, | |
62 const Slice& slice, | |
63 SliceImageQuality effectiveQuality) | |
64 : IMessage(MessageType_SliceImageError), | |
65 slice_(slice), | |
66 sliceIndex_(sliceIndex), | |
67 effectiveQuality_(effectiveQuality) | |
68 { | |
69 } | |
70 }; | |
71 | |
72 public: | |
73 class ISliceLoaderObserver : public IObserver | |
36 { | 74 { |
37 public: | 75 public: |
38 virtual ~ICallback() | 76 |
77 ISliceLoaderObserver(MessageBroker& broker) | |
78 : IObserver(broker) | |
39 { | 79 { |
40 } | 80 } |
41 | 81 |
42 virtual void NotifyGeometryReady(const OrthancSlicesLoader& loader) = 0; | 82 virtual ~ISliceLoaderObserver() |
83 { | |
84 } | |
43 | 85 |
44 virtual void NotifyGeometryError(const OrthancSlicesLoader& loader) = 0; | 86 virtual void HandleMessage(IObservable& from, const IMessage& message); |
45 | 87 |
46 virtual void NotifySliceImageReady(const OrthancSlicesLoader& loader, | 88 virtual void OnSliceGeometryReady(const OrthancSlicesLoader& loader) = 0; |
89 | |
90 virtual void OnSliceGeometryError(const OrthancSlicesLoader& loader) = 0; | |
91 | |
92 virtual void OnSliceImageReady(const OrthancSlicesLoader& loader, | |
47 unsigned int sliceIndex, | 93 unsigned int sliceIndex, |
48 const Slice& slice, | 94 const Slice& slice, |
49 std::auto_ptr<Orthanc::ImageAccessor>& image, | 95 std::auto_ptr<Orthanc::ImageAccessor>& image, |
50 SliceImageQuality effectiveQuality) = 0; | 96 SliceImageQuality effectiveQuality) = 0; |
51 | 97 |
52 virtual void NotifySliceImageError(const OrthancSlicesLoader& loader, | 98 virtual void OnSliceImageError(const OrthancSlicesLoader& loader, |
53 unsigned int sliceIndex, | 99 unsigned int sliceIndex, |
54 const Slice& slice, | 100 const Slice& slice, |
55 SliceImageQuality quality) = 0; | 101 SliceImageQuality quality) = 0; |
56 }; | 102 }; |
57 | 103 |
76 class Operation; | 122 class Operation; |
77 class WebCallback; | 123 class WebCallback; |
78 | 124 |
79 boost::shared_ptr<WebCallback> webCallback_; // This is a PImpl pattern | 125 boost::shared_ptr<WebCallback> webCallback_; // This is a PImpl pattern |
80 | 126 |
81 ICallback& userCallback_; | 127 ISliceLoaderObserver& userCallback_; |
82 IWebService& orthanc_; | 128 IWebService& orthanc_; |
83 State state_; | 129 State state_; |
84 SlicesSorter slices_; | 130 SlicesSorter slices_; |
85 | 131 |
86 void NotifySliceImageSuccess(const Operation& operation, | 132 void NotifySliceImageSuccess(const Operation& operation, |
121 | 167 |
122 void SortAndFinalizeSlices(); | 168 void SortAndFinalizeSlices(); |
123 | 169 |
124 public: | 170 public: |
125 OrthancSlicesLoader(MessageBroker& broker, | 171 OrthancSlicesLoader(MessageBroker& broker, |
126 ICallback& callback, | 172 ISliceLoaderObserver& callback, |
127 IWebService& orthanc); | 173 IWebService& orthanc); |
128 | 174 |
129 void ScheduleLoadSeries(const std::string& seriesId); | 175 void ScheduleLoadSeries(const std::string& seriesId); |
130 | 176 |
131 void ScheduleLoadInstance(const std::string& instanceId); | 177 void ScheduleLoadInstance(const std::string& instanceId); |