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
19class KisStrokeJob;
23
24
26{
27public:
29 {
31
33 m_mutatedJobsInterface = interface;
34 }
35
37 return m_mutatedJobsInterface;
38 }
39
40 private:
42 };
43
44
45 class KRITAIMAGE_EXPORT Data : public KisStrokeJobData {
46 public:
48 bool _undo = false,
49 Sequentiality _sequentiality = SEQUENTIAL,
50 Exclusivity _exclusivity = NORMAL,
51 bool _shouldGoToHistory = true)
52 : KisStrokeJobData(_sequentiality, _exclusivity),
53 command(_command),
54 undo(_undo),
55 shouldGoToHistory(_shouldGoToHistory)
56 {
57 }
58
60 bool _undo = false,
61 Sequentiality _sequentiality = SEQUENTIAL,
62 Exclusivity _exclusivity = NORMAL,
63 bool _shouldGoToHistory = true)
64 : KisStrokeJobData(_sequentiality, _exclusivity),
65 command(_command),
66 undo(_undo),
67 shouldGoToHistory(_shouldGoToHistory)
68 {
69 }
70
71 ~Data() override;
72
74 bool undo;
75 bool shouldGoToHistory = true;
76 };
77
78public:
80 bool undo,
81 KisStrokeUndoFacade *undoFacade,
82 KUndo2CommandSP initCommand = KUndo2CommandSP(0),
83 KUndo2CommandSP finishCommand = KUndo2CommandSP(0));
84
86
87 void initStrokeCallback() override;
88 void finishStrokeCallback() override;
89 void cancelStrokeCallback() override;
90 void doStrokeCallback(KisStrokeJobData *data) override;
91
104 void setCommandExtraData(KUndo2CommandExtraData *data);
105
113 void setMacroId(int value);
114
123
124 void setUsedWhileUndoRedo(bool value);
125
126protected:
127 void runAndSaveCommand(KUndo2CommandSP command,
130 void notifyCommandDone(KUndo2CommandSP command,
133
135
139 virtual void postProcessToplevelCommand(KUndo2Command *command);
140
141 KisStrokeUndoFacade* undoFacade() const;
142
143protected:
144 void executeCommand(KUndo2CommandSP command, bool undo);
145 void cancelStrokeCallbackImpl(QVector<KisStrokeJobData*> &mutatedJobs);
146private:
147 bool m_undo;
150 KisStrokeUndoFacade *m_undoFacade {nullptr};
151
152 QScopedPointer<KUndo2CommandExtraData> m_commandExtraData;
154
155 // protects done commands only
156 QMutex m_mutex;
157 KisSavedMacroCommand *m_macroCommand {nullptr};
158};
159
160#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)
QScopedPointer< KUndo2CommandExtraData > m_commandExtraData
void setExclusive(bool value)
void setSupportsWrapAroundMode(bool value)
QSharedPointer< KUndo2Command > KUndo2CommandSP
Definition kis_types.h:262