From 7765a23a2c90e6d02f6278eed1b1b9b9375bc941 Mon Sep 17 00:00:00 2001 From: jussi Date: Mon, 20 Nov 2023 16:20:11 +0200 Subject: LoadImageRaw, LoadImageAnim and LoadImageFromMemory. Version 0.6. --- src/lua_core.c | 3 +++ src/textures.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) (limited to 'src') diff --git a/src/lua_core.c b/src/lua_core.c index 2389463..fe9d8c7 100644 --- a/src/lua_core.c +++ b/src/lua_core.c @@ -1774,6 +1774,9 @@ void luaRegister() { /* Textures. */ /* Image loading functions. */ assingGlobalFunction( "LoadImage", ltexturesLoadImage ); + assingGlobalFunction( "LoadImageRaw", ltexturesLoadImageRaw ); + assingGlobalFunction( "LoadImageAnim", ltexturesLoadImageAnim ); + assingGlobalFunction( "LoadImageFromMemory", ltexturesLoadImageFromMemory ); assingGlobalFunction( "LoadImageFromTexture", ltexturesLoadImageFromTexture ); assingGlobalFunction( "LoadImageFromScreen", ltexturesLoadImageFromScreen ); assingGlobalFunction( "IsImageReady", ltextureIsImageReady ); diff --git a/src/textures.c b/src/textures.c index c5b07e4..008aa14 100644 --- a/src/textures.c +++ b/src/textures.c @@ -13,6 +13,7 @@ Load image from file into CPU memory (RAM) +- Failure return nil - Success return Image */ int ltexturesLoadImage( lua_State *L ) { @@ -27,6 +28,71 @@ int ltexturesLoadImage( lua_State *L ) { return 1; } +/* +> image = RL.LoadImageRaw( string fileName, Vector2 size, int format, int headerSize ) + +Load image from RAW file data + +- Failure return nil +- Success return Image +*/ +int ltexturesLoadImageRaw( lua_State *L ) { + const char *fileName = luaL_checkstring( L, 1 ); + Vector2 size = uluaGetVector2( L, 2 ); + int format = luaL_checkinteger( L, 3 ); + int headerSize = luaL_checkinteger( L, 4 ); + + if ( FileExists( fileName ) ) { + uluaPushImage( L, LoadImageRaw( fileName, (int)size.x, (int)size.y, format, headerSize ) ); + + return 1; + } + TraceLog( state->logLevelInvalid, "Invalid file '%s'", fileName ); + lua_pushnil( L ); + + return 1; +} + +/* +> image, frameCount = RL.LoadImageAnim( string fileName ) + +Load image sequence from file (frames appended to image.data). All frames are returned in RGBA format + +- Failure return nil +- Success return Image, int +*/ +int ltexturesLoadImageAnim( lua_State *L ) { + const char *fileName = luaL_checkstring( L, 1 ); + + if ( FileExists( fileName ) ) { + int frameCount = 0; + uluaPushImage( L, LoadImageAnim( fileName, &frameCount ) ); + lua_pushinteger( L, frameCount ); + + return 2; + } + TraceLog( state->logLevelInvalid, "Invalid file '%s'", fileName ); + lua_pushnil( L ); + + return 1; +} + +/* +> image, frameCount = RL.LoadImageFromMemory( string fileType, Buffer data ) + +Load image from memory buffer, fileType refers to extension: i.e. '.png' + +- Success return Image +*/ +int ltexturesLoadImageFromMemory( lua_State *L ) { + const char *fileType = luaL_checkstring( L, 1 ); + Buffer *data = uluaGetBuffer( L, 2 ); + + uluaPushImage( L, LoadImageFromMemory( fileType, data->data, data->size ) ); + + return 1; +} + /* > image = RL.LoadImageFromTexture( Texture texture ) -- cgit v1.2.3