#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Bangun ulang aset logo TSC dari file resmi yang dikirim Bos 14 Okt 2026.

Sumber: tsc_aset/logo_dari_bos_20261014.jpg (200x200, latar putih, logo isi 154x89 px).
Hasil:
  tsc_aset/logo_bos_navy.png   -> logo transparan warna navy (untuk latar terang)
  tsc_aset/logo_bos_putih.png  -> logo transparan warna putih (untuk latar gelap)
  tsc_aset/logo_bos_pratinjau_terang.png / _gelap.png -> pratinjau di latar
"""
import os
from PIL import Image, ImageFilter

ASET = "/home/mantapman/.hermes/profiles/atun/workspace/tsc_aset"
SRC = f"{ASET}/logo_dari_bos_20261014.jpg"

# bbox isi logo (diukur dari peta baris: isi mulai y=59..143, x=24..173) + margin 2 px
BOX = (22, 57, 176, 146)
SKALA = 6
LEBAR_AKHIR = 900  # lebar aset final (nanti diperkecil saat ditempel -> lebih halus)

im = Image.open(SRC).convert("RGB").crop(BOX)
lebar = SKALA * im.width
im = im.resize((lebar, int(im.height * lebar / im.width)), Image.LANCZOS)
im = im.filter(ImageFilter.UnsharpMask(radius=2.2, percent=140, threshold=2))

px = im.load()
# alpha dari kecerahan terhadap latar putih; warna diambil dari piksel tergelap (navy asli)
abu = im.convert("L")
p_abu = abu.load()
maks = max(255 - p_abu[x, y] for y in range(abu.height) for x in range(abu.width))
# warna logo = median dari 5% piksel paling gelap (hindari satu-dua piksel artefak JPEG)
semua = sorted(((sum(px[x, y]), px[x, y]) for y in range(im.height) for x in range(im.width)))
n5 = max(1, len(semua) // 20)
gelap5 = sorted(t[1] for t in semua[:n5])
r = gelap5[n5 // 2][0]
g = gelap5[n5 // 2][1]
b = gelap5[n5 // 2][2]
print("warna tergelap (5% median):", (r, g, b), "| maks alpha mentah:", maks)


def buat(warna, keluar):
    out = Image.new("RGBA", im.size, (0, 0, 0, 0))
    o = out.load()
    for y in range(im.height):
        for x in range(im.width):
            a = int(min(255.0, (255 - p_abu[x, y]) * 255.0 / maks))
            o[x, y] = (warna[0], warna[1], warna[2], a)
    if out.width > LEBAR_AKHIR:
        out = out.resize((LEBAR_AKHIR, int(out.height * LEBAR_AKHIR / out.width)), Image.LANCZOS)
    out.save(keluar)
    print("ok:", keluar, out.size)


buat((r, g, b), f"{ASET}/logo_bos_navy.png")
buat((255, 255, 255), f"{ASET}/logo_bos_putih.png")

# pratinjau: logo di latar terang dan gelap
for nama, latar, aset in (("terang", (247, 248, 250), "logo_bos_navy.png"),
                          ("gelap", (42, 53, 73), "logo_bos_putih.png")):
    lg = Image.open(f"{ASET}/{aset}")
    k = Image.new("RGB", (lg.width + 80, lg.height + 80), latar)
    k.paste(lg, (40, 40), lg)
    k.save(f"{ASET}/logo_bos_pratinjau_{nama}.png")
    print("pratinjau:", nama)
