Add manual sync of pan and zoom.
This commit is contained in:
@@ -236,7 +236,7 @@ void ImageViewManager::viewPaned(DicomImageView *src, void* offsetVector) {
|
|||||||
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->applyPanOffset(vector);
|
v->applyPanOffset(vector);
|
||||||
}
|
}
|
||||||
}, src, offsetVector, ImageViewManager::SameStudySeries);
|
}, src, offsetVector, ImageViewManager::SameOrientationSeries);
|
||||||
} else if (SyncHelper::getSyncState() == AUTO_SYNC) {
|
} else if (SyncHelper::getSyncState() == AUTO_SYNC) {
|
||||||
this->smartDo([](auto v, auto callData) {
|
this->smartDo([](auto v, auto callData) {
|
||||||
if (v->hasSeries()) {
|
if (v->hasSeries()) {
|
||||||
@@ -249,14 +249,24 @@ void ImageViewManager::viewPaned(DicomImageView *src, void* offsetVector) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageViewManager::viewZoomed(DicomImageView *src, double scaleFactor) {
|
void ImageViewManager::viewZoomed(DicomImageView *src, double* scaleFactor) {
|
||||||
if (SyncHelper::getSyncItem(ZOOM_PAN)) {
|
if (SyncHelper::getSyncItem(ZOOM_PAN)) {
|
||||||
this->smartDo([](auto v, auto callData) {
|
if (SyncHelper::getSyncState() == MANUAL_SYNC){
|
||||||
if (v->hasSeries()) {
|
this->smartDo([](auto v, auto callData) {
|
||||||
double d = *(double *) callData;
|
if (v->hasSeries()) {
|
||||||
v->setZoomScale(d);
|
double* d = ((double *) callData);
|
||||||
}
|
v->setZoomFactor(d[1]/d[0]);
|
||||||
}, src, &scaleFactor, ImageViewManager::SameStudySeries);
|
}
|
||||||
|
}, src, scaleFactor, ImageViewManager::SameOrientationSeries);
|
||||||
|
}
|
||||||
|
else if (SyncHelper::getSyncState() == AUTO_SYNC) {
|
||||||
|
this->smartDo([](auto v, auto callData) {
|
||||||
|
if (v->hasSeries()) {
|
||||||
|
double d = ((double *) callData)[1];
|
||||||
|
v->setZoomScale(d);
|
||||||
|
}
|
||||||
|
}, src, scaleFactor, ImageViewManager::SameStudySeries);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ public:
|
|||||||
|
|
||||||
void viewPaned(DicomImageView *src, void* offsetVector);
|
void viewPaned(DicomImageView *src, void* offsetVector);
|
||||||
|
|
||||||
void viewZoomed(DicomImageView *src, double scaleFactor);
|
void viewZoomed(DicomImageView *src, double* scaleFactor);
|
||||||
|
|
||||||
void viewEndWindowLevel(DicomImageView *src, double level, double window);
|
void viewEndWindowLevel(DicomImageView *src, double level, double window);
|
||||||
|
|
||||||
|
|||||||
@@ -415,8 +415,7 @@ void DicomImageView::dispatchEvent(vtkObject *, unsigned long eid, void *callDat
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case (ActorDraggableInteractorStyle::DraggableStyleEvents::EndDollyEvent):{
|
case (ActorDraggableInteractorStyle::DraggableStyleEvents::EndDollyEvent):{
|
||||||
double newScaleFactor = ((double *) callData)[1];
|
emit onEndZoom(this, (double *) callData);
|
||||||
emit onEndZoom(this, newScaleFactor);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case (ActorDraggableInteractorStyle::DraggableStyleEvents::SlicedEvent): {
|
case (ActorDraggableInteractorStyle::DraggableStyleEvents::SlicedEvent): {
|
||||||
@@ -483,6 +482,14 @@ void DicomImageView::setZoomScale(double scale) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DicomImageView::setZoomFactor(double factor) {
|
||||||
|
if (hasSeries()) {
|
||||||
|
double newScale = factor* mImageViewer->GetRenderer()->GetActiveCamera()->GetParallelScale();
|
||||||
|
mImageViewer->SetZoomScale(newScale);
|
||||||
|
mImageViewer->Render();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DicomImageView::applyPanOffset(double *pan) {
|
void DicomImageView::applyPanOffset(double *pan) {
|
||||||
if (hasSeries()) {
|
if (hasSeries()) {
|
||||||
mImageViewer->applyPanOffset(pan);
|
mImageViewer->applyPanOffset(pan);
|
||||||
|
|||||||
@@ -113,6 +113,8 @@ public:
|
|||||||
|
|
||||||
void setZoomScale(double scale);
|
void setZoomScale(double scale);
|
||||||
|
|
||||||
|
void setZoomFactor(double factor);
|
||||||
|
|
||||||
void applyPanOffset(double *p);
|
void applyPanOffset(double *p);
|
||||||
|
|
||||||
void shiftCamera(double *p);
|
void shiftCamera(double *p);
|
||||||
@@ -190,7 +192,7 @@ signals:
|
|||||||
|
|
||||||
void onEndPan(DicomImageView *view, void * offsetVector);
|
void onEndPan(DicomImageView *view, void * offsetVector);
|
||||||
|
|
||||||
void onEndZoom(DicomImageView *view, double newScaleFactor);
|
void onEndZoom(DicomImageView *view, double* scaleFactor);
|
||||||
|
|
||||||
void onEndWindowLevel(DicomImageView *view, double level, double window);
|
void onEndWindowLevel(DicomImageView *view, double level, double window);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user