Skip to content

Commit daccaa0

Browse files
committed
Added black outline option for chat text in settings
1 parent e5d8db3 commit daccaa0

File tree

7 files changed

+81
-25
lines changed

7 files changed

+81
-25
lines changed

Client/core/CChat.cpp

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ void CChat::LoadCVars ( void )
119119
CVARS_GET ( "chat_text_color", m_TextColor );
120120
CVARS_GET ( "chat_scale", m_vecScale );
121121
CVARS_GET ( "chat_width", fWidth ); if( m_bCanChangeWidth ) m_fNativeWidth = fWidth * CHAT_WIDTH;
122+
CVARS_GET ( "chat_text_outline", m_bTextBlackOutline );
122123
CVARS_GET ( "chat_css_style_text", m_bCssStyleText );
123124
CVARS_GET ( "chat_css_style_background", m_bCssStyleBackground );
124125
CVARS_GET ( "chat_line_life", (unsigned int &)m_ulChatLineLife );
@@ -248,7 +249,7 @@ void CChat::DrawDrawList ( const SDrawList& drawList, const CVector2D& topLeftOf
248249
for ( uint i = 0 ; i < drawList.lineItemList.size () ; i++ )
249250
{
250251
const SDrawListLineItem& item = drawList.lineItemList[i];
251-
m_Lines [ item.uiLine ].Draw ( item.vecPosition - chatTopLeft + topLeftOffset, item.ucAlpha, drawList.bShadow, chatBounds );
252+
m_Lines [ item.uiLine ].Draw ( item.vecPosition - chatTopLeft + topLeftOffset, item.ucAlpha, drawList.bShadow, drawList.bOutline, chatBounds );
252253
}
253254

254255
CGraphics::GetSingleton ().EndDrawBatch ();
@@ -265,8 +266,8 @@ void CChat::GetDrawList ( SDrawList& outDrawList )
265266
CVector2D vecPosition ( m_vecBackgroundPosition.fX + ( 5.0f * m_vecScale.fX ), m_vecBackgroundPosition.fY + m_vecBackgroundSize.fY - ( fLineDifference * 1.25f ) );
266267
unsigned long ulTime = GetTickCount32 ();
267268
float fRcpChatLineFadeOut = 1.0f / m_ulChatLineFadeOut;
268-
bool bShadow = ( m_Color.A * m_fBackgroundAlpha == 0.f );
269-
bool bInputShadow = ( m_InputColor.A * m_fInputBackgroundAlpha == 0.f );
269+
bool bShadow = ( m_Color.A * m_fBackgroundAlpha == 0.f ) && !m_bTextBlackOutline;
270+
bool bInputShadow = ( m_InputColor.A * m_fInputBackgroundAlpha == 0.f ) && !m_bTextBlackOutline;
270271

271272
if ( m_Color.A * m_fBackgroundAlpha > 0.f )
272273
{
@@ -291,6 +292,7 @@ void CChat::GetDrawList ( SDrawList& outDrawList )
291292

292293
outDrawList.renderBounds = RenderBounds;
293294
outDrawList.bShadow = bShadow;
295+
outDrawList.bOutline = m_bTextBlackOutline;
294296

295297
// Smooth scroll
296298
int iLineScroll;
@@ -346,7 +348,7 @@ void CChat::GetDrawList ( SDrawList& outDrawList )
346348
if ( m_bInputVisible )
347349
{
348350
CVector2D vecPosition ( m_vecInputPosition.fX + ( 5.0f * m_vecScale.fX ), m_vecInputPosition.fY + ( fLineDifference * 0.125f ) );
349-
m_InputLine.Draw ( vecPosition, 255, bInputShadow );
351+
m_InputLine.Draw ( vecPosition, 255, bInputShadow, m_bTextBlackOutline );
350352
}
351353
}
352354

@@ -905,7 +907,7 @@ float CChat::GetTextExtent ( const char * szText, float fScale )
905907
}
906908

907909

