Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_do_something_command.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_DO_SOMETHING_COMMAND_H
8#define __KIS_DO_SOMETHING_COMMAND_H
9
10#include <kundo2command.h>
11
12template <template <class T> class DoSomethingOp, class LayerType>
14{
15public:
16 KisDoSomethingCommand(LayerType layer, bool finalUpdate, KUndo2Command *parentCommand = 0)
17 : KUndo2Command(parentCommand),
18 m_layer(layer),
19 m_finalUpdate(finalUpdate) {}
20
21 void undo() override {
22 DoSomethingOp<LayerType> op;
23 if (!m_finalUpdate) {
24 op(m_layer);
25 }
26 }
27
28 void redo() override {
29 DoSomethingOp<LayerType> op;
30 if (m_finalUpdate) {
31 op(m_layer);
32 }
33 }
34
35private:
36 LayerType m_layer;
38};
39
41
42template <class LayerType>
43struct ResetOp
44{
45 void operator() (LayerType layer) {
46 layer->resetCache(layer->colorSpace());
47 }
48};
49
50template <class LayerType>
52{
53 void operator() (LayerType layer) {
54 layer->update();
55 }
56};
57
58template <class LayerType>
60{
61 void operator() (LayerType layer) {
62 layer->notifyColorSpaceChanged();
63 }
64};
65
66
67}
68#endif /* __KIS_DO_SOMETHING_COMMAND_H */
KisDoSomethingCommand(LayerType layer, bool finalUpdate, KUndo2Command *parentCommand=0)