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 }