"""Three colour schemes side by side (system python: numpy + Pillow) -> render/gallery/12_colours.png"""
import os
import sys

from PIL import Image, ImageDraw, ImageFont

HERE = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, HERE)
from render import Camera, render  # noqa: E402
from render_views import parts  # noqa: E402

G = os.path.normpath(os.path.join(HERE, "..", "render", "gallery"))
SCHEMES = [
    ("Coral", dict(face_col=(232, 233, 228), body_col=(58, 62, 70), ring_col=(255, 111, 97))),
    ("Prusa Orange", dict(face_col=(250, 104, 49), body_col=(34, 35, 38), ring_col=(34, 35, 38))),
    ("Arctic", dict(face_col=(244, 244, 242), body_col=(206, 209, 212), ring_col=(40, 42, 46))),
]


def main():
    cam = Camera(eye=(-95, 48, 215), target=(32.7, 26.0, 2.0), fov=30, width=900, height=900)
    tiles = []
    try:
        f = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", 40, index=1)
    except OSError:
        f = ImageFont.load_default()
    for name, cols in SCHEMES:
        ms = [m for m in parts(board=False, **cols) if m.name not in ("cable", "campcb", "camconn")]
        im = render(ms, cam, ss=2).convert("RGB")
        d = ImageDraw.Draw(im)
        tw = d.textlength(name, font=f)
        d.text(((im.width - tw) / 2, im.height - 90), name, fill=(48, 52, 60), font=f)
        tiles.append(im)
        print("rendered", name)
    out = Image.new("RGB", (sum(t.width for t in tiles), tiles[0].height), (255, 255, 255))
    x = 0
    for t in tiles:
        out.paste(t, (x, 0))
        x += t.width
    p = os.path.join(G, "12_colours.png")
    out.save(p)
    print("saved", p)


if __name__ == "__main__":
    main()
