File indexing completed on 2024-05-12 15:56:10

0001 /*
0002  *  SPDX-FileCopyrightText: 2008 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #include "kis_brush_registry.h"
0007 
0008 #include <QString>
0009 
0010 #include <QGlobalStatic>
0011 #include <klocalizedstring.h>
0012 
0013 #include <KoPluginLoader.h>
0014 
0015 #include <kis_debug.h>
0016 
0017 #include "KoResourceServer.h"
0018 #include "kis_auto_brush_factory.h"
0019 #include "kis_text_brush_factory.h"
0020 #include "kis_predefined_brush_factory.h"
0021 
0022 Q_GLOBAL_STATIC(KisBrushRegistry, s_instance)
0023 
0024 
0025 KisBrushRegistry::KisBrushRegistry()
0026 {
0027 }
0028 
0029 KisBrushRegistry::~KisBrushRegistry()
0030 {
0031     Q_FOREACH (const QString & id, keys()) {
0032         delete get(id);
0033     }
0034     dbgRegistry << "deleting KisBrushRegistry";
0035 }
0036 
0037 KisBrushRegistry* KisBrushRegistry::instance()
0038 {
0039     if (!s_instance.exists()) {
0040         s_instance->add(new KisAutoBrushFactory());
0041         s_instance->add(new KisPredefinedBrushFactory("gbr_brush"));
0042         s_instance->add(new KisPredefinedBrushFactory("abr_brush"));
0043         s_instance->add(new KisTextBrushFactory());
0044         s_instance->add(new KisPredefinedBrushFactory("png_brush"));
0045         s_instance->add(new KisPredefinedBrushFactory("svg_brush"));
0046     }
0047     return s_instance;
0048 }
0049 
0050 
0051 KoResourceLoadResult KisBrushRegistry::createBrush(const QDomElement& element, KisResourcesInterfaceSP resourcesInterface)
0052 {
0053     QString brushType = element.attribute("type");
0054 
0055     if (brushType.isEmpty()) {
0056         return KoResourceSignature(ResourceType::Brushes, "", "unknown", "unknown");
0057     }
0058 
0059     KisBrushFactory *factory = get(brushType);
0060     if (!factory) {
0061         return KoResourceSignature(ResourceType::Brushes, "", "unknown", "unknown");
0062     }
0063 
0064     return factory->createBrush(element, resourcesInterface);
0065 }
0066