flexible positioning

This commit is contained in:
2026-07-28 00:08:51 +03:00
parent 8127789b08
commit 4f5473e0e1
+18 -12
View File
@@ -67,6 +67,16 @@ def draw_digits(x, y, size, digits, color=(0, 255, 0)):
draw.text((x, y), digits, font=font, fill=color) 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(): def draw_clock():
x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * CLOCK_SIZE_MULTIPLIER - MARGIN_PIXELS x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * CLOCK_SIZE_MULTIPLIER - MARGIN_PIXELS
y = MARGIN_PIXELS y = MARGIN_PIXELS
@@ -78,9 +88,8 @@ def draw_clock():
#draw_label('Time:', x - MARGIN_PIXELS, y + CLOCK_HEIGHT_PIXELS) #draw_label('Time:', x - MARGIN_PIXELS, y + CLOCK_HEIGHT_PIXELS)
def draw_death_clock(): def draw_death_clock(order):
x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * STATUS_SIZE_MULTIPLIER - MARGIN_PIXELS x, y = status_clock_position(order)
y = MARGIN_PIXELS + CLOCK_HEIGHT_PIXELS * CLOCK_SIZE_MULTIPLIER + 2 * MARGIN_PIXELS
death_date = datetime.strptime("08/23/2026", "%m/%d/%Y").date() death_date = datetime.strptime("08/23/2026", "%m/%d/%Y").date()
today = datetime.today().date() today = datetime.today().date()
@@ -91,9 +100,8 @@ def draw_death_clock():
draw_digits(x, y, STATUS_SIZE_MULTIPLIER, f'{days_until_death:4}', color) 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) draw_label('death:', x - MARGIN_PIXELS, y + CLOCK_HEIGHT_PIXELS * STATUS_SIZE_MULTIPLIER)
def draw_journal_minutes(status): def draw_journal_minutes(status, order):
x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * STATUS_SIZE_MULTIPLIER - MARGIN_PIXELS x, y = status_clock_position(order)
y = MARGIN_PIXELS + CLOCK_HEIGHT_PIXELS * CLOCK_SIZE_MULTIPLIER + CLOCK_HEIGHT_PIXELS * STATUS_SIZE_MULTIPLIER + 4 * MARGIN_PIXELS
elapsed_minutes = status['journal_updated_minutes'] 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) draw_label('Journal:', x - MARGIN_PIXELS, y + CLOCK_HEIGHT_PIXELS * STATUS_SIZE_MULTIPLIER)
def draw_fasting(status): def draw_fasting(status, order):
x = SCREEN_WIDTH_PIXELS - CLOCK_WIDTH_PIXELS * STATUS_SIZE_MULTIPLIER - MARGIN_PIXELS x, y = status_clock_position(order)
y = MARGIN_PIXELS + CLOCK_HEIGHT_PIXELS * CLOCK_SIZE_MULTIPLIER + CLOCK_HEIGHT_PIXELS * STATUS_SIZE_MULTIPLIER * 2 + 6 * MARGIN_PIXELS
if 'fasting' in status and status['fasting']: if 'fasting' in status and status['fasting']:
label = 'Breakfast' label = 'Breakfast'
@@ -146,12 +153,11 @@ def clear_status_area():
while True: while True:
draw_clock() draw_clock()
draw_death_clock()
try: try:
status = get_status_data() status = get_status_data()
draw_journal_minutes(status) draw_journal_minutes(status, order=0)
# draw_fasting(status) draw_fasting(status, order=1)
except RequestException as e: except RequestException as e:
logging.error(f'Error fetching status data: {e}') logging.error(f'Error fetching status data: {e}')