File indexing completed on 2024-05-19 04:26:38
0001 /* 0002 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __KIS_TRANSFORM_MASK_PARAMS_INTERFACE_H 0008 #define __KIS_TRANSFORM_MASK_PARAMS_INTERFACE_H 0009 0010 #include "kritaimage_export.h" 0011 #include "kis_types.h" 0012 #include "kis_default_bounds_base.h" 0013 0014 #include <QScopedPointer> 0015 0016 0017 class QTransform; 0018 class QDomElement; 0019 class KisKeyframeChannel; 0020 0021 class KisTransformMaskParamsInterface; 0022 typedef QSharedPointer<KisTransformMaskParamsInterface> KisTransformMaskParamsInterfaceSP; 0023 typedef QWeakPointer<KisTransformMaskParamsInterface> KisTransformMaskParamsInterfaceWSP; 0024 0025 class KisAnimatedTransformParamsHolderInterface; 0026 typedef QSharedPointer<KisAnimatedTransformParamsHolderInterface> KisAnimatedTransformParamsHolderInterfaceSP; 0027 typedef QWeakPointer<KisAnimatedTransformParamsHolderInterface> KisAnimatedTransformParamsHolderInterfaceWSP; 0028 0029 0030 class KRITAIMAGE_EXPORT KisTransformMaskParamsInterface 0031 { 0032 public: 0033 virtual ~KisTransformMaskParamsInterface(); 0034 0035 virtual QTransform finalAffineTransform() const = 0; 0036 virtual bool isAffine() const = 0; 0037 0038 /** 0039 * Hides the transform mask from the rendering stack. It is used by the 0040 * legacy transform tool strategy to hide the mask during the overlay 0041 * preview. 0042 */ 0043 virtual bool isHidden() const = 0; 0044 virtual void setHidden(bool value) = 0; 0045 0046 virtual void transformDevice(KisNodeSP node, KisPaintDeviceSP src, KisPaintDeviceSP dst, bool forceSubPixelTranslation) const = 0; 0047 0048 virtual QString id() const = 0; 0049 virtual void toXML(QDomElement *e) const = 0; 0050 0051 virtual void translateSrcAndDst(const QPointF &offset) = 0; 0052 virtual void transformSrcAndDst(const QTransform &t) = 0; 0053 virtual void translateDstSpace(const QPointF &offset) = 0; 0054 0055 virtual QRect nonAffineChangeRect(const QRect &rc) = 0; 0056 virtual QRect nonAffineNeedRect(const QRect &rc, const QRect &srcBounds) = 0; 0057 0058 virtual bool compareTransform(KisTransformMaskParamsInterfaceSP rhs) const = 0; 0059 0060 virtual KisTransformMaskParamsInterfaceSP clone() const = 0; 0061 }; 0062 0063 class KRITAIMAGE_EXPORT KisAnimatedTransformParamsHolderInterface 0064 { 0065 public: 0066 virtual ~KisAnimatedTransformParamsHolderInterface(); 0067 0068 virtual bool isAnimated() const = 0; 0069 0070 virtual KisKeyframeChannel* requestKeyframeChannel(const QString &id) = 0; 0071 virtual KisKeyframeChannel* getKeyframeChannel(const QString &id) const = 0; 0072 0073 virtual KisTransformMaskParamsInterfaceSP bakeIntoParams() const = 0; 0074 virtual void setParamsAtCurrentPosition(const KisTransformMaskParamsInterface *params, KUndo2Command *parentCommand) = 0; 0075 0076 virtual KisAnimatedTransformParamsHolderInterfaceSP clone() const = 0; 0077 0078 virtual void setDefaultBounds(KisDefaultBoundsBaseSP bounds) = 0; 0079 virtual KisDefaultBoundsBaseSP defaultBounds() const = 0; 0080 0081 virtual void syncLodCache() = 0; 0082 0083 }; 0084 0085 #endif /* __KIS_TRANSFORM_MASK_PARAMS_INTERFACE_H */