From 9e005da20d93e3c2d36c98236de9ecb5cd6cf271 Mon Sep 17 00:00:00 2001 From: Rahix <rahix@rahix.de> Date: Sun, 10 Nov 2019 22:25:24 +0100 Subject: [PATCH] feat(tools): Rewrite imageconvert script Rewrite image-convert script to more easily change the version splash screen. Signed-off-by: Rahix <rahix@rahix.de> --- tools/imageconvert.py | 30 ---------------------- tools/version-image.py | 58 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 30 deletions(-) delete mode 100755 tools/imageconvert.py create mode 100755 tools/version-image.py diff --git a/tools/imageconvert.py b/tools/imageconvert.py deleted file mode 100755 index 72ea3613..00000000 --- a/tools/imageconvert.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python3 - -from PIL import Image -import sys - -if len(sys.argv) < 2: - print("Usage: %s <image file>" % sys.argv[0]) - sys.exit(1) - -im = Image.open(sys.argv[1]) - -out_name = '.'.join(sys.argv[1].split('.')[:-1]) - -print(out_name) -out = open(out_name + ".h", 'w') - -out.write("const unsigned char %s[] = {\n" % out_name.split('/')[-1]) - -for x in range(im.size[1]): - for y in range(im.size[0]): - px = im.getpixel((y, x)) - - px16 = ((px[0] >> 3) << 11) | ((px[1] >> 2) << 5) | (px[2] >> 3) - - px16h = (px16 & 0xFF00) >> 8 - px16l = px16 & 0xFF - - out.write("0x%02x, 0x%02x,\n" % (px16l, px16h)) - -out.write("};\n") diff --git a/tools/version-image.py b/tools/version-image.py new file mode 100755 index 00000000..0a20327c --- /dev/null +++ b/tools/version-image.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +import argparse +import os +from PIL import Image + + +def main() -> None: + parser = argparse.ArgumentParser( + description="""\ +Update the epicardium version-splash. NOTE: You need to adjust +epicardium/main.c if you want to actually see your version splash!! +""" + ) + + parser.add_argument("image", help="Path to version image") + + args = parser.parse_args() + + im = Image.open(args.image) + assert im.size[0] == 160, "Image must be 160 pixels wide" + assert im.size[1] == 80, "Image must be 80 pixels high)" + + # find version-splash.h + vsplash = os.path.join(os.path.dirname(__file__), "../epicardium/version-splash.h") + + with open(vsplash, "w") as f: + tmp = """\ +#pragma once +#include <stdint.h> + +/* clang-format off */ +const uint8_t version_splash[] = { +""" + f.write(tmp) + + for x in range(im.size[1]): + for y in range(im.size[0]): + px = im.getpixel((y, x)) + + px565 = ((px[0] >> 3) << 11) | ((px[1] >> 2) << 5) | (px[2] >> 3) + byte_high = (px565 & 0xFF00) >> 8 + byte_low = px565 & 0xFF + + if y % 4 == 0: + f.write("\t") + + f.write("0x{:02x}, 0x{:02x},".format(byte_low, byte_high)) + + if y % 4 == 3: + f.write("\n") + else: + f.write(" ") + + f.write("};\n") + + +if __name__ == "__main__": + main() -- GitLab