Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_derived_resources.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
11#include "kis_paintop_preset.h"
14#include "KisResourceModel.h"
15
16
24
26 : KoResourceUpdateMediator(KoCanvasResource::CurrentPaintOpPreset),
27 m_d(new Private)
28{
29 connect(&m_d->model, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)),
30 this, SLOT(slotResourceChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)));
31}
32
36
37void KisPresetUpdateMediator::connectResource(QVariant sourceResource)
38{
39 KisPaintOpPresetSP preset = sourceResource.value<KisPaintOpPresetSP>();
40 if (!preset) return;
41
42 m_d->connections.clear();
43 m_d->connections.addUniqueConnection(
44 preset->updateProxy(),
45 SIGNAL(sigSettingsChanged()),
46 this,
47 SLOT(slotSettingsChanged()));
48
49 m_d->linkedResourceIndex = m_d->model.indexForResource(preset);
50}
51
56
57void KisPresetUpdateMediator::slotResourceChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles)
58{
59 Q_UNUSED(roles)
60
61
63
64 if (m_d->linkedResourceIndex.row() >= topLeft.row() &&
65 m_d->linkedResourceIndex.row() <= bottomRight.row()) {
66
67 Q_EMIT sigResourceChanged(key());
68 }
69}
70
71
72/*********************************************************************/
73/* KisCompositeOpResourceConverter */
74/*********************************************************************/
75
76
82
84{
86 return preset ? preset->settings()->paintOpCompositeOp() : QVariant();
87}
88
89QVariant KisCompositeOpResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
90{
91 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
92 if (!preset) return sourceValue;
93
94 preset->settings()->setPaintOpCompositeOp(value.toString());
95 return QVariant::fromValue(preset);
96}
97
98/*********************************************************************/
99/* KisEffectiveCompositeOpResourceConverter */
100/*********************************************************************/
101
102
108
110{
112 return preset ? preset->settings()->effectivePaintOpCompositeOp() : QVariant();
113}
114
115QVariant KisEffectiveCompositeOpResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
116{
117 Q_UNUSED(value);
118
119 // WARNING: we don't save that!
120 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
121 if (!preset) return sourceValue;
122
123 return QVariant::fromValue(preset);
124}
125
126/*********************************************************************/
127/* KisOpacityToPresetOpacityResourceConverter */
128/*********************************************************************/
129
135
137{
139 return preset ? preset->settings()->paintOpOpacity() : QVariant(1.0);
140}
141
142QVariant KisOpacityToPresetOpacityResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
143{
144 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
145 if (!preset) return sourceValue;
146
147 preset->settings()->setPaintOpOpacity(value.toReal());
148 return QVariant::fromValue(preset);
149}
150
151/*********************************************************************/
152/* KisFlowResourceConverter */
153/*********************************************************************/
154
160
162{
164 return preset ? preset->settings()->paintOpFlow() : QVariant();
165}
166
167QVariant KisFlowResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
168{
169 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
170 if (!preset) return sourceValue;
171
172 preset->settings()->setPaintOpFlow(value.toReal());
173 return QVariant::fromValue(preset);
174}
175
176/*********************************************************************/
177/* KisFadeResourceConverter */
178/*********************************************************************/
179
185
187{
189 return preset ? preset->settings()->paintOpFade() : QVariant();
190}
191
192QVariant KisFadeResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
193{
194 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
195 if (!preset) return sourceValue;
196
197 preset->settings()->setPaintOpFade(value.toReal());
198 return QVariant::fromValue(preset);
199}
200
201/*********************************************************************/
202/* KisScatterResourceConverter */
203/*********************************************************************/
204
210
212{
214 return preset ? preset->settings()->paintOpScatter() : QVariant();
215}
216
217QVariant KisScatterResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
218{
219 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
220 if (!preset) return sourceValue;
221
222 preset->settings()->setPaintOpScatter(value.toReal());
223 return QVariant::fromValue(preset);
224}
225
226/*********************************************************************/
227/* KisSizeResourceConverter */
228/*********************************************************************/
229
235
237{
239 return (preset && preset->settings()) ? preset->settings()->paintOpSize() : QVariant();
240}
241
242QVariant KisSizeResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
243{
244 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
245 if (!preset) return sourceValue;
246
247 preset->settings()->setPaintOpSize(value.toReal());
248 return QVariant::fromValue(preset);
249}
250
251/*********************************************************************/
252/* KisBrushRotationResourceConverter */
253/*********************************************************************/
254
260
262{
264 return (preset && preset->settings()) ? preset->settings()->paintOpAngle() : QVariant();
265}
266
267QVariant KisBrushRotationResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
268{
269 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
270 if (!preset) return sourceValue;
271
272 preset->settings()->setPaintOpAngle(value.toReal());
273 return QVariant::fromValue(preset);
274}
275
279//
285
287{
289 return preset && preset->settings()->hasPatternSettings() ? preset->settings()->paintOpPatternSize() : QVariant::fromValue(1.0);
290}
291
292QVariant KisPatternSizeResourceConverter::toSource(const QVariant& value, const QVariant& sourceValue)
293{
294 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
295 if (!preset) return sourceValue;
296
297 if (preset->settings()->hasPatternSettings()) {
298 preset->settings()->setProperty("Texture/Pattern/Scale", value.toReal());
299 }
300
301 return QVariant::fromValue(preset);
302}
303
304/*********************************************************************/
305/* KisLodAvailabilityResourceConverter */
306/*********************************************************************/
307
313
315{
317 return preset ? KisPaintOpSettings::isLodUserAllowed(preset->settings()) : QVariant();
318}
319
320QVariant KisLodAvailabilityResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
321{
322 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
323 if (!preset) return sourceValue;
324
325 KisPaintOpSettings::setLodUserAllowed(preset->settings().data(), value.toBool());
326 return QVariant::fromValue(preset);
327}
328
329/*********************************************************************/
330/* KisLodSizeThresholdResourceConverter */
331/*********************************************************************/
332
338
340{
342 return preset ? preset->settings()->lodSizeThreshold() : QVariant();
343}
344
345QVariant KisLodSizeThresholdResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
346{
347 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
348 if (!preset) return sourceValue;
349
350 preset->settings()->setLodSizeThreshold(value.toDouble());
351 return QVariant::fromValue(preset);
352}
353
354/*********************************************************************/
355/* KisLodSizeThresholdSupportedResourceConverter */
356/*********************************************************************/
357
363
365{
367 return preset ? preset->settings()->lodSizeThresholdSupported() : QVariant();
368}
369
370QVariant KisLodSizeThresholdSupportedResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
371{
372 // this property of the preset is immutable
373
374 Q_UNUSED(value);
375 return sourceValue;
376}
377
378
379/*********************************************************************/
380/* KisEraserModeResourceConverter */
381/*********************************************************************/
382
388
390{
392 return preset ? preset->settings()->eraserMode() : QVariant();
393}
394
395QVariant KisEraserModeResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
396{
397 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
398 if (!preset) return sourceValue;
399
400 preset->settings()->setEraserMode(value.toBool());
401 return QVariant::fromValue(preset);
402}
403
409
411{
413 return preset ? preset->name() : QVariant();
414}
415
416QVariant KisBrushNameResourceConverter::toSource(const QVariant &value, const QVariant &sourceValue)
417{
418 KisPaintOpPresetSP preset = sourceValue.value<KisPaintOpPresetSP>();
419 if (!preset) return sourceValue;
420
421 preset->setName(value.toString());
422 return QVariant::fromValue(preset);
423}
float value(const T *src, size_t ch)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant fromSource(const QVariant &value) override
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant fromSource(const QVariant &value) override
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant fromSource(const QVariant &value) override
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
void connectResource(QVariant sourceResource) override
const QScopedPointer< Private > m_d
void slotResourceChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles)
The KisResourceModel class provides the main access to resources. It is possible to filter the resour...
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
QVariant fromSource(const QVariant &value) override
QVariant toSource(const QVariant &value, const QVariant &sourceValue) override
void sigResourceChanged(int key)
static void setLodUserAllowed(KisPropertiesConfigurationSP config, bool value)
static bool isLodUserAllowed(const KisPropertiesConfigurationSP config)
KisSignalAutoConnectionsStore connections