Mercurial > hg > orthanc-stone
comparison Framework/Toolbox/DicomStructureSet.cpp @ 1180:9c8f557ea799 broker
ParsedDicomDataset to speed up loading RT-STRUCT from parsed DICOM files
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 20 Nov 2019 17:34:17 +0100 |
parents | 3c7cdbf32e2a |
children | 0ca50d275b9a |
comparison
equal
deleted
inserted
replaced
1179:177e7d431cd1 | 1180:9c8f557ea799 |
---|---|
25 #include "../Toolbox/GeometryToolbox.h" | 25 #include "../Toolbox/GeometryToolbox.h" |
26 | 26 |
27 #include <Core/Logging.h> | 27 #include <Core/Logging.h> |
28 #include <Core/OrthancException.h> | 28 #include <Core/OrthancException.h> |
29 #include <Core/Toolbox.h> | 29 #include <Core/Toolbox.h> |
30 #include <Plugins/Samples/Common/FullOrthancDataset.h> | |
31 #include <Plugins/Samples/Common/DicomDatasetReader.h> | 30 #include <Plugins/Samples/Common/DicomDatasetReader.h> |
32 | 31 |
33 #if defined(_MSC_VER) | 32 #if defined(_MSC_VER) |
34 # pragma warning(push) | 33 # pragma warning(push) |
35 # pragma warning(disable:4244) | 34 # pragma warning(disable:4244) |
43 #include <boost/geometry/multi/geometries/multi_polygon.hpp> | 42 #include <boost/geometry/multi/geometries/multi_polygon.hpp> |
44 | 43 |
45 #if defined(_MSC_VER) | 44 #if defined(_MSC_VER) |
46 # pragma warning(pop) | 45 # pragma warning(pop) |
47 #endif | 46 #endif |
47 | |
48 #if ORTHANC_ENABLE_DCMTK == 1 | |
49 # include "ParsedDicomDataset.h" | |
50 #endif | |
51 | |
48 | 52 |
49 typedef boost::geometry::model::d2::point_xy<double> BoostPoint; | 53 typedef boost::geometry::model::d2::point_xy<double> BoostPoint; |
50 typedef boost::geometry::model::polygon<BoostPoint> BoostPolygon; | 54 typedef boost::geometry::model::polygon<BoostPoint> BoostPolygon; |
51 typedef boost::geometry::model::multi_polygon<BoostPolygon> BoostMultiPolygon; | 55 typedef boost::geometry::model::multi_polygon<BoostPolygon> BoostMultiPolygon; |
52 | 56 |
459 } | 463 } |
460 | 464 |
461 return structures_[index]; | 465 return structures_[index]; |
462 } | 466 } |
463 | 467 |
464 DicomStructureSet::DicomStructureSet(const OrthancPlugins::FullOrthancDataset& tags) | 468 void DicomStructureSet::Setup(const OrthancPlugins::IDicomDataset& tags) |
465 { | 469 { |
466 OrthancPlugins::DicomDatasetReader reader(tags); | 470 OrthancPlugins::DicomDatasetReader reader(tags); |
467 | 471 |
468 size_t count, tmp; | 472 size_t count, tmp; |
469 if (!tags.GetSequenceSize(count, DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE) || | 473 if (!tags.GetSequenceSize(count, DICOM_TAG_RT_ROI_OBSERVATIONS_SEQUENCE) || |
604 structures_[i].polygons_.push_back(polygon); | 608 structures_[i].polygons_.push_back(polygon); |
605 } | 609 } |
606 } | 610 } |
607 } | 611 } |
608 | 612 |
613 | |
614 #if ORTHANC_ENABLE_DCMTK == 1 | |
615 DicomStructureSet::DicomStructureSet(Orthanc::ParsedDicomFile& instance) | |
616 { | |
617 ParsedDicomDataset dataset(instance); | |
618 Setup(dataset); | |
619 } | |
620 #endif | |
621 | |
609 | 622 |
610 Vector DicomStructureSet::GetStructureCenter(size_t index) const | 623 Vector DicomStructureSet::GetStructureCenter(size_t index) const |
611 { | 624 { |
612 const Structure& structure = GetStructure(index); | 625 const Structure& structure = GetStructure(index); |
613 | 626 |