File indexing completed on 2024-05-12 16:01:35

0001 /*
0002  *  SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_NODE_JUGGLER_COMPRESSED_H
0008 #define __KIS_NODE_JUGGLER_COMPRESSED_H
0009 
0010 #include <QObject>
0011 #include <QScopedPointer>
0012 
0013 #include <kritaui_export.h>
0014 #include <kundo2command.h>
0015 #include "kis_types.h"
0016 #include "kis_node_manager.h"
0017 
0018 
0019 class KRITAUI_EXPORT KisNodeJugglerCompressed : public QObject
0020 {
0021     Q_OBJECT
0022 public:
0023     KisNodeJugglerCompressed(const KUndo2MagicString &actionName, KisImageSP image, KisNodeManager *nodeManager, int timeout);
0024     ~KisNodeJugglerCompressed() override;
0025 
0026     void moveNode(KisNodeSP node, KisNodeSP parent, KisNodeSP above);
0027     void setAutoDelete(bool value);
0028 
0029     bool isEnded() const;
0030 
0031     void lowerNode(const KisNodeList &nodes);
0032     void raiseNode(const KisNodeList &nodes);
0033     void removeNode(const KisNodeList &nodes);
0034     void duplicateNode(const KisNodeList &nodes);
0035 
0036     void copyNode(const KisNodeList &nodes, KisNodeSP dstParent, KisNodeSP dstAbove);
0037     void moveNode(const KisNodeList &nodes, KisNodeSP dstParent, KisNodeSP dstAbove);
0038     void addNode(const KisNodeList &nodes, KisNodeSP dstParent, KisNodeSP dstAbove);
0039 
0040     bool canMergeAction(const KUndo2MagicString &actionName);
0041 
0042 public Q_SLOTS:
0043     void end();
0044 
0045 private Q_SLOTS:
0046     void startTimers();
0047     void slotUpdateTimeout();
0048     void slotEndStrokeRequested();
0049     void slotCancelStrokeRequested();
0050     void slotImageAboutToBeDeleted();
0051 
0052 Q_SIGNALS:
0053     void requestUpdateAsyncFromCommand();
0054 
0055 private:
0056     void cleanup();
0057 
0058 private:
0059     struct Private;
0060     const QScopedPointer<Private> m_d;
0061 };
0062 
0063 #endif /* __KIS_NODE_JUGGLER_COMPRESSED_H */