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

0001 /*
0002  * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #ifndef KISREFERENCEIMAGESDECORATION_H
0008 #define KISREFERENCEIMAGESDECORATION_H
0009 
0010 #include <QObject>
0011 #include <QPainter>
0012 #include <QRectF>
0013 #include <kis_shared_ptr.h>
0014 
0015 class KisReferenceImagesDecoration;
0016 class KisReferenceImagesLayer;
0017 typedef KisSharedPtr<KisReferenceImagesDecoration> KisReferenceImagesDecorationSP;
0018 
0019 #include <kis_coordinates_converter.h>
0020 #include <kis_canvas_decoration.h>
0021 #include <kis_canvas2.h>
0022 #include <kis_types.h>
0023 
0024 /**
0025  * @brief The KisReferenceImagesDecoration class draws the reference images on the canvas.
0026  * The document stores the list of reference images.
0027  */
0028 class KRITAUI_EXPORT KisReferenceImagesDecoration : public KisCanvasDecoration
0029 {
0030     Q_OBJECT
0031 public:
0032     KisReferenceImagesDecoration(QPointer<KisView> parent, KisDocument *document, bool viewReady = true);
0033     ~KisReferenceImagesDecoration() override;
0034 
0035     void addReferenceImage(KisReferenceImage *referenceImage);
0036 
0037     bool documentHasReferenceImages() const;
0038 
0039 private Q_SLOTS:
0040     void slotNodeAdded(KisNodeSP);
0041     void slotNodeRemoved(KisNodeSP);
0042     void slotLayersChanged();
0043     void slotReferenceImagesChanged(const QRectF &dirtyRect);
0044 
0045 protected:
0046     void drawDecoration(QPainter& gc, const QRectF& updateRect, const KisCoordinatesConverter *converter, KisCanvas2* canvas) override;
0047 
0048 private:
0049     struct Private;
0050     const QScopedPointer<Private> d;
0051 
0052     void setReferenceImageLayer(KisSharedPtr<KisReferenceImagesLayer> layer, bool updateCanvas);
0053 };
0054 
0055 #endif // KISREFERENCEIMAGESDECORATION_H