GlyphInfo type. Some new text and core functions.

This commit is contained in:
jussi
2023-10-31 15:24:11 +02:00
parent d351b7b025
commit be39fd9634
21 changed files with 367 additions and 32 deletions

View File

@@ -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 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 ltextDrawText( lua_State *L ) {
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
*/
/*
@@ -198,6 +260,56 @@ int ltextMeasureText( lua_State *L ) {
return 1;
}
/*
> 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 )
@@ -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
*/