import os
import random
from PIL import Image, ImageFont, ImageDraw
import lorem

from font_game import gen_id, IMAGE_SIZE, IMAGE_BACKGROUND, MARGINS, FONT_COLOR

def gen_image(font: ImageFont.ImageFont) -> str:
    image_mult = random.uniform(0.8,1.2)
    image_size = (int(IMAGE_SIZE[0]*image_mult), int(IMAGE_SIZE[1]*image_mult))
    img = Image.new("RGB", image_size, IMAGE_BACKGROUND)
    drawer = ImageDraw.Draw(img)
    text_width = int((IMAGE_SIZE[0] - 2 * MARGINS)*image_mult)
    text = lorem.sentence()
    text_list = []
    line = ""
    for word in text.split(" "):
        if drawer.textsize(line + word, font)[0] > text_width:
            text_list.append(line)
            line = ""
        else:
            line += word + " "

    text_list.append(line)

    drawer.text(
        (int(MARGINS*image_mult), int(MARGINS*image_mult)),
        '\n'.join(text_list),
        FONT_COLOR,
        font,
        spacing=30
    )

    filename = gen_id()

    path = f"static/images/{filename}.png"

    new_size = (IMAGE_SIZE[0] // 2, IMAGE_SIZE[1] // 2)
    img = img.resize(new_size, resample=Image.ANTIALIAS)

    img.save(path)
    return filename

def purge_images():
    for root, _, files in os.walk("static/images"):
        for file in files:
            os.remove(os.path.join(root, file))
