#!/usr/bin/env python3
"""Generate handwriting practice PDF with ruled manuscript lines."""

from reportlab.lib.pagesizes import letter
from reportlab.lib.units import inch
from reportlab.pdfgen import canvas
from reportlab.lib.colors import black, Color
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

PAGE_W, PAGE_H = letter
LEFT_MARGIN = 0.75 * inch
RIGHT_MARGIN = 0.75 * inch
TOP_AREA = PAGE_H - 1.0 * inch  # Title area
LINE_SPACING = 0.5 * inch       # 0.5 inches between line sets

# Line colors
LINE_COLOR = Color(0.3, 0.3, 0.3)    # Dark gray for main lines
MID_COLOR = Color(0.7, 0.5, 0.3)     # Orange-ish for middle dashed line


def draw_manuscript_line(c, y_bottom, page_w, left_m, right_m):
    """Draw a three-line manuscript ruling at the given bottom y position."""
    top_y = y_bottom + LINE_SPACING
    mid_y = y_bottom + LINE_SPACING / 2

    # Bottom solid line
    c.setLineWidth(0.6)
    c.setStrokeColor(LINE_COLOR)
    c.setDash([])
    c.line(left_m, y_bottom, right_m, y_bottom)

    # Middle dashed line
    c.setLineWidth(0.4)
    c.setStrokeColor(MID_COLOR)
    c.setDash([3, 3])
    c.line(left_m, mid_y, right_m, mid_y)

    # Top solid line
    c.setLineWidth(0.6)
    c.setStrokeColor(LINE_COLOR)
    c.setDash([])
    c.line(left_m, top_y, right_m, top_y)


def generate():
    c = canvas.Canvas("handwriting_practice.pdf", pagesize=letter)

    # Title
    c.setFont("Helvetica-Bold", 18)
    c.setFillColor(black)
    c.drawCentredString(PAGE_W / 2, TOP_AREA, "Handwriting Practice")

    # === Sky Letters Section ===
    sky_y = TOP_AREA - 0.4 * inch
    c.setFont("Helvetica-Bold", 12)
    c.drawString(LEFT_MARGIN, sky_y, "Sky Letters (touch the top line):")

    c.setFont("Helvetica", 11)
    c.drawString(LEFT_MARGIN + 4.5 * inch, sky_y, "b  d  f  h  k  l  t")

    num_sky_lines = 4
    sky_start = sky_y - 0.35 * inch
    for i in range(num_sky_lines):
        draw_manuscript_line(c, sky_start - (i * LINE_SPACING), PAGE_W, LEFT_MARGIN, RIGHT_MARGIN)

    # === Fence Letters Section ===
    fence_y = sky_start - (num_sky_lines * LINE_SPACING) - 0.3 * inch
    c.setFont("Helvetica-Bold", 12)
    c.drawString(LEFT_MARGIN, fence_y, "Fence Letters (cross the middle line):")

    c.setFont("Helvetica", 11)
    c.drawString(LEFT_MARGIN + 4.2 * inch, fence_y, "a c e g i m n o r s u v w x z")

    num_fence_lines = 4
    fence_start = fence_y - 0.35 * inch
    for i in range(num_fence_lines):
        draw_manuscript_line(c, fence_start - (i * LINE_SPACING), PAGE_W, LEFT_MARGIN, RIGHT_MARGIN)

    # === Your Practice ===
    practice_y = fence_start - (num_fence_lines * LINE_SPACING) - 0.3 * inch
    c.setFont("Helvetica-Bold", 12)
    c.drawString(LEFT_MARGIN, practice_y, "Your Practice:")

    num_practice_lines = 3
    practice_start = practice_y - 0.35 * inch
    for i in range(num_practice_lines):
        draw_manuscript_line(c, practice_start - (i * LINE_SPACING), PAGE_W, LEFT_MARGIN, RIGHT_MARGIN)

    c.save()
    print("✓ handwriting_practice.pdf generated (0.5\" spacing)")


if __name__ == "__main__":
    generate()
