Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_shape_layer.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006 Boudewijn Rempt <boud@valdyas.org>
3 * SPDX-FileCopyrightText: 2007 Thomas Zander <zander@kde.org>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#ifndef KIS_SHAPE_LAYER_H_
9#define KIS_SHAPE_LAYER_H_
10
11#include <KoShapeLayer.h>
12
13#include <kis_types.h>
15#include <kritaui_export.h>
18
19class QRect;
20class QIcon;
21class QRect;
22class QString;
23class KoShapeManager;
24class KoStore;
25class KoViewConverter;
30
31const QString KIS_SHAPE_LAYER_ID = "KisShapeLayer";
43class KRITAUI_EXPORT KisShapeLayer
44 : public KisExternalLayer,
45 public KoShapeLayer,
48{
49 Q_OBJECT
50
51public:
52
53 KisShapeLayer(KoShapeControllerBase* shapeController, KisImageWSP image, const QString &name, quint8 opacity);
54 KisShapeLayer(const KisShapeLayer& _rhs);
55 KisShapeLayer(const KisShapeLayer& _rhs, KoShapeControllerBase* controller);
56 KisShapeLayer(const KisShapeLayer& _rhs, KoShapeControllerBase* controller, std::function<KisShapeLayerCanvasBase*()> canvasFactory);
57
67 KisShapeLayer(const KisShapeLayer& baseTemplate, const QList<KoShape*> &newShapes);
68
69 ~KisShapeLayer() override;
70
72 void setSectionModelProperties(const KisBaseNode::PropertyList &properties) override;
73
74protected:
75 KisShapeLayer(KoShapeControllerBase* shapeController, KisImageWSP image, const QString &name, quint8 opacity, std::function<KisShapeLayerCanvasBase *()> canvasFactory);
76private:
77 void initShapeLayerImpl(KoShapeControllerBase* controller, KisShapeLayerCanvasBase *overrideCanvas);
78public:
79 KisNodeSP clone() const override {
80 return new KisShapeLayer(*this);
81 }
82 bool allowAsChild(KisNodeSP) const override;
83
84
85 void setImage(KisImageWSP image) override;
86
88
90 void fillMergedLayerTemplate(KisLayerSP dstLayer, KisLayerSP prevLayer, bool skipPaintingThisLayer) override;
91public:
92
93 // KoShape overrides
94 bool isSelectable() const {
95 return false;
96 }
97
98 void setParent(KoShapeContainer *parent);
99
100 // KisExternalLayer implementation
101 QIcon icon() const override;
102 void resetCache(const KoColorSpace *colorSpace) override;
103
104 KisPaintDeviceSP original() const override;
105 KisPaintDeviceSP paintDevice() const override;
106
107 QRect theoreticalBoundingRect() const override;
108
109 qint32 x() const override;
110 qint32 y() const override;
111 void setX(qint32) override;
112 void setY(qint32) override;
113
114 bool accept(KisNodeVisitor&) override;
115 void accept(KisProcessingVisitor &visitor, KisUndoAdapter *undoAdapter) override;
116
117 KoShapeManager *shapeManager() const;
118
119 static bool saveShapesToStore(KoStore *store, QList<KoShape*> shapes, const QSizeF &sizeInPt);
120
121 static QList<KoShape *> createShapesFromSvg(QIODevice *device,
122 const QString &baseXmlDir,
123 const QRectF &rectInPixels,
124 qreal resolutionPPI,
125 KoDocumentResourceManager *resourceManager,
126 bool loadingFromKra,
127 QSizeF *fragmentSize,
128 QStringList *warnings = 0,
129 QStringList *errors = 0);
130
131 bool saveLayer(KoStore * store) const;
132 bool loadLayer(KoStore* store, QStringList *warnings = 0);
133
134 KUndo2Command* crop(const QRect & rect) override;
135 KUndo2Command* transform(const QTransform &transform) override;
136 KUndo2Command* setProfile(const KoColorProfile *profile) override;
137 KUndo2Command* convertTo(const KoColorSpace * dstColorSpace,
139 KoColorConversionTransformation::ConversionFlags conversionFlags = KoColorConversionTransformation::internalConversionFlags()) override;
140
141
142 bool visible(bool recursive = false) const override;
143 void setVisible(bool visible, bool isLoading = false) override;
144
145 void setUserLocked(bool value) override;
146
147 bool isShapeEditable(bool recursive) const override;
148
160 void forceUpdateTimedNode() override;
161
165 bool hasPendingTimedUpdates() const override;
166
167 void forceUpdateHiddenAreaOnOriginal() override;
168
174 KoSelectedShapesProxy* selectedShapesProxy();
175
176 bool antialiased() const;
177 void setAntialiased(const bool antialiased);
178
179protected:
180 using KoShape::isVisible;
181
182 bool loadSvg(QIODevice *device, const QString &baseXmlDir, QStringList *warnings = 0);
183
184
186 const KoViewConverter *converter() const;
187
188 KoShapeControllerBase *shapeController() const;
190
192
193Q_SIGNALS:
204
205Q_SIGNALS:
211 void sigMoveShapes(const QPointF &diff);
212
213private Q_SLOTS:
214 void slotMoveShapes(const QPointF &diff);
215 void slotTransformShapes(const QTransform &transform);
216 void slotImageResolutionChanged();
217
218private:
219 QList<KoShape*> shapesToBeTransformed();
220
221private:
222 struct Private;
223 Private * const m_d;
224};
225
226#endif
float value(const T *src, size_t ch)
virtual void forceUpdateHiddenAreaOnOriginal()=0
The KisDelayedUpdateNodeInterface class is an interface for nodes that delay their real updates with ...
virtual void forceUpdateTimedNode()=0
forceUpdateTimedNode forces the node to regenerate its project. The update might be asynchronous,...
virtual bool hasPendingTimedUpdates() const =0
virtual KUndo2Command * convertTo(const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags())
virtual KUndo2Command * crop(const QRect &rect)
virtual QRect theoreticalBoundingRect() const
virtual KUndo2Command * transform(const QTransform &transform)
virtual KUndo2Command * setProfile(const KoColorProfile *profile)
virtual void resetCache(const KoColorSpace *colorSpace=0)
QIcon icon() const override
void selectionChanged()
Private *const m_d
void currentLayerChanged(const KoShapeLayer *layer)
void sigMoveShapes(const QPointF &diff)
KisNodeSP clone() const override
bool isSelectable() const
The KoSelectedShapesProxy class is a special interface of KoCanvasBase to have a stable connection to...
virtual bool isShapeEditable(bool recursive=true) const
checks recursively if the shape or one of its parents is not visible or locked
Definition KoShape.cpp:970
bool isVisible(bool recursive=true) const
Definition KoShape.cpp:802
const QString KIS_SHAPE_LAYER_ID
virtual void setUserLocked(bool l)
virtual void setVisible(bool visible, bool loading=false)
virtual KisPaintDeviceSP paintDevice() const =0
virtual bool visible(bool recursive=false) const
void setImage(KisImageWSP image) override
Definition kis_layer.cc:378
qint32 y() const override
Definition kis_layer.cc:981
virtual void fillMergedLayerTemplate(KisLayerSP dstLayer, KisLayerSP prevLayer, bool skipPaintingThisLayer=false)
Definition kis_layer.cc:422
virtual KisLayerSP createMergedLayerTemplate(KisLayerSP prevLayer)
Definition kis_layer.cc:407
qint32 x() const override
Definition kis_layer.cc:976
virtual KisLayerSP tryCreateInternallyMergedLayerFromMutipleLayers(QList< KisLayerSP > layers)
Definition kis_layer.cc:401
void setX(qint32 x) override
Definition kis_layer.cc:986
void setSectionModelProperties(const KisBaseNode::PropertyList &properties) override
Definition kis_layer.cc:297
KisPaintDeviceSP original() const override=0
KisBaseNode::PropertyList sectionModelProperties() const override
Definition kis_layer.cc:272
void setY(qint32 y) override
Definition kis_layer.cc:992
void setParent(KisNodeWSP parent)
Definition kis_node.cpp:301
bool accept(KisNodeVisitor &v) override
Definition kis_node.cpp:269
virtual bool allowAsChild(KisNodeSP) const =0
KisCanvas2 * canvas