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)
|
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,10 +88,9 @@ 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()
|
||||||
days_until_death = (death_date - today).days
|
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_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}')
|
||||||
|
|||||||
Reference in New Issue
Block a user