#!/usr/bin/env bash
# Genera el video de demostración de paginasweboficial.com/guias/terminal/
# 100% ImageMagick + FFmpeg. Sin editores.
set -euo pipefail

OUT="${1:-/Users/casa/paginasweboficial.com/assets/video}"
F=/System/Library/Fonts/Helvetica.ttc
M=/System/Library/Fonts/Menlo.ttc
cd "$OUT"

# 1. Capas dibujadas con ImageMagick -------------------------------------
# Resplandor central suave
magick -size 1280x720 radial-gradient:"rgba(255,255,255,0.25)"-none glow.png

# Retícula de puntos (como el hero del sitio)
magick -size 26x26 xc:none -fill "rgba(255,255,255,0.08)" -draw "circle 13,13 13,14.3" tile.png
magick -size 1280x720 tile:tile.png grid.png

# Título con sombra suave
magick -size 1280x720 xc:none -font "$F" -pointsize 74 -fill white \
  -gravity center -annotate +0-104 "Hecho en la terminal" \
  \( +clone -background black -shadow 45x10+0+8 \) +swap \
  -background none -layers merge +repage title.png

# Subtítulo
magick -size 1280x720 xc:none -font "$F" -pointsize 28 \
  -fill "rgba(255,255,255,0.88)" -gravity center \
  -annotate +0-28 "Sin editores. Dos herramientas gratuitas." sub.png

# Insignia tipo pill
magick -size 1280x720 xc:none \
  \( -size 380x48 xc:none -fill "rgba(255,255,255,0.12)" \
     -stroke "rgba(255,255,255,0.45)" -strokewidth 1.5 \
     -draw "roundrectangle 1,1 378,46 23,23" \
     -stroke none -font "$F" -pointsize 19 -fill white \
     -gravity center -annotate +0+1 "ImageMagick + FFmpeg" \) \
  -gravity center -geometry +0+38 -composite badge.png

# Marca: icono del sitio (rasterizado del favicon real) + URL
magick -background none -density 400 /Users/casa/paginasweboficial.com/favicon.svg \
  -resize 40x40 icon.png
magick -size 410x48 xc:none \
  icon.png -gravity west -geometry +62+0 -composite \
  -font "$F" -pointsize 22 -kerning 0.6 -fill "rgba(255,255,255,0.92)" \
  -gravity west -annotate +114+2 "paginasweboficial.com" lockup.png
magick -size 1280x720 xc:none lockup.png -gravity south -geometry +0+34 -composite brand.png

# Chip de comando en monoespaciada
magick -size 1280x720 xc:none \
  \( -size 740x78 xc:none -fill "#14141b" \
     -stroke "rgba(255,255,255,0.18)" -strokewidth 1.5 \
     -draw "roundrectangle 1,1 738,76 16,16" \
     -stroke none -font "$M" -pointsize 25 \
     -fill "#28c840" -gravity west -annotate +30+1 "\$" \
     -fill white -annotate +60+1 "ffmpeg -i entrada.mov salida.mp4" \) \
  -gravity center -geometry +0+136 -composite cmd.png

# 2. FFmpeg apila las capas y las anima ----------------------------------
ffmpeg -y \
  -f lavfi -i "gradients=size=1280x720:duration=8:speed=0.015:nb_colors=3:c0=0x081634:c1=0x0a58e0:c2=0x7b3ff2" \
  -loop 1 -t 8 -i glow.png \
  -loop 1 -t 8 -i grid.png \
  -loop 1 -t 8 -i title.png \
  -loop 1 -t 8 -i sub.png \
  -loop 1 -t 8 -i badge.png \
  -loop 1 -t 8 -i cmd.png \
  -loop 1 -t 8 -i brand.png \
  -filter_complex "\
[0][1]overlay=0:0[b1];\
[b1][2]overlay=0:0[b2];\
[3]format=rgba,fade=t=in:st=0.6:d=0.9:alpha=1[t1];\
[4]format=rgba,fade=t=in:st=1.4:d=0.9:alpha=1[t2];\
[5]format=rgba,fade=t=in:st=2.2:d=0.9:alpha=1[t3];\
[6]format=rgba,fade=t=in:st=3.0:d=0.9:alpha=1[t4];\
[7]format=rgba,fade=t=in:st=3.8:d=0.9:alpha=1[t5];\
[b2][t1]overlay[v1];[v1][t2]overlay[v2];[v2][t3]overlay[v3];\
[v3][t4]overlay[v4];\
[v4][t5]overlay,fade=t=in:st=0:d=0.6,fade=t=out:st=7.2:d=0.8[v]" \
  -map "[v]" -c:v libx264 -crf 21 -preset slow -pix_fmt yuv420p demo.mp4

# 3. La versión película vieja, con un comando más -----------------------
# (el grano animado es caro de comprimir: grano moderado + crf alto)
ffmpeg -y -i demo.mp4 \
  -vf "curves=preset=vintage,vignette,noise=alls=6:allf=t" \
  -c:v libx264 -crf 28 -preset slow -pix_fmt yuv420p demo-vintage.mp4

# Limpieza de capas intermedias
rm -f glow.png tile.png grid.png title.png sub.png badge.png cmd.png icon.png lockup.png brand.png
du -h demo.mp4 demo-vintage.mp4
