#!/usr/bin/env python3
"""DMark Carousel — Full 6 Slide Swiss Design (#F97316)
Resolusi: 1080×1350 (4:5 portrait)
Background: Orange solid #F97316
Teks: Putih #FFFFFF
Font: Poppins
Safe zone: 20px dari semua tepi
Content: vertikal middle (bukan dari atas)
Tidak ada kotak/bubble/card — pure typography
"""

from PIL import Image, ImageDraw, ImageFont
import os

OUT_DIR = os.path.expanduser("~/.openclaw/workspace-atun/dmark_carousel_final")
os.makedirs(OUT_DIR, exist_ok=True)

W, H = 1080, 1350
ORANGE = (249, 115, 22)
WHITE = (255, 255, 255)
S20 = 20  # safe zone minimal

FONT_DIR = os.path.expanduser("~/.fonts")

# Fonts
J180 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 170)
J140 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 140)
SUB  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 36)
CHK  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 30)
B24  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 24)
R22  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 22)
R20  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 20)

# Margin desain
M = 65

def fh(drw, text, font):
    b = drw.textbbox((0,0), text, font=font)
    return b[3] - b[1]

def fw(drw, text, font):
    return drw.textbbox((0,0), text, font=font)[2]

def block_h(drw, lines, font, ls=1.3):
    total = 0
    for line in lines:
        total += int(fh(drw, line, font) * ls)
    return total

def draw_block(drw, lines, font, x, y, ls=1.3):
    for line in lines:
        lh = fh(drw, line, font)
        drw.text((x, y), line, font=font, fill=WHITE)
        y += int(lh * ls)
    return y

def header(d, page):
    d.text((M, S20), "DMARK", font=B24, fill=WHITE)
    d.text((W - M, S20), page, font=R22, fill=WHITE, anchor="rt")

def divider(d, y, width=300):
    x = M
    while x < M + width:
        e = min(x + 14, M + width)
        d.line([(x, y), (e, y)], fill=WHITE, width=2)
        x += 24

def footer(d, left="www.dmark.id", right=""):
    d.text((M, H - S20 - 5), left, font=R20, fill=WHITE)
    if right:
        d.text((W - M, H - S20 - 5), right, font=R20, fill=WHITE, anchor="rt")

def checklist_h(d, items, font, ls=1.5):
    total = 0
    for item in items:
        total += int(fh(d, item, font) * ls)
    return total

def draw_checklist(d, items, x, y, font, ls=1.5):
    for item in items:
        d.text((x, y), "\u2611", font=font, fill=WHITE)
        d.text((x + 48, y + 2), item, font=font, fill=WHITE)
        y += int(fh(d, item, font) * ls)
    return y

def cy_from_total(d, total_h):
    """Kembalikan start_y supaya konten middle antara header & footer"""
    hdr_bot = S20 + fh(d, "DMARK", B24) + 20
    ftr_top = H - S20 - fh(d, "www.dmark.id", R20) - 20
    return hdr_bot + (ftr_top - hdr_bot - total_h) // 2


# ============ SLIDE 1: COVER ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "01/06")
titles = ["PILIH", "PLATFORM"]
subs = ["Tidak perlu aktif di semua platform.", "Pilih yang sesuai dengan audiens Anda."]
chks = ["IG: visual & storytelling", "LinkedIn: B2B & profesional",
        "TikTok: audiens muda & viral", "FB: jangkauan luas semua usia",
        "X (Twitter): berita & opini"]
total_h = 0
total_h += block_h(d, titles, J180, 1.15)
total_h += 60
total_h += 5
total_h += 55
total_h += block_h(d, subs, SUB, 1.5)
total_h += 30
total_h += checklist_h(d, chks, CHK, 1.5)
sy = cy_from_total(d, total_h)
ty = sy
d.text((M, ty), "PILIH", font=J180, fill=WHITE)
ty += int(fh(d, "PILIH", J180) * 1.15)
ty += 30
divider(d, ty, 320)
ty += 25
d.text((M, ty), "PLATFORM", font=J180, fill=WHITE)
ty += int(fh(d, "PLATFORM", J180) * 1.15)
ty += 30
ty = draw_block(d, subs, SUB, M, ty, 1.5)
ty += 10
ty = draw_checklist(d, chks, M, ty, CHK, 1.5)
footer(d, "www.dmark.id", "#MediaSosial #DMARK #TipsDigital #SocialMedia")
img.save(os.path.join(OUT_DIR, "01_cover.png"))

# ============ SLIDE 2: KENALAN DMARK ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "02/06")
subs = ["Digital marketing agency yang fokus", "pada strategi terukur untuk bisnis",
        "Anda. Kreatif. Strategis. Profesional."]
total_h = 0
total_h += int(fh(d, "DMARK", J180) * 1.15)
total_h += int(fh(d, "BUKAN SEKEDAR", J140) * 1.15)
total_h += int(fh(d, "AGENCY", J180) * 1.15)
total_h += 60 + 5 + 55
total_h += block_h(d, subs, SUB, 1.5)
sy = cy_from_total(d, total_h)
ty = sy
d.text((M, ty), "DMARK", font=J180, fill=WHITE)
ty += int(fh(d, "DMARK", J180) * 1.15)
ty += 30
divider(d, ty, 250)
ty += 25
d.text((M, ty), "BUKAN SEKEDAR", font=J140, fill=WHITE)
ty += int(fh(d, "BUKAN SEKEDAR", J140) * 1.15)
d.text((M, ty), "AGENCY", font=J180, fill=WHITE)
ty += int(fh(d, "AGENCY", J180) * 1.15)
ty += 30
ty = draw_block(d, subs, SUB, M, ty, 1.5)
footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "02_kenalan.png"))

