diff options
Diffstat (limited to 'icon')
| -rwxr-xr-x | icon/convert.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/icon/convert.py b/icon/convert.py new file mode 100755 index 0000000..b550709 --- /dev/null +++ b/icon/convert.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 + + +import argparse +import dataclasses +import os +import pathlib +import subprocess +import sys + +DESCRIPTION = "Script to convert main icon file to all required formats" +SCRIPT = pathlib.Path(__file__).resolve() +ICON = SCRIPT.parent +MAIN = ICON / "main.svg" +ANDROID = ICON / "android" + + +def main() -> None: + _ = Arguments.from_list(sys.argv) + + os.makedirs(ANDROID, exist_ok=True) + inkscape(MAIN, ANDROID / "default.png") + inkscape(MAIN, ANDROID / "foreground.png", ids=("foreground",)) + inkscape(MAIN, ANDROID / "background.png", ids=("background",)) + + +@dataclasses.dataclass(frozen=True, kw_only=True) +class Arguments: + + @staticmethod + def from_list(args: list[str]) -> "Arguments": + parser = argparse.ArgumentParser(description=DESCRIPTION) + + parser.parse_args(args[1:]) + + return Arguments() + + +def inkscape( + source: pathlib.Path, + sink: pathlib.Path, + ids: tuple[str, ...] = ("foreground", "background"), + width: int = 1024, + height: int = 1024, +) -> None: + subprocess.run( + ( + # fmt: off + "inkscape", str(source), + "--export-filename", str(sink), + "--export-area-page", + "--export-id", ";".join(ids), + "--export-width", str(width), + "--export-height", str(height), + "--export-id-only", + # fmt: on + ), + check=True, + shell=False, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + + +if __name__ == "__main__": + main() |
