fix: always rotate according to current viewport state
This commit is contained in:
parent
e1324d901c
commit
622938ac23
|
@ -133,6 +133,19 @@ void GraphicsView::zoomView(qreal scaleFactor)
|
||||||
emit navigatorViewRequired(!isThingSmallerThanWindowWith(transform()), transform());
|
emit navigatorViewRequired(!isThingSmallerThanWindowWith(transform()), transform());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is always according to user's view.
|
||||||
|
// the direction of the rotation will NOT be clockwise because the y-axis points downwards.
|
||||||
|
void GraphicsView::rotateView(bool clockwise)
|
||||||
|
{
|
||||||
|
resetScale();
|
||||||
|
|
||||||
|
QTransform tf(0, clockwise ? 1 : -1, 0,
|
||||||
|
clockwise ? -1 : 1, 0, 0,
|
||||||
|
0, 0, 1);
|
||||||
|
tf = transform() * tf;
|
||||||
|
setTransform(tf);
|
||||||
|
}
|
||||||
|
|
||||||
void GraphicsView::flipView(bool horizontal)
|
void GraphicsView::flipView(bool horizontal)
|
||||||
{
|
{
|
||||||
QTransform tf(horizontal ? -1 : 1, 0, 0,
|
QTransform tf(horizontal ? -1 : 1, 0, 0,
|
||||||
|
@ -151,12 +164,6 @@ void GraphicsView::resetScale()
|
||||||
emit navigatorViewRequired(!isThingSmallerThanWindowWith(transform()), transform());
|
emit navigatorViewRequired(!isThingSmallerThanWindowWith(transform()), transform());
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphicsView::rotateView(qreal rotateAngel)
|
|
||||||
{
|
|
||||||
resetScale();
|
|
||||||
rotate(rotateAngel);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GraphicsView::fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRadioMode)
|
void GraphicsView::fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRadioMode)
|
||||||
{
|
{
|
||||||
QGraphicsView::fitInView(rect, aspectRadioMode);
|
QGraphicsView::fitInView(rect, aspectRadioMode);
|
||||||
|
|
|
@ -26,9 +26,9 @@ public:
|
||||||
|
|
||||||
void resetTransform();
|
void resetTransform();
|
||||||
void zoomView(qreal scaleFactor);
|
void zoomView(qreal scaleFactor);
|
||||||
|
void rotateView(bool clockwise = true);
|
||||||
void flipView(bool horizontal = true);
|
void flipView(bool horizontal = true);
|
||||||
void resetScale();
|
void resetScale();
|
||||||
void rotateView(qreal rotateAngel);
|
|
||||||
void fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRadioMode = Qt::IgnoreAspectRatio);
|
void fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRadioMode = Qt::IgnoreAspectRatio);
|
||||||
|
|
||||||
void checkAndDoFitInView(bool markItOnAnyway = true);
|
void checkAndDoFitInView(bool markItOnAnyway = true);
|
||||||
|
|
|
@ -119,7 +119,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||||
this, &MainWindow::toggleCheckerboard);
|
this, &MainWindow::toggleCheckerboard);
|
||||||
connect(m_bottomButtonGroup, &BottomButtonGroup::rotateRightBtnClicked,
|
connect(m_bottomButtonGroup, &BottomButtonGroup::rotateRightBtnClicked,
|
||||||
this, [ = ](){
|
this, [ = ](){
|
||||||
m_graphicsView->rotateView(90);
|
m_graphicsView->rotateView();
|
||||||
m_graphicsView->checkAndDoFitInView();
|
m_graphicsView->checkAndDoFitInView();
|
||||||
m_gv->setVisible(false);
|
m_gv->setVisible(false);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue
Block a user