comparison Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 2094:7c3d65166c26

partial integration dicom-sr->mainline
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 08 Nov 2023 14:54:15 +0100
parents 07964689cb0b
children ec676dbe85ac
comparison
equal deleted inserted replaced
2087:51c8b21b81e4 2094:7c3d65166c26
202 202
203 static const unsigned int DEFAULT_CINE_RATE = 30; 203 static const unsigned int DEFAULT_CINE_RATE = 30;
204 204
205 205
206 206
207 class IFramesCollection : public boost::noncopyable
208 {
209 public:
210 virtual ~IFramesCollection()
211 {
212 }
213
214 virtual size_t GetFramesCount() const = 0;
215
216 virtual const OrthancStone::DicomInstanceParameters& GetInstanceOfFrame(size_t frameIndex) const = 0;
217
218 virtual unsigned int GetFrameNumberInInstance(size_t frameIndex) const = 0;
219
220 virtual bool LookupFrame(size_t& frameIndex,
221 const std::string& sopInstanceUid,
222 unsigned int frameNumber) const = 0;
223
224 virtual bool FindClosestFrame(size_t& frameIndex,
225 const OrthancStone::Vector& point,
226 double maximumDistance) const = 0;
227
228 static OrthancStone::CoordinateSystem3D GetFrameGeometry(const IFramesCollection& frames,
229 size_t frameIndex)
230 {
231 return frames.GetInstanceOfFrame(frameIndex).GetFrameGeometry(frames.GetFrameNumberInInstance(frameIndex));
232 }
233 };
234
235
236 class SortedFramesCollection : public IFramesCollection
237 {
238 private:
239 std::unique_ptr<OrthancStone::SortedFrames> frames_;
240
241 public:
242 SortedFramesCollection(OrthancStone::SortedFrames* frames)
243 {
244 if (frames == NULL)
245 {
246 throw Orthanc::OrthancException(Orthanc::ErrorCode_NullPointer);
247 }
248 else
249 {
250 frames_.reset(frames);
251 }
252 }
253
254 virtual size_t GetFramesCount() const ORTHANC_OVERRIDE
255 {
256 return frames_->GetFramesCount();
257 }
258
259 const OrthancStone::DicomInstanceParameters& GetInstanceOfFrame(size_t frameIndex) const ORTHANC_OVERRIDE
260 {
261 return frames_->GetInstanceOfFrame(frameIndex);
262 }
263
264 virtual unsigned int GetFrameNumberInInstance(size_t frameIndex) const ORTHANC_OVERRIDE
265 {
266 return frames_->GetFrameNumberInInstance(frameIndex);
267 }
268
269 virtual bool LookupFrame(size_t& frameIndex,
270 const std::string& sopInstanceUid,
271 unsigned int frameNumber) const ORTHANC_OVERRIDE
272 {
273 return frames_->LookupFrame(frameIndex, sopInstanceUid, frameNumber);
274 }
275
276 virtual bool FindClosestFrame(size_t& frameIndex,
277 const OrthancStone::Vector& point,
278 double maximumDistance) const ORTHANC_OVERRIDE
279 {
280 return frames_->FindClosestFrame(frameIndex, point, maximumDistance);
281 };
282 };
283
284
207 class VirtualSeries : public boost::noncopyable 285 class VirtualSeries : public boost::noncopyable
208 { 286 {
209 private: 287 private:
210 class Item : public boost::noncopyable 288 class Item : public boost::noncopyable
211 { 289 {