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 72ea36139..000000000
--- 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 000000000..0a20327c2
--- /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