manager.smartDo add new Scope SameSeriesExceptSelf

This commit is contained in:
Krad
2022-04-15 09:24:36 +08:00
parent dcb75e7b05
commit a8c67717a9
2 changed files with 29 additions and 21 deletions

View File

@@ -40,7 +40,11 @@ void ImageViewManager::smartDo(SmartDoCallback cb, DicomImageView *sourceView, v
case DoScope::SameSeries:{ case DoScope::SameSeries:{
std::for_each(vList.begin(),vList.end(),[=](auto v){ std::for_each(vList.begin(),vList.end(),[=](auto v){
//check series //check series
cb(v, callData); auto series = sourceView->getSeriesInstance();
if (v->getSeriesInstance()==series && v->GetSliceOrientation() == sourceView->GetSliceOrientation()){
cb(v, callData);
}
}); });
break; break;
} }
@@ -48,7 +52,10 @@ void ImageViewManager::smartDo(SmartDoCallback cb, DicomImageView *sourceView, v
std::for_each(vList.begin(),vList.end(),[=](auto v){ std::for_each(vList.begin(),vList.end(),[=](auto v){
if (v == sourceView) return; if (v == sourceView) return;
//check series //check series
cb(v, callData); auto series = sourceView->getSeriesInstance();
if (v->getSeriesInstance()==series && v->GetSliceOrientation() == sourceView->GetSliceOrientation()){
cb(v, callData);
}
}); });
break; break;
} }

View File

@@ -1,4 +1,4 @@
#include "viewcontainerwidget.h" #include "viewcontainerwidget.h"
#include "thumbnailImage.h" #include "thumbnailImage.h"
#include "DicomLoader.h" #include "DicomLoader.h"
#include <QWidget> #include <QWidget>
@@ -75,7 +75,7 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo
v->SetSlice(r[0]); v->SetSlice(r[0]);
v->setScrollChangedType(scrollScope::TriggerType::USER_TRIGGER); v->setScrollChangedType(scrollScope::TriggerType::USER_TRIGGER);
} }
},view, calldata,ImageViewManager::AllExceptSelf); },view, calldata,ImageViewManager::SameSeriesExceptSelf);
} }
if (SyncHelper::getSyncState() == MANUAL_SYNC) if (SyncHelper::getSyncState() == MANUAL_SYNC)
{ {
@@ -87,7 +87,7 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo
v->AddSlice(r[1]); v->AddSlice(r[1]);
v->setScrollChangedType(scrollScope::TriggerType::USER_TRIGGER); v->setScrollChangedType(scrollScope::TriggerType::USER_TRIGGER);
} }
},view, calldata,ImageViewManager::AllExceptSelf); },view, calldata,ImageViewManager::SameSeriesExceptSelf);
} }
} }
@@ -101,7 +101,7 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo
double vector[3] = { d[3] - d[0],d[4] - d[1],d[5] - d[2] }; double vector[3] = { d[3] - d[0],d[4] - d[1],d[5] - d[2] };
v->SetPanOffset(vector); v->SetPanOffset(vector);
} }
},view, calldata,ImageViewManager::AllExceptSelf); },view, calldata,ImageViewManager::SameSeriesExceptSelf);
} }
break; break;
case VTKIS_IMAGE_ZOOM: case VTKIS_IMAGE_ZOOM:
@@ -112,7 +112,7 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo
double *d = (double *)callData; double *d = (double *)callData;
v->SetZoomScale(d[1]); v->SetZoomScale(d[1]);
} }
},view, calldata,ImageViewManager::AllExceptSelf); },view, calldata,ImageViewManager::SameSeriesExceptSelf);
} }
break; break;
case VTKIS_IMAGE_WINDOWLEVEL: case VTKIS_IMAGE_WINDOWLEVEL:
@@ -123,7 +123,7 @@ void ViewContainerWidget::Slot_SyncEvent(DicomImageView *view, int interactionMo
double *d = (double *)callData; double *d = (double *)callData;
v->SetWindowLevel(d[1], d[0]); v->SetWindowLevel(d[1], d[0]);
} }
},view, calldata,ImageViewManager::AllExceptSelf); },view, calldata,ImageViewManager::SameSeriesExceptSelf);
} }
break; break;
default: default:
@@ -354,20 +354,21 @@ void ViewContainerWidget::toggleViewWithFusion()
void ViewContainerWidget::replaceViewWithFusion() void ViewContainerWidget::replaceViewWithFusion()
{ {
//Temporal: automatically fusion with next image for (int i = 0; i < manager.getViewCount(); ++i) {
DicomImageView * overlap_view = this->getNextView(); if (manager.getView(i) == manager.getCurrentView()) continue;
if (checkFusionStatus(manager.getCurrentView(), overlap_view)) DicomImageView * overlap_view = manager.getView(i);
{ if (checkFusionStatus(manager.getCurrentView(), overlap_view))
connect(overlap_view, &DicomImageView::Signal_WindowLevelEventForFusion, {
manager.getCurrentView(), &DicomImageView::Slot_WindowLevelEventForFusion); connect(overlap_view, &DicomImageView::Signal_WindowLevelEventForFusion,
manager.getCurrentView(), &DicomImageView::Slot_WindowLevelEventForFusion);
manager.getCurrentView()->SetFusionInput(overlap_view);
manager.getCurrentView()->Render();
return;
}
}
QMessageBox::information(this, "Warning", "Invalid Fusion!");
manager.getCurrentView()->SetFusionInput(overlap_view);
manager.getCurrentView()->Render();
}
else
{
QMessageBox::information(this, "Warning", "Invalid Fusion!");
}
} }
void ViewContainerWidget::removeCurrentViewWithFusion() void ViewContainerWidget::removeCurrentViewWithFusion()
{ {