ExportBuffer and LoadBufferFromFile.
This commit is contained in:
21
API.md
21
API.md
@@ -4508,7 +4508,7 @@ Get file modification time (Last write time)
|
||||
|
||||
---
|
||||
|
||||
> compData = RL.CompressData( string data )
|
||||
> compData = RL.CompressData( Buffer buffer )
|
||||
|
||||
Compress data (DEFLATE algorithm)
|
||||
|
||||
@@ -4516,11 +4516,11 @@ Compress data (DEFLATE algorithm)
|
||||
|
||||
---
|
||||
|
||||
> data, dataSize = RL.DecompressData( Buffer compData )
|
||||
> decompData = RL.DecompressData( Buffer compData )
|
||||
|
||||
Decompress data (DEFLATE algorithm).
|
||||
|
||||
- Success return string, int
|
||||
- Success Buffer
|
||||
|
||||
---
|
||||
|
||||
@@ -4920,6 +4920,21 @@ Get buffer size
|
||||
|
||||
---
|
||||
|
||||
> RL.ExportBuffer( Buffer buffer, string path )
|
||||
|
||||
Write buffer data to binary file
|
||||
|
||||
---
|
||||
|
||||
> buffer = RL.LoadBufferFromFile( string path, type int )
|
||||
|
||||
Read buffer data from binary file
|
||||
|
||||
- Failure return nil
|
||||
- Success return Buffer
|
||||
|
||||
---
|
||||
|
||||
## Shapes - Drawing
|
||||
|
||||
---
|
||||
|
||||
@@ -58,7 +58,7 @@ end
|
||||
|
||||
function RL.draw()
|
||||
RL.ClearBackground( RL.RAYWHITE )
|
||||
RL.DrawText( RL.defaultFont, "Congrats! You created your first window!", textPos, 20, 2, textColor )
|
||||
RL.DrawText( RL.GetFontDefault(), "Congrats! You created your first window!", textPos, 20, 2, textColor )
|
||||
end
|
||||
```
|
||||
|
||||
|
||||
@@ -1951,15 +1951,14 @@ function RL.GetFileModTime( fileName ) end
|
||||
|
||||
---Compress data (DEFLATE algorithm)
|
||||
---- Success return Buffer
|
||||
---@param data string
|
||||
---@param buffer any
|
||||
---@return any compData
|
||||
function RL.CompressData( data ) end
|
||||
function RL.CompressData( buffer ) end
|
||||
|
||||
---Decompress data (DEFLATE algorithm).
|
||||
---- Success return string, int
|
||||
---- Success Buffer
|
||||
---@param compData any
|
||||
---@return any data
|
||||
---@return any dataSize
|
||||
---@return any decompData
|
||||
function RL.DecompressData( compData ) end
|
||||
|
||||
---Encode data to Base64 string
|
||||
@@ -2301,6 +2300,20 @@ function RL.GetBufferType( buffer ) end
|
||||
---@return any size
|
||||
function RL.GetBufferSize( buffer ) end
|
||||
|
||||
---Write buffer data to binary file
|
||||
---@param buffer any
|
||||
---@param path string
|
||||
---@return any RL.ExportBuffer
|
||||
function RL.ExportBuffer( buffer, path ) end
|
||||
|
||||
---Read buffer data from binary file
|
||||
---- Failure return nil
|
||||
---- Success return Buffer
|
||||
---@param path string
|
||||
---@param int any
|
||||
---@return any buffer
|
||||
function RL.LoadBufferFromFile( path, int ) end
|
||||
|
||||
-- Shapes - Drawing
|
||||
|
||||
---Set texture and rectangle to be used on shapes drawing
|
||||
|
||||
@@ -39,6 +39,7 @@ DETAILED CHANGES:
|
||||
- ADDED: CompressData, DecompressData, EncodeDataBase64 and DecodeDataBase64.
|
||||
- ADDED: GetBufferType and GetBufferSize.
|
||||
- ADDED: Compress data example.
|
||||
- ADDED: ExportBuffer and LoadBufferFromFile.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Release: ReiLua version 0.5.0 Using Raylib 4.5
|
||||
|
||||
@@ -201,3 +201,5 @@ int lcoreUnloadBuffer( lua_State *L );
|
||||
int lcoreGetBufferData( lua_State *L );
|
||||
int lcoreGetBufferType( lua_State *L );
|
||||
int lcoreGetBufferSize( lua_State *L );
|
||||
int lcoreExportBuffer( lua_State *L );
|
||||
int lcoreLoadBufferFromFile( lua_State *L );
|
||||
|
||||
151
src/core.c
151
src/core.c
@@ -4,6 +4,20 @@
|
||||
#include "textures.h"
|
||||
#include "lua_core.h"
|
||||
|
||||
static int getBufferElementSize( Buffer *buffer ) {
|
||||
switch ( buffer->type ) {
|
||||
case BUFFER_UNSIGNED_CHAR: return sizeof( unsigned char );
|
||||
case BUFFER_UNSIGNED_SHORT: return sizeof( unsigned short );
|
||||
case BUFFER_UNSIGNED_INT: return sizeof( unsigned int );
|
||||
case BUFFER_CHAR: return sizeof( char );
|
||||
case BUFFER_SHORT: return sizeof( short );
|
||||
case BUFFER_INT: return sizeof( int );
|
||||
case BUFFER_FLOAT: return sizeof( float );
|
||||
case BUFFER_DOUBLE: return sizeof( double );
|
||||
default: 1;
|
||||
}
|
||||
}
|
||||
|
||||
void unloadBuffer( Buffer *buffer ) {
|
||||
free( buffer->data );
|
||||
|
||||
@@ -790,30 +804,12 @@ int lcoreLoadShader( lua_State *L ) {
|
||||
lua_pushnil( L );
|
||||
return 1;
|
||||
}
|
||||
char *vsFileName = NULL;
|
||||
char *fsFileName = NULL;
|
||||
/* Will result to NULL if given nil. */
|
||||
const char *vsFileName = lua_tostring( L, 1 );
|
||||
const char *fsFileName = lua_tostring( L, 2 );
|
||||
|
||||
if ( lua_isstring( L, 1 ) ) {
|
||||
if ( FileExists( lua_tostring( L, 1 ) ) ) {
|
||||
vsFileName = malloc( STRING_LEN * sizeof( char ) );
|
||||
strcpy( vsFileName, lua_tostring( L, 1 ) );
|
||||
}
|
||||
}
|
||||
if ( lua_isstring( L, 2 ) ) {
|
||||
if ( FileExists( lua_tostring( L, 2 ) ) ) {
|
||||
fsFileName = malloc( STRING_LEN * sizeof( char ) );
|
||||
strcpy( fsFileName, lua_tostring( L, 2 ) );
|
||||
}
|
||||
}
|
||||
uluaPushShader( L, LoadShader( vsFileName, fsFileName ) );
|
||||
|
||||
if ( vsFileName != NULL ) {
|
||||
free( vsFileName );
|
||||
}
|
||||
if ( fsFileName != NULL ) {
|
||||
free( fsFileName );
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -833,30 +829,12 @@ int lcoreLoadShaderFromMemory( lua_State *L ) {
|
||||
lua_pushnil( L );
|
||||
return 1;
|
||||
}
|
||||
char *vs = NULL;
|
||||
char *fs = NULL;
|
||||
/* Will result to NULL if given nil. */
|
||||
const char *vs = lua_tostring( L, 1 );
|
||||
const char *fs = lua_tostring( L, 2 );
|
||||
|
||||
if ( lua_isstring( L, 1 ) ) {
|
||||
size_t vsLen = uluaGetTableLen( L, 1 ) + 1;
|
||||
|
||||
vs = malloc( vsLen * sizeof( char ) );
|
||||
strcpy( vs, lua_tostring( L, 1 ) );
|
||||
}
|
||||
if ( lua_isstring( L, 2 ) ) {
|
||||
size_t fsLen = uluaGetTableLen( L, 2 ) + 1;
|
||||
|
||||
fs = malloc( fsLen * sizeof( char ) );
|
||||
strcpy( fs, lua_tostring( L, 2 ) );
|
||||
}
|
||||
uluaPushShader( L, LoadShaderFromMemory( vs, fs ) );
|
||||
|
||||
if ( vs != NULL ) {
|
||||
free( vs );
|
||||
}
|
||||
if ( fs != NULL ) {
|
||||
free( fs );
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1935,7 +1913,7 @@ int lcoreGetFileModTime( lua_State *L ) {
|
||||
*/
|
||||
|
||||
/*
|
||||
> compData = RL.CompressData( string data )
|
||||
> compData = RL.CompressData( Buffer buffer )
|
||||
|
||||
Compress data (DEFLATE algorithm)
|
||||
|
||||
@@ -1959,11 +1937,11 @@ int lcoreCompressData( lua_State *L ) {
|
||||
}
|
||||
|
||||
/*
|
||||
> data, dataSize = RL.DecompressData( Buffer compData )
|
||||
> decompData = RL.DecompressData( Buffer compData )
|
||||
|
||||
Decompress data (DEFLATE algorithm).
|
||||
|
||||
- Success return string, int
|
||||
- Success Buffer
|
||||
*/
|
||||
int lcoreDecompressData( lua_State *L ) {
|
||||
Buffer *inBuffer = uluaGetBuffer( L, 1 );
|
||||
@@ -2733,34 +2711,7 @@ int lcoreLoadBuffer( lua_State *L ) {
|
||||
};
|
||||
int len = uluaGetTableLen( L, 1 );
|
||||
|
||||
switch ( type ) {
|
||||
case BUFFER_UNSIGNED_CHAR:
|
||||
buffer.size = len * sizeof( unsigned char );
|
||||
break;
|
||||
case BUFFER_UNSIGNED_SHORT:
|
||||
buffer.size = len * sizeof( unsigned short );
|
||||
break;
|
||||
case BUFFER_UNSIGNED_INT:
|
||||
buffer.size = len * sizeof( unsigned int );
|
||||
break;
|
||||
case BUFFER_CHAR:
|
||||
buffer.size = len * sizeof( char );
|
||||
break;
|
||||
case BUFFER_SHORT:
|
||||
buffer.size = len * sizeof( short );
|
||||
break;
|
||||
case BUFFER_INT:
|
||||
buffer.size = len * sizeof( int );
|
||||
break;
|
||||
case BUFFER_FLOAT:
|
||||
buffer.size = len * sizeof( float );
|
||||
break;
|
||||
case BUFFER_DOUBLE:
|
||||
buffer.size = len * sizeof( double );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
buffer.size = len * getBufferElementSize( &buffer );
|
||||
buffer.data = malloc( buffer.size );
|
||||
|
||||
int t = 1;
|
||||
@@ -2965,3 +2916,57 @@ int lcoreGetBufferSize( lua_State *L ) {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
> RL.ExportBuffer( Buffer buffer, string path )
|
||||
|
||||
Write buffer data to binary file
|
||||
*/
|
||||
int lcoreExportBuffer( lua_State *L ) {
|
||||
Buffer *buffer = uluaGetBuffer( L, 1 );
|
||||
const char *path = luaL_checkstring( L, 2 );
|
||||
|
||||
size_t elementSize = getBufferElementSize( buffer );
|
||||
FILE *file;
|
||||
file = fopen( path, "wb" );
|
||||
|
||||
fwrite( buffer->data, elementSize, buffer->size / elementSize, file ) ;
|
||||
fclose( file );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
> buffer = RL.LoadBufferFromFile( string path, type int )
|
||||
|
||||
Read buffer data from binary file
|
||||
|
||||
- Failure return nil
|
||||
- Success return Buffer
|
||||
*/
|
||||
int lcoreLoadBufferFromFile( lua_State *L ) {
|
||||
int type = luaL_checkinteger( L, 2 );
|
||||
const char *path = luaL_checkstring( L, 1 );
|
||||
|
||||
int fileLen = GetFileLength( path );
|
||||
Buffer buffer = {
|
||||
.type = type,
|
||||
.size = fileLen,
|
||||
.data = malloc( fileLen )
|
||||
};
|
||||
size_t elementSize = getBufferElementSize( &buffer );
|
||||
FILE *file;
|
||||
file = fopen( path, "rb" );
|
||||
|
||||
if ( file == NULL ) {
|
||||
TraceLog( LOG_WARNING, "Invalid file %s\n", path );
|
||||
lua_pushnil( L );
|
||||
return 1;
|
||||
}
|
||||
fread( buffer.data, elementSize, buffer.size / elementSize, file );
|
||||
fclose( file );
|
||||
|
||||
uluaPushBuffer( L, buffer );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1698,6 +1698,8 @@ void luaRegister() {
|
||||
assingGlobalFunction( "GetBufferData", lcoreGetBufferData );
|
||||
assingGlobalFunction( "GetBufferType", lcoreGetBufferType );
|
||||
assingGlobalFunction( "GetBufferSize", lcoreGetBufferSize );
|
||||
assingGlobalFunction( "ExportBuffer", lcoreExportBuffer );
|
||||
assingGlobalFunction( "LoadBufferFromFile", lcoreLoadBufferFromFile );
|
||||
|
||||
/* Shapes. */
|
||||
/* Drawing. */
|
||||
|
||||
Reference in New Issue
Block a user