Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_selection_based_layer.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006 Boudewijn Rempt <boud@valdyas.org>
3 * SPDX-FileCopyrightText: 2009 Dmitry Kazakov <dimula73@gmail.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#ifndef KIS_SELECTION_BASED_LAYER_H_
9#define KIS_SELECTION_BASED_LAYER_H_
10
11#include <QObject>
12#include "kis_types.h"
13#include "kis_layer.h"
15#include <kritaimage_export.h>
17
19
28class KRITAIMAGE_EXPORT KisSelectionBasedLayer : public KisLayer, public KisIndirectPaintingSupport, public KisNodeFilterInterface
29{
30 Q_OBJECT
31
32public:
41 KisSelectionBasedLayer(KisImageWSP image, const QString &name, KisSelectionSP selection, KisFilterConfigurationSP filterConfig);
43 ~KisSelectionBasedLayer() override;
44
45
51 bool allowAsChild(KisNodeSP node) const override;
52
53 void setImage(KisImageWSP image) override;
54
55 KisPaintDeviceSP original() const override;
56 KisPaintDeviceSP paintDevice() const override;
57
58 bool needProjection() const override;
59
64 virtual void resetCache(const KoColorSpace *colorSpace);
65
70
75 void setDirty() override;
76
77public:
78
85 KisSelectionSP internalSelection() const;
86
94 void setInternalSelection(KisSelectionSP selection);
95
104 KisSelectionSP fetchComposedInternalSelection(const QRect &rect) const;
105
110 qint32 x() const override;
111
116 qint32 y() const override;
117
122 void setX(qint32 x) override;
123
128 void setY(qint32 y) override;
129
130 bool supportsLodPainting() const override;
131
132public:
133
138 QRect extent() const override;
139
144 QRect exactBounds() const override;
145
153 QImage createThumbnail(qint32 w, qint32 h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio) override;
154
155 int thumbnailSeqNo() const override;
156
157
158protected:
159 // override from KisLayer
160 void copyOriginalToProjection(const KisPaintDeviceSP original,
161 KisPaintDeviceSP projection,
162 const QRect& rect) const override;
163 // override from KisNode
164 QRect needRect(const QRect &rect, PositionToFilthy pos = N_FILTHY) const override;
165
166protected:
167 void initSelection();
168
169 QRect cropChangeRectBySelection(const QRect &rect) const;
170
180 void setUseSelectionInProjection(bool value) const;
181
182 KisKeyframeChannel *requestKeyframeChannel(const QString &id) override;
183 bool supportsKeyframeChannel(const QString &id) override;
184
185
186public Q_SLOTS:
187 void slotImageSizeChanged();
188
195 return this;
196 }
197
198private:
199 struct Private;
200 Private * const m_d;
201};
202
203#endif /* KIS_SELECTION_BASED_LAYER_H_ */
204
float value(const T *src, size_t ch)
KisKeyframeChannel stores and manages KisKeyframes. Maps units of time to virtual keyframe values....
virtual bool supportsLodPainting() const
virtual KisKeyframeChannel * requestKeyframeChannel(const QString &id)
virtual bool supportsKeyframeChannel(const QString &id)
QImage createThumbnail(qint32 w, qint32 h, Qt::AspectRatioMode aspectRatioMode=Qt::IgnoreAspectRatio) override
Definition kis_layer.cc:930
void setImage(KisImageWSP image) override
Definition kis_layer.cc:378
qint32 y() const override
Definition kis_layer.cc:978
QRect exactBounds() const override
int thumbnailSeqNo() const override
Definition kis_layer.cc:944
qint32 x() const override
Definition kis_layer.cc:973
QRect extent() const override
void setX(qint32 x) override
Definition kis_layer.cc:983
KisPaintDeviceSP original() const override=0
virtual void copyOriginalToProjection(const KisPaintDeviceSP original, KisPaintDeviceSP projection, const QRect &rect) const
Definition kis_layer.cc:801
void setY(qint32 y) override
Definition kis_layer.cc:989
virtual bool needProjection() const
Definition kis_layer.cc:796
virtual QRect needRect(const QRect &rect, PositionToFilthy pos=N_FILTHY) const
Definition kis_node.cpp:218
PositionToFilthy
Definition kis_node.h:58
virtual void setDirty()
Definition kis_node.cpp:577
virtual bool allowAsChild(KisNodeSP) const =0
Describes base behaviour for selection base classes like KisAdjustmentLayer and KisGeneratorLayer....
KisPaintDeviceSP paintDevice() const override