From 21958db4749ae84259ae63fbf2218fe615168305 Mon Sep 17 00:00:00 2001 From: Krad Date: Wed, 29 Jun 2022 10:42:08 +0800 Subject: [PATCH] Fix ExtendMedicalImageProperties SetFileNames & GetFileNames buf. --- src/src/base/DICOMDirectoryHelper.cpp | 17 +++++++++-------- src/src/base/DicomLoader.cpp | 2 +- src/src/base/ExtendMedicalImageProperties.h | 6 +++--- src/src/base/infinitiViewer.cxx | 2 +- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/src/base/DICOMDirectoryHelper.cpp b/src/src/base/DICOMDirectoryHelper.cpp index 082714c..f9d45ec 100644 --- a/src/src/base/DICOMDirectoryHelper.cpp +++ b/src/src/base/DICOMDirectoryHelper.cpp @@ -174,7 +174,7 @@ void DICOMDirectoryHelper::Update() { } ); if (iterator < seriesProperties.end()){ - auto files = (*iterator)->GetFileNames(); + std::vector files; std::vector vector; for (auto f : pair.second) { vector.emplace_back(std::move(f.second)); @@ -185,9 +185,10 @@ void DICOMDirectoryHelper::Update() { (v1.AcquisitionNumber != v2.AcquisitionNumber ? (v1.AcquisitionNumber < v2.AcquisitionNumber) : (v1.InstanceNumber < v2.InstanceNumber)); }); - std::for_each(vector.begin(), vector.end(),[=](auto v){ - files->emplace_back(std::move(v.FilePath)); + std::for_each(vector.begin(), vector.end(),[&](auto v){ + files.emplace_back(std::move(v.FilePath)); }); + (*iterator)->SetFileNames(files); readImageProperty(*iterator); } } @@ -219,11 +220,11 @@ void DICOMDirectoryHelper::Clear() { } void DICOMDirectoryHelper::readImageProperty(ExtendMedicalImageProperties* property) { - std::vector *files = property->GetFileNames(); + const std::vector& files = property->GetFileNames(); DcmFileFormat file1; // read success! - std::cout<at(0)<at(0)).good()) { + std::cout<GetWorldToModelMatrix() ); matrix = property->GetWorldToModelMatrix(); DcmFileFormat file2; - std::cout<at(1)<at(1)).good()) { + if (file2.loadFile(files.at(1)).good()) { DcmDataset *dataset = file2.getDataset(); std::string SeriesUID; dataset->findAndGetOFString(DcmTagKey(0x0020, 0x000e), SeriesUID); diff --git a/src/src/base/DicomLoader.cpp b/src/src/base/DicomLoader.cpp index bce4141..21e12fb 100644 --- a/src/src/base/DicomLoader.cpp +++ b/src/src/base/DicomLoader.cpp @@ -131,7 +131,7 @@ SeriesImageSet* DicomLoader::getSeriesImageSet(const std::string& uniqueID)//, D }); if (iter==imageProperties.end()) return nullptr; - reader->SetFileNames(*(*iter)->GetFileNames()); + reader->SetFileNames((*iter)->GetFileNames()); reader->Update(); auto imageData = reader->GetOutput(); SeriesImageSet* result = new SeriesImageSet((*iter),imageData); diff --git a/src/src/base/ExtendMedicalImageProperties.h b/src/src/base/ExtendMedicalImageProperties.h index 8e7771b..3ab0eb0 100644 --- a/src/src/base/ExtendMedicalImageProperties.h +++ b/src/src/base/ExtendMedicalImageProperties.h @@ -39,8 +39,8 @@ public: vtkSetVector3Macro(Position,double); vtkGetVector3Macro(Position,double); - std::vector* GetFileNames(){ - return &FileNames; + const std::vector& GetFileNames(){ + return FileNames; } void SetFileNames(std::vector& files){ @@ -56,7 +56,7 @@ public: void SetSeriesNumber(long value){ char buffer [sizeof(long)*8+1]; - const char* s = ltoa(value, buffer, 10); + const char* s = _ltoa(value, buffer, 10); vtkMedicalImageProperties::SetSeriesNumber(s); } diff --git a/src/src/base/infinitiViewer.cxx b/src/src/base/infinitiViewer.cxx index a6e6172..606a2a9 100644 --- a/src/src/base/infinitiViewer.cxx +++ b/src/src/base/infinitiViewer.cxx @@ -1361,7 +1361,7 @@ void infinitiViewer::initCornerInfo(ExtendMedicalImageProperties* pSeries) } char buffer[sizeof(long) * 8 + 1]; - const char* s = ltoa(pSeries->GetFileNames()->size(), buffer, 10); + const char* s = ltoa(pSeries->GetFileNames().size(), buffer, 10); m_cornerInfo.ConstAnno[TOP_LEFT].clear(); m_cornerInfo.ConstAnno[TOP_LEFT].append(buffer); m_cornerInfo.ConstAnno[TOP_LEFT].append(" ");