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

#include <kis_node_shapes_graph.h>

Public Member Functions

KisNodeShapeaddNode (KisNodeSP node, KisNodeSP parent, KisNodeSP aboveThis)
 
bool containsNode (KisNodeSP node) const
 
void moveNode (KisNodeSP node, KisNodeSP parent, KisNodeSP aboveThis)
 
KisNodeDummynodeToDummy (KisNodeSP node)
 
KisNodeShapenodeToShape (KisNodeSP node)
 
void removeNode (KisNodeSP node)
 
KisNodeDummyrootDummy () const
 
int shapesCount () const
 

Private Member Functions

void unmapDummyRecursively (KisNodeDummy *dummy)
 

Private Attributes

KisNodeDummiesGraph m_dummiesGraph
 

Detailed Description

KisNodeShapesGraph is a highlevel simplified representation of nodes in the node stack. It stores hierarchy information about graph without accessing real node graph.

Takes ownership on both dummies and node shapes.

See also
KisNodeDummy, KisNodeDummyGraph

Definition at line 29 of file kis_node_shapes_graph.h.

Member Function Documentation

◆ addNode()

KisNodeShape * KisNodeShapesGraph::addNode ( KisNodeSP node,
KisNodeSP parent,
KisNodeSP aboveThis )

Adds a node to the graph

WARNING: this method does not add all the children recursively because the shapes graph has no right to access the hierarchy information from the UI thread, so you should do it manually.

Definition at line 12 of file kis_node_shapes_graph.cpp.

13{
14 KisNodeDummy *parentDummy = 0;
15 KisNodeDummy *aboveThisDummy = 0;
16
17 KisNodeShape *parentShape = 0;
18
19 if(parent) {
20 parentDummy = nodeToDummy(parent);
21 parentShape = parentDummy->nodeShape();
22 }
23
24 if(aboveThis) {
25 aboveThisDummy = nodeToDummy(aboveThis);
26 }
27
28 KisNodeShape *newShape = new KisNodeShape(node);
29 ((KoShapeLayer*)newShape)->setParent(parentShape);
30
31 KisNodeDummy *newDummy = new KisNodeDummy(newShape, newShape->node());
32
33 m_dummiesGraph.addNode(newDummy, parentDummy, aboveThisDummy);
34 return newShape;
35}
void addNode(KisNodeDummy *node, KisNodeDummy *parent, KisNodeDummy *aboveThis)
KisNodeShape * nodeShape() const
KisNodeSP node()
KisNodeDummy * nodeToDummy(KisNodeSP node)
KisNodeDummiesGraph m_dummiesGraph

References KisNodeDummiesGraph::addNode(), m_dummiesGraph, KisNodeShape::node(), KisNodeDummy::nodeShape(), and nodeToDummy().

◆ containsNode()

bool KisNodeShapesGraph::containsNode ( KisNodeSP node) const

Definition at line 82 of file kis_node_shapes_graph.cpp.

83{
84 return m_dummiesGraph.containsNode(node);
85}
bool containsNode(KisNodeSP node) const

References KisNodeDummiesGraph::containsNode(), and m_dummiesGraph.

◆ moveNode()

void KisNodeShapesGraph::moveNode ( KisNodeSP node,
KisNodeSP parent,
KisNodeSP aboveThis )

Moves a node inside the graph. It is supposed that the node has previously been added to the graph using addNode().

The node is moved together with all its children.

Definition at line 37 of file kis_node_shapes_graph.cpp.

38{
39 KisNodeDummy *nodeDummy = nodeToDummy(node);
40 KisNodeDummy *parentDummy = parent ? nodeToDummy(parent) : 0;
41 KisNodeDummy *aboveThisDummy = aboveThis ? nodeToDummy(aboveThis) : 0;
42
43 m_dummiesGraph.moveNode(nodeDummy, parentDummy, aboveThisDummy);
44}
void moveNode(KisNodeDummy *node, KisNodeDummy *parent, KisNodeDummy *aboveThis)
ChildIterator< value_type, is_const > parent(const ChildIterator< value_type, is_const > &it)
Definition KisForest.h:327

References m_dummiesGraph, KisNodeDummiesGraph::moveNode(), and nodeToDummy().

◆ nodeToDummy()

KisNodeDummy * KisNodeShapesGraph::nodeToDummy ( KisNodeSP node)

Definition at line 68 of file kis_node_shapes_graph.cpp.

69{
70 return m_dummiesGraph.nodeToDummy(node);
71}
KisNodeDummy * nodeToDummy(KisNodeSP node)

References m_dummiesGraph, and KisNodeDummiesGraph::nodeToDummy().

◆ nodeToShape()

KisNodeShape * KisNodeShapesGraph::nodeToShape ( KisNodeSP node)

Definition at line 73 of file kis_node_shapes_graph.cpp.

74{
75 KisNodeDummy *dummy = nodeToDummy(node);
76 if (dummy) {
77 return dummy->nodeShape();
78 }
79 return 0;
80}

References KisNodeDummy::nodeShape(), and nodeToDummy().

◆ removeNode()

void KisNodeShapesGraph::removeNode ( KisNodeSP node)

Removes the node from the graph

Removing the node from the graph removes both the node itself and all its children, because all this information is accessible to the shapes graph without referring to the node's hierarchy information owned by the image.

The shapes remove their children automatically, so the dummies do not own them. Delete them manually.

Definition at line 46 of file kis_node_shapes_graph.cpp.

47{
48 KisNodeDummy *nodeDummy = nodeToDummy(node);
49
50 m_dummiesGraph.removeNode(nodeDummy);
51
56 KisNodeShape *tempShape = nodeDummy->nodeShape();
57 ((KoShapeLayer*)tempShape)->setParent(0);
58
59 delete nodeDummy;
60 delete tempShape;
61}
void removeNode(KisNodeDummy *node)
void setParent(KoShapeContainer *parent)
Definition KoShape.cpp:535

References m_dummiesGraph, KisNodeDummy::nodeShape(), nodeToDummy(), KisNodeDummiesGraph::removeNode(), and KoShape::setParent().

◆ rootDummy()

KisNodeDummy * KisNodeShapesGraph::rootDummy ( ) const

Definition at line 63 of file kis_node_shapes_graph.cpp.

64{
66}
KisNodeDummy * rootDummy() const

References m_dummiesGraph, and KisNodeDummiesGraph::rootDummy().

◆ shapesCount()

int KisNodeShapesGraph::shapesCount ( ) const

◆ unmapDummyRecursively()

void KisNodeShapesGraph::unmapDummyRecursively ( KisNodeDummy * dummy)
private

Member Data Documentation

◆ m_dummiesGraph

KisNodeDummiesGraph KisNodeShapesGraph::m_dummiesGraph
private

Definition at line 70 of file kis_node_shapes_graph.h.


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