Krita Source Code Documentation
Loading...
Searching...
No Matches
XyzF16ColorSpace.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_F16_COLORSPACE_H_
8#define KIS_XYZ_F16_COLORSPACE_H_
9
10#include <LcmsColorSpace.h>
11
12#define TYPE_XYZA_HALF_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(2))
13
15
16struct KoXyzF16Traits;
17
18class XyzF16ColorSpace : public LcmsColorSpace<KoXyzF16Traits>
19{
20public:
21
22 XyzF16ColorSpace(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("XYZAF16");
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(Float16BitsColorDepthID.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 16;
94 }
95
97 {
98 return new XyzF16ColorSpace(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 XYZAColorModelID("XYZA", ki18n("XYZ/Alpha"))
const KoID Float16BitsColorDepthID("F16", ki18n("16-bit float/channel"))
ColorSpaceIndependence
#define TYPE_XYZA_HALF_FLT
Definition KoID.h:30
QString name() const
Definition KoID.cpp:68
KoID colorDepthId() const override
bool userVisible() const override
bool isHdr() const override
int referenceDepth() const override
QString name() const override
KoColorSpace * createColorSpace(const KoColorProfile *p) const override
QString defaultProfile() const override
KoID colorModelId() const override
QString id() const override
XyzF16ColorSpace(const QString &name, KoColorProfile *p)
QVector< double > fromHSY(qreal *hue, qreal *sat, qreal *luma) const override
KoID colorDepthId() const override
KoID colorModelId() const override
bool willDegrade(ColorSpaceIndependence independence) const override
bool hasHighDynamicRange() const override
void toYUV(const QVector< double > &channelValues, qreal *y, qreal *u, qreal *v) const override
QVector< double > fromYUV(qreal *y, qreal *u, qreal *v) const override
void colorToXML(const quint8 *pixel, QDomDocument &doc, QDomElement &colorElt) const override
static QString colorSpaceId()
virtual KoColorSpace * clone() const
void toHSY(const QVector< double > &channelValues, qreal *hue, qreal *sat, qreal *luma) const override
void colorFromXML(quint8 *pixel, const QDomElement &elt) const override