|
Krita Source Code Documentation
|
#include <kis_merge_walker.h>
Inheritance diagram for KisMergeWalker:Public Types | |
| enum | Flag { DEFAULT = 0 , NO_FILTHY = 0x1 , CLONES_DONT_INVALIDATE_FRAMES = 0x2 } |
Public Types inherited from KisBaseRectsWalker | |
| typedef QVector< CloneNotification > | CloneNotificationsVector |
| typedef QStack< JobItem > | LeafStack |
| typedef qint32 | NodePosition |
| enum | NodePositionValues { N_NORMAL = 0x00 , N_TOPMOST = 0x01 , N_BOTTOMMOST = 0x02 , N_EXTRA = 0x04 , N_ABOVE_FILTHY = 0x08 , N_FILTHY_ORIGINAL = 0x10 , N_FILTHY_PROJECTION = 0x20 , N_FILTHY = 0x40 , N_BELOW_FILTHY = 0x80 } |
| enum | SubtreeVisitFlag { None = 0x0 , SkipNonRenderableNodes = 0x1 , NoFilthyMode = 0x2 , DontNotifyClones = 0x4 } |
| enum | UpdateType { UPDATE , UPDATE_NO_FILTHY , FULL_REFRESH , FULL_REFRESH_NO_FILTHY , UNSUPPORTED } |
Private Member Functions | |
| void | startTripImpl (KisProjectionLeafSP startLeaf, Flags flags) |
| void | visitHigherNode (KisProjectionLeafSP leaf, NodePosition positionToFilthy) |
| void | visitLowerNode (KisProjectionLeafSP leaf) |
Private Attributes | |
| const Flags | m_flags |
Additional Inherited Members | |
Static Public Member Functions inherited from KisBaseRectsWalker | |
| static KisNode::PositionToFilthy | convertPositionToFilthy (NodePosition position) |
Static Protected Member Functions inherited from KisBaseRectsWalker | |
| static qint32 | calculateChecksum (KisProjectionLeafSP leaf, const QRect &requestedRect) |
| static NodePosition | calculateNodePosition (KisProjectionLeafSP leaf) |
| static qint32 | getGraphPosition (qint32 position) |
| static bool | hasClones (KisNodeSP node) |
Definition at line 16 of file kis_merge_walker.h.
| enum KisMergeWalker::Flag |
NO_FILTHY flag notifies the walker that there should be no (!) filthy node in the update. It means that the projection() of the node is already guaranteed to be ready, we just need to update all the higher-level nodes. Used by KisTransformMask regeneration code.
| Enumerator | |
|---|---|
| DEFAULT | |
| NO_FILTHY | |
| CLONES_DONT_INVALIDATE_FRAMES | |
Definition at line 27 of file kis_merge_walker.h.
| KisMergeWalker::KisMergeWalker | ( | QRect | cropRect, |
| Flags | flags = DEFAULT ) |
Definition at line 12 of file kis_merge_walker.cc.
References CLONES_DONT_INVALIDATE_FRAMES, KisBaseRectsWalker::cropRect(), KisBaseRectsWalker::setClonesDontInvalidateFrames(), and KisBaseRectsWalker::setCropRect().
|
override |
Definition at line 19 of file kis_merge_walker.cc.
|
inlineprotected |
Definition at line 42 of file kis_merge_walker.h.
|
inlineprotected |
Definition at line 43 of file kis_merge_walker.h.
|
overrideprotectedvirtual |
Begins visiting nodes starting with startWith. First it climbs to the top of the graph, collecting changeRects (it calls registerChangeRect for every node). Then it goes down to the bottom collecting needRects for every branch.
Implements KisBaseRectsWalker.
Definition at line 44 of file kis_merge_walker.cc.
References m_flags, and startTripImpl().
|
protectedvirtual |
Initiates collecting of rects. Should be implemented in derived classes
Implements KisBaseRectsWalker.
|
private |
Definition at line 28 of file kis_merge_walker.cc.
References KisBaseRectsWalker::N_ABOVE_FILTHY, KisBaseRectsWalker::N_FILTHY, NO_FILTHY, startTripWithMask(), visitHigherNode(), and visitLowerNode().
|
protected |
Under very rare circumstances it may happen that the update queue will contain a job pointing to a node that has already been deleted from the image (directly or by undo command). If it happens to a layer then the walker will handle it as usual by building a trivial graph pointing to nowhere, but when it happens to a mask... not. Because the mask is always expected to have a parent layer to process.
So just handle it here separately.
Definition at line 49 of file kis_merge_walker.cc.
References KisBaseRectsWalker::adjustMasksChangeRect(), KisBaseRectsWalker::calculateNodePosition(), DEFAULT, KisBaseRectsWalker::N_ABOVE_FILTHY, KisBaseRectsWalker::N_FILTHY_PROJECTION, NO_FILTHY, None, KisBaseRectsWalker::registerNeedRect(), startTripImpl(), visitHigherNode(), and visitLowerNode().
|
overridevirtual |
Implements KisBaseRectsWalker.
Definition at line 23 of file kis_merge_walker.cc.
References m_flags, NO_FILTHY, KisBaseRectsWalker::UPDATE, and KisBaseRectsWalker::UPDATE_NO_FILTHY.
|
private |
Visits a node @leaf and goes on crawling towards the top of the graph, calling visitHigherNode() or startTrip() one more time. After the top is reached returns back to the @leaf.
Definition at line 86 of file kis_merge_walker.cc.
References KisBaseRectsWalker::calculateNodePosition(), DEFAULT, KisBaseRectsWalker::N_ABOVE_FILTHY, None, KisBaseRectsWalker::registerChangeRect(), KisBaseRectsWalker::registerNeedRect(), startTripImpl(), and visitHigherNode().
|
private |
Visits a node @leaf and goes on crawling towards the bottom of the graph, calling visitLowerNode() or startTrip() one more time.
Definition at line 101 of file kis_merge_walker.cc.
References KisBaseRectsWalker::calculateNodePosition(), KisBaseRectsWalker::N_BELOW_FILTHY, None, KisBaseRectsWalker::registerNeedRect(), and visitLowerNode().
|
private |
Definition at line 78 of file kis_merge_walker.h.