"""PROTOTYP — wegwerfen. Variante 3: ganz ohne KI. Farbe per Code unter die Schattierung
der grauen Vorlage (EV-Logo vorher entfernt), Logo in die festgeschriebene Fläche aus
logoflaechen.json. Rechnet wie der Editor im Bericht. Ergebnis in gen3/."""
import json
import os
import re
import sys
import time

import numpy as np
from PIL import Image, ImageDraw, ImageFilter

from bilder import ANSICHTEN, HIER
from bilder2 import logo_vorbereiten, vorlage
from editor_daten import FESTGESCHRIEBEN, ev_logo_entfernen
from einfaerben import multiplizieren, nachschaerfen
from lauf import bericht


def logo_in_flaeche(bild, fl, logo):
    """Logo ohne Verzerrung in die Fläche einpassen, mittig, auf weißem Schild mit runden Ecken
    und leichtem Schatten (wie logoZeichnen() im Editor)."""
    f = min(fl["w"] / logo.width, fl["h"] / logo.height)
    w, h = max(round(logo.width * f), 1), max(round(logo.height * f), 1)
    x, y = round(fl["x"] + fl["w"] / 2 - w / 2), round(fl["y"] + fl["h"] / 2 - h / 2)
    r = max(2, min(w, h) // 10)
    schatten = Image.new("RGBA", bild.size, (0, 0, 0, 0))
    ImageDraw.Draw(schatten).rounded_rectangle((x, y + 2, x + w - 1, y + h + 1), radius=r, fill=(0, 0, 0, 64))
    bild.alpha_composite(schatten.filter(ImageFilter.GaussianBlur(2)))
    maske = Image.new("L", (w, h), 0)
    ImageDraw.Draw(maske).rounded_rectangle((0, 0, w - 1, h - 1), radius=r, fill=255)
    schild = Image.new("RGBA", (w, h), (255, 255, 255, 255))
    schild.alpha_composite(logo.resize((w, h), Image.LANCZOS))
    schild.putalpha(maske)
    bild.alpha_composite(schild, (x, y))
    return bild


if __name__ == "__main__":
    fest = FESTGESCHRIEBEN
    ergebnisse = json.load(open(os.path.join(HIER, "ergebnis.json")))
    slugs = json.load(open(os.path.join(HIER, "bilder.json")))
    ausgabe, start = {}, time.time()
    for name, r in ergebnisse.items():
        slug = re.sub(r"[^a-z0-9]+", "-", name.lower()).strip("-")
        if slug not in slugs or (len(sys.argv) > 1 and not any(a.lower() in name.lower() for a in sys.argv[1:])):
            continue
        os.makedirs(os.path.join(HIER, "gen3", slug), exist_ok=True)
        logo, _ = logo_vorbereiten(os.path.join(HIER, "gen", slug, "logo.png"))
        for datei, _, seite in ANSICHTEN:
            from platzierung import logo_setzen, umfaerben
            bild = logo_setzen(umfaerben(datei, seite, r["farbe"]), datei, seite, logo, "flach")
            ziel = os.path.join(HIER, "gen3", slug, datei + ".png")
            bild.save(ziel)
            ausgabe.setdefault(slug, {})[datei] = {"pfad": ziel}
    print(f"{sum(len(v) for v in ausgabe.values())} Bilder in {time.time() - start:.1f} s")
    json.dump(ausgabe, open(os.path.join(HIER, "bilder3.json"), "w"), indent=2)
    open(os.path.join(HIER, "bericht.html"), "w").write(bericht(ergebnisse))
