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);
64 KisShapeLayer(const KisShapeLayer& _merge, const KisShapeLayer &_addShapes);
65 ~KisShapeLayer() override;
66
68 void setSectionModelProperties(const KisBaseNode::PropertyList &properties) override;
69
70protected:
71 KisShapeLayer(KoShapeControllerBase* shapeController, KisImageWSP image, const QString &name, quint8 opacity, std::function<KisShapeLayerCanvasBase *()> canvasFactory);
72private:
73 void initShapeLayerImpl(KoShapeControllerBase* controller, KisShapeLayerCanvasBase *overrideCanvas);
74public:
75 KisNodeSP clone() const override {
76 return new KisShapeLayer(*this);
77 }
78 bool allowAsChild(KisNodeSP) const override;
79
80
81 void setImage(KisImageWSP image) override;
82
84 void fillMergedLayerTemplate(KisLayerSP dstLayer, KisLayerSP prevLayer, bool skipPaintingThisLayer) override;
85public:
86
87 // KoShape overrides
88 bool isSelectable() const {
89 return false;
90 }
91
92 void setParent(KoShapeContainer *parent);
93
94 // KisExternalLayer implementation
95 QIcon icon() const override;
96 void resetCache(const KoColorSpace *colorSpace) override;
97
98 KisPaintDeviceSP original() const override;
99 KisPaintDeviceSP paintDevice() const override;
100
101 QRect theoreticalBoundingRect() const override;
102
103 qint32 x() const override;
104 qint32 y() const override;
105 void setX(qint32) override;
106 void setY(qint32) override;
107
108 bool accept(KisNodeVisitor&) override;
109 void accept(KisProcessingVisitor &visitor, KisUndoAdapter *undoAdapter) override;
110
111 KoShapeManager *shapeManager() const;
112
113 static bool saveShapesToStore(KoStore *store, QList<KoShape*> shapes, const QSizeF &sizeInPt);
114
115 static QList<KoShape *> createShapesFromSvg(QIODevice *device,
116 const QString &baseXmlDir,
117 const QRectF &rectInPixels,
118 qreal resolutionPPI,
119 KoDocumentResourceManager *resourceManager,
120 bool loadingFromKra,
121 QSizeF *fragmentSize,
122 QStringList *warnings = 0,
123 QStringList *errors = 0);
124
125 bool saveLayer(KoStore * store) const;
126 bool loadLayer(KoStore* store, QStringList *warnings = 0);
127
128 KUndo2Command* crop(const QRect & rect) override;
129 KUndo2Command* transform(const QTransform &transform) override;
130 KUndo2Command* setProfile(const KoColorProfile *profile) override;
131 KUndo2Command* convertTo(const KoColorSpace * dstColorSpace,
133 KoColorConversionTransformation::ConversionFlags conversionFlags = KoColorConversionTransformation::internalConversionFlags()) override;
134
135
136 bool visible(bool recursive = false) const override;
137 void setVisible(bool visible, bool isLoading = false) override;
138
139 void setUserLocked(bool value) override;
140
141 bool isShapeEditable(bool recursive) const override;
142
154 void forceUpdateTimedNode() override;
155
159 bool hasPendingTimedUpdates() const override;
160
161 void forceUpdateHiddenAreaOnOriginal() override;
162
168 KoSelectedShapesProxy* selectedShapesProxy();
169
170 bool antialiased() const;
171 void setAntialiased(const bool antialiased);
172
173protected:
174 using KoShape::isVisible;
175
176 bool loadSvg(QIODevice *device, const QString &baseXmlDir, QStringList *warnings = 0);
177
178
180 const KoViewConverter *converter() const;
181
182 KoShapeControllerBase *shapeController() const;
184
186
187Q_SIGNALS:
198
199Q_SIGNALS:
205 void sigMoveShapes(const QPointF &diff);
206
207private Q_SLOTS:
208 void slotMoveShapes(const QPointF &diff);
209 void slotTransformShapes(const QTransform &transform);
210 void slotImageResolutionChanged();
211
212private:
213 QList<KoShape*> shapesToBeTransformed();
214
215private:
216 struct Private;
217 Private * const m_d;
218};
219
220#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:1165
bool isVisible(bool recursive=true) const
Definition KoShape.cpp:979
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:978
virtual void fillMergedLayerTemplate(KisLayerSP dstLayer, KisLayerSP prevLayer, bool skipPaintingThisLayer=false)
Definition kis_layer.cc:416
virtual KisLayerSP createMergedLayerTemplate(KisLayerSP prevLayer)
Definition kis_layer.cc:401
qint32 x() const override
Definition kis_layer.cc:973
void setX(qint32 x) override
Definition kis_layer.cc:983
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:989
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