diff options
Diffstat (limited to 'src/gui/painting/qrgb.h')
-rw-r--r-- | src/gui/painting/qrgb.h | 21 |
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) |