From f31e0857b7725381851409b5442a92505027c76c Mon Sep 17 00:00:00 2001 From: Krad Date: Thu, 3 Mar 2022 14:05:52 +0800 Subject: [PATCH] Add reset function to DicomLoader --- src/include/base/DicomLoader.h | 6 +--- src/src/base/DicomLoader.cpp | 52 +++++++++++++--------------------- 2 files changed, 21 insertions(+), 37 deletions(-) diff --git a/src/include/base/DicomLoader.h b/src/include/base/DicomLoader.h index 0417e41..4f35f4d 100644 --- a/src/include/base/DicomLoader.h +++ b/src/include/base/DicomLoader.h @@ -50,16 +50,12 @@ public: { return m_patients; } - - SeriesImageSet* getSeriesImageSet(const std::string& uniqueID); SeriesInfo_t* getSerieInfo(const std::string& seriesUnique); - //for export use - void getOpenedInstancesVec(InstancesVecType& retVec); - + void reset(); private: explicit DicomLoader(); ~DicomLoader(); diff --git a/src/src/base/DicomLoader.cpp b/src/src/base/DicomLoader.cpp index 3518622..ac4784b 100644 --- a/src/src/base/DicomLoader.cpp +++ b/src/src/base/DicomLoader.cpp @@ -128,12 +128,6 @@ DicomLoader::DicomLoader(){ } DicomLoader::~DicomLoader() { - if (reader)reader->Delete(); - reader = nullptr; - delete instance; -// for(auto item : imageProperties){ -// item->UnRegister(&placeHolder); -// } placeHolder->Delete(); imageProperties.clear(); } @@ -162,38 +156,15 @@ SeriesImageSet* DicomLoader::getSeriesImageSet(const std::string& uniqueID)//, D reader->SetFileNames(*(*iter)->GetFileNames()); reader->Update(); - - SeriesImageSet* result = new SeriesImageSet((*iter),reader->GetOutput()); + auto imageData = reader->GetOutput(); + SeriesImageSet* result = new SeriesImageSet((*iter),imageData); +// imageData->Register(placeHolder); reader->Delete(); reader = nullptr; store[uniqueID] = result; return result; } -void DicomLoader::getOpenedInstancesVec(InstancesVecType& retVec) -{ - for (PatientsMapType::const_iterator cur_patient_iter = m_patients.begin(); cur_patient_iter != - m_patients.end(); cur_patient_iter++) - { - StudiesMapType *cur_studies = cur_patient_iter->second->studies; - for (StudiesMapType::const_iterator cur_study_iter = cur_studies->begin(); cur_study_iter != - cur_studies->end(); cur_study_iter++) - { - SeriesMapType *cur_series = cur_study_iter->second->series; - for (SeriesMapType::const_iterator cur_series_iter = cur_series->begin(); cur_series_iter != - cur_series->end(); cur_series_iter++) - { - //default export instance: the recently added one - SeriesImageSet *last = cur_series_iter->second->instances->back(); - if(nullptr!=last) - { - retVec.push_back(last); - } - } - } - - } -} SeriesInfo_t* DicomLoader::getSerieInfo(const std::string& seriesUnique) { @@ -369,3 +340,20 @@ void DicomLoader::readSeries() { } } +void DicomLoader::reset() { + + currentImageProperty = nullptr; + reader = nullptr; + for(auto item: store){ + delete item.second; + } + store.clear(); + for(auto item: m_patients){ + delete item.second; + } + m_patients.clear(); + placeHolder->Delete(); + placeHolder = vtkObject::New(); + imageProperties.clear(); +} +