From fcd2d2d8b583f6a11a9ce32a75da8e18c8c88d32 Mon Sep 17 00:00:00 2001 From: jussi Date: Sun, 29 Oct 2023 18:36:23 +0200 Subject: LoadTextureFromData and LoadRenderTextureFromData. Documentation updates. --- src/core.c | 2 +- src/lua_core.c | 2 ++ src/textures.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/core.c b/src/core.c index 3e0043c..98026ad 100644 --- a/src/core.c +++ b/src/core.c @@ -544,7 +544,7 @@ int lcoreOpenURL( lua_State *L ) { /* > buffer = RL.LoadBuffer( data{} buffer, int type ) -Creates buffer as userdata. Type should be one of the Buffer types +Load Buffer. Type should be one of the Buffer types - Success return Buffer */ diff --git a/src/lua_core.c b/src/lua_core.c index 659cf56..6d54d27 100644 --- a/src/lua_core.c +++ b/src/lua_core.c @@ -1791,7 +1791,9 @@ void luaRegister() { assingGlobalFunction( "LoadTexture", ltexturesLoadTexture ); assingGlobalFunction( "LoadTextureFromImage", ltexturesLoadTextureFromImage ); assingGlobalFunction( "LoadTextureCubemap", ltexturesLoadTextureCubemap ); + assingGlobalFunction( "LoadTextureFromData", ltexturesLoadTextureFromData ); assingGlobalFunction( "LoadRenderTexture", ltexturesLoadRenderTexture ); + assingGlobalFunction( "LoadRenderTextureFromData", ltexturesLoadRenderTextureFromData ); assingGlobalFunction( "IsTextureReady", ltexturesIsTextureReady ); assingGlobalFunction( "UpdateTexture", ltexturesUpdateTexture ); assingGlobalFunction( "UpdateTextureRec", ltexturesUpdateTextureRec ); diff --git a/src/textures.c b/src/textures.c index aa78ce8..94c88aa 100644 --- a/src/textures.c +++ b/src/textures.c @@ -939,6 +939,44 @@ int ltexturesLoadTextureCubemap( lua_State *L ) { return 1; } +/* +> texture = RL.LoadTextureFromData( Texture{} textureData ) + +Load Texture from data + +- Success return Texture +*/ +int ltexturesLoadTextureFromData( lua_State *L ) { + luaL_checktype( L, 1, LUA_TTABLE ); + + Texture2D texture = { 0 }; + + int t = 1; + lua_pushnil( L ); + + while ( lua_next( L, t ) != 0 ) { + if ( strcmp( "id", (char*)lua_tostring( L, -2 ) ) == 0 ) { + texture.id = (unsigned int)luaL_checkinteger( L, -1 ); + } + else if ( strcmp( "width", (char*)lua_tostring( L, -2 ) ) == 0 ) { + texture.width = luaL_checkinteger( L, -1 ); + } + else if ( strcmp( "height", (char*)lua_tostring( L, -2 ) ) == 0 ) { + texture.height = luaL_checkinteger( L, -1 ); + } + else if ( strcmp( "mipmaps", (char*)lua_tostring( L, -2 ) ) == 0 ) { + texture.mipmaps = luaL_checkinteger( L, -1 ); + } + else if ( strcmp( "format", (char*)lua_tostring( L, -2 ) ) == 0 ) { + texture.format = luaL_checkinteger( L, -1 ); + } + lua_pop( L, 1 ); + } + uluaPushTexture( L, texture ); + + return 1; +} + /* > renderTexture = RL.LoadRenderTexture( Vector2 size ) @@ -954,6 +992,41 @@ int ltexturesLoadRenderTexture( lua_State *L ) { return 1; } +/* +> renderTexture = RL.LoadRenderTextureFromData( Texture{} renderTextureData ) + +Load RenderTexture from data (framebuffer) + +- Success return RenderTexture +*/ +int ltexturesLoadRenderTextureFromData( lua_State *L ) { + luaL_checktype( L, 1, LUA_TTABLE ); + + RenderTexture renTexture = { 0 }; + + int t = 1; + lua_pushnil( L ); + + while ( lua_next( L, t ) != 0 ) { + if ( strcmp( "id", (char*)lua_tostring( L, -2 ) ) == 0 ) { + renTexture.id = (unsigned int)luaL_checkinteger( L, -1 ); + } + else if ( strcmp( "texture", (char*)lua_tostring( L, -2 ) ) == 0 ) { + Texture *texture = luaL_checkudata( L, -1, "Texture" ); + renTexture.texture = *texture; + } + else if ( strcmp( "depth", (char*)lua_tostring( L, -2 ) ) == 0 ) { + Texture *depth = luaL_checkudata( L, -1, "Texture" ); + renTexture.depth = *depth; + } + lua_pop( L, 1 ); + } + uluaPushRenderTexture( L, renTexture ); + + return 1; +} + + /* > isReady = RL.IsTextureReady( Texture texture ) -- cgit v1.2.3