908-
void CChat::DrawTextString ( const char * szText, CRect2D DrawArea, float fZ, CRect2D ClipRect, unsigned long ulFormat, unsigned long ulColor, float fScaleX, float fScaleY, const CRect2D& RenderBounds )
910+
void CChat::DrawTextString ( const char * szText, CRect2D DrawArea, float fZ, CRect2D ClipRect, unsigned long ulFormat, unsigned long ulColor, float fScaleX, float fScaleY, bool bOutline, const CRect2D& RenderBounds )
909911
{
910912
if ( !g_pChat )
911913
return;
@@ -924,19 +926,19 @@ void CChat::DrawTextString ( const char * szText, CRect2D DrawArea, float fZ, CR
924926
{
925927
// Clip text at the top
926928
if ( DrawArea.fY1 + fLineHeight - RenderBounds.fY1 > 1 )
927-
g_pCore->GetGraphics ()->DrawString ( ( int ) DrawArea.fX1, ( int ) RenderBounds.fY1, ( int ) DrawArea.fX2, ( int ) DrawArea.fY1 + fLineHeight, ulColor, szText, fScaleX, fScaleY, DT_LEFT | DT_BOTTOM | DT_SINGLELINE , g_pChat->m_pDXFont );
929+
g_pCore->GetGraphics ()->DrawString ( ( int ) DrawArea.fX1, ( int ) RenderBounds.fY1, ( int ) DrawArea.fX2, ( int ) DrawArea.fY1 + fLineHeight, ulColor, szText, fScaleX, fScaleY, DT_LEFT | DT_BOTTOM | DT_SINGLELINE , g_pChat->m_pDXFont, bOutline );
928930
}
929931
else
930932
if ( DrawArea.fY1 + fLineHeight > RenderBounds.fY2 )
931933
{
932934
// Clip text at the bottom
933935
if ( RenderBounds.fY2 - DrawArea.fY1 > 1 )
934-
g_pCore->GetGraphics ()->DrawString ( ( int ) DrawArea.fX1, ( int ) DrawArea.fY1, ( int ) DrawArea.fX2, ( int ) RenderBounds.fY2, ulColor, szText, fScaleX, fScaleY, DT_LEFT | DT_TOP | DT_SINGLELINE , g_pChat->m_pDXFont );
936+
g_pCore->GetGraphics ()->DrawString ( ( int ) DrawArea.fX1, ( int ) DrawArea.fY1, ( int ) DrawArea.fX2, ( int ) RenderBounds.fY2, ulColor, szText, fScaleX, fScaleY, DT_LEFT | DT_TOP | DT_SINGLELINE , g_pChat->m_pDXFont, bOutline );
935937
}
936938
else
937939
{
938940
// Text not clipped
939-
g_pCore->GetGraphics ()->DrawString ( ( int ) DrawArea.fX1, ( int ) DrawArea.fY1, ( int ) DrawArea.fX1, ( int ) DrawArea.fY1, ulColor, szText, fScaleX, fScaleY, DT_LEFT | DT_TOP | DT_NOCLIP, g_pChat->m_pDXFont );
941+
g_pCore->GetGraphics ()->DrawString ( ( int ) DrawArea.fX1, ( int ) DrawArea.fY1, ( int ) DrawArea.fX1, ( int ) DrawArea.fY1, ulColor, szText, fScaleX, fScaleY, DT_LEFT | DT_TOP | DT_NOCLIP, g_pChat->m_pDXFont, bOutline );
940942
}
941943
}
942944
}
@@ -1058,13 +1060,13 @@ const char* CChatLine::Format ( const char* szStringAnsi, float fWidth, CColor&
10581060
}
10591061

10601062

1061-
void CChatLine::Draw ( const CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, const CRect2D& RenderBounds )
1063+
void CChatLine::Draw ( const CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, bool bOutline, const CRect2D& RenderBounds )
10621064
{
10631065
float fCurrentX = vecPosition.fX;
10641066
std::vector < CChatLineSection >::iterator iter = m_Sections.begin ();
10651067
for ( ; iter != m_Sections.end () ; iter++ )
10661068
{
1067-
(*iter).Draw ( CVector2D ( fCurrentX, vecPosition.fY ), ucAlpha, bShadow, RenderBounds );
1069+
(*iter).Draw ( CVector2D ( fCurrentX, vecPosition.fY ), ucAlpha, bShadow, bOutline, RenderBounds );
10681070
fCurrentX += (*iter).GetWidth ();
10691071
}
10701072
}
@@ -1082,27 +1084,27 @@ float CChatLine::GetWidth ()
10821084
}
10831085

