File indexing completed on 2024-05-12 15:58:51
0001 /* 0002 * SPDX-FileCopyrightText: 2018 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KISIMAGESIGNALS_H 0008 #define KISIMAGESIGNALS_H 0009 0010 #include <QVector> 0011 #include <QRectF> 0012 #include "kritaimage_export.h" 0013 #include "kis_types.h" 0014 0015 enum KisImageSignalTypeEnum { 0016 LayersChangedSignal, 0017 ModifiedWithoutUndoSignal, 0018 SizeChangedSignal, 0019 ProfileChangedSignal, 0020 ColorSpaceChangedSignal, 0021 ResolutionChangedSignal, 0022 NodeReselectionRequestSignal 0023 }; 0024 0025 /** 0026 * A special signal which handles stillPoint capabilities of the image 0027 * 0028 * \see KisImage::sigSizeChanged() 0029 */ 0030 struct KRITAIMAGE_EXPORT ComplexSizeChangedSignal { 0031 ComplexSizeChangedSignal(); 0032 ComplexSizeChangedSignal(QPointF _oldStillPoint, QPointF _newStillPoint); 0033 0034 /** 0035 * A helper method calculating the still points from image areas 0036 * we process. It works as if the source image was "cropped" by \p 0037 * portionOfOldImage, and this portion formed the new image of size 0038 * \p transformedIntoImageOfSize. 0039 * 0040 * Note, that \p portionOfTheImage may be equal to the image bounds(). 0041 */ 0042 ComplexSizeChangedSignal(const QRect &portionOfOldImage, const QSize &transformedIntoImageOfSize); 0043 0044 ComplexSizeChangedSignal inverted() const; 0045 0046 QPointF oldStillPoint; 0047 QPointF newStillPoint; 0048 }; 0049 0050 /** 0051 * A special signal which handles emitting signals for node reselection 0052 * 0053 * \see KisImage::sigRequestNodeReselection() 0054 */ 0055 struct KRITAIMAGE_EXPORT ComplexNodeReselectionSignal { 0056 ComplexNodeReselectionSignal(); 0057 ComplexNodeReselectionSignal(KisNodeSP _newActiveNode, KisNodeList _newSelectedNodes, 0058 KisNodeSP _oldActiveNode = KisNodeSP(), KisNodeList _oldSelectedNodes = KisNodeList()); 0059 0060 ComplexNodeReselectionSignal inverted() const; 0061 0062 KisNodeSP newActiveNode; 0063 KisNodeList newSelectedNodes; 0064 KisNodeSP oldActiveNode; 0065 KisNodeList oldSelectedNodes; 0066 }; 0067 0068 struct KRITAIMAGE_EXPORT KisImageSignalType { 0069 KisImageSignalType(); 0070 KisImageSignalType(KisImageSignalTypeEnum _id); 0071 KisImageSignalType(ComplexSizeChangedSignal signal); 0072 KisImageSignalType(ComplexNodeReselectionSignal signal); 0073 0074 KisImageSignalType inverted() const; 0075 0076 KisImageSignalTypeEnum id; 0077 ComplexSizeChangedSignal sizeChangedSignal; 0078 ComplexNodeReselectionSignal nodeReselectionSignal; 0079 }; 0080 0081 typedef QVector<KisImageSignalType> KisImageSignalVector; 0082 0083 #endif // KISIMAGESIGNALS_H