feat: reset zoom & pan before rotate & flip
This commit is contained in:
@@ -426,7 +426,7 @@ int DICOMImageViewer::GetSliceMax() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int DICOMImageViewer::GetSlice() {
|
int DICOMImageViewer::GetSlice() {
|
||||||
return this->ImageMapper->GetSliceNumber();
|
return Slice;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DICOMImageViewer::SetSlice(int slice) {
|
void DICOMImageViewer::SetSlice(int slice) {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ DicomImageView::DicomImageView(QWidget *parent)
|
|||||||
mSeries(nullptr), mScrollBar(new ClickableScrollBar(Qt::Orientation::Vertical, this)),
|
mSeries(nullptr), mScrollBar(new ClickableScrollBar(Qt::Orientation::Vertical, this)),
|
||||||
mTitleBar(createMyTitleBar()), mGLWidget(new QVTKOpenGLNativeWidget), mVcrToolbar(nullptr), mVcrController(nullptr),
|
mTitleBar(createMyTitleBar()), mGLWidget(new QVTKOpenGLNativeWidget), mVcrToolbar(nullptr), mVcrController(nullptr),
|
||||||
mOverlayView(nullptr), mBaseView(nullptr), mIsCine(false), mIsNegative(false),
|
mOverlayView(nullptr), mBaseView(nullptr), mIsCine(false), mIsNegative(false),
|
||||||
mIsOverlay(false), mIsSlotInited(false)
|
mIsOverlay(false), mIsSlotInited(false),mCurrentRAngle(0)
|
||||||
{
|
{
|
||||||
//main container
|
//main container
|
||||||
QFrame *wrapper = new QFrame(this);
|
QFrame *wrapper = new QFrame(this);
|
||||||
@@ -610,6 +610,7 @@ void DicomImageView::hFlipImage() {
|
|||||||
int slice = mImageViewer->GetSlice();
|
int slice = mImageViewer->GetSlice();
|
||||||
//HFlip
|
//HFlip
|
||||||
//mImageViewer->GetRenderer()->GetActiveCamera()->SetViewUp(0, 1, 0);
|
//mImageViewer->GetRenderer()->GetActiveCamera()->SetViewUp(0, 1, 0);
|
||||||
|
resetPanZoom();
|
||||||
mImageViewer->GetRenderer()->GetActiveCamera()->Azimuth(180);
|
mImageViewer->GetRenderer()->GetActiveCamera()->Azimuth(180);
|
||||||
FlipExportHelper::toggleFlip();
|
FlipExportHelper::toggleFlip();
|
||||||
//to avoid black out problem during slicing
|
//to avoid black out problem during slicing
|
||||||
@@ -627,6 +628,7 @@ void DicomImageView::vFlipImage() {
|
|||||||
//double scale = mImageViewer->GetRenderer()->GetActiveCamera()->GetParallelScale();
|
//double scale = mImageViewer->GetRenderer()->GetActiveCamera()->GetParallelScale();
|
||||||
|
|
||||||
int slice = mImageViewer->GetSlice();
|
int slice = mImageViewer->GetSlice();
|
||||||
|
resetPanZoom();
|
||||||
//Method 2: Order matters
|
//Method 2: Order matters
|
||||||
mImageViewer->GetRenderer()->GetActiveCamera()->Elevation(-180);
|
mImageViewer->GetRenderer()->GetActiveCamera()->Elevation(-180);
|
||||||
mImageViewer->GetRenderer()->GetActiveCamera()->Roll(180);
|
mImageViewer->GetRenderer()->GetActiveCamera()->Roll(180);
|
||||||
@@ -646,7 +648,9 @@ void DicomImageView::vFlipImage() {
|
|||||||
void DicomImageView::rotateImage(double angle, TransFormType operation) {
|
void DicomImageView::rotateImage(double angle, TransFormType operation) {
|
||||||
if (hasSeries()) {
|
if (hasSeries()) {
|
||||||
int slice = mImageViewer->GetSlice();
|
int slice = mImageViewer->GetSlice();
|
||||||
mImageViewer->GetRenderer()->GetActiveCamera()->Roll(angle);
|
resetPanZoom();
|
||||||
|
mImageViewer->GetRenderer()->GetActiveCamera()->Roll(mCurrentRAngle + angle);
|
||||||
|
mCurrentRAngle=mCurrentRAngle+angle;
|
||||||
//to avoid black out problem during slicing
|
//to avoid black out problem during slicing
|
||||||
//slcing is related with rotation, you have to recalculate to get it right
|
//slcing is related with rotation, you have to recalculate to get it right
|
||||||
mImageViewer->GetRenderer()->ResetCameraClippingRange();
|
mImageViewer->GetRenderer()->ResetCameraClippingRange();
|
||||||
|
|||||||
@@ -346,6 +346,8 @@ private:
|
|||||||
bool mIsFirstRenderAfterLoad;
|
bool mIsFirstRenderAfterLoad;
|
||||||
bool mfirstShowFlag = true;
|
bool mfirstShowFlag = true;
|
||||||
|
|
||||||
|
int mCurrentRAngle;
|
||||||
|
|
||||||
uint mViewID;
|
uint mViewID;
|
||||||
|
|
||||||
void initImageViewer();
|
void initImageViewer();
|
||||||
|
|||||||
Reference in New Issue
Block a user