diff --git a/src/src/Rendering/Viewer/DICOMImageViewer.cxx b/src/src/Rendering/Viewer/DICOMImageViewer.cxx index 70682ad..98f66ab 100644 --- a/src/src/Rendering/Viewer/DICOMImageViewer.cxx +++ b/src/src/Rendering/Viewer/DICOMImageViewer.cxx @@ -419,6 +419,20 @@ void DICOMImageViewer::Render() { } } +void DICOMImageViewer::RenderReloadMeasure() +{ + if (this->GetInput()) { + if (Fusion && FusionActor && !this->ImageStack->HasImage(FusionActor)) { + this->ImageStack->AddImage(FusionActor); + } + if (!Fusion && FusionActor && this->ImageStack->HasImage(FusionActor)) { + this->ImageStack->RemoveImage(FusionActor); + } + this->LoadMeasures(true); + this->RenderWindow->Render(); + } +} + // slice about----------------------------------------------------------------- void DICOMImageViewer::GetSliceRange(int &min, int &max) { vtkAlgorithm *input = this->GetInputAlgorithm(); diff --git a/src/src/Rendering/Viewer/DICOMImageViewer.h b/src/src/Rendering/Viewer/DICOMImageViewer.h index d871396..229bfb8 100644 --- a/src/src/Rendering/Viewer/DICOMImageViewer.h +++ b/src/src/Rendering/Viewer/DICOMImageViewer.h @@ -88,6 +88,8 @@ public: */ virtual void Render(); + virtual void RenderReloadMeasure(); + //@{ /** * Set/Get the input image to the viewer. diff --git a/src/src/UI/Manager/ImageViewManager.cpp b/src/src/UI/Manager/ImageViewManager.cpp index 862d305..cddf81d 100644 --- a/src/src/UI/Manager/ImageViewManager.cpp +++ b/src/src/UI/Manager/ImageViewManager.cpp @@ -253,8 +253,12 @@ void ImageViewManager::smartDo(SmartDoCallback cb,SmartDoCallback otherCb, Dico //Slots and actions------------------------------------------------------------ void ImageViewManager::viewClicked(DicomImageView *view) { + //current view show measure + view->RenderReloadMeasure(); + if (!view) return; this->setCurrentView(view); + renderAll(); } void ImageViewManager::viewDoubleClicked(DicomImageView *view) { @@ -407,6 +411,14 @@ void ImageViewManager::renderAll() { }, nullptr, nullptr, All); } +void ImageViewManager::renderAllReloadMeasure() { + smartDo([](auto v, auto) { + if (v->hasSeries()) { + v->RenderReloadMeasure(); + } + }, nullptr, nullptr, All); +} + void ImageViewManager::activeMeasure() { smartDo([](auto v, auto) { diff --git a/src/src/UI/Manager/ImageViewManager.h b/src/src/UI/Manager/ImageViewManager.h index 6c80d1d..fe7cd37 100644 --- a/src/src/UI/Manager/ImageViewManager.h +++ b/src/src/UI/Manager/ImageViewManager.h @@ -83,6 +83,7 @@ public: void setInteractionMode(int InteractionMode); void renderAll(); + void renderAllReloadMeasure(); void activeMeasure(); diff --git a/src/src/UI/Widget/ImageView/dicomimageview.cpp b/src/src/UI/Widget/ImageView/dicomimageview.cpp index 19122be..f1192db 100644 --- a/src/src/UI/Widget/ImageView/dicomimageview.cpp +++ b/src/src/UI/Widget/ImageView/dicomimageview.cpp @@ -162,6 +162,12 @@ bool DicomImageView::hasSeries() { return mSeries; } +void DicomImageView::RenderReloadMeasure() +{ + if (!hasSeries()) return; + mImageViewer->RenderReloadMeasure(); +} + void DicomImageView::loadSeries(SeriesImageSet *series) { if (!series) return; initImageViewer(); diff --git a/src/src/UI/Widget/ImageView/dicomimageview.h b/src/src/UI/Widget/ImageView/dicomimageview.h index 732693e..a5b8f31 100644 --- a/src/src/UI/Widget/ImageView/dicomimageview.h +++ b/src/src/UI/Widget/ImageView/dicomimageview.h @@ -46,6 +46,8 @@ public: void render(); + void RenderReloadMeasure(); + //Series void setDicomImageView(SeriesImageSet *series);