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