File indexing completed on 2024-05-12 15:58:42
0001 /* 0002 * SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #ifndef _KIS_SERIALIZABLE_CONFIGURATION_H_ 0007 #define _KIS_SERIALIZABLE_CONFIGURATION_H_ 0008 0009 class QDomElement; 0010 class QDomDocument; 0011 class QString; 0012 0013 #include "kritaimage_export.h" 0014 #include "kis_shared.h" 0015 #include "kis_shared_ptr.h" 0016 0017 /** 0018 * This is an interface for objects that are serializable and unserializable. 0019 * It can be used together with the factory in case the type of configuration object 0020 * is also unknown at creation time. 0021 */ 0022 class KRITAIMAGE_EXPORT KisSerializableConfiguration : public KisShared 0023 { 0024 public: 0025 0026 KisSerializableConfiguration(); 0027 0028 virtual ~KisSerializableConfiguration() {} 0029 0030 KisSerializableConfiguration(const KisSerializableConfiguration &rhs); 0031 0032 /** 0033 * Fill the object from the XML encoded representation in s. 0034 */ 0035 virtual bool fromXML(const QString&, bool); 0036 0037 /** 0038 * Fill the object from the XML encoded representation in s. 0039 */ 0040 virtual void fromXML(const QDomElement&) = 0; 0041 0042 /** 0043 * Create a serialized version of this object 0044 */ 0045 virtual void toXML(QDomDocument&, QDomElement&) const = 0; 0046 0047 /** 0048 * Create a serialized version of this object 0049 */ 0050 virtual QString toXML() const; 0051 }; 0052 0053 typedef KisSharedPtr<KisSerializableConfiguration> KisSerializableConfigurationSP; 0054 0055 /** 0056 * This is an interface for a factory of serializable configuration objects. 0057 */ 0058 class KRITAIMAGE_EXPORT KisSerializableConfigurationFactory 0059 { 0060 public: 0061 virtual ~KisSerializableConfigurationFactory(); 0062 /** 0063 * @return an empty object with a sane default configuration 0064 */ 0065 virtual KisSerializableConfigurationSP createDefault() = 0; 0066 /** 0067 * @return an unserialied version of the configuration 0068 */ 0069 virtual KisSerializableConfigurationSP create(const QDomElement&) = 0; 0070 }; 0071 0072 0073 0074 #endif