"""
Recolorea el logo original de Leonex sin cambiar su forma.

Uso:
    python tools/recolor_logo.py

Entrada esperada:
    assets/Leonex-logo-original.png

Salida:
    assets/Leonex-logo.png
"""

from __future__ import annotations

from pathlib import Path

from PIL import Image


ROOT = Path(__file__).resolve().parents[1]
INPUT_PATH = ROOT / "assets" / "Leonex-logo-original.png"
OUTPUT_PATH = ROOT / "assets" / "Leonex-logo.png"

AQUAMARINE = (86, 240, 223)
WHITE = (255, 255, 255)


def recolor_logo() -> None:
    if not INPUT_PATH.exists():
        raise FileNotFoundError(
            f"No encuentro {INPUT_PATH}. Guarda ahi la imagen original del logo."
        )

    source = Image.open(INPUT_PATH).convert("RGBA")
    output = Image.new("RGBA", source.size)

    for y in range(source.height):
        for x in range(source.width):
            r, g, b, a = source.getpixel((x, y))
            if a == 0:
                output.putpixel((x, y), (255, 255, 255, 0))
                continue

            brightness = (r + g + b) / 3

            # Fondo de tablero de transparencia o fondo claro: se mantiene claro.
            if brightness > 210:
                output.putpixel((x, y), (*WHITE, a))
                continue

            # Trazos negros/grises originales: pasan a aguamarina respetando
            # antialiasing mediante la intensidad original del pixel.
            alpha_factor = 1 - (brightness / 210)
            new_alpha = int(a * max(0.18, min(1.0, alpha_factor)))
            output.putpixel((x, y), (*AQUAMARINE, new_alpha))

    output.save(OUTPUT_PATH)
    print(f"Logo recoloreado: {OUTPUT_PATH}")


if __name__ == "__main__":
    recolor_logo()

