Mercurial > hg > orthanc-stone
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 { |