1 /*
2  *  Copyright (c) 2016 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 #ifndef __KIS_CALLBACK_BASED_PAINTOP_PROPERTY_IMPL_H
20 #define __KIS_CALLBACK_BASED_PAINTOP_PROPERTY_IMPL_H
21 
22 #include <functional>
23 
24 template <class ParentClass>
KisCallbackBasedPaintopProperty(typename ParentClass::Type type,const QString & id,const QString & name,KisPaintOpSettingsRestrictedSP settings,QObject * parent)25 KisCallbackBasedPaintopProperty<ParentClass>::KisCallbackBasedPaintopProperty(typename ParentClass::Type type,
26                                                                               const QString &id,
27                                                                               const QString &name,
28                                                                               KisPaintOpSettingsRestrictedSP settings,
29                                                                               QObject *parent)
30     : ParentClass(type, id, name, settings, parent)
31 {
32 }
33 
34 template <class ParentClass>
KisCallbackBasedPaintopProperty(const QString & id,const QString & name,KisPaintOpSettingsRestrictedSP settings,QObject * parent)35 KisCallbackBasedPaintopProperty<ParentClass>::KisCallbackBasedPaintopProperty(const QString &id,
36                                                                               const QString &name,
37                                                                               KisPaintOpSettingsRestrictedSP settings,
38                                                                               QObject *parent)
39     : ParentClass(id, name, settings, parent)
40 {
41 }
42 
43 template <class ParentClass>
setReadCallback(Callback func)44 void KisCallbackBasedPaintopProperty<ParentClass>::setReadCallback(Callback func)
45 {
46     m_readFunc = func;
47 }
48 
49 template <class ParentClass>
setWriteCallback(Callback func)50 void KisCallbackBasedPaintopProperty<ParentClass>::setWriteCallback(Callback func)
51 {
52     m_writeFunc = func;
53 }
54 
55 template <class ParentClass>
setIsVisibleCallback(VisibleCallback func)56 void KisCallbackBasedPaintopProperty<ParentClass>::setIsVisibleCallback(VisibleCallback func)
57 {
58     m_visibleFunc = func;
59 }
60 
61 template <class ParentClass>
readValueImpl()62 void KisCallbackBasedPaintopProperty<ParentClass>::readValueImpl()
63 {
64     if (m_readFunc) m_readFunc(this);
65 }
66 
67 template <class ParentClass>
writeValueImpl()68 void KisCallbackBasedPaintopProperty<ParentClass>::writeValueImpl()
69 {
70     if (m_writeFunc) m_writeFunc(this);
71 }
72 
73 template <class ParentClass>
isVisible()74 bool KisCallbackBasedPaintopProperty<ParentClass>::isVisible() const
75 {
76     return m_visibleFunc ? m_visibleFunc(this) : true;
77 }
78 
79 #endif /* __KIS_CALLBACK_BASED_PAINTOP_PROPERTY_IMPL_H */
80