"""Assets da recriação 16 ("how it started vs how its going", @illdari), feitos por código (sem geração paga):

- papel-de-parede.png: flor azul translúcida estilo "Bloom" (papel de parede de desktop), 2160×2160, desenhada por
  pétalas em degradê + brilho; sem marca.
- galeria-1..6.png: fotos de nicho da biblioteca (fotos-nichos) recortadas em retrato para a galeria escura atrás dos
  mockups 3D.
- capa-album.png: capa quadrada para o item da lista no trecho estilo Spotify (foto de nicho da biblioteca).
- Ícones de app: copiados de 06-telegram-chat/assets/icones (glifos oficiais do Simple Icons).
- Mãos: copiadas de 01-pinterest/assets.
Uso: python fazer_assets.py
"""
import math
import shutil
from pathlib import Path

import numpy as np
from PIL import Image, ImageDraw, ImageFilter

AQUI = Path(__file__).resolve().parent
RAIZ = AQUI.parents[1]
BIB = Path("<BIBLIOTECA>/public/biblioteca")


def bloom(n=2160):
    yy, xx = np.mgrid[0:n, 0:n] / n
    base = np.zeros((n, n, 3))
    top = np.array([0.80, 0.86, 0.95]); bot = np.array([0.20, 0.38, 0.78])
    t = np.clip(yy * 0.9 + xx * 0.2, 0, 1)[..., None]
    base = top * (1 - t) + bot * t
    img = Image.fromarray((base * 255).astype(np.uint8)).convert("RGBA")
    camada = Image.new("RGBA", (n, n), (0, 0, 0, 0))
    d = ImageDraw.Draw(camada)
    cx, cy = n * 0.62, n * 0.95
    for k in range(9):                      # pétalas: elipses compridas giradas em leque
        ang = math.radians(-170 + k * 20)
        L = n * (0.55 + 0.08 * math.sin(k))
        px, py = cx + math.cos(ang) * L * 0.45, cy + math.sin(ang) * L * 0.45
        petala = Image.new("RGBA", (n, n), (0, 0, 0, 0))
        dp = ImageDraw.Draw(petala)
        w, h = L, L * 0.28
        dp.ellipse([px - w / 2, py - h / 2, px + w / 2, py + h / 2], fill=(30 + k * 6, 90 + k * 10, 230, 150))
        petala = petala.rotate(-math.degrees(ang), center=(px, py), resample=Image.BICUBIC)
        camada = Image.alpha_composite(camada, petala)
    camada = camada.filter(ImageFilter.GaussianBlur(n * 0.006))
    brilho = Image.new("RGBA", (n, n), (0, 0, 0, 0))
    db = ImageDraw.Draw(brilho)
    for k in range(9):
        ang = math.radians(-170 + k * 20)
        L = n * 0.5
        db.line([cx, cy, cx + math.cos(ang) * L, cy + math.sin(ang) * L], fill=(200, 230, 255, 120), width=int(n * 0.004))
    brilho = brilho.filter(ImageFilter.GaussianBlur(n * 0.004))
    img = Image.alpha_composite(img, camada)
    img = Image.alpha_composite(img, brilho)
    img.convert("RGB").save(AQUI / "papel-de-parede.png")


def galeria():
    fotos = ["nicho-viagem", "nicho-concessionaria", "nicho-estetica", "nicho-academia", "nicho-roupa", "nicho-salao"]
    for i, f in enumerate(fotos):
        p = Image.open(BIB / "fotos-nichos" / f"{f}.png").convert("RGB")
        w, h = p.size
        nw = int(h * 0.62)
        p = p.crop(((w - nw) // 2, 0, (w + nw) // 2, h)).resize((620, 1000), Image.LANCZOS)
        p.save(AQUI / f"galeria-{i + 1}.png")
    c = Image.open(BIB / "fotos-nichos" / "nicho-lancamento.png").convert("RGB")
    s = min(c.size); c = c.crop(((c.width - s) // 2, (c.height - s) // 2, (c.width + s) // 2, (c.height + s) // 2)).resize((400, 400))
    c.save(AQUI / "capa-album.png")


def copias():
    (AQUI / "icones").mkdir(exist_ok=True)
    for n in ["chatgpt", "gmail", "youtube", "pinterest", "figma", "instagram", "spotify", "adobe-ae", "adobe-pr", "adobe-ai", "adobe-xd", "adobe-an"]:
        shutil.copy(RAIZ / "06-telegram-chat" / "assets" / "icones" / f"{n}.png", AQUI / "icones" / f"{n}.png")
    for n in ["mao-aponta.png", "mao-agarra.png"]:
        shutil.copy(RAIZ / "01-pinterest" / "assets" / n, AQUI / n)
    shutil.copy(RAIZ / "06-telegram-chat" / "assets" / "avatar-pessoa.png", AQUI / "avatar-pessoa.png")   # pessoa gerada (biblioteca), sem foto real


def spotify():
    """Logo do Spotify: glifo oficial (Simple Icons) em verde #1ED760, as barras vazadas."""
    import io, resvg_py
    svg = (RAIZ / "06-telegram-chat" / "assets" / "svg" / "spotify.svg").read_text(encoding="utf-8").replace("<svg ", "<svg fill=\"#1ED760\" ", 1)
    Image.open(io.BytesIO(bytes(resvg_py.svg_to_bytes(svg_string=svg, width=512, height=512)))).convert("RGBA").save(AQUI / "spotify-logo.png")


if __name__ == "__main__":
    bloom(); galeria(); copias(); spotify()
    print("ok")
