File indexing completed on 2024-05-12 16:01:24

0001 /*
0002  *
0003  *  SPDX-FileCopyrightText: 2009 Edward Apap <schumifer@hotmail.com>
0004  *
0005  *  SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 #ifndef KCANVASPREVIEW_H
0009 #define KCANVASPREVIEW_H
0010 
0011 #include <QWidget>
0012 
0013 class KCanvasPreview : public QWidget
0014 {
0015     Q_OBJECT
0016 
0017 public:
0018     KCanvasPreview(QWidget * parent = 0);
0019 
0020     ~KCanvasPreview() override;
0021 
0022     void paintEvent(QPaintEvent *) override;
0023     void mousePressEvent(QMouseEvent *event) override;
0024     void mouseReleaseEvent(QMouseEvent *) override;
0025     void mouseMoveEvent(QMouseEvent *event) override;
0026 
0027     void setImageSize(qint32 w, qint32 h);
0028     void setCanvasSize(qint32 w, qint32 h);
0029     void setImageOffset(qint32 x, qint32 y);
0030 
0031     bool xOffsetLocked() const;
0032     bool yOffsetLocked() const;
0033 
0034 public Q_SLOTS:
0035     void setxOffsetLock(bool);
0036     void setyOffsetLock(bool);
0037 
0038 Q_SIGNALS:
0039     void sigModifiedXOffset(int);
0040     void sigModifiedYOffset(int);
0041 
0042 protected:
0043     bool isInRegion(QPoint point);
0044     double scalingFactor();
0045 
0046 protected:
0047     qint32 m_width {0}, m_height {0};
0048     qint32 m_imageWidth {0}, m_imageHeight {0};
0049     qint32 m_xOffset {0}, m_yOffset {0};
0050 
0051     qint16 m_xCanvasOffset {0}, m_yCanvasOffset {0};
0052     bool m_dragging {false};
0053 
0054     QImage m_image;
0055     QPoint m_prevDragPoint;
0056 
0057     bool m_xOffsetLocked {false};
0058     bool m_yOffsetLocked {false};
0059 };
0060 
0061 
0062 #endif /* KCANVASPREVIEW_H */