#!/usr/bin/env bash
# Иконки gntodo растрируются из единственного источника — frontend/public/logo.svg
# (знак «стек входящих» на холсте 64×64 со скруглёнными краями, приём gnexus-creds).
#
#   frontend/public/icons/icon-192.png, icon-512.png   purpose "any" — они же
#                                                      иконка системного уведомления (sw.ts)
#   frontend/public/icons/apple-touch-icon.png         «на экран Домой» в iOS
#   frontend/public/icons/maskable-512.png             purpose "maskable"
#   extension/public/icons/icon-{16,32,48,128}.png     иконки расширения
#
# Сюда же копируется само лого в public/ расширения (попап показывает его из
# своего public — у упакованного расширения свой корень, симлинк не переживёт
# сборку ZIP): копия обновляется этим же скриптом, чтобы не отстать от лого.
#
# Нужен ImageMagick с rsvg (проверка: magick -list format | grep SVG → RSVG).
#
# Углы. Скругление логотипа (rx 10 = 15% стороны) у иконок "any" остаётся
# прозрачным: впечатанный фон сравнялся бы с заливкой холста, скругление стало бы
# невидимым, и иконка читалась бы квадратом с острыми углами — и в шторке
# уведомлений, и у установленного приложения. Там, где прозрачность нельзя, фон
# впечатываем: iOS рисует её чёрным (apple-touch-icon), а maskable на Android
# обрезается по кругу — ему нужен непрозрачный кадр, холст в safe zone (80%).
# После правки логотипа: ./tools/rasterize_icons.sh
set -euo pipefail
cd "$(dirname "$0")/.."

LOGO=frontend/public/logo.svg
PAGE='#16161E'   # фон страницы кита — тот же, что у холста логотипа
SAFE=80          # maskable: холст = 80% кадра (safe zone адаптивных иконок Android)
APPLE=180        # apple-touch-icon: рекомендованный iOS размер

raster_rounded() { # raster_rounded <размер> <файл> — скругление источника, углы прозрачны
  local size=$1 out=$2
  magick -background none -density $((96 * size / 64)) "$LOGO" \
    -resize "${size}x${size}" -depth 8 -strip "$out"
}

raster_opaque() { # raster_opaque <итоговый размер> <файл> [размер холста внутри кадра]
  local size=$1 out=$2 canvas=${3:-$1}
  magick -background "$PAGE" -density $((96 * canvas / 64)) "$LOGO" \
    -resize "${canvas}x${canvas}" -gravity center -extent "${size}x${size}" \
    -background "$PAGE" -alpha remove -alpha off -depth 8 -strip \
    -define png:color-type=2 "$out"   # truecolor без альфы — одинаково у всех размеров
}

raster_rounded 192 frontend/public/icons/icon-192.png
raster_rounded 512 frontend/public/icons/icon-512.png
raster_opaque "$APPLE" frontend/public/icons/apple-touch-icon.png
raster_opaque 512 frontend/public/icons/maskable-512.png $((512 * SAFE / 100))
for s in 16 32 48 128; do raster_opaque "$s" "extension/public/icons/icon-$s.png"; done

# лого попапа расширения — копия источника (см. шапку скрипта)
cp "$LOGO" extension/public/logo.svg

command ls -l frontend/public/icons/*.png extension/public/icons/*.png extension/public/logo.svg
