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