Mercurial > hg > orthanc-stone
comparison OrthancStone/Sources/Toolbox/SortedFrames.h @ 1643:882e2253a90e
replacing SortedFrames::Instance by DicomInstanceParameters
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 10 Nov 2020 17:35:32 +0100 |
parents | 960bb5fcc440 |
children | 4796fb60999e |
comparison
equal
deleted
inserted
replaced
1642:5cc589bfb385 | 1643:882e2253a90e |
---|---|
21 | 21 |
22 | 22 |
23 #pragma once | 23 #pragma once |
24 | 24 |
25 #include "CoordinateSystem3D.h" | 25 #include "CoordinateSystem3D.h" |
26 #include "DicomInstanceParameters.h" | |
26 #include "LinearAlgebra.h" | 27 #include "LinearAlgebra.h" |
27 | 28 |
28 namespace OrthancStone | 29 namespace OrthancStone |
29 { | 30 { |
30 class SortedFrames : public boost::noncopyable | 31 class SortedFrames : public boost::noncopyable |
31 { | 32 { |
32 private: | 33 private: |
33 class Instance : public boost::noncopyable | |
34 { | |
35 private: | |
36 Orthanc::DicomMap tags_; | |
37 std::string sopInstanceUid_; | |
38 unsigned int numberOfFrames_; | |
39 CoordinateSystem3D geometry_; | |
40 bool monochrome1_; | |
41 Vector frameOffsets_; | |
42 | |
43 public: | |
44 explicit Instance(const Orthanc::DicomMap& tags); | |
45 | |
46 const Orthanc::DicomMap& GetTags() const | |
47 { | |
48 return tags_; | |
49 } | |
50 | |
51 const std::string& GetSopInstanceUid() const | |
52 { | |
53 return sopInstanceUid_; | |
54 } | |
55 | |
56 unsigned int GetNumberOfFrames() const | |
57 { | |
58 return numberOfFrames_; | |
59 } | |
60 | |
61 const CoordinateSystem3D& GetGeometry() const | |
62 { | |
63 return geometry_; | |
64 } | |
65 | |
66 bool IsMonochrome1() const | |
67 { | |
68 return monochrome1_; | |
69 } | |
70 | |
71 double GetFrameOffset(unsigned int frame) const; | |
72 }; | |
73 | |
74 struct Frame | 34 struct Frame |
75 { | 35 { |
76 private: | 36 private: |
77 const Instance* instance_; | 37 const DicomInstanceParameters* instance_; |
78 unsigned int frameNumber_; | 38 unsigned int frameNumber_; |
79 | 39 |
80 public: | 40 public: |
81 Frame(const Instance& instance, | 41 Frame(const DicomInstanceParameters& instance, |
82 unsigned int frameNumber); | 42 unsigned int frameNumber); |
83 | 43 |
84 const Instance& GetInstance() const | 44 const DicomInstanceParameters& GetInstance() const |
85 { | 45 { |
86 return *instance_; | 46 return *instance_; |
87 } | 47 } |
88 | 48 |
89 unsigned int GetFrameNumberInInstance() const | 49 unsigned int GetFrameNumberInInstance() const |
98 | 58 |
99 // Maps pair "(SOPInstanceUID, FrameNumber)" to an index in | 59 // Maps pair "(SOPInstanceUID, FrameNumber)" to an index in |
100 // "frames_" (only once "Sort()" is called) | 60 // "frames_" (only once "Sort()" is called) |
101 typedef std::map<std::pair<std::string, unsigned int>, size_t> FramesIndex; | 61 typedef std::map<std::pair<std::string, unsigned int>, size_t> FramesIndex; |
102 | 62 |
103 std::string studyInstanceUid_; | 63 std::string studyInstanceUid_; |
104 std::string seriesInstanceUid_; | 64 std::string seriesInstanceUid_; |
105 std::vector<Instance*> instances_; | 65 std::vector<DicomInstanceParameters*> instances_; |
106 std::vector<Frame> frames_; | 66 std::vector<Frame> frames_; |
107 bool sorted_; | 67 bool sorted_; |
108 InstancesIndex instancesIndex_; | 68 InstancesIndex instancesIndex_; |
109 FramesIndex framesIndex_; | 69 FramesIndex framesIndex_; |
110 | 70 |
111 const Instance& GetInstance(size_t instanceIndex) const; | 71 const DicomInstanceParameters& GetInstance(size_t instanceIndex) const; |
112 | 72 |
113 const Frame& GetFrame(size_t frameIndex) const; | 73 const Frame& GetFrame(size_t frameIndex) const; |
114 | 74 |
115 void AddFramesOfInstance(std::set<size_t>& remainingInstances, | 75 void AddFramesOfInstance(std::set<size_t>& remainingInstances, |
116 size_t instanceIndex); | 76 size_t instanceIndex); |
195 unsigned int GetFrameNumberInInstance(size_t frameIndex) const | 155 unsigned int GetFrameNumberInInstance(size_t frameIndex) const |
196 { | 156 { |
197 return GetFrame(frameIndex).GetFrameNumberInInstance(); | 157 return GetFrame(frameIndex).GetFrameNumberInInstance(); |
198 } | 158 } |
199 | 159 |
200 bool IsFrameMonochrome1(size_t frameIndex) const | 160 bool IsFrameMonochrome1(size_t frameIndex) const // TODO - REMOVE |
201 { | 161 { |
202 return GetFrame(frameIndex).GetInstance().IsMonochrome1(); | 162 return GetFrame(frameIndex).GetInstance().GetImageInformation().GetPhotometricInterpretation() == |
163 Orthanc::PhotometricInterpretation_Monochrome1; | |
203 } | 164 } |
204 | 165 |
205 CoordinateSystem3D GetFrameGeometry(size_t frameIndex) const; | 166 CoordinateSystem3D GetFrameGeometry(size_t frameIndex) const; |
206 | 167 |
207 bool LookupFrame(size_t& frameIndex, | 168 bool LookupFrame(size_t& frameIndex, |