sim: embedd background bmp and load from memory

Loading the file from disk introduces a slight dependency on the working
directory for the simulator. Prevent that by loading the bmp from
memory.

Use a python script to convert the backround bmp image to a C header
file. Include this header in `main.cpp` and load the bmp from memory.
This commit is contained in:
Reinhold Gschweicher
2023-05-08 18:30:13 +02:00
parent 1c479a2875
commit aa34f93161
4 changed files with 57 additions and 2 deletions

21
img/convert_bmp_to_header.py Executable file
View File

@@ -0,0 +1,21 @@
#!/usr/bin/env python3
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("bmp",
help="Path to bmp to convert to C header file")
parser.add_argument("--var-name",
help="name of the variable to make the bmp data available",
default="IMAGE_DATA")
parser.add_argument("-o", "--output",
help="Path where to create C header file",
required=True)
args = parser.parse_args()
with open(args.output, "w", encoding="utf-8") as f:
# conversion script based on:
# https://stackoverflow.com/questions/18422123/sdl-embed-image-inside-program-executable
f.write("static const unsigned char {:s}[] = {{{:s}}};".format(
args.var_name,
",".join(str(b) for b in open(args.bmp, "rb").read())))