diff options
| author | jussi | 2023-10-31 15:24:11 +0200 |
|---|---|---|
| committer | jussi | 2023-10-31 15:24:11 +0200 |
| commit | be39fd96344ee1f4f85ac5c63b4e5f9daf6e5171 (patch) | |
| tree | f0612052c4fe78ad2b6c2e7e8fc695a18d1d961e /src/text.c | |
| parent | d351b7b025f95983e49afaecb2fafef7802996a0 (diff) | |
| download | reilua-enhanced-be39fd96344ee1f4f85ac5c63b4e5f9daf6e5171.tar.gz reilua-enhanced-be39fd96344ee1f4f85ac5c63b4e5f9daf6e5171.tar.bz2 reilua-enhanced-be39fd96344ee1f4f85ac5c63b4e5f9daf6e5171.zip | |
GlyphInfo type. Some new text and core functions.
Diffstat (limited to 'src/text.c')
| -rw-r--r-- | src/text.c | 124 |
1 files changed, 118 insertions, 6 deletions
@@ -42,7 +42,7 @@ int ltextLoadFont( lua_State *L ) { /* > font = RL.LoadFontEx( string fileName, int fontSize, int{} fontChars ) -Load font from file with extended parameters. Loading the default character set +Load font from file with extended parameters, use NULL for fontChars to load the default character set - Failure return nil - Success return Font @@ -67,7 +67,7 @@ int ltextLoadFontEx( lua_State *L ) { } uluaPushFont( L, LoadFontEx( lua_tostring( L, 1 ), fontSize, fontChars, glyphCount ) ); - return 0; + return 1; } uluaPushFont( L, LoadFontEx( lua_tostring( L, 1 ), fontSize, NULL, 0 ) ); @@ -142,11 +142,26 @@ int ltextDrawFPS( lua_State *L ) { } /* -> RL.DrawText( Font font, string text, Vector2 position, float fontSize, float spacing, Color tint ) +> RL.DrawText( string text, Vector2 position, float fontSize, Color tint ) -Draw text using font and additional parameters +Draw text (using default font) */ int ltextDrawText( lua_State *L ) { + Vector2 position = uluaGetVector2Index( L, 2 ); + float fontSize = luaL_checknumber( L, 3 ); + Color tint = uluaGetColorIndex( L, 4 ); + + DrawText( luaL_checkstring( L, 1 ), position.x, position.y, fontSize, tint ); + + return 0; +} + +/* +> RL.DrawTextEx( Font font, string text, Vector2 position, float fontSize, float spacing, Color tint ) + +Draw text using font and additional parameters +*/ +int ltextDrawTextEx( lua_State *L ) { Font *font = uluaGetFont( L, 1 ); Vector2 position = uluaGetVector2Index( L, 3 ); float fontSize = luaL_checknumber( L, 4 ); @@ -178,7 +193,54 @@ int ltextDrawTextPro( lua_State *L ) { } /* -## Text - Misc +> RL.DrawTextCodepoint( Font font, int codepoint, Vector2 position, float fontSize, Color tint ) + +Draw one character (codepoint) +*/ +int ltextDrawTextCodepoint( lua_State *L ) { + Font *font = uluaGetFont( L, 1 ); + int codepoint = luaL_checkinteger( L, 2 ); + Vector2 position = uluaGetVector2Index( L, 3 ); + float fontSize = luaL_checknumber( L, 4 ); + Color tint = uluaGetColorIndex( L, 5 ); + + DrawTextCodepoint( *font, codepoint, position, fontSize, tint ); + + return 0; +} + +/* +> RL.DrawTextCodepoints( Font font, int{} codepoints, Vector2 position, float fontSize, float spacing, Color tint ) + +Draw multiple character (codepoint) +*/ +int ltextDrawTextCodepoints( lua_State *L ) { + Font *font = uluaGetFont( L, 1 ); + Vector2 position = uluaGetVector2Index( L, 3 ); + float fontSize = luaL_checknumber( L, 4 ); + float spacing = luaL_checknumber( L, 5 ); + Color tint = uluaGetColorIndex( L, 6 ); + + int count = uluaGetTableLenIndex( L, 2 ); + int codepoints[ count ]; + + int t = 2; + int i = 0; + lua_pushnil( L ); + + while ( lua_next( L, t ) != 0 ) { + codepoints[i] = lua_tointeger( L, -1 ); + + i++; + lua_pop( L, 1 ); + } + DrawTextCodepoints( *font, codepoints, count, position, fontSize, spacing, tint ); + + return 0; +} + +/* +## Text - Font info functions */ /* @@ -199,6 +261,56 @@ int ltextMeasureText( lua_State *L ) { } /* +> index = RL.GetGlyphIndex( Font font, int codepoint ) + +Get glyph index position in font for a codepoint (unicode character), fallback to '?' if not found + +- Success return int +*/ +int ltextGetGlyphIndex( lua_State *L ) { + Font *font = uluaGetFont( L, 1 ); + int codepoint = luaL_checkinteger( L, 2 ); + + lua_pushinteger( L, GetGlyphIndex( *font, codepoint ) ); + + return 1; +} + +/* +> glyphInfo = RL.GetGlyphInfo( Font font, int codepoint ) + +Get glyph font info data for a codepoint (unicode character), fallback to '?' if not found. +Return Image as lightuserdata + +- Success return GlyphInfo +*/ +int ltextGetGlyphInfo( lua_State *L ) { + Font *font = uluaGetFont( L, 1 ); + int codepoint = luaL_checkinteger( L, 2 ); + + int id = GetGlyphIndex( *font, codepoint ); + uluaPushGlyphInfo( L, font->glyphs[id], &font->glyphs[id].image ); + + return 1; +} + +/* +> rect = RL.GetGlyphAtlasRec( Font font, int codepoint ) + +Get glyph rectangle in font atlas for a codepoint (unicode character), fallback to '?' if not found + +- Success return Rectangle +*/ +int ltextGetGlyphAtlasRec( lua_State *L ) { + Font *font = uluaGetFont( L, 1 ); + int codepoint = luaL_checkinteger( L, 2 ); + + uluaPushRectangle( L, GetGlyphAtlasRec( *font, codepoint ) ); + + return 1; +} + +/* > baseSize = RL.GetFontBaseSize( Font font ) Get font base size (default chars height) @@ -246,7 +358,7 @@ int ltextGetFontGlyphPadding( lua_State *L ) { /* > texture = RL.GetFontTexture( Font font ) -Get font texture atlas containing the glyphs. Returns as lightuserdata +Get font texture atlas containing the glyphs. Return as lightuserdata - Success return Texture */ |
