@@ -32,7 +32,7 @@ static int cmd_checkcollisionboxsphere(int argc, slib_par_t *params, var_t *retv
3232}
3333
3434//
35- // Check if circle collides with a line created betweeen two points [p1] and [p2]
35+ // Check if circle collides with a line created between two points [p1] and [p2]
3636//
3737static int cmd_checkcollisioncircleline (int argc , slib_par_t * params , var_t * retval ) {
3838 auto center = get_param_vec2 (argc , params , 0 );
@@ -328,7 +328,7 @@ static int cmd_compressdata(int argc, slib_par_t *params, var_t *retval) {
328328// Compute CRC32 hash code
329329//
330330static int cmd_computecrc32 (int argc , slib_par_t * params , var_t * retval ) {
331- auto data = (unsigned char * )get_param_str (argc , params , 0 , 0 );
331+ auto data = (const unsigned char * )get_param_str (argc , params , 0 , 0 );
332332 auto dataSize = get_param_int (argc , params , 1 , 0 );
333333 auto fnResult = ComputeCRC32 (data , dataSize );
334334 v_setint (retval , fnResult );
@@ -339,7 +339,7 @@ static int cmd_computecrc32(int argc, slib_par_t *params, var_t *retval) {
339339// Compute MD5 hash code, returns static int[4] (16 bytes)
340340//
341341static int cmd_computemd5 (int argc , slib_par_t * params , var_t * retval ) {
342- auto data = (unsigned char * )get_param_str (argc , params , 0 , 0 );
342+ auto data = (const unsigned char * )get_param_str (argc , params , 0 , 0 );
343343 auto dataSize = get_param_int (argc , params , 1 , 0 );
344344 auto fnResult = (var_int_t )ComputeMD5 (data , dataSize );
345345 v_setint (retval , fnResult );
@@ -350,7 +350,7 @@ static int cmd_computemd5(int argc, slib_par_t *params, var_t *retval) {
350350// Compute SHA1 hash code, returns static int[5] (20 bytes)
351351//
352352static int cmd_computesha1 (int argc , slib_par_t * params , var_t * retval ) {
353- auto data = (unsigned char * )get_param_str (argc , params , 0 , 0 );
353+ auto data = (const unsigned char * )get_param_str (argc , params , 0 , 0 );
354354 auto dataSize = get_param_int (argc , params , 1 , 0 );
355355 auto fnResult = (var_int_t )ComputeSHA1 (data , dataSize );
356356 v_setint (retval , fnResult );
@@ -361,7 +361,7 @@ static int cmd_computesha1(int argc, slib_par_t *params, var_t *retval) {
361361// Compute SHA256 hash code, returns static int[8] (32 bytes)
362362//
363363static int cmd_computesha256 (int argc , slib_par_t * params , var_t * retval ) {
364- auto data = (unsigned char * )get_param_str (argc , params , 0 , 0 );
364+ auto data = (const unsigned char * )get_param_str (argc , params , 0 , 0 );
365365 auto dataSize = get_param_int (argc , params , 1 , 0 );
366366 auto fnResult = (var_int_t )ComputeSHA256 (data , dataSize );
367367 v_setint (retval , fnResult );
@@ -497,7 +497,7 @@ static int cmd_exportimageascode(int argc, slib_par_t *params, var_t *retval) {
497497}
498498
499499//
500- // Export image to memory buffer
500+ // Export image to memory buffer, memory must be MemFree()
501501//
502502static int cmd_exportimagetomemory (int argc , slib_par_t * params , var_t * retval ) {
503503 int result ;
@@ -1062,6 +1062,28 @@ static int cmd_getcurrentmonitor(int argc, slib_par_t *params, var_t *retval) {
10621062 return 1 ;
10631063}
10641064
1065+ //
1066+ // Get the file count in a directory
1067+ //
1068+ static int cmd_getdirectoryfilecount (int argc , slib_par_t * params , var_t * retval ) {
1069+ auto dirPath = get_param_str (argc , params , 0 , 0 );
1070+ auto fnResult = GetDirectoryFileCount (dirPath );
1071+ v_setint (retval , fnResult );
1072+ return 1 ;
1073+ }
1074+
1075+ //
1076+ // Get the file count in a directory with extension filtering and recursive directory scan. Use 'DIR' in the filter string to include directories in the result
1077+ //
1078+ static int cmd_getdirectoryfilecountex (int argc , slib_par_t * params , var_t * retval ) {
1079+ auto basePath = get_param_str (argc , params , 0 , 0 );
1080+ auto filter = get_param_str (argc , params , 1 , 0 );
1081+ auto scanSubdirs = get_param_int (argc , params , 2 , 0 );
1082+ auto fnResult = GetDirectoryFileCountEx (basePath , filter , scanSubdirs );
1083+ v_setint (retval , fnResult );
1084+ return 1 ;
1085+ }
1086+
10651087//
10661088// Get full path for a given fileName with path (uses static string)
10671089//
@@ -1661,7 +1683,7 @@ static int cmd_getscreenheight(int argc, slib_par_t *params, var_t *retval) {
16611683}
16621684
16631685//
1664- // Get the world space position for a 2d camera screen space position
1686+ // Get world space position for a 2d camera screen space position
16651687//
16661688static int cmd_getscreentoworld2d (int argc , slib_par_t * params , var_t * retval ) {
16671689 auto position = get_param_vec2 (argc , params , 0 );
@@ -1775,12 +1797,12 @@ static int cmd_getsplinepointbeziercubic(int argc, slib_par_t *params, var_t *re
17751797//
17761798// Get (evaluate) spline point: Quadratic Bezier
17771799//
1778- static int cmd_getsplinepointbezierquad (int argc , slib_par_t * params , var_t * retval ) {
1800+ static int cmd_getsplinepointbezierquadratic (int argc , slib_par_t * params , var_t * retval ) {
17791801 auto p1 = get_param_vec2 (argc , params , 0 );
17801802 auto c2 = get_param_vec2 (argc , params , 1 );
17811803 auto p3 = get_param_vec2 (argc , params , 2 );
17821804 auto t = get_param_num (argc , params , 3 , 0 );
1783- auto fnResult = GetSplinePointBezierQuad (p1 , c2 , p3 , t );
1805+ auto fnResult = GetSplinePointBezierQuadratic (p1 , c2 , p3 , t );
17841806 v_setvec2 (retval , fnResult );
17851807 return 1 ;
17861808}
@@ -1916,7 +1938,7 @@ static int cmd_getworkingdirectory(int argc, slib_par_t *params, var_t *retval)
19161938}
19171939
19181940//
1919- // Get the screen space position for a 3d world space position
1941+ // Get screen space position for a 3d world space position
19201942//
19211943static int cmd_getworldtoscreen (int argc , slib_par_t * params , var_t * retval ) {
19221944 auto position = get_param_vec3 (argc , params , 0 );
@@ -1927,7 +1949,7 @@ static int cmd_getworldtoscreen(int argc, slib_par_t *params, var_t *retval) {
19271949}
19281950
19291951//
1930- // Get the screen space position for a 2d camera world space position
1952+ // Get screen space position for a 2d camera world space position
19311953//
19321954static int cmd_getworldtoscreen2d (int argc , slib_par_t * params , var_t * retval ) {
19331955 auto position = get_param_vec2 (argc , params , 0 );
@@ -1938,7 +1960,7 @@ static int cmd_getworldtoscreen2d(int argc, slib_par_t *params, var_t *retval) {
19381960}
19391961
19401962//
1941- // Get size position for a 3d world space position
1963+ // Get sized screen space position for a 3d world space position
19421964//
19431965static int cmd_getworldtoscreenex (int argc , slib_par_t * params , var_t * retval ) {
19441966 auto position = get_param_vec3 (argc , params , 0 );
@@ -2074,7 +2096,7 @@ static int cmd_isaudiostreamprocessed(int argc, slib_par_t *params, var_t *retva
20742096}
20752097
20762098//
2077- // Checks if an audio stream is valid (buffers initialized)
2099+ // Check if an audio stream is valid (buffers initialized)
20782100//
20792101static int cmd_isaudiostreamvalid (int argc , slib_par_t * params , var_t * retval ) {
20802102 int result ;
@@ -2208,7 +2230,7 @@ static int cmd_isgamepadbuttonup(int argc, slib_par_t *params, var_t *retval) {
22082230}
22092231
22102232//
2211- // Check if a gesture have been detected
2233+ // Check if a gesture has been detected
22122234//
22132235static int cmd_isgesturedetected (int argc , slib_par_t * params , var_t * retval ) {
22142236 auto gesture = get_param_int (argc , params , 0 , 0 );
@@ -2373,7 +2395,7 @@ static int cmd_ismusicstreamplaying(int argc, slib_par_t *params, var_t *retval)
23732395}
23742396
23752397//
2376- // Checks if a music stream is valid (context and buffers initialized)
2398+ // Check if a music stream is valid (context and buffers initialized)
23772399//
23782400static int cmd_ismusicvalid (int argc , slib_par_t * params , var_t * retval ) {
23792401 int result ;
@@ -2441,7 +2463,7 @@ static int cmd_issoundplaying(int argc, slib_par_t *params, var_t *retval) {
24412463}
24422464
24432465//
2444- // Checks if a sound is valid (data loaded and buffers initialized)
2466+ // Check if a sound is valid (data loaded and buffers initialized)
24452467//
24462468static int cmd_issoundvalid (int argc , slib_par_t * params , var_t * retval ) {
24472469 int result ;
@@ -2473,7 +2495,7 @@ static int cmd_istexturevalid(int argc, slib_par_t *params, var_t *retval) {
24732495}
24742496
24752497//
2476- // Checks if wave data is valid (data loaded and parameters)
2498+ // Check if wave data is valid (data loaded and parameters)
24772499//
24782500static int cmd_iswavevalid (int argc , slib_par_t * params , var_t * retval ) {
24792501 int result ;
@@ -2595,7 +2617,7 @@ static int cmd_loadcodepoints(int argc, slib_par_t *params, var_t *retval) {
25952617}
25962618
25972619//
2598- // Load directory filepaths
2620+ // Load directory filepaths, files and directories, no subdirs scan
25992621//
26002622static int cmd_loaddirectoryfiles (int argc , slib_par_t * params , var_t * retval ) {
26012623 auto dirPath = get_param_str (argc , params , 0 , 0 );
@@ -2605,7 +2627,7 @@ static int cmd_loaddirectoryfiles(int argc, slib_par_t *params, var_t *retval) {
26052627}
26062628
26072629//
2608- // Load directory filepaths with extension filtering and recursive directory scan. Use 'DIR' in the filter string to include directories in the result
2630+ // Load directory filepaths with extension filtering and subdir scan; some filters available: `*.*`,`FILES*`,`DIRS*`
26092631//
26102632static int cmd_loaddirectoryfilesex (int argc , slib_par_t * params , var_t * retval ) {
26112633 auto basePath = get_param_str (argc , params , 0 , 0 );
@@ -2767,7 +2789,7 @@ static int cmd_loadimagefrommemory(int argc, slib_par_t *params, var_t *retval)
27672789}
27682790
27692791//
2770- // Load image from screen buffer and (screenshot)
2792+ // Load image from screen buffer (screenshot)
27712793//
27722794static int cmd_loadimagefromscreen (int argc , slib_par_t * params , var_t * retval ) {
27732795 auto fnResult = LoadImageFromScreen ();
@@ -2905,7 +2927,7 @@ static int cmd_loadsound(int argc, slib_par_t *params, var_t *retval) {
29052927}
29062928
29072929//
2908- // Create a new sound that shares the same sample data as the source sound, does not own the sound data
2930+ // Load sound alias, new sound that shares the same sample data as the source sound, does not own the sound data
29092931//
29102932static int cmd_loadsoundalias (int argc , slib_par_t * params , var_t * retval ) {
29112933 int result ;
@@ -3049,6 +3071,26 @@ static int cmd_measuretext(int argc, slib_par_t *params, var_t *retval) {
30493071 return 1 ;
30503072}
30513073
3074+ //
3075+ // Measure string size for an existing array of codepoints for Font
3076+ //
3077+ static int cmd_measuretextcodepoints (int argc , slib_par_t * params , var_t * retval ) {
3078+ int result ;
3079+ int font_id = get_font_id (argc , params , 0 , retval );
3080+ if (font_id != -1 ) {
3081+ auto codepoints = (const int * )get_param_int_t (argc , params , 1 , 0 );
3082+ auto length = get_param_int (argc , params , 2 , 0 );
3083+ auto fontSize = get_param_num (argc , params , 3 , 0 );
3084+ auto spacing = get_param_num (argc , params , 4 , 0 );
3085+ auto fnResult = MeasureTextCodepoints (_fontMap .at (font_id ), codepoints , length , fontSize , spacing );
3086+ v_setvec2 (retval , fnResult );
3087+ result = 1 ;
3088+ } else {
3089+ result = 0 ;
3090+ }
3091+ return result ;
3092+ }
3093+
30523094//
30533095// Measure string size for Font
30543096//
@@ -3094,7 +3136,7 @@ static int cmd_memrealloc(int argc, slib_par_t *params, var_t *retval) {
30943136//
30953137static int cmd_savefiledata (int argc , slib_par_t * params , var_t * retval ) {
30963138 auto fileName = get_param_str (argc , params , 0 , 0 );
3097- auto data = (void * )get_param_int_t (argc , params , 1 , 0 );
3139+ auto data = (const void * )get_param_int_t (argc , params , 1 , 0 );
30983140 auto dataSize = get_param_int (argc , params , 2 , 0 );
30993141 auto fnResult = SaveFileData (fileName , data , dataSize );
31003142 v_setint (retval , fnResult );
@@ -3145,7 +3187,7 @@ static int cmd_textfindindex(int argc, slib_par_t *params, var_t *retval) {
31453187}
31463188
31473189//
3148- // Insert text in a position (WARNING: memory must be freed!)
3190+ // Insert text in a defined byte position
31493191//
31503192static int cmd_textinsert (int argc , slib_par_t * params , var_t * retval ) {
31513193 auto text = get_param_str (argc , params , 0 , 0 );
@@ -3157,7 +3199,19 @@ static int cmd_textinsert(int argc, slib_par_t *params, var_t *retval) {
31573199}
31583200
31593201//
3160- // Check if two text string are equal
3202+ // Insert text in a defined byte position, memory must be MemFree()
3203+ //
3204+ static int cmd_textinsertalloc (int argc , slib_par_t * params , var_t * retval ) {
3205+ auto text = get_param_str (argc , params , 0 , 0 );
3206+ auto insert = get_param_str (argc , params , 1 , 0 );
3207+ auto position = get_param_int (argc , params , 2 , 0 );
3208+ auto fnResult = (const char * )TextInsertAlloc (text , insert , position );
3209+ v_setstr (retval , fnResult );
3210+ return 1 ;
3211+ }
3212+
3213+ //
3214+ // Check if two text strings are equal
31613215//
31623216static int cmd_textisequal (int argc , slib_par_t * params , var_t * retval ) {
31633217 auto text1 = get_param_str (argc , params , 0 , 0 );
@@ -3188,7 +3242,7 @@ static int cmd_textremovespaces(int argc, slib_par_t *params, var_t *retval) {
31883242}
31893243
31903244//
3191- // Replace text string (WARNING: memory must be freed!)
3245+ // Replace text string with new string
31923246//
31933247static int cmd_textreplace (int argc , slib_par_t * params , var_t * retval ) {
31943248 auto text = get_param_str (argc , params , 0 , 0 );
@@ -3200,7 +3254,19 @@ static int cmd_textreplace(int argc, slib_par_t *params, var_t *retval) {
32003254}
32013255
32023256//
3203- // Replace text between two specific strings (WARNING: memory must be freed!)
3257+ // Replace text string with new string, memory must be MemFree()
3258+ //
3259+ static int cmd_textreplacealloc (int argc , slib_par_t * params , var_t * retval ) {
3260+ auto text = get_param_str (argc , params , 0 , 0 );
3261+ auto search = get_param_str (argc , params , 1 , 0 );
3262+ auto replacement = get_param_str (argc , params , 2 , 0 );
3263+ auto fnResult = (const char * )TextReplaceAlloc (text , search , replacement );
3264+ v_setstr (retval , fnResult );
3265+ return 1 ;
3266+ }
3267+
3268+ //
3269+ // Replace text between two specific strings
32043270//
32053271static int cmd_textreplacebetween (int argc , slib_par_t * params , var_t * retval ) {
32063272 auto text = get_param_str (argc , params , 0 , 0 );
@@ -3212,6 +3278,19 @@ static int cmd_textreplacebetween(int argc, slib_par_t *params, var_t *retval) {
32123278 return 1 ;
32133279}
32143280
3281+ //
3282+ // Replace text between two specific strings, memory must be MemFree()
3283+ //
3284+ static int cmd_textreplacebetweenalloc (int argc , slib_par_t * params , var_t * retval ) {
3285+ auto text = get_param_str (argc , params , 0 , 0 );
3286+ auto begin = get_param_str (argc , params , 1 , 0 );
3287+ auto end = get_param_str (argc , params , 2 , 0 );
3288+ auto replacement = get_param_str (argc , params , 3 , 0 );
3289+ auto fnResult = (const char * )TextReplaceBetweenAlloc (text , begin , end , replacement );
3290+ v_setstr (retval , fnResult );
3291+ return 1 ;
3292+ }
3293+
32153294//
32163295// Get a piece of a text string
32173296//
0 commit comments