File size: 1,302 Bytes
eae424a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/env python3
"""Generate the deterministic RGB8 frame used for host/device parity."""

from __future__ import annotations

import argparse
import hashlib
from pathlib import Path


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--output", required=True, type=Path)
    parser.add_argument("--size", type=int, default=224)
    args = parser.parse_args()
    if args.size <= 1 or args.size % 16:
        raise SystemExit("--size must be greater than one and divisible by 16")

    pixels = bytearray()
    center = (args.size - 1) / 2.0
    radius_squared = (args.size * 0.28) ** 2
    for y in range(args.size):
        for x in range(args.size):
            red = round(255 * x / (args.size - 1))
            green = round(255 * y / (args.size - 1))
            checker = 48 if ((x // 16) ^ (y // 16)) & 1 else 208
            in_circle = (x - center) ** 2 + (y - center) ** 2 < radius_squared
            blue = 255 - checker if in_circle else checker
            pixels.extend((red, green, blue))

    args.output.parent.mkdir(parents=True, exist_ok=True)
    args.output.write_bytes(pixels)
    digest = hashlib.sha256(pixels).hexdigest()
    print(f"wrote {args.output}: {len(pixels)} bytes, SHA-256 {digest}")


if __name__ == "__main__":
    main()