Krita Source Code Documentation
Loading...
Searching...
No Matches
KisLayerComposition Class Reference

#include <kis_layer_composition.h>

Public Member Functions

void apply ()
 
bool isExportEnabled ()
 
 KisLayerComposition (const KisLayerComposition &rhs, KisImageWSP otherImage=0)
 
 KisLayerComposition (KisImageWSP image, const QString &name)
 
QString name ()
 
void save (QDomDocument &doc, QDomElement &element)
 
void setCollapsed (QUuid id, bool collapsed)
 
void setExportEnabled (bool enabled)
 
void setName (const QString &name)
 
void setVisible (QUuid id, bool visible)
 
void store ()
 
 ~KisLayerComposition ()
 

Private Attributes

QMap< QUuid, bool > m_collapsedMap
 
bool m_exportEnabled
 
KisImageWSP m_image
 
QString m_name
 
QMap< QUuid, bool > m_visibilityMap
 

Friends

class KisCompositionVisitor
 

Detailed Description

Storage class for layer compositions. Layer compositions allow to have several states for visible layers e.g. used in storyboarding with one background and different foregrounds

Definition at line 23 of file kis_layer_composition.h.

Constructor & Destructor Documentation

◆ KisLayerComposition() [1/2]

KisLayerComposition::KisLayerComposition ( KisImageWSP image,
const QString & name )

Definition at line 90 of file kis_layer_composition.cpp.

◆ ~KisLayerComposition()

KisLayerComposition::~KisLayerComposition ( )

Definition at line 98 of file kis_layer_composition.cpp.

99{
100
101}

◆ KisLayerComposition() [2/2]

KisLayerComposition::KisLayerComposition ( const KisLayerComposition & rhs,
KisImageWSP otherImage = 0 )

Definition at line 103 of file kis_layer_composition.cpp.

104 : m_image(otherImage ? otherImage : rhs.m_image),
105 m_name(rhs.m_name),
107{
108 {
109 auto it = rhs.m_visibilityMap.constBegin();
110 for (; it != rhs.m_visibilityMap.constEnd(); ++it) {
111 QUuid nodeUuid = it.key();
112 KisNodeSP node = KisLayerUtils::findNodeByUuid(rhs.m_image->root(), nodeUuid);
113 if (node) {
115 KisNodeSP newNode = path.queryUniqueNode(m_image);
116 KIS_ASSERT_RECOVER(newNode) { continue; }
117
118 m_visibilityMap.insert(newNode->uuid(), it.value());
119 }
120 }
121 }
122
123 {
124 auto it = rhs.m_collapsedMap.constBegin();
125 for (; it != rhs.m_collapsedMap.constEnd(); ++it) {
126 QUuid nodeUuid = it.key();
127 KisNodeSP node = KisLayerUtils::findNodeByUuid(rhs.m_image->root(), nodeUuid);
128 if (node) {
130 KisNodeSP newNode = path.queryUniqueNode(m_image);
131 KIS_ASSERT_RECOVER(newNode) { continue; }
132
133 m_collapsedMap.insert(newNode->uuid(), it.value());
134 }
135 }
136 }
137}
QMap< QUuid, bool > m_visibilityMap
QMap< QUuid, bool > m_collapsedMap
#define KIS_ASSERT_RECOVER(cond)
Definition kis_assert.h:55
KisNodeSP findNodeByUuid(KisNodeSP root, const QUuid &uuid)
QUuid uuid() const
static KisNodeQueryPath absolutePath(KisNodeSP node)

References KisNodeQueryPath::absolutePath(), KisLayerUtils::findNodeByUuid(), KIS_ASSERT_RECOVER, m_collapsedMap, m_image, m_visibilityMap, KisNodeFacade::root, and KisBaseNode::uuid().

Member Function Documentation

◆ apply()

void KisLayerComposition::apply ( )

Applies the stored visibility to all the nodes

Definition at line 158 of file kis_layer_composition.cpp.

159{
160 if (m_image.isNull()) {
161 return;
162 }
164 m_image->rootLayer()->accept(visitor);
165}
KisGroupLayerSP rootLayer() const
bool isNull() const
bool accept(KisNodeVisitor &v) override

References KisGroupLayer::accept(), KisCompositionVisitor::APPLY, KisWeakSharedPtr< T >::isNull(), m_image, and KisImage::rootLayer().

