Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_color_transformation_configuration.cc
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2015 Thorsten Zachmann <zachmann@kde.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
9#include <QMutex>
10#include <QMutexLocker>
11#include <QMap>
12#include <QThread>
14
17 {}
18
20 {
21 destroyCache();
22 }
23
25 {
26 QMutexLocker locker(&mutex);
27 qDeleteAll(colorTransformation);
28 colorTransformation.clear();
29 }
30
31 // XXX: Threadlocal storage!!!
32 QMap<QThread*, KoColorTransformation*> colorTransformation;
33 QMutex mutex;
34};
35
37 : KisFilterConfiguration(name, version, resourcesInterface)
38 , d(new Private())
39{
40}
41
47
52
57
68
70{
71 QMutexLocker locker(&d->mutex);
72 KoColorTransformation *transformation = d->colorTransformation.value(QThread::currentThread(), 0);
73 if (!transformation) {
74 KisFilterConfigurationSP config(clone().data());
75 transformation = filter->createTransformation(cs, config);
76 d->colorTransformation.insert(QThread::currentThread(), transformation);
77 }
78 locker.unlock();
79 return transformation;
80}
81
float value(const T *src, size_t ch)
virtual KoColorTransformation * createTransformation(const KoColorSpace *cs, const KisFilterConfigurationSP config) const =0
static QMutex mutex
KisColorTransformationConfiguration(const QString &name, qint32 version, KisResourcesInterfaceSP resourcesInterface)
void setProperty(const QString &name, const QVariant &value) override
void invalidateColorTransformationCache()
Manually invalidate the cache. By default setProperty invalidates the cache but this method can be us...
QMap< QThread *, KoColorTransformation * > colorTransformation
KisFilterConfigurationSP clone() const override
virtual void setProperty(const QString &name, const QVariant &value)