From 87aa2c1946091c7cbe5df2c61da1fa944da13668 Mon Sep 17 00:00:00 2001 From: Krad Date: Mon, 21 Nov 2022 13:42:42 +0800 Subject: [PATCH] Fix measure load bug. --- src/src/Rendering/Viewer/DICOMImageViewer.cxx | 14 ++++++++------ src/src/Rendering/Viewer/DICOMImageViewer.h | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/src/Rendering/Viewer/DICOMImageViewer.cxx b/src/src/Rendering/Viewer/DICOMImageViewer.cxx index 473472b..308787f 100644 --- a/src/src/Rendering/Viewer/DICOMImageViewer.cxx +++ b/src/src/Rendering/Viewer/DICOMImageViewer.cxx @@ -94,7 +94,7 @@ DICOMImageViewer::DICOMImageViewer() DICOMImageViewer::InstallPipeline(); uintptr_t handler = reinterpret_cast(this); - sprintf(SOP_UID, "%llu", handler); + sprintf(SERIES_UID, "%llu", handler); } //----------------------------------------------------------------------------- @@ -142,12 +142,13 @@ DICOMImageViewer::~DICOMImageViewer() { this->cornerAnnotation->Delete(); this->cornerAnnotation = nullptr; } - measureStore->RemoveAllInSeries(SOP_UID); + measureStore->RemoveAllInSeries(SERIES_UID); // measureStore->Clear(); //delete measureStore; } void DICOMImageViewer::SetupImageViewer() { + this->ClearCurrentSliceMeasure(); this->SetColorLevel(m_cornerInfo.win_level); this->SetColorWindow(m_cornerInfo.win_width); this->Render(); //first render will call resetcamera @@ -1005,7 +1006,7 @@ void DICOMImageViewer::LoadMeasures(bool forceReload) { } void DICOMImageViewer::ReloadCurrentSliceMeasure() { - list = measureStore->GetMeasures(SOP_UID, this->SliceIJK, ImageMapper->GetSliceNumber()); + list = measureStore->GetMeasures(SERIES_UID, this->SliceIJK, ImageMapper->GetSliceNumber()); if (list) { for (int i = 0; i < list->length(); i++) { @@ -1029,7 +1030,7 @@ void DICOMImageViewer::ClearCurrentSliceMeasure() const { void DICOMImageViewer::AddMeasures(vtkObject *, unsigned long eventid, void *calldata) { auto m = static_cast(calldata); if (m->Valid()) { - measureStore->Store(SOP_UID, this->SliceIJK, this->ImageMapper->GetSliceNumber(), m); + measureStore->Store(SERIES_UID, this->SliceIJK, this->ImageMapper->GetSliceNumber(), m); } LoadMeasures(true); this->Render(); @@ -1055,7 +1056,7 @@ void DICOMImageViewer::DeleteSelectedMeasure() { void DICOMImageViewer::DeleteCurrentSliceMeasure() { this->InteractorStyle->ClearSelectedProp(); ClearCurrentSliceMeasure(); - measureStore->RemoveAllInSlice(SOP_UID, this->SliceIJK, this->ImageMapper->GetSliceNumber()); + measureStore->RemoveAllInSlice(SERIES_UID, this->SliceIJK, this->ImageMapper->GetSliceNumber()); ReloadCurrentSliceMeasure(); this->Render(); } @@ -1063,7 +1064,7 @@ void DICOMImageViewer::DeleteCurrentSliceMeasure() { void DICOMImageViewer::DeleteCurrentSeriesMeasure() { this->InteractorStyle->ClearSelectedProp(); ClearCurrentSliceMeasure(); - measureStore->RemoveAllInSeries(SOP_UID); + measureStore->RemoveAllInSeries(SERIES_UID); ReloadCurrentSliceMeasure(); this->Render(); } @@ -1087,6 +1088,7 @@ public: }; void DICOMImageViewer::InitCornerInfo(ExtendMedicalImageProperties *pSeries) { + sprintf(SERIES_UID, "%s", pSeries->GetUniqueID().c_str()); // mono and has preset if (pSeries->GetNumberOfWindowLevelPresets() > 0 && pSeries->GetSamplePerPixel() == 1) { double *wwwl = pSeries->GetNthWindowLevelPreset(0); diff --git a/src/src/Rendering/Viewer/DICOMImageViewer.h b/src/src/Rendering/Viewer/DICOMImageViewer.h index 843bdbf..600a389 100644 --- a/src/src/Rendering/Viewer/DICOMImageViewer.h +++ b/src/src/Rendering/Viewer/DICOMImageViewer.h @@ -465,7 +465,7 @@ private: vtkTypeBool firstFusion = true; double FusionOpacity = 0.5; bool rulerActive = false; - char SOP_UID[20] = {0}; + char SERIES_UID[40] = {0}; double defaultProjection[3][3] = { {1.,0.,0.}, {0.,1.,0.},