File indexing completed on 2024-05-12 16:01:34
0001 /* 0002 * SPDX-FileCopyrightText: 2009 Cyrille Berger <cberger@cberger.net> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KIS_NODE_COMMANDS_ADAPTER_H 0008 #define KIS_NODE_COMMANDS_ADAPTER_H 0009 0010 class KisViewManager; 0011 class KoCompositeOp; 0012 class KUndo2MagicString; 0013 class KisProcessingApplicator; 0014 0015 0016 #include <kis_types.h> 0017 #include <kritaui_export.h> 0018 0019 #include <QObject> 0020 0021 /** 0022 * This class allows the manipulation of nodes in a KisImage 0023 * and creates commands as needed. 0024 */ 0025 class KRITAUI_EXPORT KisNodeCommandsAdapter : public QObject 0026 { 0027 Q_OBJECT 0028 0029 public: 0030 KisNodeCommandsAdapter(KisViewManager * view); 0031 ~KisNodeCommandsAdapter() override; 0032 public: 0033 /** 0034 * Applies \p cmd on a provided \p applicator. If \p applicator is null, then a temporary 0035 * applicator is created locally. 0036 */ 0037 void applyOneCommandAsync(KUndo2Command *cmd, KisProcessingApplicator *applicator = 0); 0038 0039 /** 0040 * Same as addNode(), but adds a node using the provided \p applicator in an asynchronous way. 0041 * If \p applicator is null, then a temporary applicator (with a stroke) is created. 0042 */ 0043 void addNodeAsync(KisNodeSP node, KisNodeSP parent, KisNodeSP aboveThis, bool doRedoUpdates = true, bool doUndoUpdates = true, KisProcessingApplicator *applicator = 0); 0044 void addNodeAsync(KisNodeSP node, KisNodeSP parent, quint32 index, bool doRedoUpdates = true, bool doUndoUpdates = true, KisProcessingApplicator *applicator = 0); 0045 0046 0047 void beginMacro(const KUndo2MagicString& macroName); 0048 void addExtraCommand(KUndo2Command *command); 0049 void endMacro(); 0050 void addNode(KisNodeSP node, KisNodeSP parent, KisNodeSP aboveThis, bool doRedoUpdates = true, bool doUndoUpdates = true); 0051 void addNode(KisNodeSP node, KisNodeSP parent, quint32 index, bool doRedoUpdates = true, bool doUndoUpdates = true); 0052 void moveNode(KisNodeSP node, KisNodeSP parent, KisNodeSP aboveThis); 0053 void moveNode(KisNodeSP node, KisNodeSP parent, quint32 indexaboveThis); 0054 void removeNode(KisNodeSP node); 0055 void setOpacity(KisNodeSP node, qint32 opacity); 0056 void setCompositeOp(KisNodeSP node, const KoCompositeOp* compositeOp); 0057 void setNodeName(KisNodeSP node, const QString &name); 0058 0059 void undoLastCommand(); 0060 private: 0061 KisViewManager* m_view; 0062 }; 0063 0064 #endif // KIS_NODE_COMMANDS_ADAPTER_H