1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
#ifndef DIMAGEVIEWER_H
#define DIMAGEVIEWER_H
#include <dtkwidget_global.h>
#include <DGraphicsView>
#include <DObject>
DWIDGET_BEGIN_NAMESPACE
class DImageViewerPrivate;
class LIBDTKWIDGETSHARED_EXPORT DImageViewer : public DGraphicsView, public DCORE_NAMESPACE::DObject
{
Q_OBJECT
Q_PROPERTY(QImage image READ image WRITE setImage NOTIFY imageChanged)
Q_PROPERTY(QString fileName READ fileName WRITE setFileName NOTIFY fileNameChanged)
Q_PROPERTY(qreal scaleFactor READ scaleFactor WRITE setScaleFactor NOTIFY scaleFactorChanged)
Q_PROPERTY(int rotateAngle READ rotateAngle NOTIFY rotateAngleChanged)
public:
explicit DImageViewer(QWidget *parent = nullptr);
explicit DImageViewer(const QImage &image, QWidget *parent = nullptr);
explicit DImageViewer(const QString &fileName, QWidget *parent = nullptr);
~DImageViewer() Q_DECL_OVERRIDE;
QImage image() const;
void setImage(const QImage &image);
QString fileName() const;
void setFileName(const QString &fileName);
qreal scaleFactor() const;
void setScaleFactor(qreal factor);
void scaleImage(qreal factor);
void autoFitImage();
void fitToWidget();
void fitNormalSize();
void rotateClockwise();
void rotateCounterclockwise();
int rotateAngle() const;
void resetRotateAngle();
void clear();
void centerOn(qreal x, qreal y);
QRect visibleImageRect() const;
Q_SLOT void scaleAtPoint(QPoint pos, qreal factor);
void beginCropImage();
void endCropImage();
void resetCropImage();
void setCropAspectRatio(qreal w, qreal h);
QRect cropImageRect() const;
Q_SIGNALS:
void imageChanged(const QImage &image);
void fileNameChanged(const QString &fileName);
void scaleFactorChanged(qreal scaleFactor);
void rotateAngleChanged(int angle);
void transformChanged();
void requestPreviousImage();
void requestNextImage();
void cropImageChanged(const QRect &rect);
protected:
void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;
bool event(QEvent *event) Q_DECL_OVERRIDE;
private:
Q_DISABLE_COPY(DImageViewer)
D_DECLARE_PRIVATE(DImageViewer)
D_PRIVATE_SLOT(void _q_pinchAnimeFinished())
};
DWIDGET_END_NAMESPACE
#endif // DIMAGEVIEWER_H
|