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)
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,9 +88,8 @@ 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()
@@ -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}')