File indexing completed on 2024-05-12 15:58:14
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __KIS_DO_SOMETHING_COMMAND_H 0008 #define __KIS_DO_SOMETHING_COMMAND_H 0009 0010 #include <kundo2command.h> 0011 0012 template <template <class T> class DoSomethingOp, class LayerType> 0013 class KisDoSomethingCommand : public KUndo2Command 0014 { 0015 public: 0016 KisDoSomethingCommand(LayerType layer, bool finalUpdate, KUndo2Command *parentCommand = 0) 0017 : KUndo2Command(parentCommand), 0018 m_layer(layer), 0019 m_finalUpdate(finalUpdate) {} 0020 0021 void undo() override { 0022 DoSomethingOp<LayerType> op; 0023 if (!m_finalUpdate) { 0024 op(m_layer); 0025 } 0026 } 0027 0028 void redo() override { 0029 DoSomethingOp<LayerType> op; 0030 if (m_finalUpdate) { 0031 op(m_layer); 0032 } 0033 } 0034 0035 private: 0036 LayerType m_layer; 0037 bool m_finalUpdate; 0038 }; 0039 0040 namespace KisDoSomethingCommandOps { 0041 0042 template <class LayerType> 0043 struct ResetOp 0044 { 0045 void operator() (LayerType layer) { 0046 layer->resetCache(); 0047 } 0048 }; 0049 0050 template <class LayerType> 0051 struct UpdateOp 0052 { 0053 void operator() (LayerType layer) { 0054 layer->update(); 0055 } 0056 }; 0057 0058 template <class LayerType> 0059 struct NotifyColorSpaceChangedOp 0060 { 0061 void operator() (LayerType layer) { 0062 layer->notifyColorSpaceChanged(); 0063 } 0064 }; 0065 0066 0067 } 0068 #endif /* __KIS_DO_SOMETHING_COMMAND_H */