File indexing completed on 2025-02-23 04:08:57
0001 /* 0002 * SPDX-FileCopyrightText: 2007 Boudewijn Rempt <boud@valdyas.org>, (C) 0003 * SPDX-FileCopyrightText: 2015 Michael Abrahams <miabraha@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 #ifndef _KIS_ABSTRACT_CANVAS_WIDGET_ 0008 #define _KIS_ABSTRACT_CANVAS_WIDGET_ 0009 0010 class QWidget; 0011 class QRect; 0012 class QPainter; 0013 class QRect; 0014 0015 class KoToolProxy; 0016 0017 #include <kis_canvas_decoration.h> 0018 0019 class KisDisplayFilter; 0020 class KisDisplayColorConverter; 0021 class QBitArray; 0022 class KoColorSpace; 0023 0024 #include "kis_types.h" 0025 #include "kis_ui_types.h" 0026 #include "KisWraparoundAxis.h" 0027 0028 class KisAbstractCanvasWidget 0029 { 0030 0031 public: 0032 0033 KisAbstractCanvasWidget() {} 0034 0035 virtual ~KisAbstractCanvasWidget() {} 0036 0037 virtual QWidget * widget() = 0; 0038 0039 virtual KoToolProxy * toolProxy() const = 0; 0040 0041 /// Draw the specified decorations on the view. 0042 virtual void drawDecorations(QPainter & gc, const QRect &updateWidgetRect) const = 0; 0043 0044 virtual void addDecoration(KisCanvasDecorationSP deco) = 0; 0045 virtual void removeDecoration(const QString& id) = 0; 0046 0047 virtual KisCanvasDecorationSP decoration(const QString& id) const = 0; 0048 0049 virtual void setDecorations(const QList<KisCanvasDecorationSP> &) = 0; 0050 0051 virtual QList<KisCanvasDecorationSP> decorations() const = 0; 0052 0053 /// set the specified display filter on the canvas 0054 virtual void setDisplayFilter(QSharedPointer<KisDisplayFilter> displayFilter) = 0; 0055 0056 /// set/update the color space of the attached image 0057 virtual void notifyImageColorSpaceChanged(const KoColorSpace *cs) = 0; 0058 0059 virtual void setWrapAroundViewingMode(bool value) = 0; 0060 virtual bool wrapAroundViewingMode() const = 0; 0061 0062 virtual void setWrapAroundViewingModeAxis(WrapAroundAxis value) = 0; 0063 virtual WrapAroundAxis wrapAroundViewingModeAxis() const = 0; 0064 0065 // Called from KisCanvas2::channelSelectionChanged 0066 virtual void channelSelectionChanged(const QBitArray &channelFlags) = 0; 0067 0068 // Called from KisCanvas2::slotSetDisplayProfile 0069 virtual void setDisplayColorConverter(KisDisplayColorConverter *colorConverter) = 0; 0070 0071 // Called from KisCanvas2::finishResizingImage 0072 virtual void finishResizingImage(qint32 w, qint32 h) = 0; 0073 0074 // Called from KisCanvas2::startUpdateProjection 0075 virtual KisUpdateInfoSP startUpdateCanvasProjection(const QRect & rc) = 0; 0076 0077 // Called from KisCanvas2::updateCanvasProjection 0078 virtual QRect updateCanvasProjection(KisUpdateInfoSP info) = 0; 0079 virtual QVector<QRect> updateCanvasProjection(const QVector<KisUpdateInfoSP> &infoObjects) = 0; 0080 0081 virtual void updateCanvasImage(const QRect &imageUpdateRect) = 0; 0082 virtual void updateCanvasDecorations(const QRect &decoUpdateRect) = 0; 0083 0084 /** 0085 * Returns true if the asynchronous engine of the canvas 0086 * (e.g. openGL pipeline) is busy with processing of the previous 0087 * update events. This will make KisCanvas2 to postpone and 0088 * compress update events. 0089 */ 0090 virtual bool isBusy() const = 0; 0091 0092 virtual void setLodResetInProgress(bool value) = 0; 0093 }; 0094 0095 #endif // _KIS_ABSTRACT_CANVAS_WIDGET_