File indexing completed on 2024-06-23 04:21:30

0001 /*
0002  *  SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_CALLBACK_BASED_PAINTOP_PROPERTY_H
0008 #define __KIS_CALLBACK_BASED_PAINTOP_PROPERTY_H
0009 
0010 #include <functional>
0011 
0012 template<class ParentClass>
0013 class KRITAIMAGE_EXPORT_TEMPLATE KisCallbackBasedPaintopProperty
0014     : public ParentClass
0015 {
0016 public:
0017     KisCallbackBasedPaintopProperty(typename ParentClass::Type type,
0018                                     typename ParentClass::SubType subType,
0019                                     const KoID &id,
0020                                     KisPaintOpSettingsRestrictedSP settings,
0021                                     QObject *parent);
0022 
0023     KisCallbackBasedPaintopProperty(typename ParentClass::Type type, const KoID &id, KisPaintOpSettingsRestrictedSP settings, QObject *parent);
0024 
0025     KisCallbackBasedPaintopProperty(const KoID &id, KisPaintOpSettingsRestrictedSP settings, QObject *parent);
0026 
0027     typedef std::function<void (KisUniformPaintOpProperty*)> Callback;
0028     typedef std::function<bool (const KisUniformPaintOpProperty*)> VisibleCallback;
0029 
0030     void setReadCallback(Callback func);
0031     void setWriteCallback(Callback func);
0032     void setIsVisibleCallback(VisibleCallback func);
0033 
0034 protected:
0035     void readValueImpl() override;
0036     void writeValueImpl() override;
0037     bool isVisible() const override;
0038 
0039 private:
0040     Callback m_readFunc;
0041     Callback m_writeFunc;
0042     VisibleCallback m_visibleFunc;
0043 };
0044 
0045 #endif /* __KIS_CALLBACK_BASED_PAINTOP_PROPERTY_H */