#!/usr/bin/env python3
"""DMark Carousel — Guerilla Marketing (3 slide, BG Orange)"""

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

OUT_DIR = os.path.expanduser("~/.openclaw/workspace-atun/dmark_guerilla_out")
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")

def font(name, size):
    return ImageFont.truetype(os.path.join(FONT_DIR, name), size)

BOLD170 = font("Poppins-Bold.ttf", 170)
BOLD140 = font("Poppins-Bold.ttf", 140)
BOLD120 = font("Poppins-Bold.ttf", 120)
BOLD24 = font("Poppins-Bold.ttf", 24)
BOLD30 = font("Poppins-Bold.ttf", 30)
REG36 = font("Poppins-Regular.ttf", 36)
REG20 = font("Poppins-Regular.ttf", 20)
REG22 = font("Poppins-Regular.ttf", 22)

M = 65

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

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

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

def wrap_text(text, font, max_width):
    """Wrap text to fit within max_width px using PIL."""
    words = text.split()
    lines = []
    current = ""
    for w in words:
        test = current + (" " if current else "") + w
        bbox = font.getbbox(test)
        if bbox[2] - bbox[0] <= max_width:
            current = test
        else:
            if current:
                lines.append(current)
            current = w
    if current:
        lines.append(current)
    return lines

# ============ SLIDE 1: COVER ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "01/03")

d.text((M, 220), "GUERILLA", font=BOLD170, fill=WHITE)
d.text((M, 420), "MARKETING", font=BOLD170, fill=WHITE)
divider(d, 630, 320)

d.text((M, 680), "Kreativitas vs.", font=REG36, fill=WHITE)
d.text((M, 735), "Anggaran Besar", font=REG36, fill=WHITE)

check_items = [
    "☑ Strategi out-of-the-box",
    "☑ Viral tanpa budget",
    "☑ Efek kejutan yang memorable",
]
cy = 860
for item in check_items:
    d.text((M, cy), item, font=REG36, fill=WHITE)
    cy += 56

footer(d, "#GuerillaMarketing #DMARK #BrandingKreatif")
img.save(os.path.join(OUT_DIR, "01_cover.png"))

# ============ SLIDE 2: ISI 1 ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "02/03")

d.text((M, 180), "APA ITU", font=BOLD140, fill=WHITE)
d.text((M, 350), "GUERILLA", font=BOLD140, fill=WHITE)
d.text((M, 520), "MARKETING?", font=BOLD140, fill=WHITE)
divider(d, 730, 320)

body = (
    "Strategi pemasaran non-konvensional yang mengandalkan "
    "kreativitas dan kejutan, bukan anggaran besar. "
    "Tujuannya: menciptakan dampak maksimal dengan sumber daya "
    "minimal — bikin orang berhenti, baper, dan ngomongin brand kamu."
)

lines = wrap_text(body, REG36, W - 2 * M)
cy = 790
for line in lines:
    d.text((M, cy), line, font=REG36, fill=WHITE)
    cy += 54

footer(d, "#GuerillaMarketing #DMARK")
img.save(os.path.join(OUT_DIR, "02_isi1.png"))

# ============ SLIDE 3: ISI 2 ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d, "03/03")

d.text((M, 180), "KENAPA", font=BOLD140, fill=WHITE)
d.text((M, 350), "EFEKTIF?", font=BOLD140, fill=WHITE)
divider(d, 560, 320)

body2 = (
    "Karena manusia ingat pengalaman unik lebih lama daripada "
    "iklan biasa. Guerilla marketing menciptakan momen yang "
    "layak dibagikan — organik, autentik, dan jauh dari "
    "kesan memaksa. Hasilnya: word-of-mouth yang powerful."
)

lines2 = wrap_text(body2, REG36, W - 2 * M)
cy = 620
for line in lines2:
    d.text((M, cy), line, font=REG36, fill=WHITE)
    cy += 54

d.text((M, 920), "Kreatif > Mahal.", font=REG36, fill=WHITE)
d.text((M, 975), "Itulah guerilla.", font=REG36, fill=WHITE)

footer(d, "#GuerillaMarketing #DMARK #BrandingStrategy")
img.save(os.path.join(OUT_DIR, "03_isi2.png"))

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