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

0001 /*
0002  *  SPDX-FileCopyrightText: 2013 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_PREDEFINED_BRUSH_FACTORY_H
0008 #define __KIS_PREDEFINED_BRUSH_FACTORY_H
0009 
0010 #include <QString>
0011 #include <QDomElement>
0012 
0013 #include "kis_brush_factory.h"
0014 #include "kis_brush.h"
0015 
0016 #include "kritabrush_export.h"
0017 
0018 class BRUSH_EXPORT KisPredefinedBrushFactory : public KisBrushFactory
0019 {
0020 public:
0021     KisPredefinedBrushFactory(const QString &brushType);
0022 
0023     QString id() const override;
0024     KoResourceLoadResult createBrush(const KisBrushModel::BrushData &brushData, KisResourcesInterfaceSP resourcesInterface) override;
0025     KoResourceLoadResult createBrush(const QDomElement& brushDefinition, KisResourcesInterfaceSP resourcesInterface) override;
0026     std::optional<KisBrushModel::BrushData> createBrushModel(const QDomElement& element, KisResourcesInterfaceSP resourcesInterface) override;
0027     static void loadFromBrushResource(KisBrushModel::CommonData &commonData, KisBrushModel::PredefinedBrushData &predefinedBrushData, KisBrushSP brushResource);
0028     void toXML(QDomDocument &doc, QDomElement &element, const KisBrushModel::BrushData &model) override;
0029 
0030 private:
0031     std::variant<KisBrushModel::BrushData, KoResourceSignature> createBrushModelImpl(const QDomElement& element, KisResourcesInterfaceSP resourcesInterface);
0032 
0033 private:
0034     const QString m_id;
0035 };
0036 
0037 #endif /* __KIS_PREDEFINED_BRUSH_FACTORY_H */