Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/DicomStructureSet.h @ 981:c20dbaab360c
Ability to cope with empty "Referenced SOP Instance UID" (dicom path (3006,0039)[i] / (0x3006, 0x0040)[0] / (0x3006, 0x0016)[0] / (0x0008, 0x1155)) + better logs + code formating
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Fri, 06 Sep 2019 09:38:18 +0200 |
parents | 61ba4b504e9a |
children | 4c9b4c4de814 |
comparison
equal
deleted
inserted
replaced
978:0e21ecafcc23 | 981:c20dbaab360c |
---|---|
32 namespace OrthancStone | 32 namespace OrthancStone |
33 { | 33 { |
34 class DicomStructureSet : public boost::noncopyable | 34 class DicomStructureSet : public boost::noncopyable |
35 { | 35 { |
36 public: | 36 public: |
37 typedef std::pair<double, double> PolygonPoint; | 37 typedef std::pair<double, double> PolygonPoint2D; |
38 | 38 |
39 private: | 39 private: |
40 struct ReferencedSlice | 40 struct ReferencedSlice |
41 { | 41 { |
42 std::string seriesInstanceUid_; | 42 std::string seriesInstanceUid_; |
70 double projectionAlongNormal_; | 70 double projectionAlongNormal_; |
71 double sliceThickness_; // In millimeters | 71 double sliceThickness_; // In millimeters |
72 Points points_; | 72 Points points_; |
73 Extent2D extent_; | 73 Extent2D extent_; |
74 | 74 |
75 void CheckPoint(const Vector& v); | 75 void CheckPointIsOnSlice(const Vector& v) const; |
76 bool IsPointOnSlice(const Vector& v) const; | |
76 | 77 |
77 public: | 78 public: |
78 Polygon(const std::string& sopInstanceUid) : | 79 Polygon(const std::string& sopInstanceUid) : |
79 sopInstanceUid_(sopInstanceUid), | 80 sopInstanceUid_(sopInstanceUid), |
80 hasSlice_(false) | 81 hasSlice_(false) |
133 | 134 |
134 const Structure& GetStructure(size_t index) const; | 135 const Structure& GetStructure(size_t index) const; |
135 | 136 |
136 Structure& GetStructure(size_t index); | 137 Structure& GetStructure(size_t index); |
137 | 138 |
138 bool ProjectStructure(std::vector< std::vector<PolygonPoint> >& polygons, | 139 bool ProjectStructure(std::vector< std::vector<PolygonPoint2D> >& polygons, |
139 const Structure& structure, | 140 const Structure& structure, |
140 const CoordinateSystem3D& slice) const; | 141 const CoordinateSystem3D& slice) const; |
141 | 142 |
142 public: | 143 public: |
143 DicomStructureSet(const OrthancPlugins::FullOrthancDataset& instance); | 144 DicomStructureSet(const OrthancPlugins::FullOrthancDataset& instance); |
172 | 173 |
173 void CheckReferencedSlices(); | 174 void CheckReferencedSlices(); |
174 | 175 |
175 Vector GetNormal() const; | 176 Vector GetNormal() const; |
176 | 177 |
177 bool ProjectStructure(std::vector< std::vector<PolygonPoint> >& polygons, | 178 bool ProjectStructure(std::vector< std::vector<PolygonPoint2D> >& polygons, |
178 size_t index, | 179 size_t index, |
179 const CoordinateSystem3D& slice) const | 180 const CoordinateSystem3D& slice) const |
180 { | 181 { |
181 return ProjectStructure(polygons, GetStructure(index), slice); | 182 return ProjectStructure(polygons, GetStructure(index), slice); |
182 } | 183 } |