Coleção Rotatio

2025-03-12

"""2025-03-12
Coleção Rotatio
Coleção de desenhos de rotação
png
Sketch,py5,CreativeCoding
"""

from datetime import date, timedelta
from pathlib import Path

import py5
from PIL import Image

from utils import helpers
from utils.draw import cria_grade_ex

sketch = helpers.info_for_sketch(__file__, __doc__)


def carrega_images() -> list:
    dia = date(2025, 2, 15)
    final = date(2025, 3, 12)
    imagens = []
    while dia < final:
        modulo = f"d{dia:%Y_%m_%d}"
        imagem = f"{dia:%Y-%m-%d}.png"
        path = Path(__file__).parent.parent / modulo / imagem
        img = Image.open(path)
        imagens.append(img)
        dia += timedelta(days=1)
    return imagens


def setup():
    py5.size(helpers.LARGURA, helpers.ALTURA, py5.P3D)
    py5.background(0)
    py5.color_mode(py5.HSB, 360, 100, 100)
    py5.rect_mode(py5.CORNER)
    py5.blend_mode(py5.BLEND)
    alt = 140
    larg = 140
    grade = cria_grade_ex(py5.width, py5.height, 50, 50, alt, larg, False)
    imagens = carrega_images()
    print(len(imagens))
    for idx, x, idy, y in grade:
        imagem = imagens.pop(0)
        py5.image(imagem, x, y, larg, alt)
        with py5.push_style():
            py5.stroke("#222")
            py5.stroke_weight(3)
            py5.no_fill()
            py5.rect(x, y, larg, alt)

    helpers.write_legend(sketch=sketch, frame="#000", cor="#FFF")


def key_pressed():
    key = py5.key
    if key == " ":
        save_and_close()


def save_and_close():
    py5.no_loop()
    helpers.save_sketch_image(sketch)
    py5.exit_sketch()


if __name__ == "__main__":
    py5.run_sketch()