summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qcolortransform.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-04-22 16:22:10 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-05-31 22:23:40 +0200
commit567ffafe7fed4536359e8a6b925aaf4379d67b67 (patch)
treee3a4eafd243bd6ea909d9e83a27dffa3e5d2bbaa /src/gui/painting/qcolortransform.cpp
parent5ea6da55e0d29a0dc526d4fa78a0590e0e4df8f6 (diff)
Add new map methods for QColorTransform
Change-Id: I520fc4f4bd958472c6d6359bf671835796c677fe Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'src/gui/painting/qcolortransform.cpp')
-rw-r--r--src/gui/painting/qcolortransform.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/gui/painting/qcolortransform.cpp b/src/gui/painting/qcolortransform.cpp
index 958d2fd2db..698696877b 100644
--- a/src/gui/painting/qcolortransform.cpp
+++ b/src/gui/painting/qcolortransform.cpp
@@ -223,6 +223,48 @@ QRgba64 QColorTransform::map(QRgba64 rgba64) const
}
/*!
+ Applies the color transformation on the QRgbaFloat16 value \a rgbafp16.
+
+ The input should be opaque or unpremultiplied.
+ \since 6.4
+*/
+QRgbaFloat16 QColorTransform::map(QRgbaFloat16 rgbafp16) const
+{
+ if (!d)
+ return rgbafp16;
+ QColorVector c;
+ c.x = d->colorSpaceIn->trc[0].applyExtended(rgbafp16.r);
+ c.y = d->colorSpaceIn->trc[1].applyExtended(rgbafp16.g);
+ c.z = d->colorSpaceIn->trc[2].applyExtended(rgbafp16.b);
+ c = d->colorMatrix.map(c);
+ rgbafp16.r = d->colorSpaceOut->trc[0].applyInverseExtended(c.x);
+ rgbafp16.g = d->colorSpaceOut->trc[1].applyInverseExtended(c.y);
+ rgbafp16.b = d->colorSpaceOut->trc[2].applyInverseExtended(c.z);
+ return rgbafp16;
+}
+
+/*!
+ Applies the color transformation on the QRgbaFloat32 value \a rgbafp32.
+
+ The input should be opaque or unpremultiplied.
+ \since 6.4
+*/
+QRgbaFloat32 QColorTransform::map(QRgbaFloat32 rgbafp32) const
+{
+ if (!d)
+ return rgbafp32;
+ QColorVector c;
+ c.x = d->colorSpaceIn->trc[0].applyExtended(rgbafp32.r);
+ c.y = d->colorSpaceIn->trc[1].applyExtended(rgbafp32.g);
+ c.z = d->colorSpaceIn->trc[2].applyExtended(rgbafp32.b);
+ c = d->colorMatrix.map(c);
+ rgbafp32.r = d->colorSpaceOut->trc[0].applyInverseExtended(c.x);
+ rgbafp32.g = d->colorSpaceOut->trc[1].applyInverseExtended(c.y);
+ rgbafp32.b = d->colorSpaceOut->trc[2].applyInverseExtended(c.z);
+ return rgbafp32;
+}
+
+/*!
Applies the color transformation on the QColor value \a color.
*/