QColorSpace class
QColorSpace类提供颜色空间的抽象。
Header | #include < QColorSpace > |
---|---|
qmake | QT += gui |
Inherits | |
Inherited By | |
Since | Qt 5.14 |
详细说明
可以用不同的方式来解释颜色值,并且基于该解释可以存在于不同的空间中。我们称之为色彩空间。
QColorSpace提供了创建多个预定义颜色空间的权限,并且可以生成QColorTransforms来将颜色从一种颜色空间转换为另一种颜色空间。
QColorSpace还可以表示由ICC配置文件定义或嵌入在图像中的颜色空间,否则这些颜色空间将不适合预定义的颜色空间。
一般来说,颜色空间可以被认为是原色集和传递函数的组合。原色定义颜色空间的轴,以及传递函数如何将值映射到轴上。这些原色由三种原色定义,分别代表该特定颜色空间中红色,绿色和蓝色的外观,以及一种白色,分别代表纯白色在何处和如何明亮。可以由原色表示的颜色范围称为色域,并且可以表示较宽范围颜色的色域也称为宽色域色域。
传递函数或伽玛曲线确定颜色空间中每个分量的编码方式。之所以使用它们,是因为人的感知不是线性地进行操作的,并且传递函数试图确保颜色在人眼中看起来均匀分布。
公共类型
enum NamedColorSpace
预定义的色彩空间。
Constant | Value | Description |
---|---|---|
QColorSpace::SRgb | 1 | sRGB颜色空间,Qt默认在其中操作。它接近于大多数经典显示器的操作方式,也是大多数软件和硬件支持的模式。sRGB的ICC注册。 |
QColorSpace::SRgbLinear | 2 | sRGB色彩空间与线性伽玛。有用的gamma校正混合。 |
QColorSpace::AdobeRgb | 3 | Adobe RGB颜色空间是一个经典的宽色域颜色空间,使用了2.2的伽玛。Adobe RGB的ICC注册(1998) |
QColorSpace::DisplayP3 | 4 | 彩色空间采用DCI-P3的基色,但采用sRGB的白点和传递函数。在现代的宽频屏幕中很常见。ICC注册DCI-P3 |
QColorSpace::ProPhotoRgb | 5 | Pro照片RGB色彩空间,又称ROMM RGB,是一个非常宽色域的色彩空间。ROMM RGB的ICC注册 |
enum class Primaries
预定义的原色集。
Constant | Value | Description |
---|---|---|
QColorSpace::Primaries::Custom | 0 | 基元未定义或与任何预定义集都不匹配。 |
QColorSpace::Primaries::SRgb | 1 | sRGB原色 |
QColorSpace::Primaries::AdobeRgb | 2 | Adobe RGB原色 |
QColorSpace::Primaries::DciP3D65 | 3 | 带有D65白点的DCI-P3原色 |
QColorSpace::Primaries::ProPhotoRgb | 4 | 具有D50白点的ProPhoto RGB原色 |
enum class TransferFunction
预定义的传递函数或伽玛曲线。
Constant | Value | Description |
---|---|---|
QColorSpace::TransferFunction::Custom | 0 | 自定义或空传递函数 |
QColorSpace::TransferFunction::Linear | 1 | 线性传递函数 |
QColorSpace::TransferFunction::Gamma | 2 | 传递函数是基于gamma()的值的真实伽玛曲线 |
QColorSpace::TransferFunction::SRgb | 3 | sRGB传递函数,由线性和伽玛部分组成 |
QColorSpace::TransferFunction::ProPhotoRgb | 4 | ProPhoto RGB传递函数,由线性和伽玛部分组成 |
公共函数
构造函数
- QColorSpace(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint, QColorSpace::TransferFunction fun, float gamma = 0.0f)
- QColorSpace(QColorSpace::Primaries primaries, float gamma)
- QColorSpace(QColorSpace::Primaries primaries, QColorSpace::TransferFunction fun, float gamma = 0.0f)
- QColorSpace(QColorSpace::NamedColorSpace namedColorSpace)
- QColorSpace()
传递函数或伽玛曲线
-
float gamma() const 使用TransferFunction::Gamma返回颜色空间的gamma值
其他预定义颜色空间的近似gamma值,如果未知的近似gamma则返回0.0。
-
QColorSpace::TransferFunction transferFunction() const
-
void setTransferFunction(QColorSpace::TransferFunction transferFunction, float gamma = 0.0f)
-
QColorSpace withTransferFunction(QColorSpace::TransferFunction transferFunction, float gamma = 0.0f) const
-
QByteArray iccProfile() const 返回代表色彩空间的ICC配置文件
如果色彩空间是从ICC配置文件生成的,则返回该配置文件,否则生成一个。
注意:如果无效的色彩空间是从其中生成的,即使无效的色彩空间也可能返回ICC配置文件,以允许应用程序自己实现更广泛的支持。 -
bool isValid() const 如果颜色空间有效,则返回true
-
QColorSpace::Primaries primaries() const 返回预定义颜色空间或primaries::Custom
void setPrimaries(QColorSpace::Primaries primariesId)
void setPrimaries(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint) 将原色设置为whitePoint,redPoint,greenPoint和bluePoint的色度 -
void swap(QColorSpace &other) 使用此颜色空间交换其他颜色空间
-
QColorTransform transformationToColorSpace(const QColorSpace &colorspace) const
生成并返回从该颜色空间到colorspace的转换 -
QVariant operator QVariant() const 以QVariant的形式返回色彩空间
静态公共函数
-
QColorSpace fromIccProfile(const QByteArray &iccProfile) 从ICC配置文件iccProfile创建QColorSpace
注意:并非所有ICC配置文件均受支持。 QColorSpace仅支持基于三成分矩阵的RGB-XYZ ICC配置文件。
如果不支持ICC配置文件,则返回无效的QColorSpace,您仍然可以使用iccProfile()读取原始ICC配置文件。
相关的函数
- bool operator!=(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2)
- bool operator==(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2)
- QDataStream & operator<<(QDataStream &stream, const QColorSpace &colorSpace)
QDataStream & operator>>(QDataStream &stream, QColorSpace &colorSpace)