Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_node_manager.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6#ifndef KIS_NODE_MANAGER
7#define KIS_NODE_MANAGER
8
9#include <QObject>
10#include <QList>
11#include <QAction>
12
13#include "kis_types.h"
14#include "kis_base_node.h"
15#include "kis_image.h"
16#include <kritaui_export.h>
17
19
20class KoCompositeOp;
21class KoColorSpace;
23
25class KisViewManager;
27class KisView;
32class KoProperties;
34
39class KRITAUI_EXPORT KisNodeManager : public QObject
40{
41
42 Q_OBJECT
43
44public:
45
47 ~KisNodeManager() override;
48
49 void setView(QPointer<KisView>imageView);
50
51Q_SIGNALS:
52
55
60
62
63public:
64
65 void setup(KisKActionCollection * collection, KisActionManager* actionManager);
66 void updateGUI();
67
69 KisNodeSP activeNode();
70
73 KisLayerSP activeLayer();
74
76 KisPaintDeviceSP activePaintDevice();
77
82 const KoColorSpace* activeColorSpace();
83
87 void setNodeName(KisNodeSP node, const QString &name);
88
92 void setNodeOpacity(KisNodeSP node, qint32 opacity);
93
97 void setNodeCompositeOp(KisNodeSP node, const KoCompositeOp* compositeOp);
98
99 KisNodeList selectedNodes();
100
101 KisNodeSelectionAdapter* nodeSelectionAdapter() const;
102 KisNodeInsertionAdapter* nodeInsertionAdapter() const;
103 KisNodeDisplayModeAdapter* nodeDisplayModeAdapter() const;
104
105 static bool isNodeHidden(KisNodeSP node, bool isGlobalSelectionHidden);
106
107 bool trySetNodeProperties(KisNodeSP node, KisImageSP image, KisBaseNode::PropertyList properties) const;
108
109
110 bool canModifyLayers(KisNodeList nodes, bool showWarning = true);
111 bool canModifyLayer(KisNodeSP node, bool showWarning = true);
112
113 bool canMoveLayers(KisNodeList nodes, bool showWarning = true);
114 bool canMoveLayer(KisNodeSP node, bool showWarning = true);
115
116public Q_SLOTS:
117
131 void slotNonUiActivatedNode(KisNodeSP node);
132
140 void slotUiActivatedNode(KisNodeSP node);
141
147 void addNodesDirect(KisNodeList nodes, KisNodeSP parent, KisNodeSP aboveThis);
148
154 void moveNodesDirect(KisNodeList nodes, KisNodeSP parent, KisNodeSP aboveThis);
155
161 void copyNodesDirect(KisNodeList nodes, KisNodeSP parent, KisNodeSP aboveThis);
162
166 void createFromVisible();
167
168 void slotPinToTimeline(bool value);
169
170 // Isolation Mode..
171
172 void toggleIsolateActiveNode();
173 void setIsolateActiveLayerMode(bool checked);
174 void setIsolateActiveGroupMode(bool checked);
175
176 void changeIsolationMode(bool isolateActiveLayer, bool isolateActiveGroup);
177 void changeIsolationRoot(KisNodeSP isolationRoot);
178
182 void handleExternalIsolationChange();
183 void reinitializeIsolationActionGroup();
184
185 // General Node Management..
186
187 void moveNodeAt(KisNodeSP node, KisNodeSP parent, int index);
188 KisNodeSP createNode(const QString& nodeType, bool quiet = false, KisPaintDeviceSP copyFrom = 0);
189 void convertNode(const QString &nodeType);
190 void createReferenceImage(bool fromLayer);
191 void createReferenceImageFromLayer();
192 void createReferenceImageFromVisible();
193 void nodesUpdated();
194 void nodeProperties(KisNodeSP node);
195 void nodePropertiesIgnoreSelection(KisNodeSP node);
197 void changeCloneSource();
198 void nodeOpacityChanged(qreal opacity);
199 void nodeCompositeOpChanged(const KoCompositeOp* op);
200 void duplicateActiveNode();
201 void removeNode();
202 void mirrorNodeX();
203 void mirrorNodeY();
204 void mirrorAllNodesX();
205 void mirrorAllNodesY();
206
207 void mirrorNode(KisNodeSP node, const KUndo2MagicString& commandName, Qt::Orientation orientation, KisSelectionSP selection);
208 void mirrorNodes(KisNodeList nodes, const KUndo2MagicString& commandName, Qt::Orientation orientation, KisSelectionSP selection);
209
210 void activateNextNode(bool siblingsOnly = false);
211 void activateNextSiblingNode();
212 void activatePreviousNode(bool siblingsOnly = false);
213 void activatePreviousSiblingNode();
214 void switchToPreviouslyActiveNode();
215
219 void raiseNode();
220
224 void lowerNode();
225
226 void saveNodeAsImage();
227 void saveVectorLayerAsImage();
228
229 void slotSplitAlphaIntoMask();
230 void slotSplitAlphaWrite();
231 void slotSplitAlphaSaveMerged();
232
233 void toggleLock();
234 void toggleVisibility();
235 void toggleAlphaLock();
236 void toggleInheritAlpha();
237
239 void colorOverlayMaskProperties(KisNodeSP node);
240
245 void slotSetSelectedNodes(const KisNodeList &nodes);
246
247 void slotImageRequestNodeReselection(KisNodeSP activeNode, const KisNodeList &selectedNodes);
248
249 void cutLayersToClipboard();
250 void copyLayersToClipboard();
251 void pasteLayersFromClipboard(bool changeOffset = false, QPointF offset = QPointF(), KisProcessingApplicator *applicator = nullptr);
252
253 void createQuickGroup();
254 void createQuickClippingGroup();
255 void quickUngroup();
256
257 void selectAllNodes();
258 void selectVisibleNodes();
259 void selectLockedNodes();
260 void selectInvisibleNodes();
261 void selectUnlockedNodes();
262
263private Q_SLOTS:
264
269 void slotUiActivateNode();
270
271
272public:
273 void removeSingleNode(KisNodeSP node);
274 KisLayerSP createPaintLayer();
275
276private:
281 qint32 convertOpacityToInt(qreal opacity);
282 void removeSelectedNodes(KisNodeList selectedNodes);
283 void slotSomethingActivatedNodeImpl(KisNodeSP node);
284 bool createQuickGroupImpl(KisNodeJugglerCompressed *juggler,
285 const QString &overrideGroupName,
286 KisNodeSP *newGroup,
287 KisNodeSP *newLastChild);
288 void selectLayersImpl(const KoProperties &props, const KoProperties &invertedProps);
289
290 struct Private;
291 Private * const m_d;
292};
293
294#endif
float value(const T *src, size_t ch)
char nodeType(const KoPathPoint *point)
A KisActionManager class keeps track of KisActions. These actions are always associated with the GUI....
A container for a set of QAction objects.
void sigUiNeedChangeActiveNode(KisNodeSP node)
void sigUiNeedChangeSelectedNodes(const QList< KisNodeSP > &nodes)
Private *const m_d
void sigNodeActivated(KisNodeSP node)
emitted whenever a node is selected.