@ -127,13 +127,12 @@
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / Global variables
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
extern bool isGpuReady ;
# if defined(SUPPORT_DEFAULT_FONT)
/ / Default font provided by raylib
/ / NOTE : Default font is loaded on InitWindow ( ) and disposed on CloseWindow ( ) [ module : core ]
static Font defaultFont = { 0 } ;
# endif
static int textLineSpacing = 2 ; / / Text vertical line spacing in pixels ( between lines )
static int textLineSpacing = 2 ; / / Text vertical line spacing in pixels ( between lines )
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / Other Modules Functions Declaration ( required by text )
@ -164,8 +163,8 @@ extern void LoadFontDefault(void)
{
# define BIT_CHECK(a,b) ((a) & (1u << (b)))
/ / Check to see if we have all ready allocated the font for an image , and if we don ' t need to upload , then just return
if ( p">( defaultFont . glyphs ! = NULL) & & ! isGpuReady ) return ;
/ / Check to see if we have already allocated the font for an image , and if we don ' t need to upload , then just return
if ( defaultFont . glyphs ! = NULL ) return ;
/ / NOTE : Using UTF - 8 encoding table for Unicode U + 0000. . U + 00FF Basic Latin + Latin - 1 Supplement
/ / Ref : http : / / www . utf8 - chartable . de / unicode - utf8 - table . pl
@ -263,17 +262,14 @@ extern void LoadFontDefault(void)
counter + + ;
}
if ( isGpuReady )
{
defaultFont . texture = LoadTextureFromImage ( imFont ) ;
defaultFont . texture = LoadTextureFromImage ( imFont ) ;
/ / we have already loaded the font glyph data an image , and the GPU is ready , we are done
/ / if we don ' t do this , we will leak memory by reallocating the glyphs and rects
if ( defaultFont . glyphs ! = NULL )
{
UnloadImage ( imFont ) ;
return ;
}
/ / we have already loaded the font glyph data an image , and the GPU is ready , we are done
/ / if we don ' t do this , we will leak memory by reallocating the glyphs and rects
if ( defaultFont . glyphs ! = NULL )
{
UnloadImage ( imFont ) ;
return ;
}
/ / Reconstruct charSet using charsWidth [ ] , charsHeight , charsDivisor , glyphCount
@ -330,7 +326,7 @@ extern void LoadFontDefault(void)
extern void UnloadFontDefault ( void )
{
for ( int i = 0 ; i < defaultFont . glyphCount ; i + + ) UnloadImage ( defaultFont . glyphs [ i ] . image ) ;
k">if ( isGpuReady ) UnloadTexture ( defaultFont . texture ) ;
UnloadTexture ( defaultFont . texture ) ;
RL_FREE ( defaultFont . glyphs ) ;
RL_FREE ( defaultFont . recs ) ;
defaultFont . glyphCount = 0 ;
@ -384,17 +380,15 @@ Font LoadFont(const char *fileName)
{
Image image = LoadImage ( fileName ) ;
if ( image . data ! = NULL ) font = LoadFontFromImage ( image , MAGENTA , FONT_TTF_DEFAULT_FIRST_CHAR ) ;
else font = GetFontDefault ( ) ;
UnloadImage ( image ) ;
}
if ( isGpuReady )
if ( font . texture . id = = 0 ) TRACELOG ( LOG_WARNING , " FONT: [%s] Failed to load font texture -> Using default font " , fileName ) ;
else
{
if ( font . texture . id = = 0 ) TRACELOG ( LOG_WARNING , " FONT: [%s] Failed to load font texture -> Using default font " , fileName ) ;
else
{
SetTextureFilter ( font . texture , TEXTURE_FILTER_POINT ) ; / / By default , we set point filter ( the best performance )
TRACELOG ( LOG_INFO , " FONT: Data loaded successfully (%i pixel size | %i glyphs) " , font . baseSize , font . glyphCount ) ;
}
SetTextureFilter ( font . texture , TEXTURE_FILTER_POINT ) ; / / By default , we set point filter ( the best performance )
TRACELOG ( LOG_INFO , " FONT: Data loaded successfully (%i pixel size | %i glyphs) " , font . baseSize , font . glyphCount ) ;
}
return font ;
@ -515,7 +509,7 @@ Font LoadFontFromImage(Image image, Color key, int firstChar)
} ;
/ / Set font with all data parsed from image
k">if ( isGpuReady ) font . texture = LoadTextureFromImage ( fontClear ) ; / / Convert processed image to OpenGL texture
font . texture = LoadTextureFromImage ( fontClear ) ; / / Convert processed image to OpenGL texture
font . glyphCount = index ;
font . glyphPadding = 0 ;
@ -584,7 +578,7 @@ Font LoadFontFromMemory(const char *fileType, const unsigned char *fileData, int
font . glyphPadding = FONT_TTF_DEFAULT_CHARS_PADDING ;
Image atlas = GenImageFontAtlas ( font . glyphs , & font . recs , font . glyphCount , font . baseSize , font . glyphPadding , 0 ) ;
k">if ( isGpuReady ) font . texture = LoadTextureFromImage ( atlas ) ;
font . texture = LoadTextureFromImage ( atlas ) ;
/ / Update glyphs [ i ] . image to use alpha , required to be used on ImageDrawText ( )
for ( int i = 0 ; i < font . glyphCount ; i + + )
@ -1008,7 +1002,7 @@ void UnloadFont(Font font)
if ( font . texture . id ! = GetFontDefault ( ) . texture . id )
{
UnloadFontData ( font . glyphs , font . glyphCount ) ;
k">if ( isGpuReady ) UnloadTexture ( font . texture ) ;
UnloadTexture ( font . texture ) ;
RL_FREE ( font . recs ) ;
TRACELOGD ( " FONT: Unloaded font data from RAM and VRAM " ) ;
@ -1339,8 +1333,7 @@ Vector2 MeasureTextEx(Font font, const char *text, float fontSize, float spacing
{
Vector2 textSize = { 0 } ;
if ( ( isGpuReady & & ( font . texture . id = = 0 ) ) | |
( text = = NULL ) | | ( text [ 0 ] = = ' \0 ' ) ) return textSize ; / / Security check
if ( ( font . texture . id = = 0 ) | | ( text = = NULL ) | | ( text [ 0 ] = = ' \0 ' ) ) return textSize ; / / Security check
int size = TextLength ( text ) ; / / Get size in bytes of text
int tempByteCounter = 0 ; / / Used to count longer text line num chars
@ -2481,7 +2474,7 @@ static Font LoadBMFont(const char *fileName)
RL_FREE ( imFonts ) ;
k">if ( isGpuReady ) font . texture = LoadTextureFromImage ( fullFont ) ;
font . texture = LoadTextureFromImage ( fullFont ) ;
/ / Fill font characters info data
font . baseSize = fontSize ;
@ -2523,7 +2516,7 @@ static Font LoadBMFont(const char *fileName)
UnloadImage ( fullFont ) ;
UnloadFileText ( fileText ) ;
if ( isGpuReady & & ( font. texture . id = = 0) )
if ( font . texture . id = = 0 )
{
UnloadFont ( font ) ;
font = GetFontDefault ( ) ;