usbloadergx/source/FontSystem.cpp

82 lines
2.2 KiB
C++
Raw Normal View History

/****************************************************************************
* Copyright (C) 2010
* by Dimok
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any
* damages arising from the use of this software.
*
* Permission is granted to anyone to use this software for any
* purpose, including commercial applications, and to alter it and
* redistribute it freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you
* must not claim that you wrote the original software. If you use
* this software in a product, an acknowledgment in the product
* documentation would be appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and
* must not be misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*
* for WiiXplorer 2010
***************************************************************************/
#include "FreeTypeGX.h"
#include "filelist.h"
FreeTypeGX * fontSystem = NULL;
static FT_Byte * MainFont = ( FT_Byte * ) font_ttf;
static u32 MainFontSize = font_ttf_size;
void ClearFontData()
{
if ( fontSystem )
delete fontSystem;
fontSystem = NULL;
if ( MainFont != ( FT_Byte * ) font_ttf )
{
if ( MainFont != NULL )
delete [] MainFont;
MainFont = ( FT_Byte * ) font_ttf;
MainFontSize = font_ttf_size;
}
}
bool SetupDefaultFont( const char *path )
{
bool result = false;
FILE *pfile = NULL;
ClearFontData();
if ( path )
pfile = fopen( path, "rb" );
if ( pfile )
{
fseek( pfile, 0, SEEK_END );
MainFontSize = ftell( pfile );
rewind( pfile );
MainFont = new ( std::nothrow ) FT_Byte[MainFontSize];
if ( !MainFont )
{
MainFont = ( FT_Byte * ) font_ttf;
MainFontSize = font_ttf_size;
}
else
{
fread( MainFont, 1, MainFontSize, pfile );
result = true;
}
fclose( pfile );
}
fontSystem = new FreeTypeGX( MainFont, MainFontSize );
return result;
}