Load image from texture and screen.

This commit is contained in:
jussi
2022-03-24 19:11:55 +02:00
parent 3aa949f3f5
commit 55ad8773ec
4 changed files with 81 additions and 0 deletions

17
API.md
View File

@@ -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 ) > image = RL_GenImageColor( int width, int height, Color color )
Generate image: plain color Generate image: plain color

View File

@@ -10,6 +10,8 @@ bool validSourceTexture( size_t id );
Texture2D* texturesGetSourceTexture( size_t index ); Texture2D* texturesGetSourceTexture( size_t index );
/* File. */ /* File. */
int ltexturesLoadImage( lua_State *L ); int ltexturesLoadImage( lua_State *L );
int ltexturesLoadImageFromTexture( lua_State *L );
int ltexturesLoadImageFromScreen( lua_State *L );
int ltexturesGenImageColor( lua_State *L ); int ltexturesGenImageColor( lua_State *L );
int ltexturesUnloadImage( lua_State *L ); int ltexturesUnloadImage( lua_State *L );
int ltexturesExportImage( lua_State *L ); int ltexturesExportImage( lua_State *L );

View File

@@ -519,6 +519,8 @@ void luaRegister() {
/* Textures. */ /* Textures. */
/* File. */ /* File. */
lua_register( L, "RL_LoadImage", ltexturesLoadImage ); 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_GenImageColor", ltexturesGenImageColor );
lua_register( L, "RL_UnloadImage", ltexturesUnloadImage ); lua_register( L, "RL_UnloadImage", ltexturesUnloadImage );
lua_register( L, "RL_ExportImage", ltexturesExportImage ); lua_register( L, "RL_ExportImage", ltexturesExportImage );

View File

@@ -142,6 +142,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 ) > image = RL_GenImageColor( int width, int height, Color color )