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