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