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 }