mirror of
https://github.com/BluTac10/Xbox-Neo.git
synced 2026-05-23 03:15:01 +00:00
Resolve merge conflicts across multiple components Merge and synchronize XML locale changes Ensure consistency between string resources and localization files Minor fixes to restore successful builds after merge
79 lines
2.1 KiB
C++
79 lines
2.1 KiB
C++
#include "stdafx.h"
|
|
#include "UI.h"
|
|
#include "../../../Minecraft.World/StringHelpers.h"
|
|
#include "../../../Minecraft.World/File.h"
|
|
#include "UITTFFont.h"
|
|
|
|
UITTFFont::UITTFFont(const string &name, const string &path, S32 fallbackCharacter, bool registerAsDefaultFonts)
|
|
: m_strFontName(name),
|
|
pbData(nullptr),
|
|
m_loaded(false) // check if loaded
|
|
{
|
|
app.DebugPrintf("UITTFFont opening %s\n",path.c_str());
|
|
|
|
#ifdef _UNICODE
|
|
wstring wPath = convStringToWstring(path);
|
|
HANDLE file = CreateFile(wPath.c_str(), GENERIC_READ, 0, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
|
|
#else
|
|
HANDLE file = CreateFile(path.c_str(), GENERIC_READ, 0, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
|
|
#endif
|
|
if( file == INVALID_HANDLE_VALUE )
|
|
{
|
|
DWORD error = GetLastError();
|
|
app.DebugPrintf("Failed to open TTF file with error code %d (%x)\n", error, error);
|
|
return; // Fireblade - replaced assert to avoid crashing if font fails to load
|
|
}
|
|
|
|
DWORD dwHigh=0;
|
|
DWORD dwFileSize = GetFileSize(file,&dwHigh);
|
|
|
|
if(dwFileSize!=0)
|
|
{
|
|
DWORD bytesRead;
|
|
|
|
pbData = (PBYTE) new BYTE[dwFileSize];
|
|
BOOL bSuccess = ReadFile(file,pbData,dwFileSize,&bytesRead,nullptr);
|
|
if(bSuccess==FALSE)
|
|
{
|
|
delete[] pbData; // Fireblade - avoid memory leaks (hopefully)
|
|
pbData = nullptr;
|
|
CloseHandle(file);
|
|
app.FatalLoadError();
|
|
return; // Fireblade - return early in case of error
|
|
}
|
|
CloseHandle(file);
|
|
|
|
IggyFontInstallTruetypeUTF8 ( (void *)pbData, IGGY_TTC_INDEX_none, m_strFontName.c_str(), -1, IGGY_FONTFLAG_none );
|
|
|
|
IggyFontInstallTruetypeFallbackCodepointUTF8( m_strFontName.c_str(), -1, IGGY_FONTFLAG_none, fallbackCharacter );
|
|
|
|
if (registerAsDefaultFonts)
|
|
{
|
|
// 4J Stu - These are so we can use the default flash controls
|
|
IggyFontInstallTruetypeUTF8 ( (void *)pbData, IGGY_TTC_INDEX_none, "Times New Roman", -1, IGGY_FONTFLAG_none );
|
|
IggyFontInstallTruetypeUTF8 ( (void *)pbData, IGGY_TTC_INDEX_none, "Arial", -1, IGGY_FONTFLAG_none );
|
|
}
|
|
m_loaded = true;
|
|
}
|
|
else
|
|
{
|
|
CloseHandle(file);
|
|
}
|
|
}
|
|
|
|
UITTFFont::~UITTFFont()
|
|
{
|
|
delete[] pbData;
|
|
}
|
|
|
|
|
|
string UITTFFont::getFontName()
|
|
{
|
|
return m_strFontName;
|
|
}
|
|
|
|
bool UITTFFont::isLoaded() const
|
|
{
|
|
return m_loaded;
|
|
}
|