diff --git a/examples/companion_radio/ui-lvgl/Anim.h b/examples/companion_radio/ui-lvgl/Anim.h index 21b49227..069c1ee8 100644 --- a/examples/companion_radio/ui-lvgl/Anim.h +++ b/examples/companion_radio/ui-lvgl/Anim.h @@ -58,7 +58,7 @@ namespace anim { lv_obj_remove_flag(cover, LV_OBJ_FLAG_CLICKABLE); // taps go through to the screen lv_obj_add_flag(cover, LV_OBJ_FLAG_IGNORE_LAYOUT); lv_obj_set_size(cover, LV_PCT(100), LV_PCT(100)); - lv_obj_set_style_bg_color(cover, lv_obj_get_style_bg_color(scr, 0), 0); + lv_obj_set_style_bg_color(cover, lv_obj_get_style_bg_color(scr, LV_PART_MAIN), 0); run(cover, setBgOpa, LV_OPA_COVER, LV_OPA_TRANSP, SCREEN_MS, coverDone); if (body) run(body, setTy, back ? -6 : 6, 0, SCREEN_MS); } @@ -84,6 +84,6 @@ namespace anim { // Fade out, then hide (the object stays for reuse). static void fadeHide(lv_obj_t* o) { lv_anim_delete(o, setOpa); - run(o, setOpa, lv_obj_get_style_opa(o, 0), LV_OPA_TRANSP, OUT_MS, hideDone); + run(o, setOpa, lv_obj_get_style_opa(o, LV_PART_MAIN), LV_OPA_TRANSP, OUT_MS, hideDone); } } diff --git a/examples/companion_radio/ui-lvgl/CompassScreen.h b/examples/companion_radio/ui-lvgl/CompassScreen.h index 27dbdde9..efbfcbb0 100644 --- a/examples/companion_radio/ui-lvgl/CompassScreen.h +++ b/examples/companion_radio/ui-lvgl/CompassScreen.h @@ -65,8 +65,8 @@ static void onCompassDraw(lv_event_t* e) { // Fixed pointer: points down at the ring, the heading always under it. lv_draw_triangle_dsc_t tri; lv_draw_triangle_dsc_init(&tri); - tri.bg_color = lv_color_hex(theme::ACCENT); - tri.bg_opa = LV_OPA_COVER; + tri.color = lv_color_hex(theme::ACCENT); + tri.opa = LV_OPA_COVER; tri.p[0].x = cx - 8; tri.p[0].y = cy - r - 12; tri.p[1].x = cx + 8; tri.p[1].y = cy - r - 12; tri.p[2].x = cx; tri.p[2].y = cy - r + 2; diff --git a/examples/companion_radio/ui-lvgl/lvgl_patches.py b/examples/companion_radio/ui-lvgl/lvgl_patches.py deleted file mode 100644 index 86a9740f..00000000 --- a/examples/companion_radio/ui-lvgl/lvgl_patches.py +++ /dev/null @@ -1,60 +0,0 @@ -# Fixes to LVGL 9.2.2 (lib_deps) that ui-lvgl needs, applied in place to the -# downloaded library -- idempotent, so every build can run it. -# -# PlatformIO: extra_scripts = pre:examples/companion_radio/ui-lvgl/lvgl_patches.py -# (patches as LVGL is compiled, i.e. after lib_deps are fetched) -# The sim: python3 examples/companion_radio/ui-lvgl/lvgl_patches.py -# -# Content height counted as scrolled (lv_obj_pos.c, calc_content_height): a -# SIZE_CONTENT box capped by max_height measures its children where the scroll -# has moved them, so an elastic pull past its end shrinks it by the overshoot, -# again on every pull (popups with a list). The function zeroes scroll.y for -# the count, but the children's coords already carry it; it's added back. -import os -import sys - -PATCHES = [ - ("src/core/lv_obj_pos.c", [ - (" /*Normal top aligns. */\n" - " child_res_tmp = child->coords.y2 - obj->coords.y1 + 1;\n", - " /*Normal top aligns. */\n" - " child_res_tmp = child->coords.y2 - obj->coords.y1 + 1 + scroll_y_tmp;\n"), - (" else {\n" - " child_res_tmp = child->coords.y2 - obj->coords.y1 + 1;\n" - " }\n", - " else {\n" - " child_res_tmp = child->coords.y2 - obj->coords.y1 + 1 + scroll_y_tmp;\n" - " }\n"), - ]), -] - - -def apply(lvgl_dir): - for rel, subs in PATCHES: - path = os.path.join(lvgl_dir, rel) - with open(path) as f: - src = f.read() - out = src - for old, new in subs: - if new in out: - continue - if out.count(old) != 1: - raise RuntimeError("lvgl_patches: %s changed upstream, re-check the patch" % rel) - out = out.replace(old, new) - if out != src: - with open(path, "w") as f: - f.write(out) - print("lvgl_patches: patched %s" % rel) - - -if __name__ == "__main__": - apply(sys.argv[1]) -else: - Import("env") # noqa: F821 (SCons) - - def _patch(env, node): - path = node.srcnode().get_abspath() - apply(path[: path.rindex(os.sep + "src" + os.sep)]) - return node - - env.AddBuildMiddleware(_patch, "*/lvgl/src/core/lv_obj_pos.c") # noqa: F821 diff --git a/examples/companion_radio/ui-lvgl/map/VectorLabels.h b/examples/companion_radio/ui-lvgl/map/VectorLabels.h index c6c14d72..ce80eecb 100644 --- a/examples/companion_radio/ui-lvgl/map/VectorLabels.h +++ b/examples/companion_radio/ui-lvgl/map/VectorLabels.h @@ -230,10 +230,10 @@ static void icon(lv_layer_t* layer, uint8_t cls, int32_t x, int32_t y) { r.border_opa = LV_OPA_COVER; lv_draw_triangle_dsc_t t; lv_draw_triangle_dsc_init(&t); - t.bg_opa = LV_OPA_COVER; + t.opa = LV_OPA_COVER; lv_area_t a; auto tri = [&](uint32_t col, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t x2, int32_t y2) { - t.bg_color = lv_color_hex(col); + t.color = lv_color_hex(col); t.p[0] = { (lv_value_precise_t)x0, (lv_value_precise_t)y0 }; t.p[1] = { (lv_value_precise_t)x1, (lv_value_precise_t)y1 }; t.p[2] = { (lv_value_precise_t)x2, (lv_value_precise_t)y2 }; diff --git a/solo/wio-tracker-l2/platformio.ini b/solo/wio-tracker-l2/platformio.ini index 720956ee..0223c43e 100644 --- a/solo/wio-tracker-l2/platformio.ini +++ b/solo/wio-tracker-l2/platformio.ini @@ -70,9 +70,6 @@ build_flags = -D NEARBY_MAX=64 -D HIST_ARCHIVE ; message history also on the SD card (ui-lvgl/HistoryStore.h) -D GPS_SKYVIEW ; satellites / signal / DOPs for the GPS screen (helpers/sensors/GpsSky.h) -extra_scripts = - ${esp32_base.extra_scripts} - pre:examples/companion_radio/ui-lvgl/lvgl_patches.py ; fixes to LVGL itself build_src_filter = ${Wio_Tracker_L2.build_src_filter} + + @@ -84,7 +81,7 @@ build_src_filter = ${Wio_Tracker_L2.build_src_filter} lib_deps = ${Wio_Tracker_L2.lib_deps} densaugeo/base64 @ ~1.4.0 - lvgl/lvgl @ 9.2.2 ; pinned: bump deliberately, re-test on hardware + lvgl/lvgl @ 9.6.0 ; pinned: bump deliberately, re-test on hardware SD_MMC ; map tiles on the microSD (framework libraries from here on) FS WiFi ; on-device map download, live tiles, OTA @@ -102,10 +99,11 @@ platform = ${esp32_base.platform} lib_deps = ${Wio_Tracker_L2.lib_deps} densaugeo/base64 @ ~1.4.0 - lvgl/lvgl @ 9.2.2 + lvgl/lvgl @ 9.6.0 SD_MMC FS WiFi HTTPClient WiFiClientSecure Preferences + diff --git a/variants/sim/build_wasm.sh b/variants/sim/build_wasm.sh index 3db9bba9..27049e53 100755 --- a/variants/sim/build_wasm.sh +++ b/variants/sim/build_wasm.sh @@ -246,7 +246,13 @@ if [ "$SIM_UI" = "lvgl" ]; then # would shadow the libc the C headers include. C_FLAGS=(-std=gnu99 "${OPT_FLAGS[@]}" "${DEFINES[@]}" "-I$LVGL_DIR" -Iexamples/companion_radio/ui-lvgl) LV_OBJ_DIR="$OUT_DIR/obj_lvgl" - python3 examples/companion_radio/ui-lvgl/lvgl_patches.py "$LVGL_DIR" # as the firmware build does + # Another LVGL version: its files needn't be newer than the cached objects. + LV_VER="$(grep '"version"' "$LVGL_DIR/library.json")" + if [ "$(cat "$LV_OBJ_DIR/.lvgl_version" 2>/dev/null)" != "$LV_VER" ]; then + rm -rf "$LV_OBJ_DIR" + mkdir -p "$LV_OBJ_DIR" + echo "$LV_VER" > "$LV_OBJ_DIR/.lvgl_version" + fi C_SRCS=() while IFS= read -r f; do C_SRCS+=("$f"); done < <( find "$LVGL_DIR/src" -name '*.c' | sed "s|^$REPO_ROOT/||" | sort