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 */