10841086

1085-
void CChatInputLine::Draw ( CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow )
1087+
void CChatInputLine::Draw ( CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, bool bOutline )
10861088
{
10871089
CRect2D RenderBounds ( 0, 0, 9999, 9999 );
10881090

10891091
CColor colPrefix;
10901092
m_Prefix.GetColor ( colPrefix );
10911093
if ( colPrefix.A > 0 )
1092-
m_Prefix.Draw ( vecPosition, colPrefix.A, bShadow, RenderBounds );
1094+
m_Prefix.Draw ( vecPosition, colPrefix.A, bShadow, bOutline, RenderBounds );
10931095

10941096
if ( g_pChat->m_InputTextColor.A > 0 && m_Sections.size () > 0 )
10951097
{
10961098
m_Sections [ 0 ].Draw ( CVector2D ( vecPosition.fX + m_Prefix.GetWidth (), vecPosition.fY ),
1097-
g_pChat->m_InputTextColor.A, bShadow, RenderBounds );
1099+
g_pChat->m_InputTextColor.A, bShadow, bOutline, RenderBounds );
10981100

10991101
float fLineDifference = CChat::GetFontHeight ( g_pChat->m_vecScale.fY );
11001102

11011103
vector < CChatLine >::iterator iter = m_ExtraLines.begin ();
11021104
for ( ; iter != m_ExtraLines.end () ; iter++ )
11031105
{
11041106
vecPosition.fY += fLineDifference;
1105-
(*iter).Draw ( vecPosition, g_pChat->m_InputTextColor.A, bShadow, RenderBounds );
1107+
(*iter).Draw ( vecPosition, g_pChat->m_InputTextColor.A, bShadow, bOutline, RenderBounds );
11061108
}
11071109
}
11081110
}
@@ -1134,17 +1136,17 @@ CChatLineSection& CChatLineSection::operator = ( const CChatLineSection& other )
11341136
return *this;
11351137
}
11361138

1137-
void CChatLineSection::Draw ( const CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, const CRect2D& RenderBounds )
1139+
void CChatLineSection::Draw ( const CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, bool bOutline, const CRect2D& RenderBounds )
11381140
{
11391141
if ( !m_strText.empty () && ucAlpha > 0 )
11401142
{
11411143
if ( bShadow )
11421144
{
11431145
CRect2D drawShadowAt ( vecPosition.fX + 1.0f, vecPosition.fY + 1.0f, vecPosition.fX + 1000.0f, vecPosition.fY + 1000.0f );
1144-
CChat::DrawTextString ( m_strText.c_str (), drawShadowAt, 0.0f, drawShadowAt, 0, COLOR_ARGB ( ucAlpha, 0, 0, 0 ), g_pChat->m_vecScale.fX, g_pChat->m_vecScale.fY, RenderBounds );
1146+
CChat::DrawTextString ( m_strText.c_str (), drawShadowAt, 0.0f, drawShadowAt, 0, COLOR_ARGB ( ucAlpha, 0, 0, 0 ), g_pChat->m_vecScale.fX, g_pChat->m_vecScale.fY, bOutline, RenderBounds );
11451147
}
11461148
CRect2D drawAt ( vecPosition.fX, vecPosition.fY, vecPosition.fX + 1000.0f, vecPosition.fY + 1000.0f );
1147-
CChat::DrawTextString ( m_strText.c_str (), drawAt, 0.0f, drawAt, 0, COLOR_ARGB ( ucAlpha, m_Color.R, m_Color.G, m_Color.B ), g_pChat->m_vecScale.fX, g_pChat->m_vecScale.fY, RenderBounds );
1149+
CChat::DrawTextString ( m_strText.c_str (), drawAt, 0.0f, drawAt, 0, COLOR_ARGB ( ucAlpha, m_Color.R, m_Color.G, m_Color.B ), g_pChat->m_vecScale.fX, g_pChat->m_vecScale.fY, bOutline, RenderBounds );
11481150
}
11491151
}
11501152

