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 }