Krita Source Code Documentation
Loading...
Searching...
No Matches
XyzF32ColorSpace.h
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
7#ifndef KIS_XYZ_F32_COLORSPACE_H_
8#define KIS_XYZ_F32_COLORSPACE_H_
9
10#include <LcmsColorSpace.h>
11
12#define TYPE_XYZA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4))
13
15
16struct KoXyzF32Traits;
17
18class XyzF32ColorSpace : public LcmsColorSpace<KoXyzF32Traits>
19{
20public:
21
22 XyzF32ColorSpace(const QString &name, KoColorProfile *p);
23
24 bool willDegrade(ColorSpaceIndependence independence) const override;
25
26 KoID colorModelId() const override
27 {
28 return XYZAColorModelID;
29 }
30
31 KoID colorDepthId() const override
32 {
34 }
35
36 virtual KoColorSpace *clone() const;
37
38 void colorToXML(const quint8 *pixel, QDomDocument &doc, QDomElement &colorElt) const override;
39
40 void colorFromXML(quint8* pixel, const QDomElement& elt) const override;
41 void toHSY(const QVector<double> &channelValues, qreal *hue, qreal *sat, qreal *luma) const override;
42 QVector <double> fromHSY(qreal *hue, qreal *sat, qreal *luma) const override;
43 void toYUV(const QVector<double> &channelValues, qreal *y, qreal *u, qreal *v) const override;
44 QVector <double> fromYUV(qreal *y, qreal *u, qreal *v) const override;
45
46 static QString colorSpaceId()
47 {
48 return QStringLiteral("XYZAF32");
49 }
50
51 bool hasHighDynamicRange() const override
52 {
53 return true;
54 }
55};
56
58{
59public:
60
65
66 QString id() const override
67 {
69 }
70
71 QString name() const override
72 {
73 return QString("%1 (%2)").arg(XYZAColorModelID.name()).arg(Float32BitsColorDepthID.name());
74 }
75
76 bool userVisible() const override
77 {
78 return true;
79 }
80
81 KoID colorModelId() const override
82 {
83 return XYZAColorModelID;
84 }
85
86 KoID colorDepthId() const override
87 {
89 }
90
91 int referenceDepth() const override
92 {
93 return 32;
94 }
95
97 {
98 return new XyzF32ColorSpace(name(), p->clone());
99 }
100
101 QString defaultProfile() const override
102 {
103 return "XYZ identity built-in";
104 }
105
106 bool isHdr() const override
107 {
108 return true;
109 }
110};
111
112#endif
const Params2D p
qreal v
qreal u
const KoID Float32BitsColorDepthID("F32", ki18n("32-bit float/channel"))
const KoID XYZAColorModelID("XYZA", ki18n("XYZ/Alpha"))
ColorSpaceIndependence
#define TYPE_XYZA_FLT
Definition KoID.h:30
QString name() const
Definition KoID.cpp:68
KoColorSpace * createColorSpace(const KoColorProfile *p) const override
KoID colorDepthId() const override
QString defaultProfile() const override
QString id() const override
int referenceDepth() const override
QString name() const override
KoID colorModelId() const override
bool isHdr() const override
bool userVisible() const override
void colorFromXML(quint8 *pixel, const QDomElement &elt) const override
KoID colorModelId() const override
static QString colorSpaceId()
void colorToXML(const quint8 *pixel, QDomDocument &doc, QDomElement &colorElt) const override
bool hasHighDynamicRange() const override
void toYUV(const QVector< double > &channelValues, qreal *y, qreal *u, qreal *v) const override
XyzF32ColorSpace(const QString &name, KoColorProfile *p)
KoID colorDepthId() const override
bool willDegrade(ColorSpaceIndependence independence) const override
void toHSY(const QVector< double > &channelValues, qreal *hue, qreal *sat, qreal *luma) const override
QVector< double > fromHSY(qreal *hue, qreal *sat, qreal *luma) const override
virtual KoColorSpace * clone() const
QVector< double > fromYUV(qreal *y, qreal *u, qreal *v) const override