1 /*
2    Copyright (c) 2006 Boudewijn Rempt (boud@valdyas.org)
3    Copyright (C) 2007, 2010 Thomas Zander <zander@kde.org>
4    Copyright (c) 2008 Carlos Licea <carlos.licea@kdemail.net>
5    Copyright (c) 2011 Jan Hambrecht <jaham@gmx.net>
6 
7    This library is free software; you can redistribute it and/or
8    modify it under the terms of the GNU Library General Public
9    License as published by the Free Software Foundation; either
10    version 2 of the License, or (at your option) any later version.
11 
12    This library is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    Library General Public License for more details.
16 
17    You should have received a copy of the GNU Library General Public License
18    along with this library; see the file COPYING.LIB.  If not, write to
19    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20    Boston, MA 02110-1301, USA.
21  */
22 #include "KoCanvasResourceProvider.h"
23 
24 #include <QVariant>
25 #include <FlakeDebug.h>
26 
27 #include "KoShape.h"
28 #include "KoShapeStroke.h"
29 #include "KoResourceManager_p.h"
30 #include <KoColorSpaceRegistry.h>
31 
32 class Q_DECL_HIDDEN KoCanvasResourceProvider::Private
33 {
34 public:
35     KoResourceManager manager;
36 };
37 
KoCanvasResourceProvider(QObject * parent)38 KoCanvasResourceProvider::KoCanvasResourceProvider(QObject *parent)
39     : QObject(parent)
40     , d(new Private())
41 {
42     const KoColorSpace* cs = KoColorSpaceRegistry::instance()->rgb8();
43     setForegroundColor(KoColor(Qt::black, cs));
44     setBackgroundColor(KoColor(Qt::white, cs));
45     setResource(ApplicationSpeciality, NoSpecial);
46 
47     connect(&d->manager, &KoResourceManager::resourceChanged,
48             this, &KoCanvasResourceProvider::canvasResourceChanged);
49     connect(&d->manager, &KoResourceManager::resourceChangeAttempted,
50             this, &KoCanvasResourceProvider::canvasResourceChangeAttempted);
51 }
52 
~KoCanvasResourceProvider()53 KoCanvasResourceProvider::~KoCanvasResourceProvider()
54 {
55     delete d;
56 }
57 
setResource(int key,const QVariant & value)58 void KoCanvasResourceProvider::setResource(int key, const QVariant &value)
59 {
60     d->manager.setResource(key, value);
61 }
62 
resource(int key) const63 QVariant KoCanvasResourceProvider::resource(int key) const
64 {
65     return d->manager.resource(key);
66 }
67 
setResource(int key,const KoColor & color)68 void KoCanvasResourceProvider::setResource(int key, const KoColor &color)
69 {
70     QVariant v;
71     v.setValue(color);
72     setResource(key, v);
73 }
74 
setResource(int key,KoShape * shape)75 void KoCanvasResourceProvider::setResource(int key, KoShape *shape)
76 {
77     QVariant v;
78     v.setValue(shape);
79     setResource(key, v);
80 }
81 
setResource(int key,const KoUnit & unit)82 void KoCanvasResourceProvider::setResource(int key, const KoUnit &unit)
83 {
84     QVariant v;
85     v.setValue(unit);
86     setResource(key, v);
87 }
88 
koColorResource(int key) const89 KoColor KoCanvasResourceProvider::koColorResource(int key) const
90 {
91     return d->manager.koColorResource(key);
92 }
93 
setForegroundColor(const KoColor & color)94 void KoCanvasResourceProvider::setForegroundColor(const KoColor &color)
95 {
96     setResource(ForegroundColor, color);
97 }
98 
foregroundColor() const99 KoColor KoCanvasResourceProvider::foregroundColor() const
100 {
101     return koColorResource(ForegroundColor);
102 }
103 
setBackgroundColor(const KoColor & color)104 void KoCanvasResourceProvider::setBackgroundColor(const KoColor &color)
105 {
106     setResource(BackgroundColor, color);
107 }
108 
backgroundColor() const109 KoColor KoCanvasResourceProvider::backgroundColor() const
110 {
111     return koColorResource(BackgroundColor);
112 }
113 
koShapeResource(int key) const114 KoShape *KoCanvasResourceProvider::koShapeResource(int key) const
115 {
116     return d->manager.koShapeResource(key);
117 }
118 
unitResource(int key) const119 KoUnit KoCanvasResourceProvider::unitResource(int key) const
120 {
121     return resource(key).value<KoUnit>();
122 }
123 
boolResource(int key) const124 bool KoCanvasResourceProvider::boolResource(int key) const
125 {
126     return d->manager.boolResource(key);
127 }
128 
intResource(int key) const129 int KoCanvasResourceProvider::intResource(int key) const
130 {
131     return d->manager.intResource(key);
132 }
133 
stringResource(int key) const134 QString KoCanvasResourceProvider::stringResource(int key) const
135 {
136     return d->manager.stringResource(key);
137 }
138 
sizeResource(int key) const139 QSizeF KoCanvasResourceProvider::sizeResource(int key) const
140 {
141     return d->manager.sizeResource(key);
142 }
143 
hasResource(int key) const144 bool KoCanvasResourceProvider::hasResource(int key) const
145 {
146     return d->manager.hasResource(key);
147 }
148 
clearResource(int key)149 void KoCanvasResourceProvider::clearResource(int key)
150 {
151     d->manager.clearResource(key);
152 }
153 
addDerivedResourceConverter(KoDerivedResourceConverterSP converter)154 void KoCanvasResourceProvider::addDerivedResourceConverter(KoDerivedResourceConverterSP converter)
155 {
156     d->manager.addDerivedResourceConverter(converter);
157 }
158 
hasDerivedResourceConverter(int key)159 bool KoCanvasResourceProvider::hasDerivedResourceConverter(int key)
160 {
161     return d->manager.hasDerivedResourceConverter(key);
162 }
163 
removeDerivedResourceConverter(int key)164 void KoCanvasResourceProvider::removeDerivedResourceConverter(int key)
165 {
166     d->manager.removeDerivedResourceConverter(key);
167 }
168 
addResourceUpdateMediator(KoResourceUpdateMediatorSP mediator)169 void KoCanvasResourceProvider::addResourceUpdateMediator(KoResourceUpdateMediatorSP mediator)
170 {
171     d->manager.addResourceUpdateMediator(mediator);
172 }
173 
hasResourceUpdateMediator(int key)174 bool KoCanvasResourceProvider::hasResourceUpdateMediator(int key)
175 {
176     return d->manager.hasResourceUpdateMediator(key);
177 }
178 
removeResourceUpdateMediator(int key)179 void KoCanvasResourceProvider::removeResourceUpdateMediator(int key)
180 {
181     d->manager.removeResourceUpdateMediator(key);
182 }
183