summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qrgb.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/painting/qrgb.h')
-rw-r--r--src/gui/painting/qrgb.h21
1 files changed, 2 insertions, 19 deletions
diff --git a/src/gui/painting/qrgb.h b/src/gui/painting/qrgb.h
index e6bda490ff..7186081cda 100644
--- a/src/gui/painting/qrgb.h
+++ b/src/gui/painting/qrgb.h
@@ -72,21 +72,7 @@ inline Q_DECL_CONSTEXPR int qGray(QRgb rgb) // convert RGB to gra
inline Q_DECL_CONSTEXPR bool qIsGray(QRgb rgb)
{ return qRed(rgb) == qGreen(rgb) && qRed(rgb) == qBlue(rgb); }
-template <int ProcessorWordSize>
-inline QRgb qPremultiply_impl(QRgb x);
-
-template <> // 64-bit version
-inline QRgb qPremultiply_impl<8>(QRgb x)
-{
- const uint a = qAlpha(x);
- quint64 t = (((quint64(x)) | ((quint64(x)) << 24)) & 0x00ff00ff00ff00ff) * a;
- t = (t + ((t >> 8) & 0xff00ff00ff00ff) + 0x80008000800080) >> 8;
- t &= 0x000000ff00ff00ff;
- return (uint(t)) | (uint(t >> 24)) | (a << 24);
-}
-
-template <> // 32-bit version
-inline QRgb qPremultiply_impl<4>(QRgb x)
+inline Q_DECL_RELAXED_CONSTEXPR QRgb qPremultiply(QRgb x)
{
const uint a = qAlpha(x);
uint t = (x & 0xff00ff) * a;
@@ -96,12 +82,9 @@ inline QRgb qPremultiply_impl<4>(QRgb x)
x = ((x >> 8) & 0xff) * a;
x = (x + ((x >> 8) & 0xff) + 0x80);
x &= 0xff00;
- x |= t | (a << 24);
- return x;
+ return x | t | (a << 24);
}
-inline QRgb qPremultiply(QRgb x) { return qPremultiply_impl<Q_PROCESSOR_WORDSIZE>(x); }
-
Q_GUI_EXPORT extern const uint qt_inv_premul_factor[];
inline QRgb qUnpremultiply(QRgb p)