"""PROTOTYP — wegwerfen. Einziger Weg, ein Logo auf eine Ansicht zu setzen: immer in die
festgeschriebene Fläche aus logoflaechen.json, immer auf der Vorlage ohne EV-Logo."""
import os

import numpy as np
from PIL import Image

from bilder2 import vorlage
from editor_daten import FESTGESCHRIEBEN, ev_logo_entfernen
from einfaerben import multiplizieren, nachschaerfen

_vorlagen = {}


PSD = os.path.join(os.path.dirname(os.path.abspath(__file__)), "psd")


def bereinigte_vorlage(datei, seite):
    """PSD-Export aus psd/ hat Vorrang (ohne EV-Logo, gerade Reflektoren); sonst die
    WebP-Vorlage, bei Seitenansichten mit übermaltem EV-Logo."""
    if datei not in _vorlagen:
        psd = os.path.join(PSD, datei + ".png")
        if os.path.exists(psd):
            _vorlagen[datei] = np.array(Image.open(psd).convert("RGBA"))
        else:
            _vorlagen[datei] = np.array(ev_logo_entfernen(vorlage(datei)) if seite else vorlage(datei))
    return _vorlagen[datei]


def flaeche(datei):
    return FESTGESCHRIEBEN["flaechen"].get(datei)


def umfaerben(datei, seite, farbe, kontrast=None, absenken=None, immer=False):
    """immer=True wendet Kontrast/Absenken auch auf Frontansichten an (nur für die Stufenreihe)."""
    v = bereinigte_vorlage(datei, seite)
    neu = multiplizieren(v, farbe)
    if seite or immer or FESTGESCHRIEBEN["front"]:
        k = FESTGESCHRIEBEN["kontrast"] if kontrast is None else kontrast
        ab = FESTGESCHRIEBEN["absenken"] if absenken is None else absenken
        neu = nachschaerfen(neu, v, k, ab)
    return Image.fromarray(neu, "RGBA")


def logo_setzen(bild, datei, seite, logo, stil, eigener_grund=False):
    """stil: 'flach' | 'aufkleber'. Ohne Fläche bleibt die Ansicht ohne Logo."""
    fl = flaeche(datei)
    if not fl:
        return bild
    v = bereinigte_vorlage(datei, seite)
    if stil == "flach":
        from bilder3 import logo_in_flaeche
        return logo_in_flaeche(bild, fl, logo)
    from logo_real import als_aufkleber
    return als_aufkleber(bild, v, fl, logo, eigener_grund)
