summaryrefslogtreecommitdiff
path: root/src/text.c
diff options
context:
space:
mode:
authorjussi2023-10-31 15:24:11 +0200
committerjussi2023-10-31 15:24:11 +0200
commitbe39fd96344ee1f4f85ac5c63b4e5f9daf6e5171 (patch)
treef0612052c4fe78ad2b6c2e7e8fc695a18d1d961e /src/text.c
parentd351b7b025f95983e49afaecb2fafef7802996a0 (diff)
downloadreilua-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.c124
1 files changed, 118 insertions, 6 deletions
diff --git a/src/text.c b/src/text.c
index e2135d1..c127ccf 100644
--- a/src/text.c
+++ b/src/text.c
@@ -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
*/