Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qcolorspace.h
Go to the documentation of this file.
1// Copyright (C) 2018 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QCOLORSPACE_H
5#define QCOLORSPACE_H
6
7#include <QtGui/qtguiglobal.h>
8#include <QtGui/qcolortransform.h>
9#include <QtCore/qobjectdefs.h>
10#include <QtCore/qpoint.h>
11#include <QtCore/qshareddata.h>
12#include <QtCore/qvariant.h>
13
15
17
18QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QColorSpacePrivate, Q_GUI_EXPORT)
19
20class Q_GUI_EXPORT QColorSpace
21{
22 Q_GADGET
23public:
24 enum NamedColorSpace {
25 SRgb = 1,
26 SRgbLinear,
27 AdobeRgb,
28 DisplayP3,
29 ProPhotoRgb,
30 Bt2020,
31 Bt2100Pq,
32 Bt2100Hlg,
33 };
34 Q_ENUM(NamedColorSpace)
35 enum class Primaries {
36 Custom = 0,
37 SRgb,
38 AdobeRgb,
39 DciP3D65,
40 ProPhotoRgb,
41 Bt2020,
42 };
43 Q_ENUM(Primaries)
44 enum class TransferFunction {
45 Custom = 0,
46 Linear,
47 Gamma,
48 SRgb,
49 ProPhotoRgb,
50 Bt2020,
51 St2084,
52 Hlg,
53 };
54 Q_ENUM(TransferFunction)
55 enum class TransformModel : uint8_t {
56 ThreeComponentMatrix = 0,
57 ElementListProcessing,
58 };
59 Q_ENUM(TransformModel)
60 enum class ColorModel : uint8_t {
61 Undefined = 0,
62 Rgb = 1,
63 Gray = 2,
64 Cmyk = 3,
65 };
66 Q_ENUM(ColorModel)
67
68 struct PrimaryPoints
69 {
70 Q_GUI_EXPORT static PrimaryPoints fromPrimaries(Primaries primaries);
71 Q_GUI_EXPORT bool isValid() const noexcept;
72 QPointF whitePoint;
73 QPointF redPoint;
74 QPointF greenPoint;
75 QPointF bluePoint;
76 };
77
78 QColorSpace() noexcept = default;
79 QColorSpace(NamedColorSpace namedColorSpace);
80 explicit QColorSpace(QPointF whitePoint, TransferFunction transferFunction, float gamma = 0.0f);
81 explicit QColorSpace(QPointF whitePoint, const QList<uint16_t> &transferFunctionTable);
82 QColorSpace(Primaries primaries, TransferFunction transferFunction, float gamma = 0.0f);
83 QColorSpace(Primaries primaries, float gamma);
84 QColorSpace(Primaries primaries, const QList<uint16_t> &transferFunctionTable);
85 QColorSpace(const QPointF &whitePoint, const QPointF &redPoint,
86 const QPointF &greenPoint, const QPointF &bluePoint,
87 TransferFunction transferFunction, float gamma = 0.0f);
88 QColorSpace(const PrimaryPoints &primaryPoints,
89 TransferFunction transferFunction, float gamma = 0.0f);
90 QColorSpace(const QPointF &whitePoint, const QPointF &redPoint,
91 const QPointF &greenPoint, const QPointF &bluePoint,
92 const QList<uint16_t> &transferFunctionTable);
93 QColorSpace(const QPointF &whitePoint, const QPointF &redPoint,
94 const QPointF &greenPoint, const QPointF &bluePoint,
95 const QList<uint16_t> &redTransferFunctionTable,
96 const QList<uint16_t> &greenTransferFunctionTable,
97 const QList<uint16_t> &blueTransferFunctionTable);
98 ~QColorSpace();
99
100 QColorSpace(const QColorSpace &colorSpace) noexcept;
101 QColorSpace &operator=(const QColorSpace &colorSpace) noexcept
102 {
103 QColorSpace copy(colorSpace);
104 swap(copy);
105 return *this;
106 }
107
108 QColorSpace(QColorSpace &&colorSpace) noexcept = default;
109 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QColorSpace)
110
111 void swap(QColorSpace &colorSpace) noexcept
112 { d_ptr.swap(colorSpace.d_ptr); }
113
114 Primaries primaries() const noexcept;
115 TransferFunction transferFunction() const noexcept;
116 float gamma() const noexcept;
117
118 QString description() const noexcept;
119 void setDescription(const QString &description);
120
121 void setTransferFunction(TransferFunction transferFunction, float gamma = 0.0f);
122 void setTransferFunction(const QList<uint16_t> &transferFunctionTable);
123 void setTransferFunctions(const QList<uint16_t> &redTransferFunctionTable,
124 const QList<uint16_t> &greenTransferFunctionTable,
125 const QList<uint16_t> &blueTransferFunctionTable);
126 QColorSpace withTransferFunction(TransferFunction transferFunction, float gamma = 0.0f) const;
127 QColorSpace withTransferFunction(const QList<uint16_t> &transferFunctionTable) const;
128 QColorSpace withTransferFunctions(const QList<uint16_t> &redTransferFunctionTable,
129 const QList<uint16_t> &greenTransferFunctionTable,
130 const QList<uint16_t> &blueTransferFunctionTable) const;
131
132 void setPrimaries(Primaries primariesId);
133 void setPrimaries(const QPointF &whitePoint, const QPointF &redPoint,
134 const QPointF &greenPoint, const QPointF &bluePoint);
135 void setWhitePoint(QPointF whitePoint);
136 QPointF whitePoint() const;
137 void setPrimaryPoints(const PrimaryPoints &primaryPoints);
138 PrimaryPoints primaryPoints() const;
139
140 TransformModel transformModel() const noexcept;
141 ColorModel colorModel() const noexcept;
142 void detach();
143 bool isValid() const noexcept;
144 bool isValidTarget() const noexcept;
145
146 friend inline bool operator==(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2)
147 { return colorSpace1.equals(colorSpace2); }
148 friend inline bool operator!=(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2)
149 { return !(colorSpace1 == colorSpace2); }
150
151 static QColorSpace fromIccProfile(const QByteArray &iccProfile);
152 QByteArray iccProfile() const;
153
154 QColorTransform transformationToColorSpace(const QColorSpace &colorspace) const;
155
156 operator QVariant() const;
157
158private:
159 friend class QColorSpacePrivate;
160 bool equals(const QColorSpace &other) const;
161
162 QExplicitlySharedDataPointer<QColorSpacePrivate> d_ptr;
163
164#ifndef QT_NO_DEBUG_STREAM
165 friend Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QColorSpace &colorSpace);
166#endif
167};
168
170
171// QColorSpace stream functions
172#if !defined(QT_NO_DATASTREAM)
173Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QColorSpace &);
174Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QColorSpace &);
175#endif
176
177#ifndef QT_NO_DEBUG_STREAM
178Q_GUI_EXPORT QDebug operator<<(QDebug, const QColorSpace &);
179#endif
180
181QT_END_NAMESPACE
182
183#endif // QCOLORSPACE_P_H
The QColorSpace class provides a color space abstraction.
Definition qcolorspace.h:21
\inmodule QtCore\reentrant
Definition qdatastream.h:50
\inmodule QtGui
Definition qimage.h:37
void setLooping(int loops=0)
void setDisposalMethod(DisposalMethod)
QIODevice * device()
bool writeImage(const QImage &img)
void setGamma(float)
void setFrameDelay(int msecs)
QPNGImageWriter(QIODevice *)
bool writeImage(const QImage &img, int compression_in, const QString &description, int x, int y)
bool writeImage(const QImage &img, int compression, const QString &description)
bool writeImage(const QImage &img, int x, int y)
png_byte ** row_pointers
void readPngTexts(png_info *info)
QPngHandlerPrivate(QPngHandler *qq)
ColorSpaceState colorSpaceState
png_struct * png_ptr
QColorSpace colorSpace
QStringList readTexts
bool readPngImage(QImage *image)
\inmodule QtCore\reentrant
Definition qpoint.h:29
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2568
#define qCInfo(category,...)
#define qCWarning(category,...)
static void qpiw_write_fn(png_structp png_ptr, png_bytep data, png_size_t length)
static void set_text(const QImage &image, png_structp png_ptr, png_infop info_ptr, const QString &description)
static void qpiw_flush_fn(png_structp)
static void qt_png_warning(png_structp, png_const_charp message)
#define FAST_SCAN_LINE(data, bpl, y)
static bool setup_qt(QImage &image, png_structp png_ptr, png_infop info_ptr)
static bool write_png_image(const QImage &image, QIODevice *device, int compression, int quality, float gamma, const QString &description)
static void iod_read_fn(png_structp png_ptr, png_bytep data, png_size_t length)