]> git.earman.xyz Git - sensor-watch.git/commitdiff
stock stopwatch: use new functions for text display
authorjoeycastillo <joeycastillo@utexas.edu>
Sun, 29 Sep 2024 17:25:13 +0000 (13:25 -0400)
committerjoeycastillo <joeycastillo@utexas.edu>
Sun, 29 Sep 2024 17:25:13 +0000 (13:25 -0400)
watch-faces/complication/stock_stopwatch_face.c

index 17350f48d06d888953ac0c4b1bbc3b2da43a2d7c..7c86ffcf87871aff54752af7e4cdc52fdf43a728 100644 (file)
@@ -26,6 +26,7 @@
 #include <string.h>
 #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);