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 
0007 #ifndef KIS_BRUSH_REGISTRY_H_
0008 #define KIS_BRUSH_REGISTRY_H_
0009 
0010 #include <QObject>
0011 
0012 #include "kis_types.h"
0013 #include "KoGenericRegistry.h"
0014 
0015 #include <kritabrush_export.h>
0016 
0017 #include "kis_brush.h"
0018 #include "kis_brush_factory.h"
0019 #include "KisBrushModel.h"
0020 
0021 class QDomElement;
0022 
0023 class BRUSH_EXPORT KisBrushRegistry : public QObject, public KoGenericRegistry<KisBrushFactory*>
0024 {
0025 
0026     Q_OBJECT
0027 
0028 public:
0029     KisBrushRegistry();
0030     ~KisBrushRegistry() override;
0031 
0032     static KisBrushRegistry* instance();
0033 
0034     KoResourceLoadResult createBrush(const QDomElement& element, KisResourcesInterfaceSP resourcesInterface);
0035     KoResourceLoadResult createBrush(const KisBrushModel::BrushData &data, KisResourcesInterfaceSP resourcesInterface);
0036     std::optional<KisBrushModel::BrushData> createBrushModel(const QDomElement& element, KisResourcesInterfaceSP resourcesInterface);
0037     void toXML(QDomDocument &doc, QDomElement& element, const KisBrushModel::BrushData &model);
0038 
0039 private:
0040     KisBrushRegistry(const KisBrushRegistry&);
0041     KisBrushRegistry operator=(const KisBrushRegistry&);
0042 };
0043 
0044 #endif // KIS_GENERATOR_REGISTRY_H_