Krita Source Code Documentation
Loading...
Searching...
No Matches
LabColorSpace.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2006 Cyrille Berger <cberger@cberger.net>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-or-later
5*/
6
7#ifndef LabU16ColorSpace_H_
8#define LabU16ColorSpace_H_
9
10#include "LcmsColorSpace.h"
12
13#define TYPE_LABA_16 (COLORSPACE_SH(PT_Lab) | CHANNELS_SH(3) | BYTES_SH(2) | EXTRA_SH(1))
14
15struct KoLabF32Traits;
16
17class LabU16ColorSpace : public LcmsColorSpace<KoLabU16Traits>
18{
19public:
20
21 LabU16ColorSpace(const QString &name, KoColorProfile *p);
22
23 bool willDegrade(ColorSpaceIndependence independence) const override;
24
25 static QString colorSpaceId()
26 {
27 return QStringLiteral("LABA");
28 }
29
30 KoID colorModelId() const override
31 {
32 return LABAColorModelID;
33 }
34
35 KoID colorDepthId() const override
36 {
38 }
39
40 virtual KoColorSpace *clone() const;
41
42 void colorToXML(const quint8 *pixel, QDomDocument &doc, QDomElement &colorElt) const override;
43
44 void colorFromXML(quint8* pixel, const QDomElement& elt) const override;
45 void toHSY(const QVector<double> &channelValues, qreal *hue, qreal *sat, qreal *luma) const override;
46 QVector <double> fromHSY(qreal *hue, qreal *sat, qreal *luma) const override;
47 void toYUV(const QVector<double> &channelValues, qreal *y, qreal *u, qreal *v) const override;
48 QVector <double> fromYUV(qreal *y, qreal *u, qreal *v) const override;
49 quint8 scaleToU8(const quint8 * srcPixel, qint32 channelIndex) const override;
50 void convertChannelToVisualRepresentation(const quint8 *src, quint8 *dst, quint32 nPixels, const qint32 selectedChannelIndex) const override;
51 void convertChannelToVisualRepresentation(const quint8 *src, quint8 *dst, quint32 nPixels, const QBitArray selectedChannels) const override;
52};
53
55{
56public:
61
62 bool userVisible() const override
63 {
64 return true;
65 }
66
67 QString id() const override
68 {
70 }
71
72 QString name() const override
73 {
74 return QString("%1 (%2)").arg(LABAColorModelID.name()).arg(Integer16BitsColorDepthID.name());
75 }
76
77 KoID colorModelId() const override
78 {
79 return LABAColorModelID;
80 }
81
82 KoID colorDepthId() const override
83 {
85 }
86
87 int referenceDepth() const override
88 {
89 return 16;
90 }
91
93 {
94 return new LabU16ColorSpace(name(), p->clone());
95 }
96
97 QString defaultProfile() const override
98 {
99 return "Lab identity built-in";
100 }
101};
102
103#endif
const Params2D p
qreal v
qreal u
const KoID Integer16BitsColorDepthID("U16", ki18n("16-bit integer/channel"))
const KoID LABAColorModelID("LABA", ki18n("L*a*b*/Alpha"))
ColorSpaceIndependence
#define TYPE_LABA_16
Definition KoID.h:30
QString name() const
Definition KoID.cpp:68
KoColorSpace * createColorSpace(const KoColorProfile *p) const override
QString id() const override
QString defaultProfile() const override
bool userVisible() const override
QString name() const override
int referenceDepth() const override
KoID colorDepthId() const override
KoID colorModelId() const override
void colorFromXML(quint8 *pixel, const QDomElement &elt) const override
quint8 scaleToU8(const quint8 *srcPixel, qint32 channelIndex) const override
bool willDegrade(ColorSpaceIndependence independence) const override
static QString colorSpaceId()
void convertChannelToVisualRepresentation(const quint8 *src, quint8 *dst, quint32 nPixels, const qint32 selectedChannelIndex) const override
KoID colorModelId() const override
KoID colorDepthId() const override
virtual KoColorSpace * clone() const
void colorToXML(const quint8 *pixel, QDomDocument &doc, QDomElement &colorElt) const override
QVector< double > fromYUV(qreal *y, qreal *u, qreal *v) const override
void toHSY(const QVector< double > &channelValues, qreal *hue, qreal *sat, qreal *luma) const override
void toYUV(const QVector< double > &channelValues, qreal *y, qreal *u, qreal *v) const override
QVector< double > fromHSY(qreal *hue, qreal *sat, qreal *luma) const override
LabU16ColorSpace(const QString &name, KoColorProfile *p)