#!/usr/bin/env python3
"""DMark Carousel — v4 Final
Judul: Poppins SemiBold 120px, ada jarak lega dengan deskripsi
Deskripsi: 34px Poppins Regular, nggak tabrakan
"""

from PIL import Image, ImageDraw, ImageFont
import os, math

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

W, H = 1080, 1350
ORANGE = (249, 115, 22)
WHITE = (255, 255, 255)

FONT_DIR = os.path.expanduser("~/.fonts")
TITLE = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-SemiBold.ttf"), 120)
BODY = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 34)
BOLD24 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 24)
REG20 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 20)
REG22 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 22)
BOLD30 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 30)
CHECK = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 30)

M = 65

def wrap_text(draw, text, font, max_w=920):
    lines = []
    for para in text.split("\n"):
        words = para.split()
        cur = ""
        for w in words:
            test = cur + " " + w if cur else w
            if draw.textbbox((0,0), test, font=font)[2] > max_w and cur:
                lines.append(cur)
                cur = w
            else:
                cur = test
        if cur: lines.append(cur)
    return lines

def draw_title(draw, texts, start_y, font=TITLE, fill=WHITE, max_w=920, ls=1.35):
    all_lines = []
    for t in texts:
        all_lines.extend(wrap_text(draw, t, font, max_w))
    cy = start_y
    for line in all_lines:
        draw.text((M, cy), line, font=font, fill=fill)
        lh = draw.textbbox((0,0), line, font=font)[3] - draw.textbbox((0,0), line, font=font)[1]
        cy += int(lh * ls)
    return cy

def draw_body(draw, texts, start_y, font=BODY, fill=WHITE, max_w=920, ls=1.6):
    all_lines = []
    for t in texts:
        all_lines.extend(wrap_text(draw, t, font, max_w))
    cy = start_y
    for line in all_lines:
        draw.text((M, cy), line, font=font, fill=fill)
        lh = draw.textbbox((0,0), line, font=font)[3] - draw.textbbox((0,0), line, font=font)[1]
        cy += int(lh * ls)
    return cy

def header(draw, page):
    draw.text((M, M), "DMARK", font=BOLD24, fill=WHITE)
    draw.text((W - M, M), page, font=REG22, fill=WHITE, anchor="rt")

def footer(draw, left="www.dmark.id", right=""):
    fy = H - 65
    draw.text((M, fy), left, font=REG20, fill=WHITE)
    if right:
        draw.text((W - M, fy), right, font=REG20, fill=WHITE, anchor="rt")

def divider(draw, y, width=280):
    xs, xe = M, M + width
    dash, gap = 14, 10
    x = xs
    while x < xe:
        e = min(x + dash, xe)
        draw.line([(x, y), (e, y)], fill=WHITE, width=2)
        x += dash + gap
    return y + 40

def checklist(draw, items, start_y):
    cy = start_y
    for item in items:
        draw.text((M, cy), "\u2611", font=CHECK, fill=WHITE)
        draw.text((M + 48, cy + 2), item, font=CHECK, fill=WHITE)
        cy += 54

# ===== SLIDE 1: PILIH PLATFORM =====
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "01/06")
ey = draw_title(d, ["PILIH"], 220)
ey = divider(d, ey + 30)
ey = draw_title(d, ["PLATFORM"], ey + 40)
# Judul end ~550, deskripsi mulai 730 (jarak 180px)
draw_body(d, ["Tidak perlu aktif di semua platform.", "Pilih yang sesuai dengan audiens Anda."], 730)
checklist(d, ["IG: visual & storytelling", "LinkedIn: B2B & profesional", "TikTok: audiens muda & viral", "FB: jangkauan luas semua usia", "X (Twitter): berita & opini"], 900)
footer(d, "www.dmark.id", "#MediaSosial #DMARK #TipsDigital #SocialMedia")
img.save(os.path.join(OUT_DIR, "01_cover.png"))

# ===== SLIDE 2: DMARK =====
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "02/06")
ey = draw_title(d, ["DMARK"], 220)
ey = divider(d, ey + 30)
ey = draw_title(d, ["BUKAN SEKEDAR AGENCY"], ey + 40)
# Deskripsi mulai dengan jarak 180px
draw_body(d, ["Digital marketing agency yang fokus", "pada strategi terukur untuk bisnis", "Anda. Kreatif. Strategis. Profesional."], ey + 180)
footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "02_kenalan.png"))

# ===== SLIDE 3: MENGAPA DIGITAL MARKETING =====
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "03/06")
ey = draw_title(d, ["MENGAPA"], 180)
ey = divider(d, ey + 30)
ey = draw_title(d, ["DIGITAL MARKETING?"], ey + 40)
draw_body(d, ["Karena 90% konsumen mencari bisnis", "secara online sebelum membeli.", "Tanpa strategi digital yang tepat,", "Anda kehilangan peluang besar."], ey + 180)
footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "03_mengapa.png"))

# ===== SLIDE 4: APA YANG KAMI LAKUKAN =====
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "04/06")
ey = draw_title(d, ["APA YANG"], 180)
ey = divider(d, ey + 30)
ey = draw_title(d, ["KAMI LAKUKAN?"], ey + 40)
checklist(d, ["Strategi konten & SEO", "Iklan Google & Meta Ads", "Branding & desain visual", "Manajemen media sosial", "Analitik & optimalisasi"], ey + 180)
footer(d, "www.dmark.id", "#DMARK #DigitalMarketing #Branding #Strategi")
img.save(os.path.join(OUT_DIR, "04_layanan.png"))

# ===== SLIDE 5: KENAPA MEMILIH DMARK =====
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "05/06")
ey = draw_title(d, ["KENAPA"], 180)
ey = divider(d, ey + 30)
ey = draw_title(d, ["MEMILIH DMARK?"], ey + 40)
draw_body(d, ["Kami tidak sekedar membuat konten.", "Kami merancang strategi yang", "berdampak pada pertumbuhan bisnis", "Anda. Terukur. Profesional."], ey + 180)
footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "05_kenapa_dmark.png"))

# ===== SLIDE 6: SIAP MULAI =====
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "06/06")
ey = draw_title(d, ["SIAP MULAI?"], 180)
ey = divider(d, ey + 30)
ey = draw_title(d, ["KONSULTASI GRATIS"], ey + 40)
draw_body(d, ["Hubungi kami untuk diskusi strategi", "digital marketing bisnis Anda."], ey + 180)

footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "06_cta.png"))

print(f"✅ v4 final selesai! File di: {OUT_DIR}")
for f in sorted(os.listdir(OUT_DIR)):
    print(f"  {f}")

print(f"✅ v4 final selesai! File di: {OUT_DIR}")
for f in sorted(os.listdir(OUT_DIR)):
    print(f"  {f}")
