diff --git a/qmlUiKirigami/ImageViewer.qml b/qmlUiKirigami/ImageViewer.qml --- a/qmlUiKirigami/ImageViewer.qml +++ b/qmlUiKirigami/ImageViewer.qml @@ -91,6 +91,22 @@ onTriggered: { imageDoc.rotate(90) } + }, + Kirigami.Action { + iconName: "image-flip-horizontal-symbolic" + text: i18n("Mirror") + tooltip: i18n("Flips the image horizontally") + onTriggered: { + imageDoc.scale( -1, 1) + } + }, + Kirigami.Action { + iconName: "image-flip-vertical-symbolic" + text: i18n("Flip") + tooltip: i18n("Flips the image vertically") + onTriggered: { + imageDoc.scale( 1, -1) + } } ] } diff --git a/src/imagedocument.h b/src/imagedocument.h --- a/src/imagedocument.h +++ b/src/imagedocument.h @@ -37,6 +37,7 @@ QImage visualImage(); Q_INVOKABLE void rotate( int angle); + Q_INVOKABLE void scale(int i, int j); signals: void pathChanged(const QString &url); diff --git a/src/imagedocument.cpp b/src/imagedocument.cpp --- a/src/imagedocument.cpp +++ b/src/imagedocument.cpp @@ -64,7 +64,18 @@ if (QFileInfo( location).isWritable()) { m_image->save( location); } - + emit visualImageChanged(); +} + +void ImageDocument::scale(int i, int j) +{ + QMatrix matrix; + matrix.scale( i, j); + *m_image = m_image->transformed( matrix); + QString location = QUrl( m_path).path(); + if (QFileInfo( location).isWritable()) { + m_image->save( location); + } emit visualImageChanged(); }