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_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 #include "kis_transform_mask_params_interface.h" 0018 0019 0020 class QDomElement; 0021 0022 using KisTransformMaskParamsFactory = std::function<KisTransformMaskParamsInterfaceSP (const QDomElement &)>; 0023 using KisTransformMaskParamsFactoryMap = QMap<QString, KisTransformMaskParamsFactory>; 0024 using KisAnimatedTransformMaskParamsHolderFactory = std::function<KisAnimatedTransformParamsHolderInterfaceSP (KisDefaultBoundsBaseSP)>; 0025 0026 class KRITAIMAGE_EXPORT KisTransformMaskParamsFactoryRegistry 0027 { 0028 0029 public: 0030 KisTransformMaskParamsFactoryRegistry(); 0031 ~KisTransformMaskParamsFactoryRegistry(); 0032 0033 void addFactory(const QString &id, const KisTransformMaskParamsFactory &factory); 0034 KisTransformMaskParamsInterfaceSP createParams(const QString &id, const QDomElement &e); 0035 0036 void setAnimatedParamsHolderFactory(const KisAnimatedTransformMaskParamsHolderFactory &factory); 0037 KisAnimatedTransformParamsHolderInterfaceSP createAnimatedParamsHolder(KisDefaultBoundsBaseSP defaultBounds); 0038 0039 static KisTransformMaskParamsFactoryRegistry* instance(); 0040 0041 private: 0042 KisTransformMaskParamsFactoryMap m_map; 0043 KisAnimatedTransformMaskParamsHolderFactory m_animatedParamsFactory; 0044 }; 0045 0046 #endif /* __KIS_TRANSFORM_MASK_PARAMS_FACTORY_REGISTRY_H */