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 #include "kis_transform_mask_params_factory_registry.h"
0008 
0009 #include <QGlobalStatic>
0010 
0011 #include "kis_transform_mask_params_interface.h"
0012 #include "kis_transform_mask.h"
0013 
0014 Q_GLOBAL_STATIC(KisTransformMaskParamsFactoryRegistry, s_instance)
0015 
0016 
0017 KisTransformMaskParamsFactoryRegistry::KisTransformMaskParamsFactoryRegistry()
0018 {
0019 }
0020 
0021 KisTransformMaskParamsFactoryRegistry::~KisTransformMaskParamsFactoryRegistry()
0022 {
0023 }
0024 
0025 void KisTransformMaskParamsFactoryRegistry::addFactory(const QString &id, const KisTransformMaskParamsFactory &factory)
0026 {
0027     m_map.insert(id, factory);
0028 }
0029 
0030 KisTransformMaskParamsInterfaceSP
0031 KisTransformMaskParamsFactoryRegistry::createParams(const QString &id, const QDomElement &e)
0032 {
0033     KisTransformMaskParamsFactoryMap::iterator it = m_map.find(id);
0034     return it != m_map.end() ? (*it)(e) : KisTransformMaskParamsInterfaceSP(0);
0035 }
0036 
0037 void KisTransformMaskParamsFactoryRegistry::setAnimatedParamsFactory(const KisAnimatedTransformMaskParamsFactory &factory)
0038 {
0039     m_animatedParamsFactory = factory;
0040 }
0041 
0042 KisTransformMaskParamsInterfaceSP KisTransformMaskParamsFactoryRegistry::animateParams(KisTransformMaskParamsInterfaceSP params, const KisTransformMaskSP mask)
0043 {
0044     if (!m_animatedParamsFactory) return KisTransformMaskParamsInterfaceSP();
0045 
0046     return m_animatedParamsFactory(params, mask);
0047 }
0048 
0049 void KisTransformMaskParamsFactoryRegistry::setKeyframeFactory(const KisTransformMaskKeyframeFactory &factory)
0050 {
0051     m_keyframeFactory = factory;
0052 }
0053 
0054 void KisTransformMaskParamsFactoryRegistry::autoAddKeyframe(KisTransformMaskSP mask, int time, KisTransformMaskParamsInterfaceSP params, KUndo2Command *parentCommand)
0055 {
0056     if (m_keyframeFactory) {
0057         m_keyframeFactory(mask, time, params, parentCommand);
0058     }
0059 }
0060 
0061 KisTransformMaskParamsFactoryRegistry*
0062 KisTransformMaskParamsFactoryRegistry::instance()
0063 {
0064     return s_instance;
0065 }