added a function to set the text outline colour and increased readability of nameplates on bright backgrounds. Closes #205

This commit is contained in:
oy 2011-03-13 12:55:00 +01:00
parent 01ea32f816
commit 09dc08859d
3 changed files with 25 additions and 5 deletions

View file

@ -101,6 +101,11 @@ class CTextRender : public IEngineTextRender
float m_TextG;
float m_TextB;
float m_TextA;
float m_TextOutlineR;
float m_TextOutlineG;
float m_TextOutlineB;
float m_TextOutlineA;
int m_FontTextureFormat;
@ -438,10 +443,14 @@ public:
{
m_pGraphics = 0;
m_TextR = 1;
m_TextG = 1;
m_TextB = 1;
m_TextA = 1;
m_TextR = 1.0f;
m_TextG = 1.0f;
m_TextB = 1.0f;
m_TextA = 1.0f;
m_TextOutlineR = 0.0f;
m_TextOutlineG = 0.0f;
m_TextOutlineB = 0.0f;
m_TextOutlineA = 0.3f;
m_pDefaultFont = 0;
@ -535,6 +544,14 @@ public:
m_TextB = b;
m_TextA = a;
}
virtual void TextOutlineColor(float r, float g, float b, float a)
{
m_TextOutlineR = r;
m_TextOutlineG = g;
m_TextOutlineB = b;
m_TextOutlineA = a;
}
virtual void TextEx(CTextCursor *pCursor, const char *pText, int Length)
{
@ -614,7 +631,7 @@ public:
Graphics()->QuadsBegin();
if (i == 0)
Graphics()->SetColor(0.0f, 0.0f, 0.0f, 0.3f*m_TextA);
Graphics()->SetColor(m_TextOutlineR, m_TextOutlineG, m_TextOutlineB, m_TextOutlineA*m_TextA);
else
Graphics()->SetColor(m_TextR, m_TextG, m_TextB, m_TextA);
}

View file

@ -46,6 +46,7 @@ public:
// old foolish interface
virtual void TextColor(float r, float g, float b, float a) = 0;
virtual void TextOutlineColor(float r, float g, float b, float a) = 0;
virtual void Text(void *pFontSetV, float x, float y, float Size, const char *pText, int MaxWidth) = 0;
virtual float TextWidth(void *pFontSetV, float Size, const char *pText, int Length) = 0;
virtual int TextLineCount(void *pFontSetV, float Size, const char *pText, float LineWidth) = 0;

View file

@ -32,6 +32,7 @@ void CNamePlates::RenderNameplate(
const char *pName = m_pClient->m_aClients[pPlayerInfo->m_ClientID].m_aName;
float tw = TextRender()->TextWidth(0, FontSize, pName, -1);
TextRender()->TextOutlineColor(0.0f, 0.0f, 0.0f, 0.5f*a);
TextRender()->TextColor(1.0f, 1.0f, 1.0f, a);
if(m_pClient->m_Snap.m_pGameInfoObj && m_pClient->m_Snap.m_pGameInfoObj->m_GameFlags&GAMEFLAG_TEAMS)
{
@ -51,6 +52,7 @@ void CNamePlates::RenderNameplate(
}
TextRender()->TextColor(1,1,1,1);
TextRender()->TextOutlineColor(0.0f, 0.0f, 0.0f, 0.3f);
}
}