From 9c609b9fd818d4ff4c9ff56cf434151e2a8a9ec8 Mon Sep 17 00:00:00 2001 From: Christian Walther Date: Sat, 7 Jun 2014 18:22:41 +0200 Subject: [PATCH] Modulate text shadow opacity by the alpha of the text color to make the player lists fade properly. Also, the text of the faded-out player list is re-rendered with alpha == 0 every time the mouse enters its area, do a little less needless work in that case. --- .../Plasma20/Sources/Plasma/PubUtilLib/plGImage/plFont.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plFont.cpp b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plFont.cpp index c651409a..caeb9606 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plFont.cpp +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plGImage/plFont.cpp @@ -1119,6 +1119,8 @@ void plFont::IRenderChar8To32AlphaPremShadow( const plFont::plCharacter &c ) xstart = -2; srcA = (UInt8)(( fRenderInfo.fColor >> 24 ) & 0x000000ff); + if (srcA == 0) + return; srcR = (UInt8)(( fRenderInfo.fColor >> 16 ) & 0x000000ff); srcG = (UInt8)(( fRenderInfo.fColor >> 8 ) & 0x000000ff); srcB = (UInt8)(( fRenderInfo.fColor ) & 0x000000ff); @@ -1160,7 +1162,10 @@ void plFont::IRenderChar8To32AlphaPremShadow( const plFont::plCharacter &c ) sa = clamp; UInt32 a = IGetCharPixel(c, x, y); if (srcA != 0xff) + { a = (srcA * a + 127) / 255; + sa = (srcA * sa + 127) / 255; + } UInt32 ta = a + sa - ((a*sa + 127) / 255); if (ta > (destPtr[ x ] >> 24)) destPtr[ x ] = ( ta << 24 ) | (((srcR * a + 127) / 255) << 16) |