Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_shape_layer_canvas.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef KIS_SHAPE_LAYER_CANVAS_H
7#define KIS_SHAPE_LAYER_CANVAS_H
8
9#include <QMutex>
10#include <QRegion>
11#include <KoCanvasBase.h>
12
13#include <kis_types.h>
16#include <KoShapeManager.h>
22
23class KoColorProfile;
24class KoShapeManager;
25class KoToolProxy;
26class KoViewConverter;
27class KUndo2Command;
28class QWidget;
29class KoUnit;
31class KoColorSpace;
32
34{
35 Q_OBJECT
36public:
39
40 virtual void setImage(KisImageWSP image);
42 virtual void forceRepaint() = 0;
43 virtual bool hasPendingUpdates() const = 0;
44 virtual KisPaintDeviceSP projection() const = 0;
45
47
49 virtual void rerenderAfterBeingInvisible() = 0;
50 virtual void resetCache(const KoColorSpace *colorSpace) = 0;
51
52 KoShapeManager *shapeManager() const override;
53 const KoViewConverter *viewConverter() const override;
55
56 void gridSize(QPointF *offset, QSizeF *spacing) const override;
57 bool snapToGrid() const override;
58 void addCommand(KUndo2Command *command) override;
60 KoToolProxy * toolProxy() const override;
61 QWidget* canvasWidget() override;
62 const QWidget* canvasWidget() const override;
63 KoUnit unit() const override;
64 void setCursor(const QCursor &) override {}
65
66protected:
67 QScopedPointer<KoShapeManager> m_shapeManager;
68 QScopedPointer<KoSelectedShapesProxy> m_selectedShapesProxy;
70 bool m_isDestroying {false};
71
73};
74
83{
84 Q_OBJECT
85public:
86
89 ~KisShapeLayerCanvas() override;
90
93 KisPaintDeviceSP projection() const override;
94
95 void setImage(KisImageWSP image) override;
96 void updateCanvas(const QRectF& rc) override;
97 void updateCanvas(const QVector<QRectF> &region);
98 void forceRepaint() override;
99 bool hasPendingUpdates() const override;
100
101 void forceRepaintWithHiddenAreas() override;
102
103 void resetCache(const KoColorSpace *colorSpace = 0) override;
104 void rerenderAfterBeingInvisible() override;
105
106
107private Q_SLOTS:
109 void repaint();
112
113private:
116
118 volatile bool m_hasUpdateInCompressor = false;
121
126
128
131};
132
133#endif
virtual KisPaintDeviceSP projection() const =0
QScopedPointer< KoSelectedShapesProxy > m_selectedShapesProxy
void setCursor(const QCursor &) override
KisShapeLayerCanvasBase(KisShapeLayer *parent)
virtual bool hasPendingUpdates() const =0
void gridSize(QPointF *offset, QSizeF *spacing) const override
const KoViewConverter * viewConverter() const override
virtual void setImage(KisImageWSP image)
virtual void resetCache(const KoColorSpace *colorSpace)=0
KoToolProxy * toolProxy() const override
bool snapToGrid() const override
KisImageViewConverter m_viewConverter
QScopedPointer< KoShapeManager > m_shapeManager
virtual void forceRepaint()=0
virtual void rerenderAfterBeingInvisible()=0
KoShapeManager * shapeManager() const override
virtual void forceRepaintWithHiddenAreas()
KoSelectedShapesProxy * selectedShapesProxy() const override
selectedShapesProxy() is a special interface for keeping a persistent connections to selectionChanged...
void addCommand(KUndo2Command *command) override
bool hasPendingUpdates() const override
void forceRepaintWithHiddenAreas() override
void setProjection(KisPaintDeviceSP projection)
This canvas won't render onto a widget, but a projection.
KisSignalAutoConnectionsStore m_imageConnections
KoShapeManager::PaintJobsOrder m_paintJobsOrder
void setImage(KisImageWSP image) override
KisPaintDeviceSP projection() const override
void rerenderAfterBeingInvisible() override
KisSafeBlockingQueueConnectionProxy< void > m_safeForcedConnection
KisThreadSafeSignalCompressor m_asyncUpdateSignalCompressor
KisShapeLayerCanvas(const KoColorSpace *cs, KisDefaultBoundsBaseSP defaultBounds, KisShapeLayer *parent)
volatile bool m_hasUpdateInCompressor
void resetCache(const KoColorSpace *colorSpace=0) override
void updateCanvas(const QRectF &rc) override
The KoSelectedShapesProxy class is a special interface of KoCanvasBase to have a stable connection to...