From 737214b71be8fe5fdf51155ad50bb064b3156bd3 Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Mon, 3 Nov 2025 17:48:56 +0530 Subject: Add embedded assets, splash screens, and asset loading support Features added: - Embedded main.lua and Lua files support (EMBED_MAIN option) - Embedded assets support (EMBED_ASSETS option) - Splash screens with dual logo display (always embedded) - Asset loading progress tracking API (BeginAssetLoading, UpdateAssetLoading, EndAssetLoading) - Custom font embedding for splash/loading screens - --log flag for Windows console control - --no-logo flag to skip splash screens in development - Python scripts for embedding (embed_lua.py, embed_assets.py, embed_logo.py, embed_font.py) - Documentation (EMBEDDING.md, ASSET_LOADING.md, SPLASH_SCREENS.md) This allows building single-executable releases with all Lua code and assets embedded. --- embed_logo.py | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 embed_logo.py (limited to 'embed_logo.py') diff --git a/embed_logo.py b/embed_logo.py new file mode 100644 index 0000000..e6b645e --- /dev/null +++ b/embed_logo.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python3 +""" +Embed logo image files into C header for splash screens. +Usage: python embed_logo.py +""" + +import sys +import os + +def embed_file(file_path, var_name): + """Convert a file to a C byte array""" + with open(file_path, 'rb') as f: + data = f.read() + + output = f"/* {os.path.basename(file_path)} */\n" + output += f"static const unsigned char {var_name}[] = {{\n" + + # Write bytes in rows of 16 + for i in range(0, len(data), 16): + chunk = data[i:i+16] + hex_values = ', '.join(f'0x{b:02x}' for b in chunk) + output += f" {hex_values},\n" + + output += "};\n" + output += f"static const unsigned int {var_name}_size = {len(data)};\n\n" + + return output + +def main(): + if len(sys.argv) != 4: + print("Usage: python embed_logo.py ") + sys.exit(1) + + output_file = sys.argv[1] + raylib_logo = sys.argv[2] + reilua_logo = sys.argv[3] + + # Check if files exist + if not os.path.exists(raylib_logo): + print(f"Error: {raylib_logo} not found!") + sys.exit(1) + + if not os.path.exists(reilua_logo): + print(f"Error: {reilua_logo} not found!") + sys.exit(1) + + # Generate header content + header_content = "/* Auto-generated embedded logo files */\n" + header_content += "#pragma once\n\n" + + # Embed both logo files + header_content += embed_file(raylib_logo, "embedded_raylib_logo") + header_content += embed_file(reilua_logo, "embedded_reilua_logo") + + # Write to output file + with open(output_file, 'w') as f: + f.write(header_content) + + print(f"Generated {output_file}") + print(f" - Embedded {raylib_logo} ({os.path.getsize(raylib_logo)} bytes)") + print(f" - Embedded {reilua_logo} ({os.path.getsize(reilua_logo)} bytes)") + +if __name__ == "__main__": + main() -- cgit v1.2.3