from base64 import b64encode
from io import BytesIO
from pathlib import Path

from PIL import Image, ImageFilter


ROOT = Path(__file__).resolve().parents[1]
SOURCE = ROOT / "Concepts" / "Firefly.jpg"
OUT = ROOT / "public" / "brand"
OUT.mkdir(parents=True, exist_ok=True)

source = Image.open(SOURCE).convert("RGB")
gray = source.convert("L").filter(ImageFilter.GaussianBlur(0.35))

# Firefly.jpg has an almost-white background and a navy foreground. Convert
# only the dark foreground to alpha so the mark remains visually unchanged.
alpha = gray.point(lambda value: 0 if value > 188 else min(255, (188 - value) * 5))
alpha = alpha.filter(ImageFilter.GaussianBlur(0.2))
alpha = alpha.point(lambda value: 0 if value < 10 else value)

box = alpha.getbbox()
if box is None:
    raise RuntimeError("No dark logo pixels were found in Firefly.jpg")

rgb = Image.new("RGB", source.size, (16, 43, 78))
rgb.putalpha(alpha)
logo = rgb.crop(box)

# The header uses the same official mark as an icon, without squeezing the
# vertical full lockup into a narrow navigation bar.
mark = logo.crop((0, 0, logo.width, min(2200, logo.height)))
mark_box = mark.getchannel("A").getbbox()
if mark_box:
    mark = mark.crop(mark_box)

png_path = OUT / "proson-logo-traced.png"
logo.save(png_path, optimize=True)
mark_png_path = OUT / "proson-mark-traced.png"
mark.save(mark_png_path, optimize=True)

pdf_canvas = Image.new("RGB", logo.size, (250, 249, 246))
pdf_canvas.paste(logo, mask=logo.getchannel("A"))
pdf_path = OUT / "proson-logo-traced.pdf"
pdf_canvas.save(pdf_path, "PDF", resolution=300.0)

buffer = BytesIO()
logo.save(buffer, format="PNG", optimize=True)
encoded = b64encode(buffer.getvalue()).decode("ascii")
svg_path = OUT / "proson-logo-traced.svg"
svg_path.write_text(
    f'''<?xml version="1.0" encoding="UTF-8"?>\n'''
    f'''<svg xmlns="http://www.w3.org/2000/svg" width="{logo.width}" height="{logo.height}" viewBox="0 0 {logo.width} {logo.height}" preserveAspectRatio="xMidYMid meet">\n'''
    f'''  <title>PROS·ON official logo</title>\n'''
    f'''  <image width="{logo.width}" height="{logo.height}" href="data:image/png;base64,{encoded}"/>\n'''
    f'''</svg>\n''',
    encoding="utf-8",
)

mark_buffer = BytesIO()
mark.save(mark_buffer, format="PNG", optimize=True)
mark_encoded = b64encode(mark_buffer.getvalue()).decode("ascii")
mark_svg_path = OUT / "proson-mark-traced.svg"
mark_svg_path.write_text(
    f'''<?xml version="1.0" encoding="UTF-8"?>\n'''
    f'''<svg xmlns="http://www.w3.org/2000/svg" width="{mark.width}" height="{mark.height}" viewBox="0 0 {mark.width} {mark.height}" preserveAspectRatio="xMidYMid meet">\n'''
    f'''  <title>PROS·ON official mark</title>\n'''
    f'''  <image width="{mark.width}" height="{mark.height}" href="data:image/png;base64,{mark_encoded}"/>\n'''
    f'''</svg>\n''',
    encoding="utf-8",
)

print(f"Created {png_path}")
print(f"Created {mark_png_path}")
print(f"Created {svg_path}")
print(f"Created {mark_svg_path}")
print(f"Created {pdf_path}")
