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)
|
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).
|
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
|
## Shapes - Drawing
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ end
|
|||||||
|
|
||||||
function RL.draw()
|
function RL.draw()
|
||||||
RL.ClearBackground( RL.RAYWHITE )
|
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
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1951,15 +1951,14 @@ function RL.GetFileModTime( fileName ) end
|
|||||||
|
|
||||||
---Compress data (DEFLATE algorithm)
|
---Compress data (DEFLATE algorithm)
|
||||||
---- Success return Buffer
|
---- Success return Buffer
|
||||||
---@param data string
|
---@param buffer any
|
||||||
---@return any compData
|
---@return any compData
|
||||||
function RL.CompressData( data ) end
|
function RL.CompressData( buffer ) end
|
||||||
|
|
||||||
---Decompress data (DEFLATE algorithm).
|
---Decompress data (DEFLATE algorithm).
|
||||||
---- Success return string, int
|
---- Success Buffer
|
||||||
---@param compData any
|
---@param compData any
|
||||||
---@return any data
|
---@return any decompData
|
||||||
---@return any dataSize
|
|
||||||
function RL.DecompressData( compData ) end
|
function RL.DecompressData( compData ) end
|
||||||
|
|
||||||
---Encode data to Base64 string
|
---Encode data to Base64 string
|
||||||
@@ -2301,6 +2300,20 @@ function RL.GetBufferType( buffer ) end
|
|||||||
---@return any size
|
---@return any size
|
||||||
function RL.GetBufferSize( buffer ) end
|
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
|
-- Shapes - Drawing
|
||||||
|
|
||||||
---Set texture and rectangle to be used on 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: CompressData, DecompressData, EncodeDataBase64 and DecodeDataBase64.
|
||||||
- ADDED: GetBufferType and GetBufferSize.
|
- ADDED: GetBufferType and GetBufferSize.
|
||||||
- ADDED: Compress data example.
|
- ADDED: Compress data example.
|
||||||
|
- ADDED: ExportBuffer and LoadBufferFromFile.
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
Release: ReiLua version 0.5.0 Using Raylib 4.5
|
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 lcoreGetBufferData( lua_State *L );
|
||||||
int lcoreGetBufferType( lua_State *L );
|
int lcoreGetBufferType( lua_State *L );
|
||||||
int lcoreGetBufferSize( 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 "textures.h"
|
||||||
#include "lua_core.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 ) {
|
void unloadBuffer( Buffer *buffer ) {
|
||||||
free( buffer->data );
|
free( buffer->data );
|
||||||
|
|
||||||
@@ -790,30 +804,12 @@ int lcoreLoadShader( lua_State *L ) {
|
|||||||
lua_pushnil( L );
|
lua_pushnil( L );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
char *vsFileName = NULL;
|
/* Will result to NULL if given nil. */
|
||||||
char *fsFileName = NULL;
|
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 ) );
|
uluaPushShader( L, LoadShader( vsFileName, fsFileName ) );
|
||||||
|
|
||||||
if ( vsFileName != NULL ) {
|
|
||||||
free( vsFileName );
|
|
||||||
}
|
|
||||||
if ( fsFileName != NULL ) {
|
|
||||||
free( fsFileName );
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -833,30 +829,12 @@ int lcoreLoadShaderFromMemory( lua_State *L ) {
|
|||||||
lua_pushnil( L );
|
lua_pushnil( L );
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
char *vs = NULL;
|
/* Will result to NULL if given nil. */
|
||||||
char *fs = NULL;
|
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 ) );
|
uluaPushShader( L, LoadShaderFromMemory( vs, fs ) );
|
||||||
|
|
||||||
if ( vs != NULL ) {
|
|
||||||
free( vs );
|
|
||||||
}
|
|
||||||
if ( fs != NULL ) {
|
|
||||||
free( fs );
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
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)
|
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).
|
Decompress data (DEFLATE algorithm).
|
||||||
|
|
||||||
- Success return string, int
|
- Success Buffer
|
||||||
*/
|
*/
|
||||||
int lcoreDecompressData( lua_State *L ) {
|
int lcoreDecompressData( lua_State *L ) {
|
||||||
Buffer *inBuffer = uluaGetBuffer( L, 1 );
|
Buffer *inBuffer = uluaGetBuffer( L, 1 );
|
||||||
@@ -2733,34 +2711,7 @@ int lcoreLoadBuffer( lua_State *L ) {
|
|||||||
};
|
};
|
||||||
int len = uluaGetTableLen( L, 1 );
|
int len = uluaGetTableLen( L, 1 );
|
||||||
|
|
||||||
switch ( type ) {
|
buffer.size = len * getBufferElementSize( &buffer );
|
||||||
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.data = malloc( buffer.size );
|
buffer.data = malloc( buffer.size );
|
||||||
|
|
||||||
int t = 1;
|
int t = 1;
|
||||||
@@ -2965,3 +2916,57 @@ int lcoreGetBufferSize( lua_State *L ) {
|
|||||||
|
|
||||||
return 1;
|
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( "GetBufferData", lcoreGetBufferData );
|
||||||
assingGlobalFunction( "GetBufferType", lcoreGetBufferType );
|
assingGlobalFunction( "GetBufferType", lcoreGetBufferType );
|
||||||
assingGlobalFunction( "GetBufferSize", lcoreGetBufferSize );
|
assingGlobalFunction( "GetBufferSize", lcoreGetBufferSize );
|
||||||
|
assingGlobalFunction( "ExportBuffer", lcoreExportBuffer );
|
||||||
|
assingGlobalFunction( "LoadBufferFromFile", lcoreLoadBufferFromFile );
|
||||||
|
|
||||||
/* Shapes. */
|
/* Shapes. */
|
||||||
/* Drawing. */
|
/* Drawing. */
|
||||||
|
|||||||
Reference in New Issue
Block a user