Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_image_signal_router.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <QThread>
11
12#include "kis_image.h"
13
14
15#define CONNECT_TO_IMAGE(signal) \
16 connect(this, SIGNAL(signal), m_image, SIGNAL(signal), Qt::DirectConnection)
17
18#define CONNECT_TO_IMAGE_QUEUED(signal) \
19 connect(this, SIGNAL(signal), m_image, SIGNAL(signal), Qt::QueuedConnection)
20
22 qRegisterMetaType<KisImageSignalType>("KisImageSignalType");
23}
24
25
55
59
64
66{
67 Q_FOREACH (const KisImageSignalType &type, notifications) {
68 emitNotification(type);
69 }
70}
71
73{
80 if (type.id == LayersChangedSignal ||
82 type.id == SizeChangedSignal) {
83 slotNotification(type);
84 } else {
85 Q_EMIT sigNotification(type);
86 }
87}
88
93
94void KisImageSignalRouter::emitNodeHasBeenAdded(KisNode *parent, int index, KisNodeAdditionFlags flags)
95{
96 KisNodeSP newNode = parent->at(index);
97
98 // overlay selection masks reset frames themselves
99 if (!newNode->inherits("KisSelectionMask")) {
101 if (image) {
102 image->invalidateAllFrames();
103 }
104 }
105
106 Q_EMIT sigNodeAddedAsync(newNode, flags);
107}
108
110{
111 KisNodeSP removedNode = parent->at(index);
112
113 // overlay selection masks reset frames themselves
114 if (!removedNode->inherits("KisSelectionMask")) {
116 if (image) {
117 image->invalidateAllFrames();
118 }
119 }
120
121 Q_EMIT sigRemoveNodeAsync(removedNode);
122}
123
128
133
138
140{
142 if (!image) {
143 return;
144 }
145
146 switch(type.id) {
148 image->invalidateAllFrames();
149 Q_EMIT sigLayersChangedAsync();
150 break;
153 break;
155 image->invalidateAllFrames();
158 break;
160 image->invalidateAllFrames();
161 Q_EMIT sigProfileChanged(image->profile());
162 break;
164 image->invalidateAllFrames();
165 Q_EMIT sigColorSpaceChanged(image->colorSpace());
166 break;
168 image->invalidateAllFrames();
169 Q_EMIT sigResolutionChanged(image->xRes(), image->yRes());
170 break;
173 !type.nodeReselectionSignal.newSelectedNodes.isEmpty()) {
174
177 }
178 break;
179 }
180}
float value(const T *src, size_t ch)
@ ColorSpaceChangedSignal
@ NodeReselectionRequestSignal
@ SizeChangedSignal
@ ProfileChangedSignal
@ LayersChangedSignal
@ ModifiedWithoutUndoSignal
@ ResolutionChangedSignal
void emitRequestLodPlanesSyncBlocked(bool value)
void sigRequestLodPlanesSyncBlocked(bool value)
void sigSizeChanged(const QPointF &oldStillPoint, const QPointF &newStillPoint)
void emitNotification(KisImageSignalType type)
void sigRequestNodeReselection(KisNodeSP activeNode, const KisNodeList &selectedNodes)
void emitNotifications(KisImageSignalVector notifications)
void slotNotification(KisImageSignalType type)
KisImageSignalRouter(KisImageWSP image)
void sigRemoveNodeAsync(KisNodeSP node)
void sigResolutionChanged(double xRes, double yRes)
void emitNodeHasBeenAdded(KisNode *parent, int index, KisNodeAdditionFlags flags)
void sigNotifyBatchUpdateStarted()
void sigNodeChanged(KisNodeSP node)
void emitAboutToRemoveANode(KisNode *parent, int index)
void emitNodeChanged(KisNodeSP node)
void sigImageModifiedWithoutUndo()
void sigNotification(KisImageSignalType type)
void sigNodeAddedAsync(KisNodeSP node, KisNodeAdditionFlags flags)
void sigNotifyBatchUpdateEnded()
void sigColorSpaceChanged(const KoColorSpace *cs)
void sigProfileChanged(const KoColorProfile *profile)
void invalidateAllFrames() override
Definition kis_image.cc:632
const KoColorSpace * colorSpace() const
double xRes() const
double yRes() const
const KoColorProfile * profile() const
KisSharedPtr< T > toStrongRef() const
toStrongRef returns a KisSharedPtr which may be dereferenced.
KIS_DECLARE_STATIC_INITIALIZER
#define CONNECT_TO_IMAGE_QUEUED(signal)
#define CONNECT_TO_IMAGE(signal)
ComplexSizeChangedSignal sizeChangedSignal
ComplexNodeReselectionSignal nodeReselectionSignal
KisImageSignalTypeEnum id