Add reset function to DicomLoader
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user