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