From 6d70e5d309ad1b2e99641fcc8d375595fc037ab8 Mon Sep 17 00:00:00 2001 From: Krad Date: Wed, 16 Nov 2022 11:21:05 +0800 Subject: [PATCH] SwitchViewDirection will remove volume measure. --- src/src/Interaction/VolumeInteractorStyle.cpp | 4 ++-- .../Rendering/Viewer/VolumeRenderingViewer.cpp | 15 +++++++++++---- src/src/Rendering/Viewer/VolumeRenderingViewer.h | 4 ++-- src/src/UI/Window/VolumeRenderingWindow.cpp | 2 +- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/src/Interaction/VolumeInteractorStyle.cpp b/src/src/Interaction/VolumeInteractorStyle.cpp index d4c5875..cb2b7dc 100644 --- a/src/src/Interaction/VolumeInteractorStyle.cpp +++ b/src/src/Interaction/VolumeInteractorStyle.cpp @@ -329,12 +329,12 @@ void VolumeInteractorStyle::MeasurePlace() { } void VolumeInteractorStyle::ClearMeasure() { - + ActiveMeasure(nullptr); + EndMeasure(); std::for_each(measureStore.begin(), measureStore.end(),[=](Measure* m){ picker->DeletePickList(m->GetProp()); m->ForceDelete(); }); - measureStore.clear(); } diff --git a/src/src/Rendering/Viewer/VolumeRenderingViewer.cpp b/src/src/Rendering/Viewer/VolumeRenderingViewer.cpp index 930e714..499444f 100644 --- a/src/src/Rendering/Viewer/VolumeRenderingViewer.cpp +++ b/src/src/Rendering/Viewer/VolumeRenderingViewer.cpp @@ -300,7 +300,7 @@ void VolumeRenderingViewer::Render() { firstRender = false; RenderWindow->SetDesiredUpdateRate(Interactor->GetDesiredUpdateRate()); Interactor->InvokeEvent(vtkCommand::StartInteractionEvent, nullptr); - SetViewDirection(0); + SwitchViewDirection(0); this->OrientationMarker->RemoveAllObservers(); this->OrientationMarker->SetInteractor(this->Interactor); this->OrientationMarker->EnabledOn(); @@ -483,7 +483,7 @@ void VolumeRenderingViewer::SetCoordsTransformMatrix(ExtendMedicalImagePropertie OrientationMatrix->Invert(); } -void VolumeRenderingViewer::SetViewDirection(int direction) { +void VolumeRenderingViewer::SwitchViewDirection(int direction) { double position[4] = {.0, .0, .0, 1.}; double ViewUp[4] = {.0, .0, .0, 1.}; switch (direction){ @@ -525,6 +525,10 @@ void VolumeRenderingViewer::SetViewDirection(int direction) { camera->SetPosition(position); camera->SetViewUp(ViewUp); Renderer->ResetCamera(); + auto style = VolumeInteractorStyle::SafeDownCast(InteractorStyle); + if (style){ + style->ClearMeasure(); + } } void VolumeRenderingViewer::ResetZoomFitWindow() { @@ -572,7 +576,10 @@ void VolumeRenderingViewer::ResetZoomFitWindow() { //use 0.99 to avoid border out of screen camera->Dolly(0.99/halfDisY); } - + auto style = VolumeInteractorStyle::SafeDownCast(InteractorStyle); + if (style){ + style->ClearMeasure(); + } Renderer->ResetCameraClippingRange(); } @@ -601,7 +608,7 @@ void VolumeRenderingViewer::pressedOrientationMarker(vtkObject* sender, unsigned auto cube = vtkAnnotatedCubeActor::SafeDownCast(OrientationMarker->GetOrientationMarker()); if (cube){ int v = GetViewDirection(cube,var->ToInt()); - SetViewDirection(v); + SwitchViewDirection(v); Render(); } } diff --git a/src/src/Rendering/Viewer/VolumeRenderingViewer.h b/src/src/Rendering/Viewer/VolumeRenderingViewer.h index e4218c4..fbb4f98 100644 --- a/src/src/Rendering/Viewer/VolumeRenderingViewer.h +++ b/src/src/Rendering/Viewer/VolumeRenderingViewer.h @@ -78,10 +78,10 @@ public: void SetInteractorStyleMode(int mode); - void SetViewDirection(int direction); + void SwitchViewDirection(int direction); void ResetViewDirection(){ - SetViewDirection(0); + SwitchViewDirection(0); } void ResetView(){ diff --git a/src/src/UI/Window/VolumeRenderingWindow.cpp b/src/src/UI/Window/VolumeRenderingWindow.cpp index e2e647d..cc82fb9 100644 --- a/src/src/UI/Window/VolumeRenderingWindow.cpp +++ b/src/src/UI/Window/VolumeRenderingWindow.cpp @@ -54,7 +54,7 @@ VolumeRenderingWindow::VolumeRenderingWindow(QWidget *parent , Qt::WindowFlags f }); connect(toolBar, &VolumeRenderingToolBar::viewDirectionChanged, [=](int direction){ - mViewer->SetViewDirection(direction); + mViewer->SwitchViewDirection(direction); mViewer->Render(); }); }