File indexing completed on 2024-05-19 04:24:15

0001 /*
0002  *  SPDX-FileCopyrightText: 2008 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #ifndef KIS_BRUSH_FACTORY
0007 #define KIS_BRUSH_FACTORY
0008 
0009 #include "kis_brush.h"
0010 #include "KisBrushModel.h"
0011 
0012 class QDomElement;
0013 
0014 /**
0015  * A brush factory can create a new brush instance based
0016  * on a properties object that contains a serialized representation
0017  * of the object.
0018  */
0019 class BRUSH_EXPORT KisBrushFactory
0020 {
0021 
0022 public:
0023 
0024     KisBrushFactory() {}
0025     virtual ~KisBrushFactory() {}
0026 
0027 
0028     virtual QString id() const = 0;
0029 
0030     virtual QString name() const {
0031         return QString();
0032     }
0033 
0034     /**
0035      * Create a new brush from the given data or return an existing KisBrush
0036      * object. If this call leads to the creation of a resource, it should be
0037      * added to the resource provider, too.
0038      */
0039     virtual KoResourceLoadResult createBrush(const QDomElement& element, KisResourcesInterfaceSP resourcesInterface) = 0;
0040     virtual KoResourceLoadResult createBrush(const KisBrushModel::BrushData &data, KisResourcesInterfaceSP resourcesInterface) = 0;
0041     virtual std::optional<KisBrushModel::BrushData> createBrushModel(const QDomElement& element, KisResourcesInterfaceSP resourcesInterface) = 0;
0042     virtual void toXML(QDomDocument &doc, QDomElement &element, const KisBrushModel::BrushData &model) = 0;
0043 };
0044 
0045 #endif