#include "StdAfx.h"#include "Font.h"
//#include "Utils.h"
#include "TMemory.h"
Font gFont;
#define Offset_CreateFontA1 0x004060D0
#define Offset_CreateFontA2 0x004D2882
#define Offset_CreateFontA3 0x004D28EB
#define Offset_CreateFontA4 0x004D2957
#define Offset_CreateFontA5 0x004D29C1
void Font::Load()
{
SetDword((PVOID)(Offset_CreateFontA1 + 1), (DWORD)&LoadNewFont - (Offset_CreateFontA1 + 5));
SetDword((PVOID)(Offset_CreateFontA2 + 1), (DWORD)&LoadNewFont - (Offset_CreateFontA2 + 5));
SetDword((PVOID)(Offset_CreateFontA3 + 1), (DWORD)&LoadNewFont - (Offset_CreateFontA3 + 5));
SetDword((PVOID)(Offset_CreateFontA4 + 1), (DWORD)&LoadNewFont - (Offset_CreateFontA4 + 5));
SetDword((PVOID)(Offset_CreateFontA5 + 1), (DWORD)&LoadNewFont - (Offset_CreateFontA5 + 5));
SetByte((PVOID)Offset_CreateFontA1, ASM::CALL);
SetByte((PVOID)Offset_CreateFontA2, ASM::CALL);
SetByte((PVOID)Offset_CreateFontA3, ASM::CALL);
SetByte((PVOID)Offset_CreateFontA4, ASM::CALL);
SetByte((PVOID)Offset_CreateFontA5, ASM::CALL);
SetByte((PVOID)(Offset_CreateFontA1 + 5), ASM::NOP);
SetByte((PVOID)(Offset_CreateFontA2 + 5), ASM::NOP);
SetByte((PVOID)(Offset_CreateFontA3 + 5), ASM::NOP);
SetByte((PVOID)(Offset_CreateFontA4 + 5), ASM::NOP);
SetByte((PVOID)(Offset_CreateFontA5 + 5), ASM::NOP);
}
HFONT LoadNewFont()
{
char MyFontFaceName[100];
HFONT MyFont;
char sValue[99];
int Bold = GetPrivateProfileIntA("MainConfig", "Main_Font_Bold", 0, ".\\Config.ini");
int Height = GetPrivateProfileIntA("MainConfig", "Main_Font_Height", 13, ".\\Config.ini");
int Italic = GetPrivateProfileIntA("MainConfig", "Main_Font_Italic", 0, ".\\Config.ini");
int Unicode = GetPrivateProfileIntA("MainConfig", "Main_Font_Unicode", 1, ".\\Config.ini");
int Width = GetPrivateProfileIntA("MainConfig", "Main_Font_Width", 0, ".\\Config.ini");
int UnderLine = GetPrivateProfileIntA("MainConfig", "Main_Font_Underline", 0, ".\\Config.ini");
int Quality = GetPrivateProfileIntA("MainConfig", "Main_Font_Quality", 3, ".\\Config.ini");
int StrikeOut = GetPrivateProfileIntA("MainConfig", "Main_Font_StrikeOut", 0, ".\\Config.ini");
GetPrivateProfileStringA("MainConfig", "Main_Font_Name", "Tahoma", MyFontFaceName, 100, ".\\Config.ini");
if (Bold == 0)
{
if (Unicode == 1)
{
MyFont = CreateFontA(Height, Width, 0, 0, 400, Italic, UnderLine, StrikeOut, 0x01, 0, 0, Quality, 0, MyFontFaceName);
}
else
{
MyFont = CreateFontA(Height, Width, 0, 0, 400, Italic, UnderLine, StrikeOut, 0x0, 0, 0, Quality, 0, MyFontFaceName);
}
}
else
{
if (Unicode == 1)
{
MyFont = CreateFontA(Height, Width, 0, 0, 700, Italic, UnderLine, StrikeOut, 0x01, 0, 0, Quality, 0, MyFontFaceName);
}
else
{
MyFont = CreateFontA(Height, Width, 0, 0, 700, Italic, UnderLine, StrikeOut, 0x0, 0, 0, Quality, 0, MyFontFaceName);
}
}
wsprintf(sValue, "%d", Bold);
WritePrivateProfileStringA("MainConfig", "Main_Font_Bold", sValue, ".\\Config.ini");
wsprintf(sValue, "%d", Height);
WritePrivateProfileStringA("MainConfig", "Main_Font_Height", sValue, ".\\Config.ini");
wsprintf(sValue, "%d", Italic);
WritePrivateProfileStringA("MainConfig", "Main_Font_Italic", sValue, ".\\Config.ini");
wsprintf(sValue, "%d", Unicode);
WritePrivateProfileStringA("MainConfig", "Main_Font_Unicode", sValue, ".\\Config.ini");
wsprintf(sValue, "%d", Width);
WritePrivateProfileStringA("MainConfig", "Main_Font_Width", sValue, ".\\Config.ini");
wsprintf(sValue, "%d", UnderLine);
WritePrivateProfileStringA("MainConfig", "Main_Font_Underline", sValue, ".\\Config.ini");
wsprintf(sValue, "%d", Quality);
WritePrivateProfileStringA("MainConfig", "Main_Font_Quality", sValue, ".\\Config.ini");
wsprintf(sValue, "%d", StrikeOut);
WritePrivateProfileStringA("MainConfig", "Main_Font_StrikeOut", sValue, ".\\Config.ini");
WritePrivateProfileStringA("MainConfig", "Main_Font_Name", MyFontFaceName, ".\\Config.ini");
return MyFont;
}