diff options
| -rw-r--r-- | API.md | 17 | ||||
| -rw-r--r-- | include/textures.h | 2 | ||||
| -rw-r--r-- | src/lua_core.c | 2 | ||||
| -rw-r--r-- | src/textures.c | 60 |
4 files changed, 81 insertions, 0 deletions
@@ -1596,6 +1596,23 @@ Load image from file into CPU memory ( RAM ) --- +> image = RL_LoadImageFromTexture( Texture2D texture ) + +Load image from GPU texture data + +- Failure return -1 +- Success return int + +--- + +> image = RL_LoadImageFromScreen() + +Load image from screen buffer and ( screenshot ) + +- Success return int + +--- + > image = RL_GenImageColor( int width, int height, Color color ) Generate image: plain color diff --git a/include/textures.h b/include/textures.h index 643cdf4..96aba80 100644 --- a/include/textures.h +++ b/include/textures.h @@ -10,6 +10,8 @@ bool validSourceTexture( size_t id ); Texture2D* texturesGetSourceTexture( size_t index ); /* File. */ int ltexturesLoadImage( lua_State *L ); +int ltexturesLoadImageFromTexture( lua_State *L ); +int ltexturesLoadImageFromScreen( lua_State *L ); int ltexturesGenImageColor( lua_State *L ); int ltexturesUnloadImage( lua_State *L ); int ltexturesExportImage( lua_State *L ); diff --git a/src/lua_core.c b/src/lua_core.c index 574689e..4e3b8fa 100644 --- a/src/lua_core.c +++ b/src/lua_core.c @@ -519,6 +519,8 @@ void luaRegister() { /* Textures. */ /* File. */ lua_register( L, "RL_LoadImage", ltexturesLoadImage ); + lua_register( L, "RL_LoadImageFromTexture", ltexturesLoadImageFromTexture ); + lua_register( L, "RL_LoadImageFromScreen", ltexturesLoadImageFromScreen ); lua_register( L, "RL_GenImageColor", ltexturesGenImageColor ); lua_register( L, "RL_UnloadImage", ltexturesUnloadImage ); lua_register( L, "RL_ExportImage", ltexturesExportImage ); diff --git a/src/textures.c b/src/textures.c index f278341..8357f68 100644 --- a/src/textures.c +++ b/src/textures.c @@ -143,6 +143,66 @@ int ltexturesLoadImage( lua_State *L ) { } /* +> image = RL_LoadImageFromTexture( Texture2D texture ) + +Load image from GPU texture data + +- Failure return -1 +- Success return int +*/ +int ltexturesLoadImageFromTexture( lua_State *L ) { + if ( !lua_isnumber( L, -1 ) ) { + TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_LoadImageFromTexture( Texture2D texture )" ); + lua_pushinteger( L, -1 ); + return 1; + } + + size_t texId = lua_tointeger( L, -1 ); + + if ( !validSourceTexture( texId ) ) { + lua_pushinteger( L, -1 ); + return 1; + } + + int i = 0; + + for ( i = 0; i < state->imageCount; i++ ) { + if ( state->images[i] == NULL ) { + break; + } + } + state->images[i] = malloc( sizeof( Image ) ); + *state->images[i] = LoadImageFromTexture( *texturesGetSourceTexture( texId ) ); + lua_pushinteger( L, i ); + checkImageRealloc( i ); + + return 1; +} + +/* +> image = RL_LoadImageFromScreen() + +Load image from screen buffer and ( screenshot ) + +- Success return int +*/ +int ltexturesLoadImageFromScreen( lua_State *L ) { + int i = 0; + + for ( i = 0; i < state->imageCount; i++ ) { + if ( state->images[i] == NULL ) { + break; + } + } + state->images[i] = malloc( sizeof( Image ) ); + *state->images[i] = LoadImageFromScreen(); + lua_pushinteger( L, i ); + checkImageRealloc( i ); + + return 1; +} + +/* > image = RL_GenImageColor( int width, int height, Color color ) Generate image: plain color |
