From 85d01b57f528684a9d42cd831af1aa128c748b4c Mon Sep 17 00:00:00 2001 From: kradchen Date: Wed, 9 Jul 2025 09:27:26 +0800 Subject: [PATCH] feat: Add measure resume logic --- .../ActorDraggableInteractorStyle.cpp | 12 +++++++----- src/src/Rendering/Core/RenderingDefines.h | 1 + src/src/UI/Manager/ImageViewManager.cpp | 12 ++++++++++++ src/src/UI/Widget/ToolBar/DefaultToolBar.cpp | 19 +++++++++---------- 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/src/Interaction/ActorDraggableInteractorStyle.cpp b/src/src/Interaction/ActorDraggableInteractorStyle.cpp index 037159d..6d07fdd 100644 --- a/src/src/Interaction/ActorDraggableInteractorStyle.cpp +++ b/src/src/Interaction/ActorDraggableInteractorStyle.cpp @@ -107,11 +107,6 @@ void ActorDraggableInteractorStyle::OnLeftButtonDown() { } } #endif - if (measure) { - measure->SetPlacing(measure->onMeasureLeftButtonDown(this->Interactor)); - if (this->State != VTKIS_MEASURE) this->StartMeasure(); - return; - } if (scalarProp) { ScalarStartPosition[0] = x; @@ -119,6 +114,13 @@ void ActorDraggableInteractorStyle::OnLeftButtonDown() { this->StartColorMapping(); return; } + if (this->InteractionMode == VTKIS_MEASURE){ + if (measure) { + measure->SetPlacing(measure->onMeasureLeftButtonDown(this->Interactor)); + if (this->State != VTKIS_MEASURE) this->StartMeasure(); + return; + } + } if (this->InteractionMode == VTKIS_IMAGE_WINDOWLEVEL) { this->WindowLevelStartPosition[0] = x; this->WindowLevelStartPosition[1] = y; diff --git a/src/src/Rendering/Core/RenderingDefines.h b/src/src/Rendering/Core/RenderingDefines.h index 42f04bd..c9d3f02 100644 --- a/src/src/Rendering/Core/RenderingDefines.h +++ b/src/src/Rendering/Core/RenderingDefines.h @@ -9,6 +9,7 @@ #define VTKIS_MEASURE 36 #define VTKIS_COLORMAP 37 #define VTKIS_SYNCPOINT 38 +#define VTKIS_VOLUMEMEASURE 39 #define VTKIS_IMAGE_PAN 5 #define VTKIS_IMAGE_ZOOM 6 #define VTKIS_IMAGE_WINDOWLEVEL 7 diff --git a/src/src/UI/Manager/ImageViewManager.cpp b/src/src/UI/Manager/ImageViewManager.cpp index cddf81d..0a9920b 100644 --- a/src/src/UI/Manager/ImageViewManager.cpp +++ b/src/src/UI/Manager/ImageViewManager.cpp @@ -546,6 +546,18 @@ void ImageViewManager::clearCurrentView() { void ImageViewManager::reloadCurrentView(DicomImageView * view){ renderReferenceLine(); + if (view && getFirstView()) + { + if (view->getImageViewer()){ + view->getImageViewer()->GetInteractorStyle()->SetInteractionModeFromEnum( + getFirstView()->getImageViewer()->GetInteractorStyle()->GetInteractionMode() + ); + if(getFirstView()->getImageViewer()->GetInteractorStyle()->GetInteractionMode() == VTKIS_MEASURE) + { + MeasureHelper::setMeasureType(MeasureHelper::getMeasureType()); + } + } + } emit currentViewReloaded(view); } diff --git a/src/src/UI/Widget/ToolBar/DefaultToolBar.cpp b/src/src/UI/Widget/ToolBar/DefaultToolBar.cpp index 598cd24..6072bdb 100644 --- a/src/src/UI/Widget/ToolBar/DefaultToolBar.cpp +++ b/src/src/UI/Widget/ToolBar/DefaultToolBar.cpp @@ -463,15 +463,6 @@ void DefaultToolBar::initMeasureButton() { tr("Round"), tr("Text")}; -#define ADD_MEASURE_ACTION(index)\ - m->addAction(measures[index], this, [=] {\ - mBtnMeasure->setChecked(true);\ - QPixmap map(std::get<0>(MEASURE_ACTIIONS[index]));\ - mBtnMeasure->setIcon(QIcon(map));\ - MeasureHelper::setMeasureType(std::get<1>(MEASURE_ACTIIONS[index]));\ - mBtnMeasure->setProperty("mode",0);\ - }) - #define ADD_DEL_ACTION(text, type)\ m->addAction(text,this,[]{\ @@ -487,6 +478,7 @@ void DefaultToolBar::initMeasureButton() { emit modeChanged(38); } else{ + emit modeChanged(36); MeasureHelper::setMeasureType(MeasureHelper::getMeasureType()); } }); @@ -495,7 +487,14 @@ void DefaultToolBar::initMeasureButton() { m = new QMenu(this); for (int j = 0; j < ACTION_COUNT-1; ++j) { - ADD_MEASURE_ACTION(j); + m->addAction(measures[j], this, [=] { + mBtnMeasure->setChecked(true); + QPixmap map(std::get<0>(MEASURE_ACTIIONS[j])); + mBtnMeasure->setIcon(QIcon(map)); + emit modeChanged(36); + MeasureHelper::setMeasureType(std::get<1>(MEASURE_ACTIIONS[j])); + mBtnMeasure->setProperty("mode",0); + }); } m->addAction(tr("Location Point"), this,[=](){