Skip to content

Commit 335bb5c

Browse files
authored
feat: 开启 host LVGL 本地资源能力
合并 host LVGL 本地文件、图片解码和 TinyTTF 字体能力。
1 parent 147c4fd commit 335bb5c

8 files changed

Lines changed: 120 additions & 4 deletions

File tree

config/host_macos/lv_conf.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,21 @@
6363
#define LV_USE_STDIO 1
6464
#define LV_USE_STDLIB 1
6565

66+
#define LV_USE_FS_STDIO 1
67+
#define LV_FS_STDIO_LETTER 'A'
68+
#define LV_FS_STDIO_PATH ""
69+
#define LV_FS_STDIO_CACHE_SIZE 0
70+
71+
#define LV_USE_LODEPNG 1
72+
#define LV_USE_TJPGD 1
73+
#define LV_USE_BMP 1
74+
#define LV_USE_LIBPNG 0
75+
#define LV_USE_LIBJPEG_TURBO 0
76+
77+
#define LV_USE_TINY_TTF 1
78+
#define LV_TINY_TTF_FILE_SUPPORT 1
79+
#define LV_USE_FREETYPE 0
80+
6681
#define LV_USE_THEME_DEFAULT 1
6782
#define LV_USE_THEME_SIMPLE 1
6883
#define LV_USE_THEME_MONO 1

dist/lvgl/host_macos/include/lv_conf.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,21 @@
6363
#define LV_USE_STDIO 1
6464
#define LV_USE_STDLIB 1
6565

66+
#define LV_USE_FS_STDIO 1
67+
#define LV_FS_STDIO_LETTER 'A'
68+
#define LV_FS_STDIO_PATH ""
69+
#define LV_FS_STDIO_CACHE_SIZE 0
70+
71+
#define LV_USE_LODEPNG 1
72+
#define LV_USE_TJPGD 1
73+
#define LV_USE_BMP 1
74+
#define LV_USE_LIBPNG 0
75+
#define LV_USE_LIBJPEG_TURBO 0
76+
77+
#define LV_USE_TINY_TTF 1
78+
#define LV_TINY_TTF_FILE_SUPPORT 1
79+
#define LV_USE_FREETYPE 0
80+
6681
#define LV_USE_THEME_DEFAULT 1
6782
#define LV_USE_THEME_SIMPLE 1
6883
#define LV_USE_THEME_MONO 1

dist/lvgl/host_macos/lib/liblvgl.a

196 KB
Binary file not shown.
0 Bytes
Binary file not shown.

dist/lvgl/host_macos/lvgl_package.txt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ sdl2.version=2.32.10
1010
sdl2.cflags=-I/opt/homebrew/include/SDL2 -D_THREAD_SAFE
1111
sdl2.libs=-L/opt/homebrew/lib -lSDL2
1212
demo_widgets=enabled
13-
lv_conf_hash=85cbf321b69fb36c00c6ce85b349efd265bc6dd4cbd364e278607d78a08fb9ba
14-
lib_hash=0ddf50562b7f63c94cdcba3ee400a7ae75ce628bbefd6633f34178b2f77f01e2
15-
demo_lib_hash=963c69b0735431f46a8169092695ccc64a754d0c0cf11d1a40b06991bc7aec3f
13+
local_assets=enabled
14+
filesystem=stdio:A
15+
image_decoders=lodepng,tjpgd,bmp
16+
font_loader=tiny_ttf_file
17+
lv_conf_hash=8a6b524f852e18018c63b06a5d0145e8385c3af28aa1b9815a1b764b1f6b6ba8
18+
lib_hash=ec1e8d63b237ae227e63dd0d0869e4cbd3ac4054da249c5a4f78defea634751c
19+
demo_lib_hash=b7af8d44224ddde951ffa6a5ac8dce32ed5b42ea8211724b57098a563c4d5da9

