From 78f23dc2150ab886915b85af2ca29ed9dbbf0887 Mon Sep 17 00:00:00 2001 From: joeycastillo Date: Sun, 29 Sep 2024 13:25:13 -0400 Subject: [PATCH] stock stopwatch: use new functions for text display --- .../complication/stock_stopwatch_face.c | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/watch-faces/complication/stock_stopwatch_face.c b/watch-faces/complication/stock_stopwatch_face.c index 17350f48..7c86ffcf 100644 --- a/watch-faces/complication/stock_stopwatch_face.c +++ b/watch-faces/complication/stock_stopwatch_face.c @@ -26,6 +26,7 @@ #include #include "stock_stopwatch_face.h" #include "watch.h" +#include "watch_common_display.h" #include "watch_utility.h" #include "watch_rtc.h" @@ -131,11 +132,15 @@ static void _display_ticks(uint32_t ticks) { uint8_t sec_100 = (ticks & 0x7F) * 100 / 128; uint32_t seconds = ticks >> 7; uint32_t minutes = seconds / 60; - if (_hours) - sprintf(buf, "%2u%02lu%02lu%02u", _hours, minutes, (seconds % 60), sec_100); - else - sprintf(buf, " %02lu%02lu%02u", minutes, (seconds % 60), sec_100); - watch_display_string(buf, 2); + if (_hours) { + sprintf(buf, "%2u", _hours); + watch_display_text(WATCH_POSITION_TOP_RIGHT, buf); + } else { + watch_display_text(WATCH_POSITION_TOP_RIGHT, " "); + } + + sprintf(buf, "%02lu%02lu%02u", minutes, (seconds % 60), sec_100); + watch_display_text(WATCH_POSITION_BOTTOM, buf); } /// @brief Displays the current stopwatch time on the LCD (more optimized than _display_ticks()) @@ -154,22 +159,29 @@ static void _draw() { // minutes have changed, draw everything _old_minutes = minutes; minutes %= 60; - if (_hours) + if (_hours) { // with hour indicator - sprintf(buf, "%2u%02u%02lu%02u", _hours, minutes, seconds, sec_100); - else + sprintf(buf, "%2u", _hours); + watch_display_text(WATCH_POSITION_TOP_RIGHT, buf); + } else { // no hour indicator - sprintf(buf, " %02u%02lu%02u", minutes, seconds, sec_100); - watch_display_string(buf, 2); + watch_display_text(WATCH_POSITION_TOP_RIGHT, " "); + } + sprintf(buf, "%02u%02lu%02u", minutes, seconds, sec_100); + watch_display_text(WATCH_POSITION_BOTTOM, buf); } else { // just draw seconds - sprintf(buf, "%02lu%02u", seconds, sec_100); - watch_display_string(buf, 6); + sprintf(buf, "%02lu", seconds); + // note that we're drawing the seconds in the "minutes" position, since this + // watch face uses the "seconds" position for hundredths of seconds + watch_display_text(WATCH_POSITION_MINUTES, buf); + watch_display_character_lp_seconds('0' + sec_100 / 10, 8); + watch_display_character_lp_seconds('0' + sec_100 % 10, 9); } } else { // only draw 100ths of seconds - sprintf(buf, "%02u", sec_100); - watch_display_string(buf, 8); + watch_display_character_lp_seconds('0' + sec_100 / 10, 8); + watch_display_character_lp_seconds('0' + sec_100 % 10, 9); } } else { _display_ticks(_ticks); @@ -236,7 +248,7 @@ bool stock_stopwatch_face_loop(movement_event_t event, void *context) { switch (event.event_type) { case EVENT_ACTIVATE: _set_colon(); - watch_display_string("ST ", 0); + watch_display_text_with_fallback(WATCH_POSITION_TOP_LEFT, "STW", "ST"); _update_lap_indicator(); if (_is_running) movement_request_tick_frequency(16); _display_ticks(_lap_ticks ? _lap_ticks : _ticks);