File indexing completed on 2024-05-12 15:56:39
0001 /* 0002 SPDX-FileCopyrightText: 2006 Boudewijn Rempt (boud@valdyas.org) 0003 SPDX-FileCopyrightText: 2007, 2010 Thomas Zander <zander@kde.org> 0004 SPDX-FileCopyrightText: 2008 Carlos Licea <carlos.licea@kdemail.net> 0005 SPDX-FileCopyrightText: 2011 Jan Hambrecht <jaham@gmx.net> 0006 0007 SPDX-License-Identifier: LGPL-2.0-or-later 0008 */ 0009 #include "KoCanvasResourceProvider.h" 0010 0011 #include <QVariant> 0012 #include <FlakeDebug.h> 0013 0014 #include "KoShape.h" 0015 #include "KoShapeStroke.h" 0016 #include "KoResourceManager_p.h" 0017 #include <KoColorSpaceRegistry.h> 0018 0019 #include <KoCanvasResourcesInterface.h> 0020 0021 struct Q_DECL_HIDDEN CanvasResourceProviderInterfaceWrapper : public KoCanvasResourcesInterface 0022 { 0023 CanvasResourceProviderInterfaceWrapper(KoCanvasResourceProvider *provider) 0024 : m_provider(provider) 0025 { 0026 } 0027 0028 QVariant resource(int key) const override { 0029 return m_provider->resource(key); 0030 } 0031 0032 private: 0033 KoCanvasResourceProvider *m_provider = 0; 0034 }; 0035 0036 0037 class Q_DECL_HIDDEN KoCanvasResourceProvider::Private 0038 { 0039 public: 0040 Private(KoCanvasResourceProvider *q) 0041 : interfaceWrapper(new CanvasResourceProviderInterfaceWrapper(q)) 0042 { 0043 } 0044 0045 KoResourceManager manager; 0046 QSharedPointer<CanvasResourceProviderInterfaceWrapper> interfaceWrapper; 0047 }; 0048 0049 KoCanvasResourceProvider::KoCanvasResourceProvider(QObject *parent) 0050 : QObject(parent) 0051 , d(new Private(this)) 0052 { 0053 const KoColorSpace* cs = KoColorSpaceRegistry::instance()->rgb8(); 0054 setForegroundColor(KoColor(Qt::black, cs)); 0055 setBackgroundColor(KoColor(Qt::white, cs)); 0056 0057 connect(&d->manager, &KoResourceManager::resourceChanged, 0058 this, &KoCanvasResourceProvider::canvasResourceChanged); 0059 connect(&d->manager, &KoResourceManager::resourceChangeAttempted, 0060 this, &KoCanvasResourceProvider::canvasResourceChangeAttempted); 0061 } 0062 0063 KoCanvasResourceProvider::~KoCanvasResourceProvider() 0064 { 0065 delete d; 0066 } 0067 0068 void KoCanvasResourceProvider::setResource(int key, const QVariant &value) 0069 { 0070 d->manager.setResource(key, value); 0071 } 0072 0073 QVariant KoCanvasResourceProvider::resource(int key) const 0074 { 0075 return d->manager.resource(key); 0076 } 0077 0078 void KoCanvasResourceProvider::setResource(int key, const KoColor &color) 0079 { 0080 QVariant v; 0081 v.setValue(color); 0082 setResource(key, v); 0083 } 0084 0085 void KoCanvasResourceProvider::setResource(int key, KoShape *shape) 0086 { 0087 QVariant v; 0088 v.setValue(shape); 0089 setResource(key, v); 0090 } 0091 0092 void KoCanvasResourceProvider::setResource(int key, const KoUnit &unit) 0093 { 0094 QVariant v; 0095 v.setValue(unit); 0096 setResource(key, v); 0097 } 0098 0099 KoColor KoCanvasResourceProvider::koColorResource(int key) const 0100 { 0101 return d->manager.koColorResource(key); 0102 } 0103 0104 void KoCanvasResourceProvider::setForegroundColor(const KoColor &color) 0105 { 0106 setResource(KoCanvasResource::ForegroundColor, color); 0107 } 0108 0109 KoColor KoCanvasResourceProvider::foregroundColor() const 0110 { 0111 return koColorResource(KoCanvasResource::ForegroundColor); 0112 } 0113 0114 void KoCanvasResourceProvider::setBackgroundColor(const KoColor &color) 0115 { 0116 setResource(KoCanvasResource::BackgroundColor, color); 0117 } 0118 0119 KoColor KoCanvasResourceProvider::backgroundColor() const 0120 { 0121 return koColorResource(KoCanvasResource::BackgroundColor); 0122 } 0123 0124 KoShape *KoCanvasResourceProvider::koShapeResource(int key) const 0125 { 0126 return d->manager.koShapeResource(key); 0127 } 0128 0129 KoUnit KoCanvasResourceProvider::unitResource(int key) const 0130 { 0131 return resource(key).value<KoUnit>(); 0132 } 0133 0134 bool KoCanvasResourceProvider::boolResource(int key) const 0135 { 0136 return d->manager.boolResource(key); 0137 } 0138 0139 int KoCanvasResourceProvider::intResource(int key) const 0140 { 0141 return d->manager.intResource(key); 0142 } 0143 0144 QString KoCanvasResourceProvider::stringResource(int key) const 0145 { 0146 return d->manager.stringResource(key); 0147 } 0148 0149 QSizeF KoCanvasResourceProvider::sizeResource(int key) const 0150 { 0151 return d->manager.sizeResource(key); 0152 } 0153 0154 bool KoCanvasResourceProvider::hasResource(int key) const 0155 { 0156 return d->manager.hasResource(key); 0157 } 0158 0159 void KoCanvasResourceProvider::clearResource(int key) 0160 { 0161 d->manager.clearResource(key); 0162 } 0163 0164 void KoCanvasResourceProvider::addDerivedResourceConverter(KoDerivedResourceConverterSP converter) 0165 { 0166 d->manager.addDerivedResourceConverter(converter); 0167 } 0168 0169 bool KoCanvasResourceProvider::hasDerivedResourceConverter(int key) 0170 { 0171 return d->manager.hasDerivedResourceConverter(key); 0172 } 0173 0174 void KoCanvasResourceProvider::removeDerivedResourceConverter(int key) 0175 { 0176 d->manager.removeDerivedResourceConverter(key); 0177 } 0178 0179 void KoCanvasResourceProvider::addResourceUpdateMediator(KoResourceUpdateMediatorSP mediator) 0180 { 0181 d->manager.addResourceUpdateMediator(mediator); 0182 } 0183 0184 bool KoCanvasResourceProvider::hasResourceUpdateMediator(int key) 0185 { 0186 return d->manager.hasResourceUpdateMediator(key); 0187 } 0188 0189 void KoCanvasResourceProvider::removeResourceUpdateMediator(int key) 0190 { 0191 d->manager.removeResourceUpdateMediator(key); 0192 } 0193 0194 void KoCanvasResourceProvider::addActiveCanvasResourceDependency(KoActiveCanvasResourceDependencySP dep) 0195 { 0196 d->manager.addActiveCanvasResourceDependency(dep); 0197 } 0198 0199 bool KoCanvasResourceProvider::hasActiveCanvasResourceDependency(int sourceKey, int targetKey) const 0200 { 0201 return d->manager.hasActiveCanvasResourceDependency(sourceKey, targetKey); 0202 } 0203 0204 void KoCanvasResourceProvider::removeActiveCanvasResourceDependency(int sourceKey, int targetKey) 0205 { 0206 d->manager.removeActiveCanvasResourceDependency(sourceKey, targetKey); 0207 } 0208 0209 KoCanvasResourcesInterfaceSP KoCanvasResourceProvider::canvasResourcesInterface() const 0210 { 0211 return d->interfaceWrapper; 0212 }