◆ isExportEnabled()

bool KisLayerComposition::isExportEnabled ( )

Export enabled flag, if false the compositions will not be exported

Returns
name of the composition

Definition at line 172 of file kis_layer_composition.cpp.

173{
174 return m_exportEnabled;
175}

References m_exportEnabled.

◆ name()

QString KisLayerComposition::name ( )

Name of the composition as show in the docker

Returns
name of the composition

Definition at line 144 of file kis_layer_composition.cpp.

145{
146 return m_name;
147}

References m_name.

◆ save()

void KisLayerComposition::save ( QDomDocument & doc,
QDomElement & element )

Definition at line 187 of file kis_layer_composition.cpp.

188{
189 QDomElement compositionElement = doc.createElement("composition");
190 compositionElement.setAttribute("name", m_name);
191 compositionElement.setAttribute("exportEnabled", m_exportEnabled);
192 QMapIterator<QUuid, bool> iter(m_visibilityMap);
193 while (iter.hasNext()) {
194 iter.next();
195 QDomElement valueElement = doc.createElement("value");
196 dbgKrita << "uuid" << iter.key().toString() << "visible" << iter.value();
197 valueElement.setAttribute("uuid", iter.key().toString());
198 valueElement.setAttribute("visible", iter.value());
199 dbgKrita << "contains" << m_collapsedMap.contains(iter.key());
200 if (m_collapsedMap.contains(iter.key())) {
201 dbgKrita << "collapsed :" << m_collapsedMap[iter.key()];
202 valueElement.setAttribute("collapsed", m_collapsedMap[iter.key()]);
203 }
204 compositionElement.appendChild(valueElement);
205 }
206 element.appendChild(compositionElement);
207}
#define dbgKrita
Definition kis_debug.h:45

References dbgKrita, m_collapsedMap, m_exportEnabled, m_name, and m_visibilityMap.

◆ setCollapsed()

void KisLayerComposition::setCollapsed ( QUuid id,
bool collapsed )

Definition at line 182 of file kis_layer_composition.cpp.

183{
184 m_collapsedMap[id] = collapsed;
185}

References m_collapsedMap.

◆ setExportEnabled()

void KisLayerComposition::setExportEnabled ( bool enabled)

Set the export enabled flag, if false the compositions will not be exported

Definition at line 167 of file kis_layer_composition.cpp.

168{
169 m_exportEnabled = enabled;
170}

References m_exportEnabled.

◆ setName()

void KisLayerComposition::setName ( const QString & name)

Sets name of the composition

Definition at line 139 of file kis_layer_composition.cpp.

140{
141 m_name = name;
142}

References m_name, and name().

◆ setVisible()

void KisLayerComposition::setVisible ( QUuid id,
bool visible )

Definition at line 177 of file kis_layer_composition.cpp.

178{
179 m_visibilityMap[id] = visible;
180}

References m_visibilityMap.

◆ store()

void KisLayerComposition::store ( )

Stores the current visibility of all layers in the composition

Definition at line 149 of file kis_layer_composition.cpp.

150{
151 if(m_image.isNull()) {
152 return;
153 }
155 m_image->rootLayer()->accept(visitor);
156}

References KisGroupLayer::accept(), KisWeakSharedPtr< T >::isNull(), m_image, KisImage::rootLayer(), and KisCompositionVisitor::STORE.

Friends And Related Symbol Documentation

◆ KisCompositionVisitor

friend class KisCompositionVisitor
friend

Definition at line 76 of file kis_layer_composition.h.

Member Data Documentation

◆ m_collapsedMap

QMap<QUuid, bool> KisLayerComposition::m_collapsedMap
private

Definition at line 73 of file kis_layer_composition.h.

◆ m_exportEnabled

bool KisLayerComposition::m_exportEnabled
private

Definition at line 74 of file kis_layer_composition.h.

◆ m_image

KisImageWSP KisLayerComposition::m_image
private

Definition at line 70 of file kis_layer_composition.h.

◆ m_name

QString KisLayerComposition::m_name
private

Definition at line 71 of file kis_layer_composition.h.

◆ m_visibilityMap

QMap<QUuid, bool> KisLayerComposition::m_visibilityMap
private

Definition at line 72 of file kis_layer_composition.h.


The documentation for this class was generated from the following files: