feat: basic image flip support
This commit is contained in:
parent
deed477d49
commit
6a9e5e80d0
|
@ -23,6 +23,7 @@ void ActionManager::setupAction(MainWindow *mainWindow)
|
||||||
{
|
{
|
||||||
CREATE_NEW_ACTION(mainWindow, actionZoomIn);
|
CREATE_NEW_ACTION(mainWindow, actionZoomIn);
|
||||||
CREATE_NEW_ACTION(mainWindow, actionZoomOut);
|
CREATE_NEW_ACTION(mainWindow, actionZoomOut);
|
||||||
|
CREATE_NEW_ACTION(mainWindow, actionHorizontalFlip);
|
||||||
CREATE_NEW_ACTION(mainWindow, actionCopyPixmap);
|
CREATE_NEW_ACTION(mainWindow, actionCopyPixmap);
|
||||||
CREATE_NEW_ACTION(mainWindow, actionCopyFilePath);
|
CREATE_NEW_ACTION(mainWindow, actionCopyFilePath);
|
||||||
CREATE_NEW_ACTION(mainWindow, actionPaste);
|
CREATE_NEW_ACTION(mainWindow, actionPaste);
|
||||||
|
@ -45,6 +46,7 @@ void ActionManager::retranslateUi(MainWindow *mainWindow)
|
||||||
|
|
||||||
actionZoomIn->setText(QCoreApplication::translate("MainWindow", "Zoom in", nullptr));
|
actionZoomIn->setText(QCoreApplication::translate("MainWindow", "Zoom in", nullptr));
|
||||||
actionZoomOut->setText(QCoreApplication::translate("MainWindow", "Zoom out", nullptr));
|
actionZoomOut->setText(QCoreApplication::translate("MainWindow", "Zoom out", nullptr));
|
||||||
|
actionHorizontalFlip->setText(QCoreApplication::translate("MainWindow", "Horizontal flip", nullptr));
|
||||||
actionCopyPixmap->setText(QCoreApplication::translate("MainWindow", "Copy P&ixmap", nullptr));
|
actionCopyPixmap->setText(QCoreApplication::translate("MainWindow", "Copy P&ixmap", nullptr));
|
||||||
actionCopyFilePath->setText(QCoreApplication::translate("MainWindow", "Copy &File Path", nullptr));
|
actionCopyFilePath->setText(QCoreApplication::translate("MainWindow", "Copy &File Path", nullptr));
|
||||||
actionPaste->setText(QCoreApplication::translate("MainWindow", "&Paste", nullptr));
|
actionPaste->setText(QCoreApplication::translate("MainWindow", "&Paste", nullptr));
|
||||||
|
|
|
@ -18,6 +18,7 @@ public:
|
||||||
public:
|
public:
|
||||||
QAction *actionZoomIn;
|
QAction *actionZoomIn;
|
||||||
QAction *actionZoomOut;
|
QAction *actionZoomOut;
|
||||||
|
QAction *actionHorizontalFlip;
|
||||||
QAction *actionCopyPixmap;
|
QAction *actionCopyPixmap;
|
||||||
QAction *actionCopyFilePath;
|
QAction *actionCopyFilePath;
|
||||||
QAction *actionPaste;
|
QAction *actionPaste;
|
||||||
|
|
|
@ -134,6 +134,17 @@ void GraphicsView::zoomView(qreal scaleFactor)
|
||||||
emit navigatorViewRequired(!isThingSmallerThanWindowWith(transform()), m_rotateAngle);
|
emit navigatorViewRequired(!isThingSmallerThanWindowWith(transform()), m_rotateAngle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GraphicsView::flipView(bool horizontal)
|
||||||
|
{
|
||||||
|
if (horizontal) {
|
||||||
|
scale(-1, 1);
|
||||||
|
} else {
|
||||||
|
scale(1, -1);
|
||||||
|
}
|
||||||
|
// I guess we don't need to check if we need to trigger navigator view here
|
||||||
|
// since fliping doesn't affact the image rectangle size.
|
||||||
|
}
|
||||||
|
|
||||||
void GraphicsView::resetScale()
|
void GraphicsView::resetScale()
|
||||||
{
|
{
|
||||||
resetWithScaleAndRotate(1, m_rotateAngle);
|
resetWithScaleAndRotate(1, m_rotateAngle);
|
||||||
|
|
|
@ -26,6 +26,7 @@ public:
|
||||||
|
|
||||||
void resetTransform();
|
void resetTransform();
|
||||||
void zoomView(qreal scaleFactor);
|
void zoomView(qreal scaleFactor);
|
||||||
|
void flipView(bool horizontal = true);
|
||||||
void resetScale();
|
void resetScale();
|
||||||
void rotateView(qreal rotateAngel);
|
void rotateView(qreal rotateAngel);
|
||||||
void fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRadioMode = Qt::IgnoreAspectRatio);
|
void fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRadioMode = Qt::IgnoreAspectRatio);
|
||||||
|
|
|
@ -420,6 +420,10 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
|
||||||
menu->addAction(paste);
|
menu->addAction(paste);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menu->addSeparator();
|
||||||
|
|
||||||
|
menu->addAction(m_am->actionHorizontalFlip);
|
||||||
|
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
menu->addAction(stayOnTopMode);
|
menu->addAction(stayOnTopMode);
|
||||||
menu->addAction(protectedMode);
|
menu->addAction(protectedMode);
|
||||||
|
@ -554,6 +558,11 @@ void MainWindow::on_actionZoomOut_triggered()
|
||||||
m_graphicsView->zoomView(0.8);
|
m_graphicsView->zoomView(0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionHorizontalFlip_triggered()
|
||||||
|
{
|
||||||
|
m_graphicsView->flipView();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionCopyPixmap_triggered()
|
void MainWindow::on_actionCopyPixmap_triggered()
|
||||||
{
|
{
|
||||||
QClipboard *cb = QApplication::clipboard();
|
QClipboard *cb = QApplication::clipboard();
|
||||||
|
|
|
@ -65,6 +65,7 @@ protected:
|
||||||
private slots:
|
private slots:
|
||||||
void on_actionZoomIn_triggered();
|
void on_actionZoomIn_triggered();
|
||||||
void on_actionZoomOut_triggered();
|
void on_actionZoomOut_triggered();
|
||||||
|
void on_actionHorizontalFlip_triggered();
|
||||||
void on_actionCopyPixmap_triggered();
|
void on_actionCopyPixmap_triggered();
|
||||||
void on_actionCopyFilePath_triggered();
|
void on_actionCopyFilePath_triggered();
|
||||||
void on_actionPaste_triggered();
|
void on_actionPaste_triggered();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user