Krita Source Code Documentation
Loading...
Searching...
No Matches
KoColorConversionTransformation.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
9#include "KoColorSpace.h"
10
12
14 qRegisterMetaType<KoColorConversionTransformation::Intent>();
15}
16
23
25 const KoColorSpace* dstCs,
26 Intent renderingIntent,
27 ConversionFlags conversionFlags)
28 : d(new Private)
29{
30 Q_ASSERT(srcCs);
31 Q_ASSERT(dstCs);
32
33 d->srcColorSpace = srcCs;
34 d->dstColorSpace = dstCs;
35 d->renderingIntent = renderingIntent;
36 d->conversionFlags = conversionFlags;
37}
38
43
45{
46 return d->srcColorSpace;
47}
48
50{
51 return d->dstColorSpace;
52}
53
55{
56 return d->renderingIntent;
57}
58
59KoColorConversionTransformation::ConversionFlags KoColorConversionTransformation::conversionFlags() const
60{
61 return d->conversionFlags;
62}
63
64void KoColorConversionTransformation::transformInPlace(const quint8 *src, quint8 *dst, qint32 nPixels) const
65{
66 if (src != dst) {
67 transform(src, dst, nPixels);
68 } else {
69 QByteArray buffer(srcColorSpace()->pixelSize() * nPixels, 0);
70 transform(src, reinterpret_cast<quint8*>(buffer.data()), nPixels);
71 memcpy(dst, buffer.data(), buffer.size());
72 }
73}
74
76{
77 Q_ASSERT(*d->srcColorSpace == *cs);
78 d->srcColorSpace = cs;
79}
80
82{
83 Q_ASSERT(*d->dstColorSpace == *cs);
84 d->dstColorSpace = cs;
85}
void transform(const quint8 *src, quint8 *dst, qint32 nPixels) const override=0
void transformInPlace(const quint8 *src, quint8 *dst, qint32 nPixels) const
KoColorConversionTransformation(const KoColorSpace *srcCs, const KoColorSpace *dstCs, Intent renderingIntent, ConversionFlags conversionFlags)
void setDstColorSpace(const KoColorSpace *) const
void setSrcColorSpace(const KoColorSpace *) const