1 /*
2 * Copyright (c) 2014 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 */
18
19 #include "kis_transform_mask_params_factory_registry.h"
20
21 #include <QGlobalStatic>
22
23 #include "kis_transform_mask_params_interface.h"
24 #include "kis_transform_mask.h"
25
Q_GLOBAL_STATIC(KisTransformMaskParamsFactoryRegistry,s_instance)26 Q_GLOBAL_STATIC(KisTransformMaskParamsFactoryRegistry, s_instance)
27
28
29 KisTransformMaskParamsFactoryRegistry::KisTransformMaskParamsFactoryRegistry()
30 {
31 }
32
~KisTransformMaskParamsFactoryRegistry()33 KisTransformMaskParamsFactoryRegistry::~KisTransformMaskParamsFactoryRegistry()
34 {
35 }
36
addFactory(const QString & id,const KisTransformMaskParamsFactory & factory)37 void KisTransformMaskParamsFactoryRegistry::addFactory(const QString &id, const KisTransformMaskParamsFactory &factory)
38 {
39 m_map.insert(id, factory);
40 }
41
42 KisTransformMaskParamsInterfaceSP
createParams(const QString & id,const QDomElement & e)43 KisTransformMaskParamsFactoryRegistry::createParams(const QString &id, const QDomElement &e)
44 {
45 KisTransformMaskParamsFactoryMap::iterator it = m_map.find(id);
46 return it != m_map.end() ? (*it)(e) : KisTransformMaskParamsInterfaceSP(0);
47 }
48
setAnimatedParamsFactory(const KisAnimatedTransformMaskParamsFactory & factory)49 void KisTransformMaskParamsFactoryRegistry::setAnimatedParamsFactory(const KisAnimatedTransformMaskParamsFactory &factory)
50 {
51 m_animatedParamsFactory = factory;
52 }
53
animateParams(KisTransformMaskParamsInterfaceSP params)54 KisTransformMaskParamsInterfaceSP KisTransformMaskParamsFactoryRegistry::animateParams(KisTransformMaskParamsInterfaceSP params)
55 {
56 if (!m_animatedParamsFactory) return KisTransformMaskParamsInterfaceSP();
57
58 return m_animatedParamsFactory(params);
59 }
60
setKeyframeFactory(const KisTransformMaskKeyframeFactory & factory)61 void KisTransformMaskParamsFactoryRegistry::setKeyframeFactory(const KisTransformMaskKeyframeFactory &factory)
62 {
63 m_keyframeFactory = factory;
64 }
65
autoAddKeyframe(KisTransformMaskSP mask,int time,KisTransformMaskParamsInterfaceSP params,KUndo2Command * parentCommand)66 void KisTransformMaskParamsFactoryRegistry::autoAddKeyframe(KisTransformMaskSP mask, int time, KisTransformMaskParamsInterfaceSP params, KUndo2Command *parentCommand)
67 {
68 if (m_keyframeFactory) {
69 m_keyframeFactory(mask, time, params, parentCommand);
70 }
71 }
72
73 KisTransformMaskParamsFactoryRegistry*
instance()74 KisTransformMaskParamsFactoryRegistry::instance()
75 {
76 return s_instance;
77 }
78