From a6feaacaf8433471fb82e750cadf07072a335788 Mon Sep 17 00:00:00 2001 From: Krad Date: Fri, 22 Jul 2022 15:50:56 +0800 Subject: [PATCH] Fix ClearTransformations function. --- src/src/Rendering/infinitiViewer.h | 4 ++-- src/src/UI/Widget/dicomimageview.cpp | 20 ++++++-------------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/src/src/Rendering/infinitiViewer.h b/src/src/Rendering/infinitiViewer.h index 15a9458..5ed14ec 100644 --- a/src/src/Rendering/infinitiViewer.h +++ b/src/src/Rendering/infinitiViewer.h @@ -376,6 +376,8 @@ vtkTypeMacro(infinitiViewer, vtkObject); void GetSlicePoint(double *point); + virtual void UpdateOrientation(); + protected: infinitiViewer(); @@ -391,8 +393,6 @@ protected: void PrepareFusionColorTable(vtkScalarsToColors *table, bool reset = false); - virtual void UpdateOrientation(); - void LoadMeasures() { LoadMeasures(false); } diff --git a/src/src/UI/Widget/dicomimageview.cpp b/src/src/UI/Widget/dicomimageview.cpp index 6ed0d4c..8768d5f 100644 --- a/src/src/UI/Widget/dicomimageview.cpp +++ b/src/src/UI/Widget/dicomimageview.cpp @@ -403,21 +403,21 @@ void DicomImageView::syncEventFunc(vtkObject *, unsigned long eid, void *calldat int *r = (int *) calldata; switch (eid) { case (vtkCommand::EventIds::EndPanEvent): - this->onSync(this, VTKIS_IMAGE_PAN, calldata); + emit onSync(this, VTKIS_IMAGE_PAN, calldata); break; case (vtkCommand::EventIds::EndWindowLevelEvent): //update corner info through callback - this->onSync(this, VTKIS_IMAGE_WINDOWLEVEL, calldata); + emit onSync(this, VTKIS_IMAGE_WINDOWLEVEL, calldata); break; case (ActorDraggableInteractorStyle::DraggableStyleEvents::EndDollyEvent): - this->onSync(this, VTKIS_IMAGE_ZOOM, calldata); + emit onSync(this, VTKIS_IMAGE_ZOOM, calldata); break; case (ActorDraggableInteractorStyle::DraggableStyleEvents::SlicedEvent): { mScrollBar->SetValueSilently(r[0]); //invoke event double focusPoint[3] = {.0, .0, .0}; mImageViewer->GetSlicePoint(focusPoint); - this->onSync(this, VTKIS_IMAGE_SLICING, focusPoint); + emit onSync(this, VTKIS_IMAGE_SLICING, focusPoint); break; } default: @@ -485,11 +485,10 @@ void DicomImageView::setPanOffset(double *pan) { } } -//FIXME:这个函数有问题,会导致MPR显示出错!!! void DicomImageView::resetPanZoom() { if (hasSeries()) { + mImageViewer->GetRenderer()->ResetCamera(); mImageViewer->ResetZoomScaleToFitWindowSize(); - } } @@ -581,15 +580,8 @@ void DicomImageView::rotateImage(double angle, TransFormType operation) { void DicomImageView::ClearTransformations() { if (hasSeries()) { int slice = mImageViewer->GetSlice(); + mImageViewer->UpdateOrientation(); resetPanZoom(); - - double cameraPosition[3]; - double vup[3]; - mSeries->getCameraCfg(vup, cameraPosition); - - //necessary to reset flip and rotate - mImageViewer->GetRenderer()->GetActiveCamera()->SetPosition(cameraPosition); - mImageViewer->GetRenderer()->GetActiveCamera()->SetViewUp(vup); //avoid black out problem mImageViewer->GetRenderer()->ResetCameraClippingRange(); mImageViewer->SetSlice(slice);