#!/bin/sh set -eu project_root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) brand_logo="$project_root/src/static/brand-logo.png" icons="$project_root/src/static/app/icons" splash="$project_root/src/static/app/splash" if ! command -v magick >/dev/null 2>&1; then echo "ImageMagick (magick) is required to generate App assets." >&2 exit 1 fi if [ ! -f "$brand_logo" ]; then echo "Brand logo not found: $brand_logo" >&2 exit 1 fi mkdir -p "$icons" "$splash" make_icon() { size=$1 logo_size=$2 output=$3 magick -size "${size}x${size}" xc:'#FFFFFF' \ \( "$brand_logo" -resize "${logo_size}x${logo_size}" \) \ -gravity center -compose over -composite -alpha off -strip "$output" } make_splash() { canvas=$1 logo_size=$2 output=$3 magick -size "$canvas" xc:'#F7F8FA' \ \( "$brand_logo" -resize "${logo_size}x${logo_size}" \) \ -gravity center -compose over -composite -alpha off -strip "$output" } # All launch and App Store icons are opaque PNGs. iOS applies its own rounded # mask; source artwork must remain a square without alpha information. make_icon 1024 620 "$icons/ios-appstore.png" make_icon 192 118 "$icons/android-xxxhdpi.png" make_icon 144 88 "$icons/android-xxhdpi.png" make_icon 96 60 "$icons/android-xhdpi.png" make_icon 72 44 "$icons/android-hdpi.png" make_icon 180 110 "$icons/ios-iphone-app-3x.png" make_icon 120 74 "$icons/ios-iphone-app-2x.png" make_icon 120 74 "$icons/ios-iphone-spotlight-3x.png" make_icon 80 50 "$icons/ios-iphone-spotlight-2x.png" make_icon 87 54 "$icons/ios-iphone-settings-3x.png" make_icon 58 36 "$icons/ios-iphone-settings-2x.png" make_icon 60 38 "$icons/ios-iphone-notification-3x.png" make_icon 40 26 "$icons/ios-iphone-notification-2x.png" make_icon 167 104 "$icons/ios-ipad-pro-app-2x.png" make_icon 152 94 "$icons/ios-ipad-app-2x.png" make_icon 76 48 "$icons/ios-ipad-app.png" make_icon 80 50 "$icons/ios-ipad-spotlight-2x.png" make_icon 40 26 "$icons/ios-ipad-spotlight.png" make_icon 58 36 "$icons/ios-ipad-settings-2x.png" make_icon 29 18 "$icons/ios-ipad-settings.png" make_icon 40 26 "$icons/ios-ipad-notification-2x.png" make_icon 20 14 "$icons/ios-ipad-notification.png" make_splash '480x762' 160 "$splash/android-hdpi.png" make_splash '720x1242' 240 "$splash/android-xhdpi.png" make_splash '1080x1882' 320 "$splash/android-xxhdpi.png" make_splash '640x1136' 200 "$splash/ios-iphone-retina40.png" make_splash '750x1334' 230 "$splash/ios-iphone-retina47.png" make_splash '1242x2208' 360 "$splash/ios-iphone-retina55.png" make_splash '1125x2436' 330 "$splash/ios-iphone-x.png" make_splash '828x1792' 250 "$splash/ios-iphone-896h-2x.png" make_splash '1242x2688' 370 "$splash/ios-iphone-896h-3x.png" make_splash '768x1024' 230 "$splash/ios-ipad-portrait7.png" make_splash '1536x2048' 460 "$splash/ios-ipad-portrait-retina7.png" make_splash '1668x2224' 500 "$splash/ios-ipad-1112h-2x.png" make_splash '1668x2388' 500 "$splash/ios-ipad-1194h-2x.png" make_splash '2048x2732' 610 "$splash/ios-ipad-1366h-2x.png" echo "Generated App icons and portrait splash images from src/static/brand-logo.png"