scripts/build_host_macos.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ sdl2.version=${sdl2_version}
8080
sdl2.cflags=${sdl2_cflags}
8181
sdl2.libs=${sdl2_libs}
8282
demo_widgets=enabled
83+
local_assets=enabled
84+
filesystem=stdio:A
85+
image_decoders=lodepng,tjpgd,bmp
86+
font_loader=tiny_ttf_file
8387
lv_conf_hash=${conf_hash}
8488
lib_hash=${lib_hash}
8589
demo_lib_hash=${demo_lib_hash}

scripts/verify_package.sh

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ test -f "${dist_dir}/lvgl_package.txt"
1414
test -f "${dist_dir}/include/demos/lv_demos.h"
1515
test -f "${dist_dir}/include/demos/widgets/lv_demo_widgets.h"
1616
grep -q "demo_widgets=enabled" "${dist_dir}/lvgl_package.txt"
17+
grep -q "local_assets=enabled" "${dist_dir}/lvgl_package.txt"
18+
grep -q "image_decoders=lodepng,tjpgd,bmp" "${dist_dir}/lvgl_package.txt"
19+
grep -q "font_loader=tiny_ttf_file" "${dist_dir}/lvgl_package.txt"
1720

1821
rm -rf "${tmp_dir}"
1922
mkdir -p "${tmp_dir}"
@@ -55,6 +58,42 @@ cc -std=c11 \
5558
"${dist_dir}/lib/liblvgl.a" \
5659
-o "${tmp_dir}/verify_widgets_demo"
5760

61+
cat > "${tmp_dir}/verify_local_assets.c" <<'EOF'
62+
#include "lvgl.h"
63+
#include "src/libs/lodepng/lv_lodepng.h"
64+
#include "src/libs/tjpgd/lv_tjpgd.h"
65+
#include "src/libs/bmp/lv_bmp.h"
66+
#include "src/libs/tiny_ttf/lv_tiny_ttf.h"
67+
68+
int main(void)
69+
{
70+
void (*png_decoder_init)(void) = lv_lodepng_init;
71+
void (*jpg_decoder_init)(void) = lv_tjpgd_init;
72+
void (*bmp_decoder_init)(void) = lv_bmp_init;
73+
void (*tiny_ttf_init)(void) = lv_tiny_ttf_init;
74+
lv_font_t * (*create_font_from_file)(const char *, int32_t) = lv_tiny_ttf_create_file;
75+
76+
lv_init();
77+
78+
(void)png_decoder_init;
79+
(void)jpg_decoder_init;
80+
(void)bmp_decoder_init;
81+
(void)tiny_ttf_init;
82+
(void)create_font_from_file;
83+
84+
lv_deinit();
85+
return 0;
86+
}
87+
EOF
88+
89+
cc -std=c11 \
90+
-I"${dist_dir}/include" \
91+
"${tmp_dir}/verify_local_assets.c" \
92+
"${dist_dir}/lib/liblvgl.a" \
93+
-o "${tmp_dir}/verify_local_assets"
94+
95+
"${tmp_dir}/verify_local_assets"
96+
5897
sdl2_cflags="$(sdl2-config --cflags)"
5998
sdl2_libs="$(sdl2-config --libs)"
6099
sdl2_include_dir="$(sdl2-config --prefix)/include"

tests/test_host_macos_sdl2_package.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,23 @@ def test_lv_conf_enables_sdl2_without_sdl_draw_backend():
1919
assert "#define LV_USE_DEMO_WIDGETS 1" in lv_conf
2020

2121

22+
def test_lv_conf_enables_local_file_image_and_font_assets():
23+
lv_conf = (REPO_ROOT / "config/host_macos/lv_conf.h").read_text(encoding="utf-8")
24+
25+
assert "#define LV_USE_FS_STDIO 1" in lv_conf
26+
assert "#define LV_FS_STDIO_LETTER 'A'" in lv_conf
27+
assert '#define LV_FS_STDIO_PATH ""' in lv_conf
28+
assert "#define LV_FS_STDIO_CACHE_SIZE 0" in lv_conf
29+
assert "#define LV_USE_LODEPNG 1" in lv_conf
30+
assert "#define LV_USE_TJPGD 1" in lv_conf
31+
assert "#define LV_USE_BMP 1" in lv_conf
32+
assert "#define LV_USE_TINY_TTF 1" in lv_conf
33+
assert "#define LV_TINY_TTF_FILE_SUPPORT 1" in lv_conf
34+
assert "#define LV_USE_LIBPNG 0" in lv_conf
35+
assert "#define LV_USE_LIBJPEG_TURBO 0" in lv_conf
36+
assert "#define LV_USE_FREETYPE 0" in lv_conf
37+
38+
2239
def test_cmake_wires_sdl2_config_into_lvgl_target():
2340
cmake = (REPO_ROOT / "CMakeLists.txt").read_text(encoding="utf-8")
2441

