File indexing completed on 2024-05-12 15:58:10
0001 /* 0002 * SPDX-FileCopyrightText: 2004, 2006-2007 Cyrille Berger <cberger@cberger.net> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "kis_base_processor.h" 0008 0009 #include <QString> 0010 0011 #include "kis_bookmarked_configuration_manager.h" 0012 #include "filter/kis_filter_configuration.h" 0013 #include "kis_paint_device.h" 0014 #include "kis_selection.h" 0015 #include <KisGlobalResourcesInterface.h> 0016 0017 0018 class KisBaseProcessorConfigurationFactory : public KisSerializableConfigurationFactory 0019 { 0020 public: 0021 KisBaseProcessorConfigurationFactory(KisBaseProcessor* _generator) : m_generator(_generator) {} 0022 ~KisBaseProcessorConfigurationFactory() override {} 0023 0024 KisSerializableConfigurationSP createDefault() override { 0025 return m_generator->defaultConfiguration(KisGlobalResourcesInterface::instance()); 0026 } 0027 KisSerializableConfigurationSP create(const QDomElement& e) override { 0028 KisSerializableConfigurationSP config = m_generator->factoryConfiguration(KisGlobalResourcesInterface::instance()); 0029 config->fromXML(e); 0030 return config; 0031 } 0032 private: 0033 KisBaseProcessor* m_generator; 0034 }; 0035 0036 struct Q_DECL_HIDDEN KisBaseProcessor::Private { 0037 Private() 0038 : bookmarkManager(0) 0039 , supportsPainting(false) 0040 , supportsAdjustmentLayers(true) 0041 , supportsThreading(true) 0042 , showConfigurationWidget(true) 0043 , colorSpaceIndependence(FULLY_INDEPENDENT) { 0044 } 0045 0046 KisBookmarkedConfigurationManager* bookmarkManager; 0047 0048 KoID id; 0049 KoID category; // The category in the filter menu this filter fits 0050 QString entry; // the i18n'ed accelerated menu text 0051 QKeySequence shortcut; 0052 bool supportsPainting; 0053 bool supportsAdjustmentLayers; 0054 bool supportsThreading; 0055 bool showConfigurationWidget; 0056 ColorSpaceIndependence colorSpaceIndependence; 0057 }; 0058 0059 KisBaseProcessor::KisBaseProcessor(const KoID& id, const KoID & category, const QString & entry) 0060 : d(new Private) 0061 { 0062 d->id = id; 0063 d->category = category; 0064 d->entry = entry; 0065 } 0066 0067 void KisBaseProcessor::init(const QString& configEntryGroup) 0068 { 0069 d->bookmarkManager = new KisBookmarkedConfigurationManager(configEntryGroup, new KisBaseProcessorConfigurationFactory(this)); 0070 } 0071 0072 KisBaseProcessor::~KisBaseProcessor() 0073 { 0074 delete d->bookmarkManager; 0075 delete d; 0076 } 0077 0078 KisFilterConfigurationSP KisBaseProcessor::factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const 0079 { 0080 return new KisFilterConfiguration(id(), 1, resourcesInterface); 0081 } 0082 0083 KisFilterConfigurationSP KisBaseProcessor::defaultConfiguration(KisResourcesInterfaceSP resourcesInterface) const 0084 { 0085 return factoryConfiguration(resourcesInterface); 0086 } 0087 0088 KisConfigWidget * KisBaseProcessor::createConfigurationWidget(QWidget *, const KisPaintDeviceSP, bool) const 0089 { 0090 return 0; 0091 } 0092 0093 KisBookmarkedConfigurationManager* KisBaseProcessor::bookmarkManager() 0094 { 0095 return d->bookmarkManager; 0096 } 0097 0098 const KisBookmarkedConfigurationManager* KisBaseProcessor::bookmarkManager() const 0099 { 0100 return d->bookmarkManager; 0101 } 0102 0103 QString KisBaseProcessor::id() const 0104 { 0105 return d->id.id(); 0106 } 0107 0108 QString KisBaseProcessor::name() const 0109 { 0110 return d->id.name(); 0111 } 0112 0113 KoID KisBaseProcessor::menuCategory() const 0114 { 0115 return d->category; 0116 } 0117 0118 QString KisBaseProcessor::menuEntry() const 0119 { 0120 return d->entry; 0121 } 0122 0123 QKeySequence KisBaseProcessor::shortcut() const 0124 { 0125 return d->shortcut; 0126 } 0127 0128 void KisBaseProcessor::setShortcut(const QKeySequence & shortcut) 0129 { 0130 d->shortcut = shortcut; 0131 } 0132 0133 bool KisBaseProcessor::supportsPainting() const 0134 { 0135 return d->supportsPainting; 0136 } 0137 0138 bool KisBaseProcessor::supportsAdjustmentLayers() const 0139 { 0140 return d->supportsAdjustmentLayers; 0141 } 0142 0143 bool KisBaseProcessor::supportsThreading() const 0144 { 0145 return d->supportsThreading; 0146 } 0147 0148 ColorSpaceIndependence KisBaseProcessor::colorSpaceIndependence() const 0149 { 0150 return d->colorSpaceIndependence; 0151 } 0152 0153 void KisBaseProcessor::setSupportsPainting(bool v) 0154 { 0155 d->supportsPainting = v; 0156 } 0157 0158 void KisBaseProcessor::setSupportsAdjustmentLayers(bool v) 0159 { 0160 d->supportsAdjustmentLayers = v; 0161 } 0162 0163 void KisBaseProcessor::setSupportsThreading(bool v) 0164 { 0165 d->supportsThreading = v; 0166 } 0167 0168 void KisBaseProcessor::setColorSpaceIndependence(ColorSpaceIndependence v) 0169 { 0170 d->colorSpaceIndependence = v; 0171 } 0172 0173 bool KisBaseProcessor::showConfigurationWidget() 0174 { 0175 return d->showConfigurationWidget; 0176 } 0177 0178 void KisBaseProcessor::setShowConfigurationWidget(bool v) 0179 { 0180 d->showConfigurationWidget = v; 0181 }