Fix measure load bug.

This commit is contained in:
Krad
2022-11-21 13:42:42 +08:00
parent d4b58dc101
commit 87aa2c1946
2 changed files with 9 additions and 7 deletions

View File

@@ -94,7 +94,7 @@ DICOMImageViewer::DICOMImageViewer()
DICOMImageViewer::InstallPipeline(); DICOMImageViewer::InstallPipeline();
uintptr_t handler = reinterpret_cast<uintptr_t>(this); uintptr_t handler = reinterpret_cast<uintptr_t>(this);
sprintf(SOP_UID, "%llu", handler); sprintf(SERIES_UID, "%llu", handler);
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@@ -142,12 +142,13 @@ DICOMImageViewer::~DICOMImageViewer() {
this->cornerAnnotation->Delete(); this->cornerAnnotation->Delete();
this->cornerAnnotation = nullptr; this->cornerAnnotation = nullptr;
} }
measureStore->RemoveAllInSeries(SOP_UID); measureStore->RemoveAllInSeries(SERIES_UID);
// measureStore->Clear(); // measureStore->Clear();
//delete measureStore; //delete measureStore;
} }
void DICOMImageViewer::SetupImageViewer() { void DICOMImageViewer::SetupImageViewer() {
this->ClearCurrentSliceMeasure();
this->SetColorLevel(m_cornerInfo.win_level); this->SetColorLevel(m_cornerInfo.win_level);
this->SetColorWindow(m_cornerInfo.win_width); this->SetColorWindow(m_cornerInfo.win_width);
this->Render(); //first render will call resetcamera this->Render(); //first render will call resetcamera
@@ -1005,7 +1006,7 @@ void DICOMImageViewer::LoadMeasures(bool forceReload) {
} }
void DICOMImageViewer::ReloadCurrentSliceMeasure() { void DICOMImageViewer::ReloadCurrentSliceMeasure() {
list = measureStore->GetMeasures(SOP_UID, this->SliceIJK, ImageMapper->GetSliceNumber()); list = measureStore->GetMeasures(SERIES_UID, this->SliceIJK, ImageMapper->GetSliceNumber());
if (list) { if (list) {
for (int i = 0; i < list->length(); i++) { 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) { void DICOMImageViewer::AddMeasures(vtkObject *, unsigned long eventid, void *calldata) {
auto m = static_cast<Measure *>(calldata); auto m = static_cast<Measure *>(calldata);
if (m->Valid()) { 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); LoadMeasures(true);
this->Render(); this->Render();
@@ -1055,7 +1056,7 @@ void DICOMImageViewer::DeleteSelectedMeasure() {
void DICOMImageViewer::DeleteCurrentSliceMeasure() { void DICOMImageViewer::DeleteCurrentSliceMeasure() {
this->InteractorStyle->ClearSelectedProp(); this->InteractorStyle->ClearSelectedProp();
ClearCurrentSliceMeasure(); ClearCurrentSliceMeasure();
measureStore->RemoveAllInSlice(SOP_UID, this->SliceIJK, this->ImageMapper->GetSliceNumber()); measureStore->RemoveAllInSlice(SERIES_UID, this->SliceIJK, this->ImageMapper->GetSliceNumber());
ReloadCurrentSliceMeasure(); ReloadCurrentSliceMeasure();
this->Render(); this->Render();
} }
@@ -1063,7 +1064,7 @@ void DICOMImageViewer::DeleteCurrentSliceMeasure() {
void DICOMImageViewer::DeleteCurrentSeriesMeasure() { void DICOMImageViewer::DeleteCurrentSeriesMeasure() {
this->InteractorStyle->ClearSelectedProp(); this->InteractorStyle->ClearSelectedProp();
ClearCurrentSliceMeasure(); ClearCurrentSliceMeasure();
measureStore->RemoveAllInSeries(SOP_UID); measureStore->RemoveAllInSeries(SERIES_UID);
ReloadCurrentSliceMeasure(); ReloadCurrentSliceMeasure();
this->Render(); this->Render();
} }
@@ -1087,6 +1088,7 @@ public:
}; };
void DICOMImageViewer::InitCornerInfo(ExtendMedicalImageProperties *pSeries) { void DICOMImageViewer::InitCornerInfo(ExtendMedicalImageProperties *pSeries) {
sprintf(SERIES_UID, "%s", pSeries->GetUniqueID().c_str());
// mono and has preset // mono and has preset
if (pSeries->GetNumberOfWindowLevelPresets() > 0 && pSeries->GetSamplePerPixel() == 1) { if (pSeries->GetNumberOfWindowLevelPresets() > 0 && pSeries->GetSamplePerPixel() == 1) {
double *wwwl = pSeries->GetNthWindowLevelPreset(0); double *wwwl = pSeries->GetNthWindowLevelPreset(0);

View File

@@ -465,7 +465,7 @@ private:
vtkTypeBool firstFusion = true; vtkTypeBool firstFusion = true;
double FusionOpacity = 0.5; double FusionOpacity = 0.5;
bool rulerActive = false; bool rulerActive = false;
char SOP_UID[20] = {0}; char SERIES_UID[40] = {0};
double defaultProjection[3][3] = { double defaultProjection[3][3] = {
{1.,0.,0.}, {1.,0.,0.},
{0.,1.,0.}, {0.,1.,0.},