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 }