Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_stroke_strategy_undo_command_based.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_STROKE_STRATEGY_UNDO_COMMAND_BASED_H
8#define __KIS_STROKE_STRATEGY_UNDO_COMMAND_BASED_H
9
10#include <kundo2command.h>
11#include <QVector>
12#include <QMutex>
13
14#include "kis_types.h"
17
18#include <memory>
19
20
21class KisStrokeJob;
25
26
28{
29public:
31 {
33
35 m_mutatedJobsInterface = interface;
36 }
37
39 return m_mutatedJobsInterface;
40 }
41
42 private:
44 };
45
46
47 class KRITAIMAGE_EXPORT Data : public KisStrokeJobData {
48 public:
50 bool _undo = false,
51 Sequentiality _sequentiality = SEQUENTIAL,
52 Exclusivity _exclusivity = NORMAL,
53 bool _shouldGoToHistory = true)
54 : KisStrokeJobData(_sequentiality, _exclusivity),
55 command(_command),
56 undo(_undo),
57 shouldGoToHistory(_shouldGoToHistory)
58 {
59 }
60
62 bool _undo = false,
63 Sequentiality _sequentiality = SEQUENTIAL,
64 Exclusivity _exclusivity = NORMAL,
65 bool _shouldGoToHistory = true)
66 : KisStrokeJobData(_sequentiality, _exclusivity),
67 command(_command),
68 undo(_undo),
69 shouldGoToHistory(_shouldGoToHistory)
70 {
71 }
72
73 ~Data() override;
74
76 bool undo;
77 bool shouldGoToHistory = true;
78 };
79
80public:
82 bool undo,
83 KisStrokeUndoFacade *undoFacade,
84 KUndo2CommandSP initCommand = KUndo2CommandSP(0),
85 KUndo2CommandSP finishCommand = KUndo2CommandSP(0));
86
88
89 void initStrokeCallback() override;
90 void finishStrokeCallback() override;
91 void cancelStrokeCallback() override;
92 void doStrokeCallback(KisStrokeJobData *data) override;
93
106 void setCommandExtraData(KUndo2CommandExtraData *data);
107
115 void setMacroId(int value);
116
125
126 void setUsedWhileUndoRedo(bool value);
127
128protected:
129 void runAndSaveCommand(KUndo2CommandSP command,
132 void notifyCommandDone(KUndo2CommandSP command,
135
137
141 virtual void postProcessToplevelCommand(KUndo2Command *command);
142
143 KisStrokeUndoFacade* undoFacade() const;
144
145protected:
146 void executeCommand(KUndo2CommandSP command, bool undo);
147 void cancelStrokeCallbackImpl(QVector<KisStrokeJobData*> &mutatedJobs);
148private:
149 bool m_undo;
152 KisStrokeUndoFacade *m_undoFacade {nullptr};
153
154 std::unique_ptr<KUndo2CommandExtraData> m_commandExtraData;
156
157 // protects done commands only
158 QMutex m_mutex;
159 KisSavedMacroCommand *m_macroCommand {nullptr};
160};
161
162#endif /* __KIS_STROKE_STRATEGY_UNDO_COMMAND_BASED_H */
float value(const T *src, size_t ch)
void doStrokeCallback(KisStrokeJobData *data) override
Data(KUndo2CommandSP _command, bool _undo=false, Sequentiality _sequentiality=SEQUENTIAL, Exclusivity _exclusivity=NORMAL, bool _shouldGoToHistory=true)
Data(KUndo2Command *_command, bool _undo=false, Sequentiality _sequentiality=SEQUENTIAL, Exclusivity _exclusivity=NORMAL, bool _shouldGoToHistory=true)
std::unique_ptr< KUndo2CommandExtraData > m_commandExtraData
void setExclusive(bool value)
void setSupportsWrapAroundMode(bool value)
QSharedPointer< KUndo2Command > KUndo2CommandSP
Definition kis_types.h:262