Add reset function to DicomLoader
This commit is contained in:
@@ -51,15 +51,11 @@ public:
|
|||||||
return m_patients;
|
return m_patients;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SeriesImageSet* getSeriesImageSet(const std::string& uniqueID);
|
SeriesImageSet* getSeriesImageSet(const std::string& uniqueID);
|
||||||
|
|
||||||
SeriesInfo_t* getSerieInfo(const std::string& seriesUnique);
|
SeriesInfo_t* getSerieInfo(const std::string& seriesUnique);
|
||||||
|
|
||||||
//for export use
|
void reset();
|
||||||
void getOpenedInstancesVec(InstancesVecType& retVec);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit DicomLoader();
|
explicit DicomLoader();
|
||||||
~DicomLoader();
|
~DicomLoader();
|
||||||
|
|||||||
@@ -128,12 +128,6 @@ DicomLoader::DicomLoader(){
|
|||||||
}
|
}
|
||||||
DicomLoader::~DicomLoader() {
|
DicomLoader::~DicomLoader() {
|
||||||
|
|
||||||
if (reader)reader->Delete();
|
|
||||||
reader = nullptr;
|
|
||||||
delete instance;
|
|
||||||
// for(auto item : imageProperties){
|
|
||||||
// item->UnRegister(&placeHolder);
|
|
||||||
// }
|
|
||||||
placeHolder->Delete();
|
placeHolder->Delete();
|
||||||
imageProperties.clear();
|
imageProperties.clear();
|
||||||
}
|
}
|
||||||
@@ -162,38 +156,15 @@ SeriesImageSet* DicomLoader::getSeriesImageSet(const std::string& uniqueID)//, D
|
|||||||
|
|
||||||
reader->SetFileNames(*(*iter)->GetFileNames());
|
reader->SetFileNames(*(*iter)->GetFileNames());
|
||||||
reader->Update();
|
reader->Update();
|
||||||
|
auto imageData = reader->GetOutput();
|
||||||
SeriesImageSet* result = new SeriesImageSet((*iter),reader->GetOutput());
|
SeriesImageSet* result = new SeriesImageSet((*iter),imageData);
|
||||||
|
// imageData->Register(placeHolder);
|
||||||
reader->Delete();
|
reader->Delete();
|
||||||
reader = nullptr;
|
reader = nullptr;
|
||||||
store[uniqueID] = result;
|
store[uniqueID] = result;
|
||||||
return 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)
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user