diff options
| -rw-r--r-- | src/displayapp/fonts/neofont.c | 9 | ||||
| -rw-r--r-- | src/displayapp/screens/Symbols.h | 11 | ||||
| -rw-r--r-- | src/displayapp/screens/WatchFaceDigital.cpp | 149 | ||||
| -rw-r--r-- | src/displayapp/screens/WatchFaceDigital.h | 4 |
4 files changed, 117 insertions, 56 deletions
diff --git a/src/displayapp/fonts/neofont.c b/src/displayapp/fonts/neofont.c index b1abad4..db2363a 100644 --- a/src/displayapp/fonts/neofont.c +++ b/src/displayapp/fonts/neofont.c @@ -346,7 +346,8 @@ static bool neofont0mono_glyph_dsc_cb(const lv_font_t * font, lv_font_glyph_dsc_ /* Get the bitmap of `unicode_letter` from `font`. */ static const uint8_t * neofont0mono_glyph_bitmap_cb(const lv_font_t * font, uint32_t unicode_letter) { - static const uint8_t spc[2] = {0,0}; + static const uint8_t spc[] = { 0, 0 }; + static uint8_t custom[2]; /* Your code here */ // /* The bitmap should be a continuous bitstream where @@ -374,6 +375,12 @@ static const uint8_t * neofont0mono_glyph_bitmap_cb(const lv_font_t * font, uint case 0xB0: return glyphs[sizeof(glyphs)/sizeof(glyphs[0])-1]; } + + if ((0xF0000 < unicode_letter) && (unicode_letter < 0xF7FFF)) { + custom[0] = unicode_letter; + custom[1] = (unicode_letter >> 7); + return custom; + } return glyphs[sizeof(glyphs)/sizeof(glyphs[0])-2]; } diff --git a/src/displayapp/screens/Symbols.h b/src/displayapp/screens/Symbols.h index 928bcd7..63f3778 100644 --- a/src/displayapp/screens/Symbols.h +++ b/src/displayapp/screens/Symbols.h @@ -10,7 +10,16 @@ namespace Pinetime { static constexpr const char* batteryThreeQuarter = "\xEF\x89\x81"; static constexpr const char* batteryHalf = "\xEF\x89\x82"; static constexpr const char* batteryOneQuarter = "\xEF\x89\x83"; - static constexpr const char* heartBeat = "\xEF\x88\x9E"; + static constexpr const char* heartBeat = + // Standard: "\xEF\x88\x9E" + // For neofont: + // Layout for 3-byte codes: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + // U+F0000: 11110011 10110000 000000 000000 + // Neofont glyph: 11110011 10110zzz zzzzyy yyyyyy + // CDD DEEEAA ABBBCC + // \xF3 \xB[0-7] \x[8-B]. \x[8-B]. + "\xF3\xB5\x80\x97" + ; static constexpr const char* bluetoothFull = "\xEF\x8A\x93"; static constexpr const char* bluetooth = "\xEF\x8A\x94"; static constexpr const char* plug = "\xEF\x87\xA6"; diff --git a/src/displayapp/screens/WatchFaceDigital.cpp b/src/displayapp/screens/WatchFaceDigital.cpp index 9bf3541..44af905 100644 --- a/src/displayapp/screens/WatchFaceDigital.cpp +++ b/src/displayapp/screens/WatchFaceDigital.cpp @@ -3,6 +3,7 @@ #include <date/date.h> #include <lvgl/lvgl.h> #include <cstdio> +#include "drivers/Hrs3300.h" #include "displayapp/screens/BatteryIcon.h" #include "displayapp/screens/BleIcon.h" #include "displayapp/screens/NotificationIcon.h" @@ -16,6 +17,28 @@ #include "displayapp/fonts/neofont.h" using namespace Pinetime::Applications::Screens; +static inline uint8_t sprintuint4hex(uint8_t x) { + return x < 10 ? '0' + x : ('A' - 10) + x; +} + +static void sprintuint32hex(char x[9], uint32_t v) { + uint16_t p = v; + uint16_t q = v >> 16; + uint8_t a = q >> 8; + x[0] = sprintuint4hex(a>>4); + x[1] = sprintuint4hex(a&0xf); + a = q; + x[2] = sprintuint4hex(a>>4); + x[3] = sprintuint4hex(a&0xf); + a = p >> 8; + x[4] = sprintuint4hex(a>>4); + x[5] = sprintuint4hex(a&0xf); + a = p; + x[6] = sprintuint4hex(a>>4); + x[7] = sprintuint4hex(a&0xf); + x[8] = 0; +} + WatchFaceDigital::WatchFaceDigital(DisplayApp* app, Controllers::DateTime& dateTimeController, Controllers::Battery& batteryController, @@ -36,10 +59,11 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, heartRateController {heartRateController}, motionController {motionController} { + lv_obj_t *area1, *area2, *area3, *area4, *area5, *area6, *area7, *area8, *area9, *area10, *area11; if (1) { lv_obj_t * b1, * l1; - b1 = lv_obj_create(lv_scr_act(), nullptr); + area3 = b1 = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000099)); lv_obj_set_style_local_radius(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, 0); lv_obj_set_size(b1, 96, 48); @@ -49,7 +73,7 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); + area6 = b1 = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x444488)); lv_obj_set_style_local_text_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x3b5d6e)); lv_obj_set_size(b1, 96, 48); @@ -59,7 +83,7 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); + area1 = b1 = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x444488)); lv_obj_set_style_local_radius(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, 0); lv_obj_set_size(b1, 96, 48); @@ -69,7 +93,7 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); + area4 = b1 = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x444488)); lv_obj_set_style_local_radius(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, 0); lv_obj_set_size(b1, 48, 48); @@ -79,7 +103,7 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); + area2 = b1 = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x336677)); lv_obj_set_size(b1, 48, 48); lv_obj_align(b1, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 96, 0); @@ -88,7 +112,7 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); + area5 = b1 = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x336677)); lv_obj_set_style_local_text_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x3b5d6e)); lv_obj_set_size(b1, 96, 48); @@ -98,7 +122,7 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); + area7 = b1 = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000099)); lv_obj_set_style_local_radius(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, 0); lv_obj_set_size(b1, 240, 48); @@ -108,17 +132,7 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000099)); - lv_obj_set_style_local_radius(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, 0); - lv_obj_set_size(b1, 96, 48); - lv_obj_align(b1, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 0, 192); - l1 = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(l1, "11"); - lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); - lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - - b1 = lv_obj_create(lv_scr_act(), nullptr); + area8 = b1 = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x444488)); lv_obj_set_style_local_text_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x3b5d6e)); lv_obj_set_size(b1, 96, 48); @@ -128,18 +142,8 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x444488)); - lv_obj_set_style_local_radius(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, 0); - lv_obj_set_size(b1, 96, 48); - lv_obj_align(b1, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 144, 192); - l1 = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(l1, "13"); - lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); - lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - - b1 = lv_obj_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x444488)); + area10 = b1 = lv_obj_create(lv_scr_act(), nullptr); + lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x222277)); lv_obj_set_style_local_radius(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, 0); lv_obj_set_size(b1, 48, 48); lv_obj_align(b1, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 192, 144); @@ -148,17 +152,17 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x336677)); - lv_obj_set_style_local_text_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x3b5d6e)); - lv_obj_set_size(b1, 48, 48); - lv_obj_align(b1, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 96, 192); + area11 = b1 = lv_obj_create(lv_scr_act(), nullptr); + lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x222277)); + lv_obj_set_style_local_radius(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, 0); + lv_obj_set_size(b1, 240, 48); + lv_obj_align(b1, lv_scr_act(), LV_ALIGN_IN_TOP_LEFT, 0, 192); l1 = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(l1, "12"); + lv_label_set_text_static(l1, "11"); lv_obj_set_style_local_text_color(l1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x000000)); - lv_obj_align(l1, b1, LV_ALIGN_IN_TOP_MID, 0, 0); + lv_obj_align(l1, b1, LV_ALIGN_IN_RIGHT_MID, 0, 0); - b1 = lv_obj_create(lv_scr_act(), nullptr); + area9 = b1 = lv_obj_create(lv_scr_act(), nullptr); lv_obj_set_style_local_bg_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x336677)); lv_obj_set_style_local_text_color(b1, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x3b5d6e)); lv_obj_set_size(b1, 96, 48); @@ -171,7 +175,7 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, batteryIcon = lv_label_create(lv_scr_act(), nullptr); lv_label_set_text_fmt(batteryIcon, "B##%%"); - lv_obj_set_style_local_text_font(batteryIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont1); + lv_obj_set_style_local_text_font(batteryIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont2); lv_obj_align(batteryIcon, lv_scr_act(), LV_ALIGN_IN_TOP_RIGHT, 0, 0); batteryPlug = lv_label_create(lv_scr_act(), nullptr); @@ -189,11 +193,11 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_label_set_text_static(notificationIcon, NotificationIcon::GetIcon(false)); lv_obj_align(notificationIcon, nullptr, LV_ALIGN_IN_TOP_LEFT, 0, 0); - label_temp = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color( label_temp, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x222222)); + label_temp = lv_label_create(area3, nullptr); + lv_obj_set_style_local_text_color( label_temp, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xCCCCCC)); lv_obj_set_style_local_text_font( label_temp, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont15); lv_label_set_text_fmt(label_temp, "??°C"); - lv_obj_align(label_temp, lv_scr_act(), LV_ALIGN_CENTER, 75, -75); + lv_obj_align(label_temp, nullptr, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); label_temp = lv_label_create(lv_scr_act(), nullptr); lv_obj_align(label_temp, lv_scr_act(), LV_ALIGN_CENTER, 0, -60); @@ -217,19 +221,19 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, #else label_time_sec = lv_label_create(lv_scr_act(), nullptr); // lv_obj_set_style_local_text_color(label_time_sec, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFFFFFF)); - lv_obj_set_style_local_text_font(label_time_sec, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont15); + lv_obj_set_style_local_text_font(label_time_sec, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont2); lv_label_set_text_fmt(label_time_sec, ":??"); lv_obj_align(label_time_sec, label_time, LV_ALIGN_OUT_RIGHT_BOTTOM, 0, 0); // -2 #endif label_time_pm = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(label_time_pm, "PM"); + lv_label_set_text_static(label_time_pm, "P"); lv_obj_set_style_local_text_font(label_time_pm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont1); lv_obj_align(label_time_pm, label_time, LV_ALIGN_OUT_LEFT_TOP, 0, 0); - lv_obj_set_hidden(label_time_pm, 1); + // lv_obj_set_hidden(label_time_pm, 1); label_date_dd = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color(label_date_dd, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999)); + // lv_obj_set_style_local_text_color(label_date_dd, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999)); lv_label_set_text_fmt(label_date_dd, "DD"); lv_obj_set_style_local_text_font(label_date_dd, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont2); lv_obj_align(label_date_dd, label_time, LV_ALIGN_OUT_TOP_MID, 0, 0); @@ -237,21 +241,21 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_label_set_align(label_date_dd, LV_LABEL_ALIGN_CENTER); label_date_dow = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color(label_date_dow, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999)); + // lv_obj_set_style_local_text_color(label_date_dow, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999)); lv_label_set_text_fmt(label_date_dow, "DOW "); lv_obj_set_style_local_text_font(label_date_dow, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont2); lv_obj_align(label_date_dow, label_date_dd, LV_ALIGN_OUT_LEFT_MID, 0, 0); label_date_mmm = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color(label_date_mmm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999)); + // lv_obj_set_style_local_text_color(label_date_mmm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999)); lv_label_set_text_fmt(label_date_mmm, "MMM"); lv_obj_set_style_local_text_font(label_date_mmm, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont15); lv_obj_align(label_date_mmm, label_date_dd, LV_ALIGN_OUT_TOP_MID, 0, 0); label_date_yyyy = lv_label_create(lv_scr_act(), nullptr); - lv_obj_set_style_local_text_color(label_date_yyyy, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999)); + // lv_obj_set_style_local_text_color(label_date_yyyy, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x999999)); lv_label_set_text_fmt(label_date_yyyy, "YYYY"); - lv_obj_set_style_local_text_font(label_date_yyyy, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont1); + lv_obj_set_style_local_text_font(label_date_yyyy, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont0); lv_obj_align(label_date_yyyy, label_date_mmm, LV_ALIGN_OUT_TOP_MID, 0, 0); lv_label_set_long_mode(label_date_yyyy, LV_LABEL_LONG_CROP); lv_label_set_align(label_date_yyyy, LV_LABEL_ALIGN_CENTER); @@ -264,16 +268,45 @@ WatchFaceDigital::WatchFaceDigital(DisplayApp* app, lv_label_set_text_static(backgroundLabel, ""); heartbeatIcon = lv_label_create(lv_scr_act(), nullptr); - lv_label_set_text_static(heartbeatIcon, Symbols::heartBeat); lv_obj_set_style_local_text_color(heartbeatIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xCE1B1B)); - lv_obj_align(heartbeatIcon, lv_scr_act(), LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); + lv_obj_set_style_local_text_font(heartbeatIcon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont2); + lv_label_set_text_static(heartbeatIcon, Symbols::heartBeat); + lv_obj_align(heartbeatIcon, area8, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); heartbeatValue = lv_label_create(lv_scr_act(), nullptr); lv_obj_set_style_local_text_color(heartbeatValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xCE1B1B)); - lv_label_set_text_static(heartbeatValue, ""); - lv_obj_align(heartbeatValue, heartbeatIcon, LV_ALIGN_OUT_RIGHT_MID, 5, 0); + lv_obj_set_style_local_text_font(heartbeatValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont2); + lv_label_set_text_static(heartbeatValue, "???"); + lv_obj_align(heartbeatValue, heartbeatIcon, LV_ALIGN_OUT_RIGHT_MID, 0, 0); + lv_label_set_align(heartbeatValue, LV_LABEL_ALIGN_RIGHT); + + sprintuint32hex(hrs_label_text, 0x33); + hrsValue = lv_label_create(lv_scr_act(), nullptr); + lv_obj_set_style_local_text_color( hrsValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFFFFFF)); + lv_obj_set_style_local_text_font( hrsValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont15); + lv_obj_align(hrsValue, heartbeatValue, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 0); + lv_label_set_text_static(hrsValue, hrs_label_text); + + sprintuint32hex(als_label_text, 0x15617811); + alsValue = lv_label_create(lv_scr_act(), nullptr); + lv_obj_set_style_local_text_color( alsValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0xFFFFAA)); + lv_obj_set_style_local_text_font( alsValue, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &neofont15); + lv_obj_align(alsValue, hrsValue, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 0); + lv_label_set_text_static(alsValue, als_label_text); taskRefresh = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this); + + lv_obj_del(area1); + lv_obj_del(area2); + lv_obj_del(area4); + lv_obj_del(area5); + lv_obj_del(area6); + lv_obj_del(area7); + lv_obj_del(area8); + lv_obj_del(area9); + lv_obj_del(area10); + lv_obj_del(area11); + Refresh(); } @@ -413,4 +446,12 @@ void WatchFaceDigital::Refresh() { lv_obj_realign(heartbeatIcon); lv_obj_realign(heartbeatValue); } + + { + auto &sensor = systemTask.heartRateSensor; + sprintuint32hex(als_label_text, sensor.ReadHrs()); + sprintuint32hex(hrs_label_text, sensor.ReadAls()); + lv_label_set_text_static(hrsValue, hrs_label_text); + lv_label_set_text_static(alsValue, als_label_text); + } } diff --git a/src/displayapp/screens/WatchFaceDigital.h b/src/displayapp/screens/WatchFaceDigital.h index 62f4bcf..8d5bc8d 100644 --- a/src/displayapp/screens/WatchFaceDigital.h +++ b/src/displayapp/screens/WatchFaceDigital.h @@ -49,6 +49,8 @@ namespace Pinetime { uint8_t currentDay = 0; char hhmm_label_text[6] = { '?', '?', ':', '?', '?', 0 }; + char hrs_label_text[9] = { '?', 0,0,0,0, 0,0,0,0 }; + char als_label_text[9] = { '?', 0,0,0,0, 0,0,0,0 }; DirtyValue<uint8_t> batteryPercentRemaining {}; DirtyValue<bool> powerPresent {}; @@ -75,6 +77,8 @@ namespace Pinetime { lv_obj_t* batteryPlug; lv_obj_t* heartbeatIcon; lv_obj_t* heartbeatValue; + lv_obj_t* hrsValue; + lv_obj_t* alsValue; lv_obj_t* stepIcon; lv_obj_t* stepValue; lv_obj_t* notificationIcon; |
