diff --git a/android/res/mipmap-hdpi/ic_launcher.png b/android/res/mipmap-hdpi/ic_launcher.png index 33866dc..532599a 100644 Binary files a/android/res/mipmap-hdpi/ic_launcher.png and b/android/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/res/mipmap-mdpi/ic_launcher.png b/android/res/mipmap-mdpi/ic_launcher.png index 5dd2044..cbbdedb 100644 Binary files a/android/res/mipmap-mdpi/ic_launcher.png and b/android/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/res/mipmap-xhdpi/ic_launcher.png b/android/res/mipmap-xhdpi/ic_launcher.png index 4526bc4..a346e1e 100644 Binary files a/android/res/mipmap-xhdpi/ic_launcher.png and b/android/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/res/mipmap-xxhdpi/ic_launcher.png b/android/res/mipmap-xxhdpi/ic_launcher.png index 401a2c3..8700b3e 100644 Binary files a/android/res/mipmap-xxhdpi/ic_launcher.png and b/android/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/res/mipmap-xxxhdpi/ic_launcher.png b/android/res/mipmap-xxxhdpi/ic_launcher.png index 09c7fc1..4499799 100644 Binary files a/android/res/mipmap-xxxhdpi/ic_launcher.png and b/android/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/branding/fry3dx.icns b/branding/fry3dx.icns new file mode 100644 index 0000000..97056f3 Binary files /dev/null and b/branding/fry3dx.icns differ diff --git a/branding/fry3dx.ico b/branding/fry3dx.ico index 09318c3..447b6be 100644 Binary files a/branding/fry3dx.ico and b/branding/fry3dx.ico differ diff --git a/branding/icon.png b/branding/icon.png index bb30490..e194f74 100644 Binary files a/branding/icon.png and b/branding/icon.png differ diff --git a/branding/logo.png b/branding/logo.png index 76db8f9..470db04 100644 Binary files a/branding/logo.png and b/branding/logo.png differ diff --git a/branding/logo.svg b/branding/logo.svg index 2ca9d95..774bfcd 100644 --- a/branding/logo.svg +++ b/branding/logo.svg @@ -1,34 +1,144 @@ + - - + + + - - + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/Fry3DX/branding/icon.png b/content/Fry3DX/branding/icon.png index bb30490..e194f74 100644 Binary files a/content/Fry3DX/branding/icon.png and b/content/Fry3DX/branding/icon.png differ diff --git a/content/Fry3DX/branding/logo.png b/content/Fry3DX/branding/logo.png index 76db8f9..470db04 100644 Binary files a/content/Fry3DX/branding/logo.png and b/content/Fry3DX/branding/logo.png differ diff --git a/docs/img/icon.png b/docs/img/icon.png index bb30490..e194f74 100644 Binary files a/docs/img/icon.png and b/docs/img/icon.png differ diff --git a/docs/img/logo.png b/docs/img/logo.png new file mode 100644 index 0000000..2ef7bc4 Binary files /dev/null and b/docs/img/logo.png differ diff --git a/docs/img/logo.svg b/docs/img/logo.svg index 2ca9d95..774bfcd 100644 --- a/docs/img/logo.svg +++ b/docs/img/logo.svg @@ -1,34 +1,144 @@ + - - + + + - - + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/branding.py b/tools/branding.py new file mode 100644 index 0000000..10b5b02 --- /dev/null +++ b/tools/branding.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +"""Makes every picture of the logo from branding/logo.svg (needs Inkscape): +the app's own (content/), the Windows .ico, the macOS .icns, Android's launcher icons and +the website's. python3 tools/branding.py""" +import os, shutil, struct, subprocess, sys, tempfile + +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +SVG = os.path.join(ROOT, "branding", "logo.svg") + + +def render(size, out): + subprocess.run(["inkscape", SVG, "-w", str(size), "-h", str(size), "-o", out], check=True, capture_output=True) + + +def ico(pngs, out): # an .ico of PNGs (Vista and newer read them) + data = [open(p, "rb").read() for _, p in pngs] + head = struct.pack("= 256 else size + head += struct.pack("I", 8 + len(d)) + d + open(out, "wb").write(b"icns" + struct.pack(">I", 8 + len(body)) + body) + + +def main(): + if not shutil.which("inkscape"): + sys.exit("needs inkscape") + with tempfile.TemporaryDirectory() as tmp: + sizes = {} + for s in (16, 24, 32, 48, 64, 72, 96, 128, 144, 192, 256, 512, 1024): + sizes[s] = os.path.join(tmp, f"{s}.png") + render(s, sizes[s]) + copy = lambda s, *to: shutil.copyfile(sizes[s], os.path.join(ROOT, *to)) + copy(256, "branding", "logo.png") + copy(64, "branding", "icon.png") + copy(256, "content", "Fry3DX", "branding", "logo.png") + copy(64, "content", "Fry3DX", "branding", "icon.png") + copy(64, "docs", "img", "icon.png") + copy(512, "docs", "img", "logo.png") + shutil.copyfile(SVG, os.path.join(ROOT, "docs", "img", "logo.svg")) + for d, s in (("mdpi", 48), ("hdpi", 72), ("xhdpi", 96), ("xxhdpi", 144), ("xxxhdpi", 192)): + copy(s, "android", "res", f"mipmap-{d}", "ic_launcher.png") + ico([(s, sizes[s]) for s in (16, 24, 32, 48, 64, 128, 256)], os.path.join(ROOT, "branding", "fry3dx.ico")) + icns([(s, sizes[s]) for s in (16, 32, 64, 128, 256, 512, 1024)], os.path.join(ROOT, "branding", "fry3dx.icns")) + print("done") + + +if __name__ == "__main__": + main()