@@ -49,6 +66,9 @@ def test_build_script_requires_sdl2_and_writes_manifest_metadata():
4966
assert "cmake --build \"${build_dir}\" --target lvgl lvgl_demos" in script
5067
assert "cp \"${build_dir}/lib/liblvgl_demos.a\" \"${dist_dir}/lib/liblvgl_demos.a\"" in script
5168
assert "demo_widgets=enabled" in script
69+
assert "local_assets=enabled" in script
70+
assert "image_decoders=lodepng,tjpgd,bmp" in script
71+
assert "font_loader=tiny_ttf_file" in script
5272
assert "demo_lib_hash=${demo_lib_hash}" in script
5373

5474

@@ -62,9 +82,12 @@ def test_package_exports_widgets_demo_library_headers_and_manifest():
6282
assert 'find "${source_dir}/demos" -type f -name' in script
6383
assert 'cp "${header}" "${dist_dir}/include/${relative_path}"' in script
6484
assert 'grep -q "demo_widgets=enabled" "${dist_dir}/lvgl_package.txt"' in verify
85+
assert 'grep -q "local_assets=enabled" "${dist_dir}/lvgl_package.txt"' in verify
86+
assert 'grep -q "image_decoders=lodepng,tjpgd,bmp" "${dist_dir}/lvgl_package.txt"' in verify
87+
assert 'grep -q "font_loader=tiny_ttf_file" "${dist_dir}/lvgl_package.txt"' in verify
6588

6689

67-
def test_verify_script_compiles_sdl2_demo_and_runs_only_when_requested():
90+
def test_verify_script_compiles_resource_decoder_font_and_sdl2_demos():
6891
script = (REPO_ROOT / "scripts/verify_package.sh").read_text(encoding="utf-8")
6992

7093
assert "examples/host_macos_sdl2_demo.c" in script
@@ -78,6 +101,22 @@ def test_verify_script_compiles_sdl2_demo_and_runs_only_when_requested():
78101
assert '#include "demos/widgets/lv_demo_widgets.h"' in script
79102
assert "(void)lv_demo_widgets;" in script
80103
assert '"${dist_dir}/lib/liblvgl_demos.a"' in script
104+
assert "verify_local_assets.c" in script
105+
assert '#include "src/libs/lodepng/lv_lodepng.h"' in script
106+
assert '#include "src/libs/tjpgd/lv_tjpgd.h"' in script
107+
assert '#include "src/libs/bmp/lv_bmp.h"' in script
108+
assert '#include "src/libs/tiny_ttf/lv_tiny_ttf.h"' in script
109+
assert "void (*png_decoder_init)(void) = lv_lodepng_init;" in script
110+
assert "void (*jpg_decoder_init)(void) = lv_tjpgd_init;" in script
111+
assert "void (*bmp_decoder_init)(void) = lv_bmp_init;" in script
112+
assert "void (*tiny_ttf_init)(void) = lv_tiny_ttf_init;" in script
113+
assert "lv_font_t * (*create_font_from_file)(const char *, int32_t)" in script
114+
assert "(void)png_decoder_init;" in script
115+
assert "(void)jpg_decoder_init;" in script
116+
assert "(void)bmp_decoder_init;" in script
117+
assert "(void)tiny_ttf_init;" in script
118+
assert "(void)create_font_from_file;" in script
119+
assert '"${tmp_dir}/verify_local_assets"' in script
81120

82121

83122
def test_sdl2_demo_uses_lvgl_sdl_window_input_and_label():

0 commit comments

Comments
 (0)