diff --git a/countdown_watchface/package.json b/countdown_watchface/package.json index fe62424..465c4fe 100644 --- a/countdown_watchface/package.json +++ b/countdown_watchface/package.json @@ -26,7 +26,14 @@ "APPOINTMENT_MINUTES" ], "resources": { - "media": [] + "media": [ + { + "type": "font", + "name": "FONT_ROBOTO_BOLD_36", + "file": "fonts/Roboto-Bold.ttf", + "maxHeight": 36 + } + ] } } } diff --git a/countdown_watchface/resources/fonts/Roboto-Bold.ttf b/countdown_watchface/resources/fonts/Roboto-Bold.ttf new file mode 100755 index 0000000..d3f01ad Binary files /dev/null and b/countdown_watchface/resources/fonts/Roboto-Bold.ttf differ diff --git a/countdown_watchface/src/c/watchface.c b/countdown_watchface/src/c/watchface.c index a4c35bb..0bbef33 100644 --- a/countdown_watchface/src/c/watchface.c +++ b/countdown_watchface/src/c/watchface.c @@ -5,6 +5,12 @@ static TextLayer *s_time_layer; static TextLayer *s_date_layer; static Layer *s_bar_layer; static Layer *s_battery_layer; +static GFont s_date_font; + +static const char * const MONTHS[] = { + "JAN","FEB","MAR","APR","MAY","JUN", + "JUL","AUG","SEP","OCT","NOV","DEC" +}; static int s_battery_level = 100; static int s_bar_fill = 30; // 0–30: minutes remaining @@ -49,8 +55,8 @@ static void bar_draw(Layer *layer, GContext *ctx) { graphics_context_set_fill_color(ctx, GColorWhite); graphics_fill_rect(ctx, block, 0, GCornerNone); } else { - graphics_context_set_stroke_color(ctx, GColorWhite); - graphics_draw_rect(ctx, block); + graphics_context_set_fill_color(ctx, GColorWhite); + graphics_fill_rect(ctx, GRect(x, bounds.size.h - 1, block_w, 1), 0, GCornerNone); } } } @@ -88,8 +94,8 @@ static void update_display(struct tm *tick_time) { strftime(time_buf, sizeof(time_buf), "%H:%M", tick_time); text_layer_set_text(s_time_layer, time_buf); - static char date_buf[6]; - strftime(date_buf, sizeof(date_buf), "%d/%m", tick_time); + static char date_buf[8]; + snprintf(date_buf, sizeof(date_buf), "%d %s", tick_time->tm_mday, MONTHS[tick_time->tm_mon]); text_layer_set_text(s_date_layer, date_buf); update_bar(); @@ -108,27 +114,39 @@ static void main_window_load(Window *window) { Layer *root = window_get_root_layer(window); GRect bounds = layer_get_bounds(root); - // Time — Leco 42, centred, flush to bar - s_time_layer = text_layer_create(GRect(0, 34, bounds.size.w, 52)); + // Shared horizontal geometry matching the bar's block layout + int block_w = (bounds.size.w - 29) / 30; + int bar_w = 30 * block_w + 29; + int bar_x = (bounds.size.w - bar_w) / 2; + + // Time — right-aligned to bar, almost touching bar + // Leco 60 is emery-exclusive; fall back to Leco 42 on other platforms +#ifdef PBL_PLATFORM_EMERY + s_time_layer = text_layer_create(GRect(bar_x, 18, bar_w, 68)); + text_layer_set_font(s_time_layer, fonts_get_system_font(FONT_KEY_LECO_60_BOLD_NUMBERS_AM_PM)); +#else + s_time_layer = text_layer_create(GRect(bar_x, 44, bar_w, 44)); + text_layer_set_font(s_time_layer, fonts_get_system_font(FONT_KEY_LECO_42_NUMBERS)); +#endif text_layer_set_background_color(s_time_layer, GColorClear); text_layer_set_text_color(s_time_layer, GColorWhite); - text_layer_set_font(s_time_layer, fonts_get_system_font(FONT_KEY_LECO_42_NUMBERS)); - text_layer_set_text_alignment(s_time_layer, GTextAlignmentCenter); + text_layer_set_text_alignment(s_time_layer, GTextAlignmentRight); text_layer_set_text(s_time_layer, "00:00"); layer_add_child(root, text_layer_get_layer(s_time_layer)); // Countdown bar — 30 blocks, right-to-left - s_bar_layer = layer_create(GRect(0, 90, bounds.size.w, 8)); + s_bar_layer = layer_create(GRect(0, 90, bounds.size.w, 14)); layer_set_update_proc(s_bar_layer, bar_draw); layer_add_child(root, s_bar_layer); - // Date — Leco 28 Light, right-aligned, flush to bar - s_date_layer = text_layer_create(GRect(0, 102, bounds.size.w, 34)); + // Date — Roboto Bold 36 custom font, right-aligned to bar + s_date_font = fonts_load_custom_font(resource_get_handle(RESOURCE_ID_FONT_ROBOTO_BOLD_36)); + s_date_layer = text_layer_create(GRect(bar_x, 106, bar_w, 42)); text_layer_set_background_color(s_date_layer, GColorClear); text_layer_set_text_color(s_date_layer, GColorWhite); - text_layer_set_font(s_date_layer, fonts_get_system_font(FONT_KEY_LECO_28_LIGHT_NUMBERS)); + text_layer_set_font(s_date_layer, s_date_font); text_layer_set_text_alignment(s_date_layer, GTextAlignmentRight); - text_layer_set_text(s_date_layer, "01/01"); + text_layer_set_text(s_date_layer, "1 JAN"); layer_add_child(root, text_layer_get_layer(s_date_layer)); // Battery icon — bottom right, only visible below 20% @@ -142,6 +160,7 @@ static void main_window_unload(Window *window) { text_layer_destroy(s_date_layer); layer_destroy(s_bar_layer); layer_destroy(s_battery_layer); + fonts_unload_custom_font(s_date_font); } static void init(void) {