Client/core/CChat.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class CChatLineSection
8282

8383
CChatLineSection& operator = ( const CChatLineSection& other );
8484

85-
void Draw ( const CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, const CRect2D& RenderBounds );
85+
void Draw ( const CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, bool bOutline, const CRect2D& RenderBounds );
8686
float GetWidth ( void );
8787
inline const char* GetText ( void ) { return m_strText.c_str (); }
8888
void SetText ( const char* szText ) { m_strText = szText; }
@@ -102,7 +102,7 @@ class CChatLine
102102
CChatLine ( void );
103103

104104
virtual const char* Format ( const char* szText, float fWidth, CColor& color, bool bColorCoded );
105-
virtual void Draw ( const CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, const CRect2D& RenderBounds );
105+
virtual void Draw ( const CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, bool bOutline, const CRect2D& RenderBounds );
106106
virtual float GetWidth ( void );
107107
bool IsActive ( void ) { return m_bActive; }
108108
void SetActive ( bool bActive ) { m_bActive = bActive; }
@@ -120,7 +120,7 @@ class CChatLine
120120
class CChatInputLine : public CChatLine
121121
{
122122
public:
123-
void Draw ( CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow );
123+
void Draw ( CVector2D& vecPosition, unsigned char ucAlpha, bool bShadow, bool bOutline );
124124
void Clear ( void );
125125

126126
CChatLineSection m_Prefix;
@@ -157,6 +157,7 @@ struct SDrawList
157157
{
158158
CRect2D renderBounds;
159159
bool bShadow;
160+
bool bOutline;
160161
std::vector < SDrawListLineItem > lineItemList;
161162

162163
bool operator!= ( const SDrawList& other ) const
@@ -167,6 +168,7 @@ struct SDrawList
167168
{
168169
if ( lineItemList.size () != other.lineItemList.size ()
169170
|| bShadow != other.bShadow
171+
|| bOutline != other.bOutline
170172
|| renderBounds != other.renderBounds )
171173
return false;
172174

@@ -213,7 +215,7 @@ class CChat
213215

214216
static float GetFontHeight ( float fScale = 1.0f );
215217
static float GetTextExtent ( const char * szText, float fScale = 1.0f );
216-
static void DrawTextString ( const char * szText, CRect2D DrawArea, float fZ, CRect2D ClipRect, unsigned long ulFormat, unsigned long ulColor, float fScaleX, float fScaleY, const CRect2D& RenderBounds );
218+
static void DrawTextString ( const char * szText, CRect2D DrawArea, float fZ, CRect2D ClipRect, unsigned long ulFormat, unsigned long ulColor, float fScaleX, float fScaleY, bool bOutline, const CRect2D& RenderBounds );
217219

218220
void SetColor ( const CColor& Color );
219221
void SetInputColor ( const CColor& Color );
@@ -280,6 +282,7 @@ class CChat
280282
CColor m_InputTextColor;
281283
bool m_bCssStyleText;
282284
bool m_bCssStyleBackground;
285+
bool m_bTextBlackOutline;
283286
unsigned long m_ulChatLineLife;
284287
unsigned long m_ulChatLineFadeOut;
285288
bool m_bUseCEGUI;

Client/core/CSettings.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1111,8 +1111,9 @@ void CSettings::CreateGUI ( void )
11111111
pLabel->GetSize ( vecSize );
11121112
pLabel->SetFont ( "default-bold-small" );
11131113

1114+
fLineHeight = 17.0f;
11141115
m_pChatCssBackground = reinterpret_cast < CGUICheckBox* > ( pManager->CreateCheckBox( pTabInterface, _("Hide background when not typing") ) );
1115-
m_pChatCssBackground->SetPosition ( CVector2D ( vecTemp.fX, vecTemp.fY + fFontNamesMarginY ) );
1116+
m_pChatCssBackground->SetPosition ( CVector2D ( vecTemp.fX, vecTemp.fY + fFontNamesMarginY - 2 ) );
11161117
m_pChatCssBackground->GetPosition ( vecTemp );
11171118
m_pChatCssBackground->AutoSize ( NULL, 20.0f );
11181119

@@ -1130,6 +1131,11 @@ void CSettings::CreateGUI ( void )
11301131
m_pTrayBalloon->SetPosition ( CVector2D ( vecTemp.fX, vecTemp.fY + fLineHeight ) );
11311132
m_pTrayBalloon->GetPosition ( vecTemp );
11321133
m_pTrayBalloon->AutoSize ( NULL, 20.0f );
1134+
1135+
m_pChatTextBlackOutline = reinterpret_cast < CGUICheckBox* > ( pManager->CreateCheckBox ( pTabInterface, _("Chat text black outline") ) );
1136+
m_pChatTextBlackOutline->SetPosition ( CVector2D ( vecTemp.fX, vecTemp.fY + fLineHeight ) );
1137+
m_pChatTextBlackOutline->GetPosition ( vecTemp );
1138+
m_pChatTextBlackOutline->AutoSize ( NULL, 20.0f );
11331139
}
11341140

11351141
/**
@@ -2884,6 +2890,7 @@ void CSettings::LoadData ( void )
28842890
CVARS_GET ( "chat_css_style_text", bVar ); m_pChatCssText->SetSelected ( bVar );
28852891
CVARS_GET ( "chat_css_style_background", bVar ); m_pChatCssBackground->SetSelected ( bVar );
28862892
CVARS_GET ( "chat_nickcompletion", bVar ); m_pChatNickCompletion->SetSelected ( bVar );
2893+
CVARS_GET ( "chat_text_outline", bVar ); m_pChatTextBlackOutline->SetSelected ( bVar );
28872894

28882895
{
28892896
int iVar;
@@ -3198,6 +3205,7 @@ void CSettings::SaveData ( void )
31983205
CVARS_SET ( "chat_css_style_text", m_pChatCssText->GetSelected () );
31993206
CVARS_SET ( "chat_css_style_background", m_pChatCssBackground->GetSelected () );
32003207
CVARS_SET ( "chat_nickcompletion", m_pChatNickCompletion->GetSelected () );
3208+
CVARS_SET ( "chat_text_outline", m_pChatTextBlackOutline->GetSelected() );
32013209
CVARS_SET ( "chat_line_life", GetMilliseconds ( m_pChatLineLife ) );
32023210
CVARS_SET ( "chat_line_fade_out", GetMilliseconds ( m_pChatLineFadeout ) );
32033211

Client/core/CSettings.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ class CSettings
315315
CGUICheckBox* m_pChatCssBackground;
316316
CGUICheckBox* m_pChatNickCompletion;
317317
CGUICheckBox* m_pChatCssText;
318+
CGUICheckBox* m_pChatTextBlackOutline;
318319
CGUIEdit* m_pChatLineLife;
319320
CGUIEdit* m_pChatLineFadeout;
320321
CGUICheckBox* m_pFlashWindow;

Client/core/Graphics/CGraphics.cpp

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ CGraphics::~CGraphics ( void )
7474
}
7575

7676

77-
void CGraphics::DrawString ( int uiLeft, int uiTop, int uiRight, int uiBottom, unsigned long ulColor, const char* szText, float fScaleX, float fScaleY, unsigned long ulFormat, LPD3DXFONT pDXFont )
77+
void CGraphics::DrawString ( int uiLeft, int uiTop, int uiRight, int uiBottom, unsigned long ulColor, const char* szText, float fScaleX, float fScaleY, unsigned long ulFormat, LPD3DXFONT pDXFont, bool bOutline )
7878
{
7979
if ( g_pCore->IsWindowMinimized () )
8080
return;
@@ -114,6 +114,8 @@ void CGraphics::DrawString ( int uiLeft, int uiTop, int uiRight, int uiBottom, u
114114
// Convert to UTF16
115115
std::wstring strText = MbUTF8ToUTF16(szText);
116116

117+
if ( bOutline )
118+
DrawStringBlurred( rect, ulColor & 0xFF000000, strText.c_str(), ulFormat, pDXFont );
117119
pDXFont->DrawTextW ( m_pDXSprite, strText.c_str(), -1, &rect, ulFormat, ulColor );
118120
EndDrawBatch ();
119121
}
@@ -131,6 +133,45 @@ void CGraphics::DrawString ( int iX, int iY, unsigned long dwColor, float fScale
131133
DrawString ( iX, iY, iX, iY, dwColor, szBuffer, fScale, fScale, DT_NOCLIP );
132134
}
133135

136+
// Slow
137+
void CGraphics::DrawStringBlurred(const RECT& rect, unsigned long ulColor, const wchar_t* szText, unsigned long ulFormat, LPD3DXFONT pDXFont)
138+
{
139+
// Blur definition
140+
const float E = 0;
141+
const float D = 0.33f;
142+
const float C = 0.66f;
143+
const float B = 1;
144+
const float A = 0;
145+
static const float kernelData[] = {
146+
E, D, D, D, E,
147+
D, C, B, C, D,
148+
D, B, A, B, D,
149+
D, C, B, C, D,
150+
E, D, D, D, E };
151+
const uint uiKernelSizeX = 5;
152+
const uint uiKernelSizeY = 5;
153+
const float* pKernel = kernelData;
154+
155+
// Apply definition
156+
int iInputAlpha = (ulColor & 0xFF000000) >> 24;
157+
iInputAlpha = iInputAlpha * iInputAlpha / 256;
158+
for (uint y = 0; y < uiKernelSizeY; y++)
159+
{
160+
for (uint x = 0; x < uiKernelSizeX; x++)
161+
{
162+
float fAlpha = *pKernel++;
163+
if ( fAlpha == 0 )
164+
continue;
165+
uint uiUseAlpha = (uint)(iInputAlpha * fAlpha);
166+
uint uiUseColor = (uiUseAlpha << 24) | (ulColor & 0x00FFFFFF);
167+
int iOffsetX = x - (uiKernelSizeX - 1) / 2;
168+
int iOffsetY = y - (uiKernelSizeY - 1) / 2;
169+
RECT useRect = {rect.left + iOffsetX, rect.top + iOffsetY, rect.right + iOffsetX, rect.bottom + iOffsetY};
170+
pDXFont->DrawTextW(m_pDXSprite, szText, -1, &useRect, ulFormat, uiUseColor);
171+
}
172+
}
173+
}
174+
134175

135176
void CGraphics::DrawLine3D ( const CVector& vecBegin, const CVector& vecEnd, unsigned long ulColor, float fWidth )
136177
{

Client/core/Graphics/CGraphics.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,11 @@ class CGraphics : public CGraphicsInterface, public CSingleton < CGraphics >
7878
void CalcScreenCoors ( CVector * vecWorld, CVector * vecScreen );
7979

8080
// DirectX drawing functions
81-
void DrawString ( int iLeft, int iTop, int iRight, int iBottom, unsigned long dwColor, const char* wszText, float fScaleX, float fScaleY, unsigned long ulFormat, ID3DXFont * pDXFont = NULL );
81+
void DrawString ( int iLeft, int iTop, int iRight, int iBottom, unsigned long dwColor, const char* wszText, float fScaleX, float fScaleY, unsigned long ulFormat, ID3DXFont * pDXFont = NULL, bool bOutline = false );
8282
void DrawString ( int iX, int iY, unsigned long dwColor, float fScale, const char * szText, ... );
8383
void DrawLine3D ( const CVector& vecBegin, const CVector& vecEnd, unsigned long ulColor, float fWidth = 1.0f );
8484
void DrawRectangle ( float fX, float fY, float fWidth, float fHeight, unsigned long ulColor, bool bSubPixelPositioning = false );
85+
void DrawStringBlurred ( const RECT& rect, unsigned long ulColor, const wchar_t* szText, unsigned long ulFormat, LPD3DXFONT pDXFont );
8586

8687
void SetBlendMode ( EBlendModeType blendMode );
8788
EBlendModeType GetBlendMode ( void );

0 commit comments

Comments
 (0)