From 4f5473e0e1c049de78393728c88c42edfb01afea Mon Sep 17 00:00:00 2001 From: Sorin Savu Date: Tue, 28 Jul 2026 00:08:51 +0300 Subject: [PATCH] flexible positioning --- faster.py | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/faster.py b/faster.py index 8d6da1d..46f6538 100644 --- a/faster.py +++ b/faster.py @@ -67,6 +67,16 @@ def draw_digits(x, y, size, digits, color=(0, 255, 0)): draw.text((x, y), digits, font=font, fill=color) +def status_clock_position(order): + """ + Computes the x, y position of the status clock at the given stacking order (0-based). + """ + x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * STATUS_SIZE_MULTIPLIER - MARGIN_PIXELS + slot_height = CLOCK_HEIGHT_PIXELS * STATUS_SIZE_MULTIPLIER + 2 * MARGIN_PIXELS + y = (MARGIN_PIXELS + CLOCK_HEIGHT_PIXELS * CLOCK_SIZE_MULTIPLIER + 2 * MARGIN_PIXELS + + order * slot_height) + return x, y + def draw_clock(): x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * CLOCK_SIZE_MULTIPLIER - MARGIN_PIXELS y = MARGIN_PIXELS @@ -78,10 +88,9 @@ def draw_clock(): #draw_label('Time:', x - MARGIN_PIXELS, y + CLOCK_HEIGHT_PIXELS) -def draw_death_clock(): - x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * STATUS_SIZE_MULTIPLIER - MARGIN_PIXELS - y = MARGIN_PIXELS + CLOCK_HEIGHT_PIXELS * CLOCK_SIZE_MULTIPLIER + 2 * MARGIN_PIXELS - +def draw_death_clock(order): + x, y = status_clock_position(order) + death_date = datetime.strptime("08/23/2026", "%m/%d/%Y").date() today = datetime.today().date() days_until_death = (death_date - today).days @@ -91,9 +100,8 @@ def draw_death_clock(): draw_digits(x, y, STATUS_SIZE_MULTIPLIER, f'{days_until_death:4}', color) draw_label('death:', x - MARGIN_PIXELS, y + CLOCK_HEIGHT_PIXELS * STATUS_SIZE_MULTIPLIER) -def draw_journal_minutes(status): - x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * STATUS_SIZE_MULTIPLIER - MARGIN_PIXELS - y = MARGIN_PIXELS + CLOCK_HEIGHT_PIXELS * CLOCK_SIZE_MULTIPLIER + CLOCK_HEIGHT_PIXELS * STATUS_SIZE_MULTIPLIER + 4 * MARGIN_PIXELS +def draw_journal_minutes(status, order): + x, y = status_clock_position(order) elapsed_minutes = status['journal_updated_minutes'] @@ -111,9 +119,8 @@ def draw_journal_minutes(status): draw_label('Journal:', x - MARGIN_PIXELS, y + CLOCK_HEIGHT_PIXELS * STATUS_SIZE_MULTIPLIER) -def draw_fasting(status): - x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * STATUS_SIZE_MULTIPLIER - MARGIN_PIXELS - y = MARGIN_PIXELS + CLOCK_HEIGHT_PIXELS * CLOCK_SIZE_MULTIPLIER + CLOCK_HEIGHT_PIXELS * STATUS_SIZE_MULTIPLIER * 2 + 6 * MARGIN_PIXELS +def draw_fasting(status, order): + x, y = status_clock_position(order) if 'fasting' in status and status['fasting']: label = 'Breakfast' @@ -146,12 +153,11 @@ def clear_status_area(): while True: draw_clock() - draw_death_clock() try: status = get_status_data() - - draw_journal_minutes(status) - # draw_fasting(status) + + draw_journal_minutes(status, order=0) + draw_fasting(status, order=1) except RequestException as e: logging.error(f'Error fetching status data: {e}')