#!/usr/bin/env python3
"""DMark FB Harian — 1 Slide (Template BG Orange)
Artikel: Guerilla Marketing untuk UMKM: 7 Cara Kreatif Bersaing
Resolusi: 1080×1350 (4:5 portrait)
Background: Orange solid #F97316
Teks: Putih #FFFFFF
Font: Poppins
Safe zone: 20px dari semua tepi
Design margin: 65px
Content: vertikal middle
No boxes/cards/bubbles — pure typography
"""

from PIL import Image, ImageDraw, ImageFont
import os

OUT_DIR = os.path.expanduser("~/.openclaw/workspace-atun/dmark_fb_harian")
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
J170 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 170)
J140 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 140)
J110 = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 110)
J85  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Bold.ttf"), 85)
SUB  = ImageFont.truetype(os.path.join(FONT_DIR, "Poppins-Regular.ttf"), 36)
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):
    d.text((M, S20), "DMARK", font=B24, fill=WHITE)
    # No page number for single slide

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"):
    d.text((M, H - S20 - 5), left, font=R20, fill=WHITE)

def cy_from_total(d, total_h):
    """Return start_y so content is vertically centered between header & footer"""
    hdr_bot = S20 + fh(d, "DMARK", B24) + 15
    ftr_top = H - S20 - fh(d, "www.dmark.id", R20) - 15
    return hdr_bot + (ftr_top - hdr_bot - total_h) // 2


# ============ SLIDE: GUERILLA MARKETING UNTUK UMKM ============
img = Image.new("RGB", (W, H), ORANGE)
d = ImageDraw.Draw(img)
header(d)

# Content:
judul_lines = ["GUERILLA", "MARKETING", "UNTUK UMKM"]
sub_lines = ["7 cara kreatif bersaing dengan", "brand besar tanpa budget besar"]
# Items from article
items = ["Ruang sekitar jadi media promosi",
         "Kolaborasi dengan usaha tetangga",
         "Momen yang layak difoto",
         "Pop-up dadakan bikin kejutan",
         "Storytelling visual yang kuat"]

total_h = 0
# Judul
for line in judul_lines:
    total_h += int(fh(d, line, J110) * 1.1)
total_h += 35  # divider gap
total_h += 10  # divider height
total_h += 25  # after divider
# Sub
total_h += block_h(d, sub_lines, SUB, 1.5)
total_h += 20
# Checklist items
for item in items:
    total_h += int(fh(d, item, SUB) * 1.4)

sy = cy_from_total(d, total_h)
ty = sy

# Draw title
for line in judul_lines:
    d.text((M, ty), line, font=J110, fill=WHITE)
    ty += int(fh(d, line, J110) * 1.1)

# Divider
ty += 15
divider(d, ty, 200)
ty += 15

# Subtitle
ty = draw_block(d, sub_lines, SUB, M, ty, 1.5)
ty += 10

# Checklist items
for item in items:
    d.text((M, ty), "\u2611", font=SUB, fill=WHITE)
    d.text((M + 50, ty + 2), item, font=SUB, fill=WHITE)
    ty += int(fh(d, item, SUB) * 1.4)

footer(d, "www.dmark.id")
fname = os.path.join(OUT_DIR, "dmark_fb_20260728.png")
img.save(fname)
print(f"✅ Slide saved: {fname}")
