Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_merge_walker.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2009 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_MERGE_WALKER_H
8#define __KIS_MERGE_WALKER_H
9
10#include "kis_types.h"
12
13class KisMergeWalker;
15
16class KRITAIMAGE_EXPORT KisMergeWalker : public virtual KisBaseRectsWalker
17{
18
19public:
27 enum Flag {
29 NO_FILTHY = 0x1,
30 CLONES_DONT_INVALIDATE_FRAMES = 0x2
31 };
32
33 Q_DECLARE_FLAGS(Flags, Flag)
34
35 KisMergeWalker(QRect cropRect, Flags flags = DEFAULT);
36
37 ~KisMergeWalker() override;
38
39 UpdateType type() const override;
40
41protected:
42 KisMergeWalker() : m_flags(DEFAULT) {}
43 KisMergeWalker(Flags flags) : m_flags(flags) {}
44
52 void startTrip(KisProjectionLeafSP startWith) override;
53
55
56 void startTripWithMask(KisProjectionLeafSP filthyMask, KisMergeWalker::Flags flags);
57
58private:
59 void startTripImpl(KisProjectionLeafSP startLeaf, Flags flags);
60
61private:
68 void visitHigherNode(KisProjectionLeafSP leaf, NodePosition positionToFilthy);
69
75 void visitLowerNode(KisProjectionLeafSP leaf);
76
77private:
78 const Flags m_flags;
79};
80
81Q_DECLARE_OPERATORS_FOR_FLAGS(KisMergeWalker::Flags)
82
83#endif /* __KIS_MERGE_WALKER_H */
84
Q_DECLARE_FLAGS(SubtreeVisitFlags, SubtreeVisitFlag)
virtual UpdateType type() const =0
virtual void startTrip(KisProjectionLeafSP startWith)=0
KisMergeWalker(Flags flags)
const Flags m_flags
#define DEFAULT(c)
Q_DECLARE_OPERATORS_FOR_FLAGS(KisBaseRectsWalker::SubtreeVisitFlags)
KisSharedPtr< KisMergeWalker > KisMergeWalkerSP