# ============ SLIDE 3: MENGAPA ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "03/06")
subs = ["Karena 90% konsumen mencari bisnis", "secara online sebelum membeli.",
        "Tanpa strategi digital yang tepat,", "Anda kehilangan peluang besar."]
total_h = 0
total_h += int(fh(d, "MENGAPA HARUS", J140) * 1.15)
total_h += int(fh(d, "DIGITAL", J180) * 1.15)
total_h += int(fh(d, "MARKETING?", J180) * 1.15)
total_h += 60 + 5 + 55
total_h += block_h(d, subs, SUB, 1.5)
sy = cy_from_total(d, total_h)
ty = sy
d.text((M, ty), "MENGAPA HARUS", font=J140, fill=WHITE)
ty += int(fh(d, "MENGAPA HARUS", J140) * 1.15)
d.text((M, ty), "DIGITAL", font=J180, fill=WHITE)
ty += int(fh(d, "DIGITAL", J180) * 1.15)
d.text((M, ty), "MARKETING?", font=J180, fill=WHITE)
ty += int(fh(d, "MARKETING?", J180) * 1.15)
ty += 30
divider(d, ty, 350)
ty += 25
ty = draw_block(d, subs, SUB, M, ty, 1.5)
footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "03_mengapa.png"))

# ============ SLIDE 4: LAYANAN ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "04/06")
chks = ["Strategi konten & SEO", "Iklan Google & Meta Ads",
        "Branding & desain visual", "Manajemen media sosial",
        "Analitik & optimalisasi"]
total_h = 0
for t, f in [("APA YANG", J140), ("KAMI", J180), ("LAKUKAN?", J180)]:
    total_h += int(fh(d, t, f) * 1.15)
total_h += 60 + 5 + 55
total_h += checklist_h(d, chks, SUB, 1.5)
sy = cy_from_total(d, total_h)
ty = sy
d.text((M, ty), "APA YANG", font=J140, fill=WHITE)
ty += int(fh(d, "APA YANG", J140) * 1.15)
d.text((M, ty), "KAMI", font=J180, fill=WHITE)
ty += int(fh(d, "KAMI", J180) * 1.15)
d.text((M, ty), "LAKUKAN?", font=J180, fill=WHITE)
ty += int(fh(d, "LAKUKAN?", J180) * 1.15)
ty += 30
divider(d, ty, 250)
ty += 25
ty = draw_checklist(d, chks, M, ty, SUB, 1.5)
footer(d, "www.dmark.id", "#DMARK #DigitalMarketing #Branding #Strategi")
img.save(os.path.join(OUT_DIR, "04_layanan.png"))

# ============ SLIDE 5: KENAPA DMARK ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "05/06")
subs = ["Kami tidak sekedar membuat konten.", "Kami merancang strategi yang",
        "berdampak pada pertumbuhan bisnis", "Anda. Terukur. Profesional."]
total_h = 0
total_h += int(fh(d, "KENAPA", J180) * 1.15)
total_h += int(fh(d, "MEMILIH", J140) * 1.15)
total_h += int(fh(d, "DMARK?", J180) * 1.15)
total_h += 60 + 5 + 55
total_h += block_h(d, subs, SUB, 1.5)
sy = cy_from_total(d, total_h)
ty = sy
d.text((M, ty), "KENAPA", font=J180, fill=WHITE)
ty += int(fh(d, "KENAPA", J180) * 1.15)
ty += 25
divider(d, ty, 220)
ty += 25
d.text((M, ty), "MEMILIH", font=J140, fill=WHITE)
ty += int(fh(d, "MEMILIH", J140) * 1.15)
d.text((M, ty), "DMARK?", font=J180, fill=WHITE)
ty += int(fh(d, "DMARK?", J180) * 1.15)
ty += 30
ty = draw_block(d, subs, SUB, M, ty, 1.5)
footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "05_kenapa_dmark.png"))

# ============ SLIDE 6: CTA ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "06/06")
subs = ["Hubungi kami untuk diskusi strategi", "digital marketing bisnis Anda."]
total_h = 0
total_h += int(fh(d, "SIAP MULAI?", J180) * 1.15)
total_h += int(fh(d, "KONSULTASI", J180) * 1.15)
total_h += int(fh(d, "GRATIS", J180) * 1.15)
total_h += 60 + 5 + 55
total_h += block_h(d, subs, SUB, 1.5)
total_h += 40
total_h += fh(d, "Hubungi Kami", B24)
sy = cy_from_total(d, total_h)
ty = sy
d.text((M, ty), "SIAP MULAI?", font=J180, fill=WHITE)
ty += int(fh(d, "SIAP MULAI?", J180) * 1.15)
ty += 30
divider(d, ty, 350)
ty += 25
d.text((M, ty), "KONSULTASI", font=J180, fill=WHITE)
ty += int(fh(d, "KONSULTASI", J180) * 1.15)
d.text((M, ty), "GRATIS", font=J180, fill=WHITE)
ty += int(fh(d, "GRATIS", J180) * 1.15)
ty += 30
ty = draw_block(d, subs, SUB, M, ty, 1.5)
ty += 30
# CTA text aja — NO kotak/button
d.text((M, ty), "Hubungi Kami", font=B24, fill=WHITE)
footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "06_cta.png"))

print(f"✅ 6 slide selesai di: {OUT_DIR}")
for f in sorted(os.listdir(OUT_DIR)):
    print(f"  {f}")
