diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-04-28 12:40:11 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-05-21 15:37:32 +0200 |
commit | f1983dcdf6c596f901694ad16dcd3c74c77f4c13 (patch) | |
tree | c7c3acb282fe974f3ae1ab1e422cbb7ac36518c9 /src/gui/painting/qcolortransform_p.h | |
parent | b254855aa6771c48a6015271880c690f8faeb235 (diff) |
Correct RGB to Grayscale conversion
The existing conversions weren't handling gamma correctly and used
an ad-hoc definition of gray instead of based on true luminance.
[ChangeLog][QtGui] RGB conversions to grayscale formats are now
gamma-corrected and produce color-space luminance values
Change-Id: I88ab870c8f5e502ddb053e6a14a75102239a26f2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/gui/painting/qcolortransform_p.h')
-rw-r--r-- | src/gui/painting/qcolortransform_p.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/gui/painting/qcolortransform_p.h b/src/gui/painting/qcolortransform_p.h index 5d7116248d..b9099fa399 100644 --- a/src/gui/painting/qcolortransform_p.h +++ b/src/gui/painting/qcolortransform_p.h @@ -65,6 +65,9 @@ public: QExplicitlySharedDataPointer<const QColorSpacePrivate> colorSpaceIn; QExplicitlySharedDataPointer<const QColorSpacePrivate> colorSpaceOut; + static QColorTransformPrivate *get(const QColorTransform &q) + { return q.d.data(); } + void updateLutsIn() const; void updateLutsOut() const; bool simpleGammaCorrection() const; @@ -81,9 +84,15 @@ public: void apply(QRgb *dst, const QRgb *src, qsizetype count, TransformFlags flags = Unpremultiplied) const; void apply(QRgba64 *dst, const QRgba64 *src, qsizetype count, TransformFlags flags = Unpremultiplied) const; + void apply(quint8 *dst, const QRgb *src, qsizetype count, TransformFlags flags = Unpremultiplied) const; + void apply(quint16 *dst, const QRgba64 *src, qsizetype count, TransformFlags flags = Unpremultiplied) const; template<typename T> void apply(T *dst, const T *src, qsizetype count, TransformFlags flags) const; + + template<typename D, typename S> + void applyReturnGray(D *dst, const S *src, qsizetype count, TransformFlags flags) const; + }; QT_END_NAMESPACE |