Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_group_layer.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2005 C. Boemann <cbo@boemann.dk>
3 * SPDX-FileCopyrightText: 2007 Boudewijn Rempt <boud@valdyas.org>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7#ifndef KIS_GROUP_LAYER_H_
8#define KIS_GROUP_LAYER_H_
9
10#include "kis_layer.h"
11#include "kis_types.h"
12
13class KoColorSpace;
14
21class KRITAIMAGE_EXPORT KisGroupLayer : public KisLayer
22{
23 Q_OBJECT
24
25public:
26 KisGroupLayer(KisImageWSP image, const QString &name, quint8 opacity, const KoColorSpace * colorSpace = 0);
27 KisGroupLayer(const KisGroupLayer& rhs);
28 ~KisGroupLayer() override;
29
30 KisNodeSP clone() const override {
31 return KisNodeSP(new KisGroupLayer(*this));
32 }
33
34 bool allowAsChild(KisNodeSP) const override;
35
36 QIcon icon() const override;
37
39 void setSectionModelProperties(const KisBaseNode::PropertyList &properties) override;
40
41 void setImage(KisImageWSP image) override;
42
44 void fillMergedLayerTemplate(KisLayerSP dstLayer, KisLayerSP prevLayer, bool skipPaintingThisLayer) override;
45
49 void resetCache(const KoColorSpace *colorSpace);
50
57 const KoColorSpace * colorSpace() const override;
58
60 KisPaintDeviceSP original() const override;
61
67 KisPaintDeviceSP lazyDestinationForSubtreeComposition() const;
68
69 qint32 x() const override;
70 qint32 y() const override;
71 void setX(qint32 x) override;
72 void setY(qint32 y) override;
73
75 KisPaintDeviceSP paintDevice() const override;
76
81 bool accept(KisNodeVisitor &v) override;
82 void accept(KisProcessingVisitor &visitor, KisUndoAdapter *undoAdapter) override;
83
90 void setDefaultProjectionColor(KoColor color);
91
95 KoColor defaultProjectionColor() const;
96
97 bool passThroughMode() const;
98 void setPassThroughMode(bool value);
99
100 QRect extent() const override;
101 QRect exactBounds() const override;
102
103 bool projectionIsValid() const;
104
105 QRect calculateChildrenTightUserVisibleBounds() const;
106 QRect calculateChildrenLooseUserVisibleBounds() const;
107
108protected:
109 KisLayer* onlyMeaningfulChild() const;
110 KisPaintDeviceSP tryObligeChild() const;
111 std::tuple<KisPaintDeviceSP, bool> originalImpl() const;
112
114private:
115 bool checkCloneLayer(KisCloneLayerSP clone) const;
116 bool checkNodeRecursively(KisNodeSP node) const;
117
118private:
119 struct Private;
120 Private * const m_d;
121};
122
123#endif // KIS_GROUP_LAYER_H_
124
float value(const T *src, size_t ch)
qreal v
KisSharedPtr< KisNode > KisNodeSP
Definition kis_types.h:86
virtual QIcon icon() const
KisNodeSP clone() const override
KisPaintDeviceSP paintDevice() const override
Group layers don't have a paint device, so return 0.
bool passThroughMode() const
Private *const m_d
std::tuple< KisPaintDeviceSP, bool > originalImpl() const
qint32 x() const override
qint32 y() const override
void setImage(KisImageWSP image) override
Definition kis_layer.cc:378
virtual void fillMergedLayerTemplate(KisLayerSP dstLayer, KisLayerSP prevLayer, bool skipPaintingThisLayer=false)
Definition kis_layer.cc:416
virtual QRect amortizedProjectionRectForCleanupInChangePass() const
Definition kis_layer.cc:854
virtual KisLayerSP createMergedLayerTemplate(KisLayerSP prevLayer)
Definition kis_layer.cc:401
QRect exactBounds() const override
QRect extent() const override
const KoColorSpace * colorSpace() const override
returns the image's colorSpace or null, if there is no image
Definition kis_layer.cc:225
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
bool accept(KisNodeVisitor &v) override
Definition kis_node.cpp:269
virtual bool allowAsChild(KisNodeSP) const =0