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