QColorSpace Class
The QColorSpace class provides a color space abstraction. More...
Header: | #include <QColorSpace> |
qmake: | QT += gui |
Since: | Qt 5.14 |
This class was introduced in Qt 5.14.
Public Types
enum | NamedColorSpace { SRgb, SRgbLinear, AdobeRgb, DisplayP3, ProPhotoRgb } |
enum class | Primaries { Custom, SRgb, AdobeRgb, DciP3D65, ProPhotoRgb } |
enum class | TransferFunction { Custom, Linear, Gamma, SRgb, ProPhotoRgb } |
Public Functions
QColorSpace(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint, TransferFunction transferFunction, float gamma = 0.0f) | |
QColorSpace(Primaries primaries, float gamma) | |
QColorSpace(Primaries primaries, TransferFunction transferFunction, float gamma = 0.0f) | |
QColorSpace(NamedColorSpace namedColorSpace) | |
QColorSpace() | |
float | gamma() const |
QByteArray | iccProfile() const |
bool | isValid() const |
Primaries | primaries() const |
void | setPrimaries(Primaries primariesId) |
void | setPrimaries(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint) |
void | setTransferFunction(TransferFunction transferFunction, float gamma = 0.0f) |
void | swap(QColorSpace &other) |
TransferFunction | transferFunction() const |
QColorTransform | transformationToColorSpace(const QColorSpace &colorspace) const |
QColorSpace | withTransferFunction(TransferFunction transferFunction, float gamma = 0.0f) const |
QVariant | operator QVariant() const |
Static Public Members
QColorSpace | fromIccProfile(const QByteArray &iccProfile) |
Related Non-Members
bool | operator!=(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2) |
QDataStream & | operator<<(QDataStream &stream, const QColorSpace &colorSpace) |
bool | operator==(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2) |
QDataStream & | operator>>(QDataStream &stream, QColorSpace &colorSpace) |
Detailed Description
Color values can be interpreted in different ways, and based on the interpretation can live in different spaces. We call this color spaces.
QColorSpace provides access to creating several predefined color spaces and can generate QColorTransforms for converting colors from one color space to another.
QColorSpace can also represent color spaces defined by ICC profiles or embedded in images, that do not otherwise fit the predefined color spaces.
A color space can generally speaking be conceived as a combination of set of primary colors and a transfer function. The primaries defines the axes of the color space, and the transfer function how values are mapped on the axes. The primaries are defined by three primary colors that represent exactly how red, green, and blue look in this particular color space, and a white color that represents where and how bright pure white is. The range of colors expressable by the primary colors is called the gamut, and a color space that can represent a wider range of colors is also known as a wide-gamut color space.
The transfer function or gamma curve determines how each component in the color space is encoded. These are used because human perception does not operate linearly, and the transfer functions try to ensure that colors will seem evenly spaced to human eyes.
Member Type Documentation
enum QColorSpace::NamedColorSpace
Predefined color spaces.
Constant | Value | Description |
---|---|---|
QColorSpace::SRgb | 1 | The sRGB color space, which Qt operates in by default. It is a close approximation of how most classic monitors operate, and a mode most software and hardware support. ICC registration of sRGB. |
QColorSpace::SRgbLinear | 2 | The sRGB color space with linear gamma. Useful for gamma-corrected blending. |
QColorSpace::AdobeRgb | 3 | The Adobe RGB color space is a classic wide-gamut color space, using a gamma of 2.2. ICC registration of Adobe RGB (1998) |
QColorSpace::DisplayP3 | 4 | A color-space using the primaries of DCI-P3, but with the whitepoint and transfer function of sRGB. Common in modern wide-gamut screens. ICC registration of DCI-P3 |
QColorSpace::ProPhotoRgb | 5 | The Pro Photo RGB color space, also known as ROMM RGB is a very wide gamut color space. ICC registration of ROMM RGB |
enum class QColorSpace::Primaries
Predefined sets of primary colors.
Constant | Value | Description |
---|---|---|
QColorSpace::Primaries::Custom | 0 | The primaries are undefined or does not match any predefined sets. |
QColorSpace::Primaries::SRgb | 1 | The sRGB primaries |
QColorSpace::Primaries::AdobeRgb | 2 | The Adobe RGB primaries |
QColorSpace::Primaries::DciP3D65 | 3 | The DCI-P3 primaries with the D65 whitepoint |
QColorSpace::Primaries::ProPhotoRgb | 4 | The ProPhoto RGB primaries with the D50 whitepoint |
enum class QColorSpace::TransferFunction
Predefined transfer functions or gamma curves.
Constant | Value | Description |
---|---|---|
QColorSpace::TransferFunction::Custom | 0 | The custom or null transfer function |
QColorSpace::TransferFunction::Linear | 1 | The linear transfer functions |
QColorSpace::TransferFunction::Gamma | 2 | A transfer function that is a real gamma curve based on the value of gamma() |
QColorSpace::TransferFunction::SRgb | 3 | The sRGB transfer function, composed of linear and gamma parts |
QColorSpace::TransferFunction::ProPhotoRgb | 4 | The ProPhoto RGB transfer function, composed of linear and gamma parts |
Member Function Documentation
QColorSpace::QColorSpace(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint, TransferFunction transferFunction, float gamma = 0.0f)
Creates a custom colorspace with a primaries based on the chromaticities of the primary colors whitePoint, redPoint, greenPoint and bluePoint, and using the transfer function transferFunction and optionally gamma.
QColorSpace::QColorSpace(Primaries primaries, float gamma)
Creates a custom color space with the primaries primaries, using a gamma transfer function of gamma.
QColorSpace::QColorSpace(Primaries primaries, TransferFunction transferFunction, float gamma = 0.0f)
Creates a custom color space with the primaries primaries, using the transfer function transferFunction and optionally gamma.
QColorSpace::QColorSpace(NamedColorSpace namedColorSpace)
Creates a new colorspace object that represents a namedColorSpace.
QColorSpace::QColorSpace()
Creates a new colorspace object that represents an undefined and invalid colorspace.
[static]
QColorSpace QColorSpace::fromIccProfile(const QByteArray &iccProfile)
Creates a QColorSpace from ICC profile iccProfile.
Note: Not all ICC profiles are supported. QColorSpace only supports RGB-XYZ ICC profiles that are three-component matrix-based.
If the ICC profile is not supported an invalid QColorSpace is returned where you can still read the original ICC profile using iccProfile().
See also iccProfile().
float QColorSpace::gamma() const
Returns the gamma value of color spaces with TransferFunction::Gamma
, an approximate gamma value for other predefined color spaces, or 0.0 if no approximate gamma is known.
See also transferFunction().
QByteArray QColorSpace::iccProfile() const
Returns an ICC profile representing the color space.
If the color space was generated from an ICC profile, that profile is returned, otherwise one is generated.
Note: Even invalid color spaces may return the ICC profile if they were generated from one, to allow applications to implement wider support themselves.
See also fromIccProfile().
bool QColorSpace::isValid() const
Returns true
if the color space is valid.
Primaries QColorSpace::primaries() const
Returns the predefined primaries of the color space or primaries::Custom
if it doesn't match any of them.
See also setPrimaries().
void QColorSpace::setPrimaries(Primaries primariesId)
Sets the primaries to those of the primariesId set.
See also primaries().
void QColorSpace::setPrimaries(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint)
Set primaries to the chromaticities of whitePoint, redPoint, greenPoint and bluePoint.
See also primaries().
void QColorSpace::setTransferFunction(TransferFunction transferFunction, float gamma = 0.0f)
Sets the transfer function to transferFunction and gamma.
See also transferFunction(), gamma(), and withTransferFunction().
void QColorSpace::swap(QColorSpace &other)
Swaps color space other with this color space. This operation is very fast and never fails.
TransferFunction QColorSpace::transferFunction() const
Returns the predefined transfer function of the color space or TransferFunction::Custom
if it doesn't match any of them.
See also gamma(), setTransferFunction(), and withTransferFunction().
QColorTransform QColorSpace::transformationToColorSpace(const QColorSpace &colorspace) const
Generates and returns a color space transformation from this color space to colorspace.
QColorSpace QColorSpace::withTransferFunction(TransferFunction transferFunction, float gamma = 0.0f) const
Returns a copy of this color space, except using the transfer function transferFunction and gamma.
See also transferFunction(), gamma(), and setTransferFunction().
QVariant QColorSpace::operator QVariant() const
Returns the color space as a QVariant.
This function was introduced in Qt 5.15.
Related Non-Members
bool operator!=(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2)
Returns true
if colorspace colorSpace1 is not equal to colorspace colorSpace2; otherwise returns false
QDataStream &operator<<(QDataStream &stream, const QColorSpace &colorSpace)
Writes the given colorSpace to the given stream as an ICC profile.
See also QColorSpace::iccProfile() and Serializing Qt Data Types.
bool operator==(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2)
Returns true
if colorspace colorSpace1 is equal to colorspace colorSpace2; otherwise returns false
QDataStream &operator>>(QDataStream &stream, QColorSpace &colorSpace)
Reads a color space from the given stream and stores it in the given colorSpace.
See also QColorSpace::fromIccProfile() and Serializing Qt Data Types.