Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/OrthancSlicesLoader.h @ 300:b4abaeb783b1 am-callable-and-promise
messaging refactoring almost complete: works fine in native
author | am@osimis.io |
---|---|
date | Tue, 18 Sep 2018 15:23:21 +0200 |
parents | 3897f9f28cfa |
children | 3a4ca166fafa |
comparison
equal
deleted
inserted
replaced
299:3897f9f28cfa | 300:b4abaeb783b1 |
---|---|
24 #include "IWebService.h" | 24 #include "IWebService.h" |
25 #include "SlicesSorter.h" | 25 #include "SlicesSorter.h" |
26 #include "../StoneEnumerations.h" | 26 #include "../StoneEnumerations.h" |
27 #include "../Messages/IObservable.h" | 27 #include "../Messages/IObservable.h" |
28 #include <boost/shared_ptr.hpp> | 28 #include <boost/shared_ptr.hpp> |
29 #include "OrthancApiClient.h" | |
29 | 30 |
30 namespace OrthancStone | 31 namespace OrthancStone |
31 { | 32 { |
32 class OrthancSlicesLoader : public IObservable | 33 class OrthancSlicesLoader : public IObservable, public IObserver |
33 { | 34 { |
34 public: | 35 public: |
35 | 36 |
36 typedef OriginMessage<MessageType_SliceLoader_GeometryReady, OrthancSlicesLoader> SliceGeometryReadyMessage; | 37 typedef OriginMessage<MessageType_SliceLoader_GeometryReady, OrthancSlicesLoader> SliceGeometryReadyMessage; |
37 typedef OriginMessage<MessageType_SliceLoader_GeometryError, OrthancSlicesLoader> SliceGeometryErrorMessage; | 38 typedef OriginMessage<MessageType_SliceLoader_GeometryError, OrthancSlicesLoader> SliceGeometryErrorMessage; |
91 Mode_LoadRawImage, | 92 Mode_LoadRawImage, |
92 Mode_LoadDicomFile | 93 Mode_LoadDicomFile |
93 }; | 94 }; |
94 | 95 |
95 class Operation; | 96 class Operation; |
96 class WebCallback; | |
97 | 97 |
98 boost::shared_ptr<WebCallback> webCallback_; // This is a PImpl pattern | 98 OrthancApiClient& orthanc_; |
99 | |
100 IWebService& orthanc_; | |
101 State state_; | 99 State state_; |
102 SlicesSorter slices_; | 100 SlicesSorter slices_; |
103 | 101 |
104 void NotifySliceImageSuccess(const Operation& operation, | 102 void NotifySliceImageSuccess(const Operation& operation, |
105 std::auto_ptr<Orthanc::ImageAccessor>& image); | 103 std::auto_ptr<Orthanc::ImageAccessor>& image); |
106 | 104 |
107 void NotifySliceImageError(const Operation& operation); | 105 void NotifySliceImageError(const Operation& operation); |
108 | |
109 void ParseSeriesGeometry(const void* answer, | |
110 size_t size); | |
111 | 106 |
112 void ParseInstanceGeometry(const std::string& instanceId, | 107 void OnGeometryError(const OrthancApiClient::HttpErrorMessage& message); |
113 const void* answer, | 108 void OnSliceImageError(const OrthancApiClient::HttpErrorMessage& message); |
114 size_t size); | |
115 | 109 |
116 void ParseFrameGeometry(const std::string& instanceId, | 110 void ParseSeriesGeometry(const OrthancApiClient::JsonResponseReadyMessage& message); |
117 unsigned int frame, | |
118 const void* answer, | |
119 size_t size); | |
120 | 111 |
121 void ParseSliceImagePng(const Operation& operation, | 112 void ParseInstanceGeometry(const OrthancApiClient::JsonResponseReadyMessage& message); |
122 const void* answer, | |
123 size_t size); | |
124 | 113 |
125 void ParseSliceImagePam(const Operation& operation, | 114 void ParseFrameGeometry(const OrthancApiClient::JsonResponseReadyMessage& message); |
126 const void* answer, | |
127 size_t size); | |
128 | 115 |
129 void ParseSliceImageJpeg(const Operation& operation, | 116 void ParseSliceImagePng(const OrthancApiClient::BinaryResponseReadyMessage& message); |
130 const void* answer, | |
131 size_t size); | |
132 | 117 |
133 void ParseSliceRawImage(const Operation& operation, | 118 void ParseSliceImagePam(const OrthancApiClient::BinaryResponseReadyMessage& message); |
134 const void* answer, | 119 |
135 size_t size); | 120 void ParseSliceImageJpeg(const OrthancApiClient::JsonResponseReadyMessage& message); |
121 | |
122 void ParseSliceRawImage(const OrthancApiClient::BinaryResponseReadyMessage& message); | |
136 | 123 |
137 void ScheduleSliceImagePng(const Slice& slice, | 124 void ScheduleSliceImagePng(const Slice& slice, |
138 size_t index); | 125 size_t index); |
139 | 126 |
140 void ScheduleSliceImagePam(const Slice& slice, | 127 void ScheduleSliceImagePam(const Slice& slice, |
147 void SortAndFinalizeSlices(); | 134 void SortAndFinalizeSlices(); |
148 | 135 |
149 public: | 136 public: |
150 OrthancSlicesLoader(MessageBroker& broker, | 137 OrthancSlicesLoader(MessageBroker& broker, |
151 //ISliceLoaderObserver& callback, | 138 //ISliceLoaderObserver& callback, |
152 IWebService& orthanc); | 139 OrthancApiClient& orthancApi); |
153 | 140 |
154 void ScheduleLoadSeries(const std::string& seriesId); | 141 void ScheduleLoadSeries(const std::string& seriesId); |
155 | 142 |
156 void ScheduleLoadInstance(const std::string& instanceId); | 143 void ScheduleLoadInstance(const std::string& instanceId); |
157 | 144 |
168 const CoordinateSystem3D& plane) const; | 155 const CoordinateSystem3D& plane) const; |
169 | 156 |
170 void ScheduleLoadSliceImage(size_t index, | 157 void ScheduleLoadSliceImage(size_t index, |
171 SliceImageQuality requestedQuality); | 158 SliceImageQuality requestedQuality); |
172 | 159 |
173 // virtual void HandleMessage(IObservable& from, const IMessage& message); | 160 |
174 }; | 161 }; |
175 } | 162 } |