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