/* QAD - Qt ADvanced Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef IMAGE_VIEW_H #define IMAGE_VIEW_H #include "qad_widgets_export.h" #include class QGraphicsPixmapItem; class QAD_WIDGETS_EXPORT ImageView: public QGraphicsView { Q_OBJECT Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap) Q_PROPERTY(bool viewInteractive READ viewInteractive WRITE setViewInteractive) Q_PROPERTY(bool smoothBigImages READ isSmoothBigImages WRITE setSmoothBigImages) public: ImageView(QWidget * parent = nullptr); ~ImageView() override; void setImage(const QImage & i, bool save = true); void setImage(const QByteArray & i); QByteArray image() const { return im_data; } QPixmap pixmap() const; bool viewInteractive() const { return interactive_; } void clear(); bool isSmoothBigImages() const { return smooth_big; } void setSmoothBigImages(bool yes); public slots: void autofit(); void setPixmap(QPixmap pixmap); void setViewInteractive(bool yes); signals: void clicked(QPointF, Qt::MouseButtons); private: void mouseDoubleClickEvent(QMouseEvent *) override; void mousePressEvent(QMouseEvent * e) override; void wheelEvent(QWheelEvent * e) override; bool eventFilter(QObject * o, QEvent * e) override; void adjustView(); QGraphicsPixmapItem * item; QByteArray im_data; QPoint prev_pos; bool autofit_, interactive_, smooth_big; QPixmap map; }; #endif // IMAGE_VIEW_H