Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_transaction.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KIS_TRANSACTION_H_
8#define KIS_TRANSACTION_H_
9
10#include <kundo2command.h>
11
12#include "kis_types.h"
13
15#include "kis_paint_device.h"
16#include "kis_pixel_selection.h"
17#include "kis_image_config.h"
18
19#include "kis_undo_adapter.h"
21
23
25{
26public:
27 enum Flag {
28 None = 0x0,
29 SuppressUpdates = 0x1
30 };
31 Q_DECLARE_FLAGS(Flags, Flag)
32
33public:
34 KisTransaction(const KUndo2MagicString& name, KisPaintDeviceSP device, KUndo2Command* parent = 0,int timedID = -1, KisTransactionWrapperFactory *interstrokeDataFactory = 0, Flags flags = None) {
35 m_transactionData = new KisTransactionData(name, device, true, interstrokeDataFactory, parent, flags & SuppressUpdates);
37 }
38
39 KisTransaction(KisPaintDeviceSP device, KUndo2Command* parent = 0, int timedID = -1, KisTransactionWrapperFactory *interstrokeDataFactory = 0, Flags flags = None)
40 : KisTransaction(KUndo2MagicString(), device, parent, timedID, interstrokeDataFactory, flags)
41 {
42 }
43
46 {
47 rhs.m_transactionData = nullptr;
48 }
49
51 {
52 delete m_transactionData;
53 m_transactionData = rhs.m_transactionData;
54 rhs.m_transactionData = nullptr;
55 return *this;
56 }
57
58 virtual ~KisTransaction() {
59 delete m_transactionData;
60 }
61
65
66 void commit(KisUndoAdapter* undoAdapter) {
68 "KisTransaction::commit()",
69 "the transaction has been tried to be committed twice");
70
72 undoAdapter->addCommand(m_transactionData);
74 }
75
78 "KisTransaction::commit()",
79 "the transaction has been tried to be committed twice");
80
85 }
86
89 "KisTransaction::endAndTake()",
90 "the transaction has been tried to be committed twice");
91
93 KisTransactionData *transactionData = m_transactionData;
95
96 return transactionData;
97 }
98
99 void end() {
100 KIS_ASSERT_X(m_transactionData, "KisTransaction::end()", "nothing to end!");
106 delete m_transactionData;
108 }
109
110 void revert() {
112 "KisTransaction::reverted()",
113 "the transaction is tried to be reverted()"
114 "after it has already been added to undo adapter");
115
121 delete m_transactionData;
123 }
124
127 "KisTransaction::text()",
128 "the name has been requested after the transaction"
129 "has already been ended");
130 return m_transactionData->text();
131 }
132
133protected:
135
138};
139
140Q_DECLARE_OPERATORS_FOR_FLAGS(KisTransaction::Flags)
141
143{
144public:
146 {
147 m_transactionData = new KisTransactionData(KUndo2MagicString(), pixelSelection, false, 0, parent, false);
148 }
149
151 {
152 m_transactionData = new KisTransactionData(name, pixelSelection, false, 0, parent, false);
153 }
154};
155
156#endif /* KIS_TRANSACTION_H_ */
157
Q_DECLARE_FLAGS(KisUpdaterContextSnapshotEx, KisUpdaterContextSnapshotExTag)
KUndo2MagicString text() const
virtual void setTimedID(int timedID)
KisSelectionTransaction(KisPixelSelectionSP pixelSelection, KUndo2Command *parent=0)
KisSelectionTransaction(const KUndo2MagicString &name, KisPixelSelectionSP pixelSelection, KUndo2Command *parent=0)
KisTransaction(const KUndo2MagicString &name, KisPaintDeviceSP device, KUndo2Command *parent=0, int timedID=-1, KisTransactionWrapperFactory *interstrokeDataFactory=0, Flags flags=None)
void commit(KisPostExecutionUndoAdapter *undoAdapter)
Q_DISABLE_COPY(KisTransaction)
KUndo2MagicString text() const
KUndo2Command * undoCommand()
KisTransaction(KisTransaction &&rhs)
KisTransaction & operator=(KisTransaction &&rhs)
KUndo2Command * endAndTake()
virtual ~KisTransaction()
KisTransactionData * m_transactionData
KisTransaction(KisPaintDeviceSP device, KUndo2Command *parent=0, int timedID=-1, KisTransactionWrapperFactory *interstrokeDataFactory=0, Flags flags=None)
void commit(KisUndoAdapter *undoAdapter)
virtual void addCommand(KUndo2Command *cmd)=0
#define KIS_ASSERT_X(cond, where, what)
Definition kis_assert.h:40
Q_DECLARE_OPERATORS_FOR_FLAGS(KisBaseRectsWalker::SubtreeVisitFlags)
QSharedPointer< KUndo2Command > KUndo2CommandSP
Definition kis_types.h:262