File indexing completed on 2025-02-23 04:08:58

0001 /*
0002  * SPDX-FileCopyrightText: 2008 Cyrille Berger <cberger@cberger.net>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "kis_canvas_decoration.h"
0008 #include "kis_canvas2.h"
0009 #include "kis_debug.h"
0010 #include "kis_canvas_resource_provider.h"
0011 
0012 struct KisCanvasDecoration::Private {
0013     bool visible;
0014     QPointer<KisView> view;
0015     QString id;
0016     int priority = 0;
0017 };
0018 
0019 KisCanvasDecoration::KisCanvasDecoration(const QString& id, QPointer<KisView>parent)
0020     : QObject(parent)
0021     , d(new Private)
0022 {
0023     d->visible = false;
0024     d->view = parent;
0025     d->id = id;
0026 }
0027 
0028 KisCanvasDecoration::~KisCanvasDecoration()
0029 {
0030     delete d;
0031 }
0032 
0033 void KisCanvasDecoration::setView(QPointer<KisView>imageView)
0034 {
0035     d->view = imageView;
0036 }
0037 
0038 
0039 const QString& KisCanvasDecoration::id() const
0040 {
0041     return d->id;
0042 }
0043 
0044 void KisCanvasDecoration::setVisible(bool v)
0045 {
0046     d->visible = v;
0047     if (d->view &&
0048             d->view->canvasBase()) {
0049 
0050         d->view->canvasBase()->updateCanvas();
0051     }
0052 }
0053 
0054 bool KisCanvasDecoration::visible() const
0055 {
0056     return d->visible;
0057 }
0058 
0059 void KisCanvasDecoration::toggleVisibility()
0060 {
0061     setVisible(!visible());
0062 }
0063 
0064 void KisCanvasDecoration::paint(QPainter& gc, const QRectF& updateArea, const KisCoordinatesConverter *converter, KisCanvas2 *canvas = 0)
0065 {
0066     KIS_SAFE_ASSERT_RECOVER_RETURN(visible());
0067 
0068     if (!canvas) {
0069         dbgFile<<"canvas does not exist:"<<canvas;
0070     }
0071 
0072     drawDecoration(gc, updateArea, converter,canvas);
0073 }
0074 
0075 int KisCanvasDecoration::priority() const
0076 {
0077     return d->priority;
0078 }
0079 
0080 void KisCanvasDecoration::setPriority(int value)
0081 {
0082     d->priority = value;
0083 }
0084 
0085 int KisCanvasDecoration::decorationThickness() const
0086 {
0087     if (d->view && d->view->canvasBase() && d->view->canvasBase()->resourceManager()) {
0088         return d->view->canvasBase()->resourceManager()->decorationThickness();
0089     }
0090     return 1;
0091 }
0092 
0093 bool KisCanvasDecoration::comparePriority(KisCanvasDecorationSP decoration1, KisCanvasDecorationSP decoration2)
0094 {
0095     return decoration1->priority() < decoration2->priority();
0096 }
0097 void KisCanvasDecoration::notifyWindowMinimized(bool)
0098 {
0099 
0100 }
0101 QPointer<KisView>KisCanvasDecoration::view() const
0102 {
0103     return d->view;
0104 }