From f4ae19ca7d62a2bc6b125a1ddb678300b30790d2 Mon Sep 17 00:00:00 2001 From: jussi Date: Sun, 9 Apr 2023 22:19:47 +0300 Subject: New argument style for rlgl, text, lights and math. --- src/text.c | 161 +++++++++++++++++++++++++++++-------------------------------- 1 file changed, 76 insertions(+), 85 deletions(-) (limited to 'src/text.c') diff --git a/src/text.c b/src/text.c index a7a3d06..174b30c 100644 --- a/src/text.c +++ b/src/text.c @@ -29,6 +29,20 @@ bool validFont( size_t id ) { } } +static int newFont() { + int i = 0; + + for ( i = 0; i < state->fontCount; i++ ) { + if ( state->fonts[i] == NULL ) { + break; + } + } + state->fonts[i] = malloc( sizeof( Font ) ); + checkFontRealloc( i ); + + return i; +} + /* ## Text - Loading */ @@ -42,22 +56,21 @@ Load font from file into GPU memory ( VRAM ) - Success return int */ int ltextLoadFont( lua_State *L ) { - if ( !lua_isstring( L, -1 ) ) { + 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; - } + if ( FileExists( lua_tostring( L, 1 ) ) ) { + int i = newFont(); + *state->fonts[i] = LoadFont( lua_tostring( L, 1 ) ); + lua_pushinteger( L, i ); + return 1; + } + else { + lua_pushinteger( L, -1 ); + return 1; } - state->fonts[i] = malloc( sizeof( Font ) ); - *state->fonts[i] = LoadFont( lua_tostring( L, -1 ) ); - lua_pushinteger( L, i ); - checkFontRealloc( i ); return 1; } @@ -71,22 +84,23 @@ Load font from file with extended parameters. Loading the default character set - Success return int */ int ltextLoadFontEx( lua_State *L ) { - if ( !lua_isstring( L, -2 ) || !lua_isnumber( L, -1 ) ) { + if ( !lua_isstring( L, 1 ) || !lua_isnumber( L, 2 ) ) { TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.LoadFontEx( string fileName, int fontSize )" ); lua_pushinteger( L, -1 ); return 1; } - int i = 0; + int fontSize = lua_tointeger( L, 2 ); - for ( i = 0; i < state->fontCount; i++ ) { - if ( state->fonts[i] == NULL ) { - break; - } + if ( FileExists( lua_tostring( L, 1 ) ) ) { + int i = newFont(); + *state->fonts[i] = LoadFontEx( lua_tostring( L, 1 ), fontSize, NULL, 0 ); + lua_pushinteger( L, i ); + return 1; + } + else { + lua_pushinteger( L, -1 ); + return 1; } - state->fonts[i] = malloc( sizeof( Font ) ); - *state->fonts[i] = LoadFontEx( lua_tostring( L, -2 ), lua_tointeger( L, - 1 ), NULL, 0 ); - lua_pushinteger( L, i ); - checkFontRealloc( i ); return 1; } @@ -100,34 +114,23 @@ Load font from Image ( XNA style ) - Success return int */ int ltextLoadFontFromImage( lua_State *L ) { - if ( !lua_isnumber( L, -3 ) || !lua_istable( L, -2 ) || !lua_isnumber( L, -1 ) ) { + if ( !lua_isnumber( L, 1 ) || !lua_istable( L, 2 ) || !lua_isnumber( L, 3 ) ) { TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.LoadFontFromImage( Image image, Color key, int firstChar )" ); lua_pushinteger( L, -1 ); return 1; } - int i = 0; - - for ( i = 0; i < state->fontCount; i++ ) { - if ( state->fonts[i] == NULL ) { - break; - } - } - - int firstChar = lua_tointeger( L, -1 ); - lua_pop( L, 1 ); - Color key = uluaGetColor( L ); - lua_pop( L, 1 ); - size_t imageId = lua_tointeger( L, -1 ); + size_t imageId = lua_tointeger( L, 1 ); + Color key = uluaGetColorIndex( L, 2 ); + int firstChar = lua_tointeger( L, 3 ); if ( !validImage( imageId ) ) { lua_pushboolean( L, false ); return 1; } - state->fonts[i] = malloc( sizeof( Font ) ); + int i = newFont(); *state->fonts[i] = LoadFontFromImage( *state->images[ imageId ], key, firstChar ); lua_pushinteger( L, i ); - checkFontRealloc( i ); return 1; } @@ -141,19 +144,19 @@ Unload Font from GPU memory ( VRAM ) - Success return true */ int ltextUnloadFont( lua_State *L ) { - if ( !lua_isnumber( L, -1 ) ) { + if ( !lua_isnumber( L, 1 ) ) { TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.UnloadFont( Font font )" ); lua_pushboolean( L, false ); return 1; } - size_t id = lua_tointeger( L, -1 ); + size_t FontId = lua_tointeger( L, 1 ); - if ( !validFont( id ) ) { + if ( !validFont( FontId ) ) { lua_pushboolean( L, false ); return 1; } - UnloadFont( *state->fonts[ id ] ); - state->fonts[ id ] = NULL; + UnloadFont( *state->fonts[ FontId ] ); + state->fonts[ FontId ] = NULL; lua_pushboolean( L, true ); return 1; @@ -172,12 +175,12 @@ Draw current FPS - Success return true */ int ltextDrawFPS( lua_State *L ) { - if ( !lua_istable( L, -1 ) ) { + if ( !lua_istable( L, 1 ) ) { TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.DrawFPS( Vector2 pos )" ); lua_pushboolean( L, false ); return 1; } - Vector2 pos = uluaGetVector2( L ); + Vector2 pos = uluaGetVector2Index( L, 1 ); DrawFPS( pos.x, pos.y ); lua_pushboolean( L, true ); @@ -194,27 +197,23 @@ Draw text using font and additional parameters - 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 ) ) { + if ( !lua_isnumber( L, 1 ) || !lua_isstring( L, 2 ) || !lua_istable( L, 3 ) + || !lua_isnumber( L, 4 ) || !lua_isnumber( L, 5 ) || !lua_istable( L, 6 ) ) { 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 ); + size_t fontId = lua_tointeger( L, 1 ); + Vector2 position = uluaGetVector2Index( L, 3 ); + float fontSize = lua_tonumber( L, 4 ); + float spacing = lua_tonumber( L, 5 ); + Color tint = uluaGetColorIndex( L, 6 ); if ( !validFont( fontId ) ) { lua_pushboolean( L, false ); return 1; } - DrawTextEx( *state->fonts[ fontId ], lua_tostring( L, -1 ), position, fontSize, spacing, color ); + DrawTextEx( *state->fonts[ fontId ], lua_tostring( L, 2 ), position, fontSize, spacing, tint ); lua_pushboolean( L, true ); return 1; @@ -229,31 +228,25 @@ Draw text using Font and pro parameters ( rotation ) - Success return true */ int ltextDrawTextPro( lua_State *L ) { - if ( !lua_isnumber( L, -8 ) || !lua_isstring( L, -7 ) || !lua_istable( L, -6 ) || !lua_istable( L, -5 ) - || !lua_isnumber( L, -4 ) || !lua_isnumber( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_istable( L, -1 ) ) { + if ( !lua_isnumber( L, 1 ) || !lua_isstring( L, 2 ) || !lua_istable( L, 3 ) || !lua_istable( L, 4 ) + || !lua_isnumber( L, 5 ) || !lua_isnumber( L, 6 ) || !lua_isnumber( L, 7 ) || !lua_istable( L, 8 ) ) { TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.DrawTextPro( Font font, string text, Vector2 position, Vector2 origin, float rotation, 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 ); - float rotation = lua_tonumber( L, -1 ); - lua_pop( L, 1 ); - Vector2 origin = uluaGetVector2( L ); - lua_pop( L, 1 ); - Vector2 position = uluaGetVector2( L ); - lua_pop( L, 1 ); - size_t fontId = lua_tointeger( L, -2 ); + size_t fontId = lua_tointeger( L, 1 ); + Vector2 position = uluaGetVector2Index( L, 3 ); + Vector2 origin = uluaGetVector2Index( L, 4 ); + float rotation = lua_tonumber( L, 5 ); + float fontSize = lua_tonumber( L, 6 ); + float spacing = lua_tonumber( L, 7 ); + Color tint = uluaGetColorIndex( L, 8 ); if ( !validFont( fontId ) ) { lua_pushboolean( L, false ); return 1; } - DrawTextPro( *state->fonts[ fontId ], lua_tostring( L, -1 ), position, origin, rotation, fontSize, spacing, color ); + DrawTextPro( *state->fonts[ fontId ], lua_tostring( L, 2 ), position, origin, rotation, fontSize, spacing, tint ); lua_pushboolean( L, true ); return 1; @@ -272,22 +265,20 @@ Measure string size for Font - Success return Vector2 */ int ltextMeasureText( lua_State *L ) { - if ( !lua_isnumber( L, -4 ) || !lua_isstring( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isnumber( L, -1 ) ) { + if ( !lua_isnumber( L, 1 ) || !lua_isstring( L, 2 ) || !lua_isnumber( L, 3 ) || !lua_isnumber( L, 4 ) ) { TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.MeasureText( Font font, string text, float fontSize, float spacing )" ); lua_pushboolean( L, false ); return 1; } - float spacing = lua_tonumber( L, -1 ); - lua_pop( L, 1 ); - float fontSize = lua_tonumber( L, -1 ); - lua_pop( L, 1 ); - size_t fontId = lua_tointeger( L, -2 ); + size_t fontId = lua_tointeger( L, 1 ); + float fontSize = lua_tonumber( L, 3 ); + float spacing = lua_tonumber( L, 4 ); if ( !validFont( fontId ) ) { lua_pushboolean( L, false ); return 1; } - uluaPushVector2( L, MeasureTextEx( *state->fonts[ fontId ], lua_tostring( L, -1 ), fontSize, spacing ) ); + uluaPushVector2( L, MeasureTextEx( *state->fonts[ fontId ], lua_tostring( L, 2 ), fontSize, spacing ) ); return 1; } @@ -301,12 +292,12 @@ Get font baseSize - Success return int */ int ltextGetFontBaseSize( lua_State *L ) { - if ( !lua_isnumber( L, -1 ) ) { + if ( !lua_isnumber( L, 1 ) ) { TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.GetFontBaseSize( Font font )" ); lua_pushboolean( L, false ); return 1; } - size_t fontId = lua_tointeger( L, -1 ); + size_t fontId = lua_tointeger( L, 1 ); if ( !validFont( fontId ) ) { lua_pushboolean( L, false ); @@ -326,12 +317,12 @@ Get font glyphCount - Success return int */ int ltextGetFontGlyphCount( lua_State *L ) { - if ( !lua_isnumber( L, -1 ) ) { + if ( !lua_isnumber( L, 1 ) ) { TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.GetFontGlyphCount( Font font )" ); lua_pushboolean( L, false ); return 1; } - size_t fontId = lua_tointeger( L, -1 ); + size_t fontId = lua_tointeger( L, 1 ); if ( !validFont( fontId ) ) { lua_pushboolean( L, false ); @@ -351,12 +342,12 @@ Get font glyphPadding - Success return int */ int ltextGetFontGlyphPadding( lua_State *L ) { - if ( !lua_isnumber( L, -1 ) ) { + if ( !lua_isnumber( L, 1 ) ) { TraceLog( LOG_WARNING, "%s", "Bad call of function. RL.GetFontGlyphPadding( Font font )" ); lua_pushboolean( L, false ); return 1; } - size_t fontId = lua_tointeger( L, -1 ); + size_t fontId = lua_tointeger( L, 1 ); if ( !validFont( fontId ) ) { lua_pushboolean( L, false ); -- cgit v1.2.3