#!/usr/bin/env python3
"""DMark Carousel — v3 Final
Judul: Poppins 120px weight 500 (SemiBold), wrap kalo panjang
Deskripsi: 34px Poppins Regular (dari v2 udah ok, dipertahankan)
"""

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

OUT_DIR = os.path.expanduser("~/.openclaw/workspace-atun/dmark_carousel_v3_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.3):
    """Draw multi-line title with auto wrap. Returns ending y."""
    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)
        cy += int((draw.textbbox((0,0), line, font=font)[3] - draw.textbbox((0,0), line, font=font)[1]) * ls)
    return cy

def draw_body(draw, texts, start_y, font=BODY, fill=WHITE, max_w=920, ls=1.5):
    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)
        cy += int((draw.textbbox((0,0), line, font=font)[3] - draw.textbbox((0,0), line, font=font)[1]) * 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

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")
draw_title(d, ["PILIH"], 250)
divider(d, 430, 300)
draw_title(d, ["PLATFORM"], 460)
draw_body(d, ["Tidak perlu aktif di semua platform.", "Pilih yang sesuai dengan audiens Anda."], 700)
checklist(d, ["IG: visual & storytelling", "LinkedIn: B2B & profesional", "TikTok: audiens muda & viral", "FB: jangkauan luas semua usia", "X (Twitter): berita & opini"], 890)
footer(d, "www.dmark.id", "#MediaSosial #DMARK #TipsDigital #SocialMedia")
img.save(os.path.join(OUT_DIR, "01_cover.png"))

# ===== SLIDE 2: DMARK BUKAN SEKEDAR AGENCY =====
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "02/06")
draw_title(d, ["DMARK"], 250)
divider(d, 430, 220)
draw_title(d, ["BUKAN SEKEDAR AGENCY"], 460)
draw_body(d, ["Digital marketing agency yang fokus", "pada strategi terukur untuk bisnis", "Anda. Kreatif. Strategis. Profesional."], 760)
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")
draw_title(d, ["MENGAPA"], 200)
divider(d, 380, 300)
draw_title(d, ["DIGITAL MARKETING?"], 410)
draw_body(d, ["Karena 90% konsumen mencari bisnis", "secara online sebelum membeli.", "Tanpa strategi digital yang tepat,", "Anda kehilangan peluang besar."], 700)
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")
draw_title(d, ["APA YANG"], 200)
divider(d, 380, 300)
draw_title(d, ["KAMI LAKUKAN?"], 410)
checklist(d, ["Strategi konten & SEO", "Iklan Google & Meta Ads", "Branding & desain visual", "Manajemen media sosial", "Analitik & optimalisasi"], 700)
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")
draw_title(d, ["KENAPA"], 200)
divider(d, 380, 220)
draw_title(d, ["MEMILIH DMARK?"], 410)
draw_body(d, ["Kami tidak sekedar membuat konten.", "Kami merancang strategi yang", "berdampak pada pertumbuhan bisnis", "Anda. Terukur. Profesional."], 700)
footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "05_kenapa_dmark.png"))

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

# Tombol WA
btn_w, btn_h = 420, 72
bx, by = M, 900
d.rounded_rectangle([bx, by, bx+btn_w, by+btn_h], radius=36, fill=WHITE)
d.text((bx + btn_w//2 + 20, by + btn_h//2 - 8), "Hubungi Kami", font=BOLD30, fill=ORANGE, anchor="mm")
for ang in range(360):
    rad = math.radians(ang)
    px = int(bx + 50 + 17 * math.cos(rad))
    py = int(by + btn_h//2 + 17 * math.sin(rad))
    if 0 <= px < W and 0 <= py < H:
        img.putpixel((px, py), (37, 211, 102))
footer(d, "www.dmark.id")
img.save(os.path.join(OUT_DIR, "06_cta.png"))

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