File indexing completed on 2024-05-19 04:24:18

0001 /*
0002  *  SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_UNDO_STORES_H
0008 #define __KIS_UNDO_STORES_H
0009 
0010 #include "kis_undo_store.h"
0011 
0012 class KUndo2Stack;
0013 class KUndo2MagicString;
0014 
0015 
0016 /**
0017  * KisSurrogateUndoAdapter -- saves commands directly to the
0018  * internal stack. Used for wrapping around legacy code into
0019  * a single command.
0020  */
0021 class KRITACOMMAND_EXPORT KisSurrogateUndoStore : public KisUndoStore
0022 {
0023 public:
0024     KisSurrogateUndoStore();
0025     ~KisSurrogateUndoStore() override;
0026 
0027     const KUndo2Command* presentCommand() override;
0028     void undoLastCommand() override;
0029     void addCommand(KUndo2Command *cmd) override;
0030     void beginMacro(const KUndo2MagicString& macroName) override;
0031     void endMacro() override;
0032 
0033     void undo();
0034     void redo();
0035 
0036     void undoAll();
0037     void redoAll();
0038 
0039     void purgeRedoState() override;
0040 
0041     void clear();
0042 
0043 private:
0044     KUndo2Stack *m_undoStack;
0045 };
0046 
0047 /**
0048  * @brief The KisDumbUndoStore class doesn't actually save commands,
0049  * so you cannot undo or redo!
0050  */
0051 class KRITACOMMAND_EXPORT KisDumbUndoStore : public KisUndoStore
0052 {
0053 public:
0054     const KUndo2Command* presentCommand() override;
0055     void undoLastCommand() override;
0056     void addCommand(KUndo2Command *cmd) override;
0057     void beginMacro(const KUndo2MagicString& macroName) override;
0058     void endMacro() override;
0059     void purgeRedoState() override;
0060 };
0061 
0062 #endif /* __KIS_UNDO_STORES_H */