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

View File

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