From 800f2c84da77d0560da252e51c517e8642301b9c Mon Sep 17 00:00:00 2001 From: adam lazur Date: Thu, 28 May 2026 22:04:13 +0900 Subject: [PATCH] add crossbar on 7 option for distinction between 1 and 7 in font --- .gitignore | 5 +++++ package.json | 3 ++- src/c/brutal_clock.c | 19 ++++++++++++++++++- src/c/messaging.c | 5 +++++ src/c/settings.c | 4 +++- src/c/settings.h | 3 ++- src/pkjs/config.json | 6 ++++++ src/pkjs/indexbrutal.js | 6 ++++++ 8 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d3f481c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +build/ +node_modules/ +.DS_Store +.lock-waf_linux2_build +.claude/ diff --git a/package.json b/package.json index b61f84c..7a69ab1 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,8 @@ "WeatherUseNightIcon", "SettingWidget0ID", "SettingWidget1ID", - "SettingWidget2ID" + "SettingWidget2ID", + "SettingSevenCrossbar" ], "resources": { "media": [ diff --git a/src/c/brutal_clock.c b/src/c/brutal_clock.c index 31e2669..660a411 100644 --- a/src/c/brutal_clock.c +++ b/src/c/brutal_clock.c @@ -397,8 +397,25 @@ get_glyph(enum font font, char c, uint8_t **pixels) *pixels = gbitmap_get_data(glyphs); #ifndef PBL_PLATFORM_APLITE - if (font == BIG) + if (font == BIG) { glyph = scale_glyph(glyph, pixels); + + if (c == '7' && settings.sevenCrossbar) { + // Crossbar delta (glyph-relative col, row): 3-2-1 taper + static const int8_t crossbar[][2] = { + {2,5},{3,5},{4,5}, + {3,6},{4,6}, + {4,7} + }; + for (unsigned ci = 0; ci < ARRAY_LENGTH(crossbar); ci++) { + int bx0 = crossbar[ci][0] * s_scale_x; + int by0 = crossbar[ci][1] * s_scale_y; + for (int dy = 0; dy < s_scale_y; dy++) + for (int dx = 0; dx < s_scale_x; dx++) + SET_BIT(s_scale_buf, BUFW, bx0+dx, by0+dy); + } + } + } #endif return glyph; diff --git a/src/c/messaging.c b/src/c/messaging.c index 7357d10..24ab4dd 100644 --- a/src/c/messaging.c +++ b/src/c/messaging.c @@ -109,6 +109,7 @@ void inbox_received_callback(DictionaryIterator *iterator, void *context) { Tuple *activateDisconnectIcon_tuple = dict_find(iterator, MESSAGE_KEY_SettingDisconnectIcon); Tuple *shadow_tuple = dict_find(iterator, MESSAGE_KEY_SHADOW); + Tuple *sevenCrossbar_tuple = dict_find(iterator, MESSAGE_KEY_SettingSevenCrossbar); if(timeColor_tuple != NULL) { @@ -213,6 +214,10 @@ void inbox_received_callback(DictionaryIterator *iterator, void *context) { settings.shadow = (uint8_t)shadow_tuple->value->int32; } + if(sevenCrossbar_tuple != NULL) { + settings.sevenCrossbar = (bool)sevenCrossbar_tuple->value->int8; + } + // save the new settings to persistent storage Settings_saveToStorage(); diff --git a/src/c/settings.c b/src/c/settings.c index 0f95bef..fd4ecce 100644 --- a/src/c/settings.c +++ b/src/c/settings.c @@ -75,8 +75,10 @@ void Settings_loadFromStorage() { settings.activateDisconnectIcon = s.activateDisconnectIcon; // shadow setting is new, default to 0 settings.shadow = 0; + // sevenCrossbar is new, default to false + settings.sevenCrossbar = false; - // re-save in new v7 format + // re-save in new v8 format Settings_saveToStorage(); } else { // v7 settings: load directly via single persist read diff --git a/src/c/settings.h b/src/c/settings.h index ca435c5..311a699 100644 --- a/src/c/settings.h +++ b/src/c/settings.h @@ -2,7 +2,7 @@ #include #include "sidebar_widgets.h" -#define CURRENT_SETTINGS_VERSION 7 +#define CURRENT_SETTINGS_VERSION 8 // persistent storage keys #define SETTINGS_PERSIST_KEY 100 @@ -59,6 +59,7 @@ typedef struct { bool healthUseDistance; bool healthUseRestfulSleep; char decimalSeparator; + bool sevenCrossbar; } Settings; // Dynamic settings (calculated at runtime based on currently-selected widgets) diff --git a/src/pkjs/config.json b/src/pkjs/config.json index 454d542..080aeb2 100644 --- a/src/pkjs/config.json +++ b/src/pkjs/config.json @@ -28,6 +28,12 @@ "label": "Show Leading Zero for Hours", "defaultValue": false }, + { + "type": "toggle", + "messageKey": "SettingSevenCrossbar", + "label": "Crossbar on 7", + "defaultValue": false + }, { "type": "select", "messageKey": "SettingClockFontId", diff --git a/src/pkjs/indexbrutal.js b/src/pkjs/indexbrutal.js index b90a851..304858b 100644 --- a/src/pkjs/indexbrutal.js +++ b/src/pkjs/indexbrutal.js @@ -38,6 +38,12 @@ new Clay([ "label": "Show Leading Zero for Hours", "defaultValue": false }, + { + "type": "toggle", + "messageKey": "SettingSevenCrossbar", + "label": "Crossbar on 7", + "defaultValue": false + }, { "type": "select", "messageKey": "SettingClockFontId",