File indexing completed on 2024-05-12 15:58:46

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_FACTORY_REGISTRY_H
0008 #define __KIS_TRANSFORM_MASK_PARAMS_FACTORY_REGISTRY_H
0009 
0010 #include <QMap>
0011 
0012 #include <functional>
0013 
0014 #include "kis_types.h"
0015 #include "kritaimage_export.h"
0016 
0017 
0018 class QDomElement;
0019 
0020 using KisTransformMaskParamsFactory    = std::function<KisTransformMaskParamsInterfaceSP (const QDomElement &)>;
0021 using KisTransformMaskParamsFactoryMap = QMap<QString, KisTransformMaskParamsFactory>;
0022 using KisAnimatedTransformMaskParamsFactory = std::function<KisTransformMaskParamsInterfaceSP (KisTransformMaskParamsInterfaceSP, const KisTransformMaskSP)>;
0023 using KisTransformMaskKeyframeFactory = std::function<void (KisTransformMaskSP, int, KisTransformMaskParamsInterfaceSP, KUndo2Command*)>;
0024 
0025 class KRITAIMAGE_EXPORT KisTransformMaskParamsFactoryRegistry
0026 {
0027 
0028 public:
0029     KisTransformMaskParamsFactoryRegistry();
0030     ~KisTransformMaskParamsFactoryRegistry();
0031 
0032     void addFactory(const QString &id, const KisTransformMaskParamsFactory &factory);
0033     KisTransformMaskParamsInterfaceSP createParams(const QString &id, const QDomElement &e);
0034 
0035     void setAnimatedParamsFactory(const KisAnimatedTransformMaskParamsFactory &factory);
0036     KisTransformMaskParamsInterfaceSP animateParams(KisTransformMaskParamsInterfaceSP params, const KisTransformMaskSP mask);
0037 
0038     void setKeyframeFactory(const KisTransformMaskKeyframeFactory &factory);
0039     void autoAddKeyframe(KisTransformMaskSP mask, int time, KisTransformMaskParamsInterfaceSP params, KUndo2Command *parentCommand);
0040 
0041     static KisTransformMaskParamsFactoryRegistry* instance();
0042 
0043 private:
0044     KisTransformMaskParamsFactoryMap m_map;
0045     KisAnimatedTransformMaskParamsFactory m_animatedParamsFactory;
0046     KisTransformMaskKeyframeFactory m_keyframeFactory;
0047 };
0048 
0049 #endif /* __KIS_TRANSFORM_MASK_PARAMS_FACTORY_REGISTRY_H */