flexible positioning
This commit is contained in:
@@ -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}')
|
||||
|
||||
Reference in New Issue
Block a user