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();
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 = 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<Measure *>(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);

View File

@@ -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.},