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