diff options
| author | jussi | 2022-02-18 18:27:10 +0200 |
|---|---|---|
| committer | jussi | 2022-02-18 18:27:10 +0200 |
| commit | 6e4fdd3b3ae4e4656e151f098c40cfe551a36e8c (patch) | |
| tree | 37e30d371ebd44dfc8bab0d33c26f0294bda5ae4 /src/text.c | |
| parent | 345cc1d5aa3b3c97e2cce453dc65a62c3e05427b (diff) | |
| download | reilua-enhanced-6e4fdd3b3ae4e4656e151f098c40cfe551a36e8c.tar.gz reilua-enhanced-6e4fdd3b3ae4e4656e151f098c40cfe551a36e8c.tar.bz2 reilua-enhanced-6e4fdd3b3ae4e4656e151f098c40cfe551a36e8c.zip | |
Added initial files.
Diffstat (limited to 'src/text.c')
| -rw-r--r-- | src/text.c | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/text.c b/src/text.c new file mode 100644 index 0000000..0637971 --- /dev/null +++ b/src/text.c @@ -0,0 +1,102 @@ +#include "main.h" +#include "state.h" +#include "text.h" +#include "lua_core.h" + +static void checkFontRealloc( int i ) { + if ( i == state->fontCount ) { + state->fontCount++; + } + + if ( state->fontCount == state->fontAlloc ) { + state->fontAlloc += ALLOC_PAGE_SIZE; + state->fonts = realloc( state->fonts, state->fontAlloc * sizeof( Font* ) ); + + for ( i = state->fontCount; i < state->fontAlloc; i++ ) { + state->fonts[i] = NULL; + } + } +} + +bool validFont( size_t id ) { + if ( id < 0 || state->fontCount < id || state->fonts[ id ] == NULL ) { + TraceLog( LOG_WARNING, "%s %d", "Invalid font", id ); + return false; + } + else { + return true; + } +} + +/* +## Text - Loading +*/ + +/* +> font = RL_LoadFont( string fileName ) + +Load font from file into GPU memory ( VRAM ) + +- Failure return -1 +- Success return int +*/ +int lmodelsLoadFont( lua_State *L ) { + if ( !lua_isstring( L, -1 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_LoadFont( string fileName )" ); + lua_pushinteger( L, -1 ); + return 1; + } + int i = 0; + + for ( i = 0; i < state->fontCount; i++ ) { + if ( state->fonts[i] == NULL ) { + break; + } + } + state->fonts[i] = malloc( sizeof( Font ) ); + *state->fonts[i] = LoadFont( lua_tostring( L, -1 ) ); + lua_pushinteger( L, i ); + checkFontRealloc( i ); + + return 1; +} + +/* +## Text - Draw +*/ + +/* +> success = RL_DrawText( Font font, string text, Vector2 position, float fontSize, float spacing, Color tint ) + +Draw text using font and additional parameters + +- Failure return false +- Success return true +*/ +int ltextDrawText( lua_State *L ) { + if ( !lua_isnumber( L, -6 ) || !lua_isstring( L, -5 ) || !lua_istable( L, -4 ) + || !lua_isnumber( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_istable( L, -1 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_DrawText( Font font, string text, Vector2 position, float fontSize, float spacing, Color tint )" ); + lua_pushboolean( L, false ); + return 1; + } + Color color = uluaGetColor( L ); + lua_pop( L, 1 ); + float spacing = lua_tonumber( L, -1 ); + lua_pop( L, 1 ); + float fontSize = lua_tonumber( L, -1 ); + lua_pop( L, 1 ); + Vector2 position = uluaGetVector2( L ); + lua_pop( L, 1 ); + size_t fontId = lua_tointeger( L, -2 ); + + if ( !validFont( fontId ) ) { + lua_pushboolean( L, false ); + return 1; + } + + DrawTextEx( *state->fonts[ fontId ], lua_tostring( L, -1 ), position, fontSize, spacing, color ); + lua_pushboolean( L, true ); + + return 1; +} |
