File indexing completed on 2024-05-12 15:56:40
0001 /* This file is part of the KDE project 0002 * SPDX-FileCopyrightText: 2009 Jan Hambrecht <jaham@gmx.net> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 #include "KoFilterEffectRegistry.h" 0008 0009 #include <QGlobalStatic> 0010 0011 #include "KoFilterEffect.h" 0012 #include "KoFilterEffectFactoryBase.h" 0013 #include <KoPluginLoader.h> 0014 0015 #include <FlakeDebug.h> 0016 0017 Q_GLOBAL_STATIC(KoFilterEffectRegistry, s_instance) 0018 0019 KoFilterEffectRegistry::KoFilterEffectRegistry() 0020 : d(0) 0021 { 0022 } 0023 0024 void KoFilterEffectRegistry::init() 0025 { 0026 KoPluginLoader::PluginsConfig config; 0027 config.whiteList = "FilterEffectPlugins"; 0028 config.blacklist = "FilterEffectPluginsDisabled"; 0029 KoPluginLoader::instance()->load(QString::fromLatin1("Krita/FilterEffect"), 0030 QString::fromLatin1("[X-Flake-PluginVersion] == 28"), 0031 config); 0032 } 0033 0034 0035 KoFilterEffectRegistry::~KoFilterEffectRegistry() 0036 { 0037 qDeleteAll(doubleEntries()); 0038 qDeleteAll(values()); 0039 } 0040 0041 KoFilterEffectRegistry* KoFilterEffectRegistry::instance() 0042 { 0043 if (!s_instance.exists()) { 0044 s_instance->init(); 0045 } 0046 return s_instance; 0047 } 0048 0049 KoFilterEffect * KoFilterEffectRegistry::createFilterEffectFromXml(const QDomElement & element, const KoFilterEffectLoadingContext &context) 0050 { 0051 KoFilterEffectFactoryBase * factory = get(element.tagName()); 0052 if (!factory) 0053 return 0; 0054 0055 KoFilterEffect * filterEffect = factory->createFilterEffect(); 0056 if (filterEffect->load(element, context)) 0057 return filterEffect; 0058 0059 delete filterEffect; 0060 return 0; 0061 }