2024-09-09 20:58:58 +00:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
from time import strftime
|
|
|
|
from typing import Tuple
|
|
|
|
|
|
|
|
import pygame
|
|
|
|
|
|
|
|
from iboard import IBoard
|
|
|
|
|
|
|
|
|
|
|
|
class Screensaver(IBoard):
|
|
|
|
def handle_event(self, _):
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class ClockScreensaver(Screensaver):
|
|
|
|
def __init__(self):
|
|
|
|
self.font = pygame.freetype.SysFont(name="Sans", size=40)
|
|
|
|
self.dx = 1
|
|
|
|
self.dy = 1
|
|
|
|
self.text_xy: Tuple[int, int] = (0, 0)
|
|
|
|
|
2024-09-10 14:37:34 +00:00
|
|
|
def draw(self, screen: pygame.Surface, _):
|
2024-09-09 20:58:58 +00:00
|
|
|
text = strftime("%H:%M:%S")
|
|
|
|
screen.fill("black")
|
|
|
|
pygame.Rect(0, 0, screen.get_width(), screen.get_height())
|
|
|
|
text_rect = self.font.get_rect(text)
|
|
|
|
if ((self.text_xy[0] + self.dx + text_rect.width) > screen.get_width()) or \
|
|
|
|
((self.text_xy[0] + self.dx) < 0):
|
|
|
|
self.dx *= -1
|
|
|
|
if ((self.text_xy[1] + self.dy + text_rect.height) > screen.get_height()) or \
|
|
|
|
((self.text_xy[1] + self.dy) < 0):
|
|
|
|
self.dy *= -1
|
|
|
|
self.text_xy = (self.text_xy[0] + self.dx, self.text_xy[1] + self.dy)
|
|
|
|
text_pos = pygame.Rect(self.text_xy[0], self.text_xy[1],
|
|
|
|
text_rect.width, text_rect.height)
|
|
|
|
self.font.render_to(screen, text_pos, text, fgcolor="pink")
|