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 }