// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef PAINTAREA_H #define PAINTAREA_H #include #include #include #include class BrushInterface; class PaintArea : public QWidget { Q_OBJECT public: PaintArea(QWidget *parent = nullptr); bool openImage(const QString &fileName); bool saveImage(const QString &fileName, const char *fileFormat); void setImage(const QImage &image); void insertShape(const QPainterPath &path); void setBrushColor(const QColor &color); void setBrushWidth(int width); void setBrush(BrushInterface *brushInterface, const QString &brush); QImage image() const { return theImage; } QColor brushColor() const { return color; } int brushWidth() const { return thickness; } QSize sizeHint() const override; protected: void paintEvent(QPaintEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; private: void setupPainter(QPainter &painter); QImage theImage = {500, 400, QImage::Format_RGB32}; QColor color = Qt::blue; int thickness = 3; BrushInterface *brushInterface = nullptr; QString brush; QPoint lastPos = {-1, -1}; QPainterPath pendingPath; }; #endif