Krita Source Code Documentation
Loading...
Searching...
No Matches
KoFallBackColorTransformation.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-or-later
5 */
6
8
10#include "KoColorSpace.h"
14
15#include "DebugPigment.h"
16
27
29{
30 d->fallBackColorSpace = _fallBackCS;
32 d->csToFallBack = d->csToFallBackCache->transformation();
34 d->fallBackToCs = d->fallBackToCsCache->transformation();
35 d->colorTransformation = _transfo;
36 d->buff = 0;
37 d->buffSize = 0;
38}
39
41{
42 Q_ASSERT(*_csToFallBack->srcColorSpace() == *_fallBackToCs->dstColorSpace());
43 Q_ASSERT(*_fallBackToCs->srcColorSpace() == *_csToFallBack->dstColorSpace());
44 d->fallBackColorSpace = _fallBackToCs->srcColorSpace();
45 d->csToFallBack = _csToFallBack;
46 d->fallBackToCs = _fallBackToCs;
47 d->csToFallBackCache = 0;
48 d->fallBackToCsCache = 0;
49 d->colorTransformation = _transfo;
50 d->buff = 0;
51 d->buffSize = 0;
52}
53
55{
56 if (d->csToFallBackCache) {
57 delete d->csToFallBackCache;
58 } else {
59 delete d->csToFallBack;
60 }
61 if (d->csToFallBackCache) {
62 delete d->fallBackToCsCache;
63 } else {
64 delete d->fallBackToCs;
65 }
66 delete d->colorTransformation;
67 delete[] d->buff;
68 delete d;
69}
70
71void KoFallBackColorTransformation::transform(const quint8 *src, quint8 *dst, qint32 nPixels) const
72{
73 if (d->buffSize < nPixels) { // Expand the buffer if needed
74 d->buffSize = nPixels;
75 delete[] d->buff;
76 d->buff = new quint8[ d->buffSize * d->fallBackColorSpace->pixelSize()];
77 }
78 d->csToFallBack->transform(src, d->buff, nPixels);
79 d->colorTransformation->transform(d->buff, d->buff, nPixels);
80 d->fallBackToCs->transform(d->buff, dst, nPixels);
81}
82
84{
85 return d->colorTransformation->parameters();
86}
87
88int KoFallBackColorTransformation::parameterId(const QString& name) const
89{
90 return d->colorTransformation->parameterId(name);
91}
92
93void KoFallBackColorTransformation::setParameter(int id, const QVariant& parameter)
94{
95 d->colorTransformation->setParameter(id, parameter);
96}
static KoColorSpaceRegistry * instance()
const KoColorConversionTransformation * csToFallBack
KoFallBackColorTransformation(const KoColorSpace *_cs, const KoColorSpace *_fallBackCS, KoColorTransformation *_transfo)
void setParameter(int id, const QVariant &parameter) override
void transform(const quint8 *src, quint8 *dst, qint32 nPixels) const override
QList< QString > parameters() const override
const KoColorConversionTransformation * fallBackToCs
KoCachedColorConversionTransformation * csToFallBackCache
KoCachedColorConversionTransformation * fallBackToCsCache
int parameterId(const QString &name) const override