Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_image_layer_add_command.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2002 Patrick Julien <freak@codepimps.org>
3 * SPDX-FileCopyrightText: 2007 Sven Langkamp <sven.langkamp@gmail.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
9#include "kis_image.h"
10
11#include <klocalizedstring.h>
12
13
15 KisNodeSP layer,
16 KisNodeSP parent,
17 KisNodeSP aboveThis,
18 bool doRedoUpdates,
19 bool doUndoUpdates)
20 : KisImageCommand(kundo2_i18n("Add Layer"), image),
21 m_index(-1),
22 m_doRedoUpdates(doRedoUpdates),
23 m_doUndoUpdates(doUndoUpdates),
24 m_additionFlags(KisNodeAdditionFlag::None)
25{
26 m_layer = layer;
27 m_parent = parent;
28 m_aboveThis = aboveThis;
29}
30
32 KisNodeSP layer,
33 KisNodeSP parent,
34 quint32 index,
35 bool doRedoUpdates,
36 bool doUndoUpdates)
37 : KisImageCommand(kundo2_i18n("Add Layer"), image),
38 m_index(index),
39 m_doRedoUpdates(doRedoUpdates),
40 m_doUndoUpdates(doUndoUpdates),
41 m_additionFlags(KisNodeAdditionFlag::None)
42{
43 m_layer = layer;
44 m_parent = parent;
45 m_aboveThis = 0;
46}
47
49 KisNodeSP layer,
50 KisNodeSP parent,
51 KisNodeSP aboveThis,
52 Flags flags)
53 : KisImageLayerAddCommand(image, layer, parent, aboveThis,
54 flags.testFlag(DoRedoUpdates),
55 flags.testFlag(DoUndoUpdates))
56{
58 flags.testFlag(DontActivateOnAddition));
59}
60
62 : KisImageLayerAddCommand(image, layer, parent, index,
63 flags.testFlag(DoRedoUpdates),
64 flags.testFlag(DoUndoUpdates))
65{
67 flags.testFlag(DontActivateOnAddition));
68}
69
71{
73 if (!image) {
74 return;
75 }
76 if (m_aboveThis || m_index == quint32(-1)) {
78 } else {
80 }
81
82 if (m_doRedoUpdates) {
83 m_layer->setDirty(image->bounds());
84 }
85}
86
88{
90 if (!image) {
91 return;
92 }
93 if (m_doUndoUpdates) {
94 UpdateTarget target(image, m_layer, image->bounds());
95 image->removeNode(m_layer);
96 target.update();
97 } else {
98 image->removeNode(m_layer);
99 }
100}
KisMagneticGraph::vertex_descriptor target(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
KisNodeAdditionFlag
the base command for commands altering a KisImage
The command for adding a layer.
KisImageLayerAddCommand(KisImageWSP image, KisNodeSP layer, KisNodeSP parent, KisNodeSP aboveThis, bool doRedoUpdates=true, bool doUndoUpdates=true)
QRect bounds() const override
KisSharedPtr< T > toStrongRef() const
toStrongRef returns a KisSharedPtr which may be dereferenced.
KUndo2MagicString kundo2_i18n(const char *text)
bool addNode(KisNodeSP node, KisNodeSP parent=KisNodeSP(), KisNodeAdditionFlags flags=KisNodeAdditionFlag::None)
bool removeNode(KisNodeSP node)
virtual void setDirty()
Definition kis_node.cpp:577