From 9a472decf103d371583502104c8d964b3ab9f38b Mon Sep 17 00:00:00 2001 From: Th3maz1ng Date: Sun, 9 Feb 2025 00:11:53 +0100 Subject: [PATCH] Updated LVGL library version from 8.3 to 8.4 --- src/W800_SDK_v1.00.10/lvgl/Makefile | 2 +- .../lvgl/lvgl_port/lv_conf.h | 34 +- .../lvgl/lvgl_v8.3/docs/CHANGELOG.md | 1826 --- .../lvgl/lvgl_v8.3/docs/_static/js/custom.js | 18 - .../docs/get-started/platforms/nxp.md | 168 - .../lvgl/lvgl_v8.3/docs/libs/fsdrv.md | 21 - .../docs/overview/renderers/arm-2d.md | 4 - .../rt-thread/squareline/SConscript | 13 - .../widgets/chart/lv_example_chart_5.c | 99 - .../lvgl/lvgl_v8.3/idf_component.yml | 2 - .../lvgl/lvgl_v8.3/src/draw/nxp/lv_gpu_nxp.c | 418 - .../src/draw/nxp/pxp/lv_draw_pxp_blend.h | 143 - .../draw/nxp/vglite/lv_draw_vglite_blend.c | 618 - .../draw/nxp/vglite/lv_draw_vglite_blend.h | 149 - .../src/draw/nxp/vglite/lv_draw_vglite_rect.c | 244 - .../src/draw/nxp/vglite/lv_gpu_nxp_vglite.c | 153 - .../src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c | 265 - .../src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h | 70 - .../lvgl_v8.3/tests/ref_imgs/dropdown_1.png | Bin 12395 -> 0 bytes .../lvgl_v8.3/tests/unity/unity_support.c | 237 - .../{lvgl_v8.3 => lvgl_v8.4}/.codecov.yml | 0 .../{lvgl_v8.3 => lvgl_v8.4}/.editorconfig | 0 .../lvgl/lvgl_v8.4/.github/FUNDING.yml | 1 + .../.github/ISSUE_TEMPLATE/bug-report.md | 44 + .../.github/ISSUE_TEMPLATE/config.yml | 14 + .../.github/ISSUE_TEMPLATE/dev-discussion.md | 29 + .../lvgl/lvgl_v8.4/.github/auto-comment.yml | 12 + .../.github/pull_request_template.md | 10 + .../lvgl_v8.4/.github/workflows/arduino.yml | 15 + .../.github/workflows/build_micropython.yml | 74 + .../lvgl/lvgl_v8.4/.github/workflows/ccpp.yml | 109 + .../.github/workflows/check_conf.yml | 24 + .../.github/workflows/check_style.yml | 37 + .../.github/workflows/close_old_issues.yml | 29 + .../.github/workflows/compile_docs.yml | 93 + .../workflows/esp_upload_component.yml | 23 + .../lvgl/lvgl_v8.4/.github/workflows/main.yml | 16 + .../lvgl_v8.4/.github/workflows/makefile.yml | 21 + .../lvgl_v8.4/.github/workflows/release.yml | 27 + .../lvgl/{lvgl_v8.3 => lvgl_v8.4}/.gitignore | 0 .../.pre-commit-config.yaml | 0 .../{lvgl_v8.3 => lvgl_v8.4}/CMakeLists.txt | 0 .../lvgl/{lvgl_v8.3 => lvgl_v8.4}/Kconfig | 33 +- .../lvgl/{lvgl_v8.3 => lvgl_v8.4}/LICENCE.txt | 0 .../lvgl/{lvgl_v8.3 => lvgl_v8.4}/Makefile | 4 +- .../lvgl/{lvgl_v8.3 => lvgl_v8.4}/README.md | 2 - .../{lvgl_v8.3 => lvgl_v8.4}/README_pt_BR.md | 0 .../{lvgl_v8.3 => lvgl_v8.4}/README_zh.md | 0 .../lvgl/{lvgl_v8.3 => lvgl_v8.4}/SConscript | 0 .../{lvgl_v8.3 => lvgl_v8.4}/component.mk | 0 .../{lvgl_v8.3 => lvgl_v8.4}/demos/Makefile | 0 .../{lvgl_v8.3 => lvgl_v8.4}/demos/README.md | 0 .../demos/benchmark/Makefile | 0 .../demos/benchmark/README.md | 0 .../demos/benchmark/assets/Makefile | 0 .../assets/img_benchmark_cogwheel_alpha16.c | 0 .../assets/img_benchmark_cogwheel_argb.c | 0 .../img_benchmark_cogwheel_chroma_keyed.c | 0 .../assets/img_benchmark_cogwheel_indexed16.c | 0 .../assets/img_benchmark_cogwheel_rgb.c | 0 .../assets/img_benchmark_cogwheel_rgb565a8.c | 0 .../benchmark/assets/img_cogwheel_argb.png | Bin .../assets/img_cogwheel_chroma_keyed.png | Bin .../assets/img_cogwheel_indexed16.png | Bin .../benchmark/assets/img_cogwheel_rgb.png | Bin ...v_font_bechmark_montserrat_12_compr_az.c.c | 0 ...v_font_bechmark_montserrat_16_compr_az.c.c | 0 ...v_font_bechmark_montserrat_28_compr_az.c.c | 0 .../demos/benchmark/lv_demo_benchmark.c | 56 +- .../demos/benchmark/lv_demo_benchmark.h | 3 +- .../demos/benchmark/screenshot1.png | Bin .../demos/benchmark/screenshot2.png | Bin .../demos/keypad_encoder/README.md | 0 .../keypad_encoder/lv_demo_keypad_encoder.c | 13 +- .../keypad_encoder/lv_demo_keypad_encoder.h | 1 + .../demos/keypad_encoder/screenshot1.gif | Bin .../demos/keypad_encoder/screenshot1.png | Bin .../{lvgl_v8.3 => lvgl_v8.4}/demos/lv_demos.h | 1 - .../demos/lv_demos.mk | 0 .../demos/music/README.md | 0 .../music/assets/272_png/btn_list_pause.png | Bin 0 -> 4884 bytes .../music/assets/272_png/btn_list_play.png | Bin 0 -> 3625 bytes .../demos/music/assets/272_png/btn_loop.png | Bin 0 -> 2385 bytes .../demos/music/assets/272_png/btn_next.png | Bin 0 -> 3684 bytes .../demos/music/assets/272_png/btn_pause.png | Bin 0 -> 4779 bytes .../demos/music/assets/272_png/btn_play.png | Bin 0 -> 4833 bytes .../demos/music/assets/272_png/btn_prev.png | Bin 0 -> 3707 bytes .../demos/music/assets/272_png/btn_rnd.png | Bin 0 -> 2416 bytes .../demos/music/assets/272_png/corner_1.png | Bin 0 -> 2253 bytes .../demos/music/assets/272_png/corner_2.png | Bin 0 -> 2271 bytes .../demos/music/assets/272_png/cover_1.png | Bin 0 -> 44982 bytes .../demos/music/assets/272_png/cover_2.png | Bin 0 -> 45310 bytes .../demos/music/assets/272_png/cover_3.png | Bin 0 -> 43988 bytes .../demos/music/assets/272_png/icn_chart.png | Bin 0 -> 2276 bytes .../demos/music/assets/272_png/icn_chat.png | Bin 0 -> 2608 bytes .../music/assets/272_png/icn_download.png | Bin 0 -> 2346 bytes .../demos/music/assets/272_png/icn_heart.png | Bin 0 -> 2357 bytes .../demos/music/assets/272_png/icn_slider.png | Bin 0 -> 2744 bytes .../music/assets/272_png/list_border.png | Bin 0 -> 1829 bytes .../music/assets/272_png/wave_bottom.png | Bin 0 -> 5751 bytes .../demos/music/assets/272_png/wave_top.png | Bin 0 -> 5781 bytes .../music/assets/480_png/btn_list_pause.png | Bin 0 -> 8199 bytes .../music/assets/480_png/btn_list_play.png | Bin 0 -> 5593 bytes .../demos/music/assets/480_png/btn_loop.png | Bin 0 -> 2896 bytes .../demos/music/assets/480_png/btn_next.png | Bin 0 -> 5563 bytes .../demos/music/assets/480_png/btn_pause.png | Bin 0 -> 8357 bytes .../demos/music/assets/480_png/btn_play.png | Bin 0 -> 8476 bytes .../demos/music/assets/480_png/btn_prev.png | Bin 0 -> 5516 bytes .../demos/music/assets/480_png/btn_rnd.png | Bin 0 -> 3003 bytes .../demos/music/assets/480_png/corner_1.png | Bin 0 -> 2554 bytes .../demos/music/assets/480_png/corner_2.png | Bin 0 -> 2504 bytes .../demos/music/assets/480_png/cover_1.png | Bin 0 -> 154494 bytes .../demos/music/assets/480_png/cover_2.png | Bin 0 -> 169807 bytes .../demos/music/assets/480_png/cover_3.png | Bin 0 -> 145091 bytes .../demos/music/assets/480_png/icn_chart.png | Bin 0 -> 2743 bytes .../demos/music/assets/480_png/icn_chat.png | Bin 0 -> 3038 bytes .../music/assets/480_png/icn_download.png | Bin 0 -> 2904 bytes .../demos/music/assets/480_png/icn_heart.png | Bin 0 -> 2992 bytes .../demos/music/assets/480_png/icn_slider.png | Bin 0 -> 3753 bytes .../music/assets/480_png/list_border.png | Bin 0 -> 2108 bytes .../music/assets/480_png/wave_bottom.png | Bin 0 -> 9476 bytes .../demos/music/assets/480_png/wave_top.png | Bin 0 -> 9599 bytes .../img_lv_demo_music_btn_corner_large.c | 0 .../assets/img_lv_demo_music_btn_list_pause.c | 0 .../img_lv_demo_music_btn_list_pause_large.c | 0 .../assets/img_lv_demo_music_btn_list_play.c | 0 .../img_lv_demo_music_btn_list_play_large.c | 0 .../music/assets/img_lv_demo_music_btn_loop.c | 0 .../assets/img_lv_demo_music_btn_loop_large.c | 0 .../music/assets/img_lv_demo_music_btn_next.c | 0 .../assets/img_lv_demo_music_btn_next_large.c | 0 .../assets/img_lv_demo_music_btn_pause.c | 0 .../img_lv_demo_music_btn_pause_large.c | 0 .../music/assets/img_lv_demo_music_btn_play.c | 0 .../assets/img_lv_demo_music_btn_play_large.c | 0 .../music/assets/img_lv_demo_music_btn_prev.c | 0 .../assets/img_lv_demo_music_btn_prev_large.c | 0 .../music/assets/img_lv_demo_music_btn_rnd.c | 0 .../assets/img_lv_demo_music_btn_rnd_large.c | 0 .../assets/img_lv_demo_music_corner_left.c | 0 .../img_lv_demo_music_corner_left_large.c | 0 .../assets/img_lv_demo_music_corner_right.c | 0 .../img_lv_demo_music_corner_right_large.c | 0 .../music/assets/img_lv_demo_music_cover_1.c | 0 .../assets/img_lv_demo_music_cover_1_large.c | 0 .../music/assets/img_lv_demo_music_cover_2.c | 0 .../assets/img_lv_demo_music_cover_2_large.c | 0 .../music/assets/img_lv_demo_music_cover_3.c | 0 .../assets/img_lv_demo_music_cover_3_large.c | 0 .../music/assets/img_lv_demo_music_icon_1.c | 0 .../assets/img_lv_demo_music_icon_1_large.c | 0 .../music/assets/img_lv_demo_music_icon_2.c | 0 .../assets/img_lv_demo_music_icon_2_large.c | 0 .../music/assets/img_lv_demo_music_icon_3.c | 0 .../assets/img_lv_demo_music_icon_3_large.c | 0 .../music/assets/img_lv_demo_music_icon_4.c | 0 .../assets/img_lv_demo_music_icon_4_large.c | 0 .../assets/img_lv_demo_music_list_border.c | 0 .../img_lv_demo_music_list_border_large.c | 0 .../music/assets/img_lv_demo_music_logo.c | 0 .../assets/img_lv_demo_music_slider_knob.c | 0 .../img_lv_demo_music_slider_knob_large.c | 0 .../assets/img_lv_demo_music_wave_bottom.c | 0 .../img_lv_demo_music_wave_bottom_large.c | 0 .../music/assets/img_lv_demo_music_wave_top.c | 0 .../assets/img_lv_demo_music_wave_top_large.c | 0 .../demos/music/assets/spectrum.py | 0 .../demos/music/assets/spectrum_1.h | 0 .../demos/music/assets/spectrum_2.h | 0 .../demos/music/assets/spectrum_3.h | 0 .../demos/music/lv_demo_music.c | 25 +- .../demos/music/lv_demo_music.h | 2 + .../demos/music/lv_demo_music_list.c | 14 +- .../demos/music/lv_demo_music_list.h | 2 + .../demos/music/lv_demo_music_main.c | 21 +- .../demos/music/lv_demo_music_main.h | 3 +- .../demos/music/screenshot1.gif | Bin .../demos/stress/Makefile | 0 .../demos/stress/README.md | 0 .../demos/stress/lv_demo_stress.c | 32 +- .../demos/stress/lv_demo_stress.h | 2 + .../demos/stress/screenshot1.gif | Bin .../demos/stress/screenshot1.png | Bin .../demos/widgets/Makefile | 0 .../demos/widgets/assets/Makefile | 0 .../demos/widgets/assets/avatar.png | Bin .../demos/widgets/assets/clothes.png | Bin .../demos/widgets/assets/img_clothes.c | 0 .../widgets/assets/img_demo_widgets_avatar.c | 0 .../demos/widgets/assets/img_lvgl_logo.c | 0 .../demos/widgets/assets/lvgl_logo.png | Bin .../demos/widgets/lv_demo_widgets.c | 34 +- .../demos/widgets/lv_demo_widgets.h | 1 + .../demos/widgets/lv_demo_widgets.py | 0 .../demos/widgets/screenshot1.gif | Bin .../demos/widgets/screenshot1.png | Bin .../lvgl/lvgl_v8.4/docs/CHANGELOG.md | 43 + .../docs/CODE_OF_CONDUCT.md | 0 .../docs/CODING_STYLE.md | 0 .../docs/CONTRIBUTING.md | 0 .../{lvgl_v8.3 => lvgl_v8.4}/docs/ROADMAP.md | 0 .../docs/_ext/lv_example.py | 0 .../docs/_static/css/custom.css | 0 .../docs/_static/css/fontawesome.min.css | 0 .../docs/_static/img/home_1.png | Bin .../docs/_static/img/home_2.png | Bin .../docs/_static/img/home_3.png | Bin .../docs/_static/img/home_4.png | Bin .../docs/_static/img/home_5.png | Bin .../docs/_static/img/home_6.png | Bin .../docs/_static/img/home_banner.jpg | Bin .../lvgl/lvgl_v8.4/docs/_static/js/custom.js | 57 + .../docs/_templates/layout.html | 0 .../docs/_templates/page.html | 0 .../{lvgl_v8.3 => lvgl_v8.4}/docs/build.py | 0 .../{lvgl_v8.3 => lvgl_v8.4}/docs/conf.py | 0 .../docs/example_list.py | 0 .../{lvgl_v8.3 => lvgl_v8.4}/docs/favicon.png | Bin .../docs/get-started/bindings/cpp.md | 0 .../docs/get-started/bindings/index.md | 0 .../docs/get-started/bindings/micropython.md | 0 .../docs/get-started/index.md | 0 .../docs/get-started/os/freertos.md | 0 .../docs/get-started/os/index.md | 0 .../docs/get-started/os/nuttx.md | 0 .../docs/get-started/os/rt-thread.md | 0 .../docs/get-started/os/zephyr.md | 0 .../docs/get-started/platforms/arduino.md | 7 +- .../docs/get-started/platforms/cmake.md | 0 .../docs/get-started/platforms/espressif.md | 0 .../docs/get-started/platforms/index.md | 1 + .../docs/get-started/platforms/nxp.md | 182 + .../get-started/platforms/pc-simulator.md | 2 +- .../docs/get-started/platforms/renesas.md | 129 + .../docs/get-started/platforms/stm32.md | 0 .../get-started/platforms/tasmota-berry.md | 0 .../docs/get-started/quick-overview.md | 0 .../{lvgl_v8.3 => lvgl_v8.4}/docs/index.md | 0 .../docs/intro/index.md | 2 +- .../docs/layouts/flex.md | 0 .../docs/layouts/grid.md | 0 .../docs/layouts/index.md | 0 .../{lvgl_v8.3 => lvgl_v8.4}/docs/libs/bmp.md | 0 .../docs/libs/ffmpeg.md | 0 .../docs/libs/freetype.md | 0 .../lvgl/lvgl_v8.4/docs/libs/fsdrv.md | 45 + .../{lvgl_v8.3 => lvgl_v8.4}/docs/libs/gif.md | 0 .../docs/libs/index.md | 1 + .../{lvgl_v8.3 => lvgl_v8.4}/docs/libs/png.md | 0 .../docs/libs/qrcode.md | 0 .../docs/libs/rlottie.md | 0 .../docs/libs/sjpg.md | 1 - .../lvgl/lvgl_v8.4/docs/libs/tiny_ttf.md | 35 + .../docs/logo_lvgl.png | Bin .../docs/misc/align.png | Bin .../docs/misc/anim-timeline.png | Bin .../docs/misc/bidi.png | Bin .../docs/misc/boxmodel.png | Bin .../docs/misc/btn_example.png | Bin .../docs/misc/button_style_example.gif | Bin .../docs/misc/button_style_example.png | Bin .../docs/misc/codeblocks.jpg | Bin .../docs/misc/eclipse.jpg | Bin .../docs/misc/layers.png | Bin .../docs/misc/par_child1.png | Bin .../docs/misc/par_child2.png | Bin .../docs/misc/par_child3.png | Bin .../docs/misc/platformio.jpg | Bin .../docs/misc/qtcreator.jpg | Bin .../docs/misc/simple_button_example.gif | Bin .../docs/misc/simple_button_example.png | Bin .../docs/misc/symbols.png | Bin .../docs/misc/sys.png | Bin .../docs/misc/visualstudio.jpg | Bin .../docs/others/fragment.md | 0 .../docs/others/gridnav.md | 0 .../docs/others/ime_pinyin.md | 0 .../docs/others/imgfont.md | 0 .../docs/others/index.md | 0 .../docs/others/monkey.md | 0 .../docs/others/msg.md | 0 .../docs/others/snapshot.md | 2 +- .../docs/overview/animation.md | 0 .../docs/overview/color.md | 0 .../docs/overview/coords.md | 0 .../docs/overview/display.md | 2 +- .../docs/overview/drawing.md | 0 .../docs/overview/event.md | 0 .../docs/overview/file-system.md | 0 .../docs/overview/font.md | 12 +- .../docs/overview/image.md | 0 .../docs/overview/indev.md | 0 .../docs/overview/index.md | 0 .../docs/overview/layer.md | 4 +- .../docs/overview/new_widget.md | 0 .../docs/overview/object.md | 2 +- .../docs/overview/renderers/arm-2d.md | 32 + .../docs/overview/renderers/dma2d.md | 0 .../docs/overview/renderers/index.md | 0 .../docs/overview/renderers/pxp-vglite.md | 0 .../docs/overview/renderers/sdl.md | 0 .../docs/overview/renderers/sw.md | 0 .../docs/overview/scroll.md | 0 .../docs/overview/style-props.md | 13 +- .../docs/overview/style.md | 0 .../docs/overview/timer.md | 0 .../docs/porting/display.md | 4 + .../docs/porting/gpu.md | 0 .../docs/porting/indev.md | 4 +- .../docs/porting/index.md | 0 .../docs/porting/log.md | 0 .../docs/porting/os.md | 0 .../docs/porting/project.md | 0 .../docs/porting/sleep.md | 0 .../docs/porting/tick.md | 0 .../docs/porting/timer-handler.md | 0 .../docs/requirements.txt | 0 .../docs/widgets/core/arc.md | 0 .../docs/widgets/core/bar.md | 0 .../docs/widgets/core/btn.md | 0 .../docs/widgets/core/btnmatrix.md | 2 +- .../docs/widgets/core/canvas.md | 0 .../docs/widgets/core/checkbox.md | 0 .../docs/widgets/core/dropdown.md | 2 +- .../docs/widgets/core/img.md | 0 .../docs/widgets/core/index.md | 0 .../docs/widgets/core/label.md | 4 +- .../docs/widgets/core/line.md | 0 .../docs/widgets/core/roller.md | 2 + .../docs/widgets/core/slider.md | 0 .../docs/widgets/core/switch.md | 0 .../docs/widgets/core/table.md | 0 .../docs/widgets/core/textarea.md | 0 .../docs/widgets/extra/animimg.md | 0 .../docs/widgets/extra/calendar.md | 28 +- .../docs/widgets/extra/chart.md | 0 .../docs/widgets/extra/colorwheel.md | 0 .../docs/widgets/extra/imgbtn.md | 0 .../docs/widgets/extra/index.md | 0 .../docs/widgets/extra/keyboard.md | 2 +- .../docs/widgets/extra/led.md | 0 .../docs/widgets/extra/list.md | 0 .../docs/widgets/extra/menu.md | 0 .../docs/widgets/extra/meter.md | 8 +- .../docs/widgets/extra/msgbox.md | 0 .../docs/widgets/extra/span.md | 6 +- .../docs/widgets/extra/spinbox.md | 2 +- .../docs/widgets/extra/spinner.md | 2 +- .../docs/widgets/extra/tabview.md | 0 .../docs/widgets/extra/tileview.md | 0 .../docs/widgets/extra/win.md | 0 .../docs/widgets/index.md | 0 .../docs/widgets/obj.md | 0 .../env_support/cmake/custom.cmake | 12 + .../env_support/cmake/esp.cmake | 5 +- .../env_support/cmake/micropython.cmake | 0 .../env_support/cmake/zephyr.cmake | 0 .../cmsis-pack/LVGL.lvgl.8.4.0.pack} | Bin 4947452 -> 5062023 bytes .../env_support/cmsis-pack/LVGL.lvgl.pdsc | 313 +- .../env_support/cmsis-pack/LVGL.pidx | 4 +- .../env_support/cmsis-pack/README.md | 61 +- .../env_support/cmsis-pack/gen_pack.sh | 4 +- .../env_support/cmsis-pack/lv_cmsis_pack.txt | 0 .../env_support/cmsis-pack/lv_conf_cmsis.h | 154 +- .../env_support/rt-thread/SConscript | 0 .../env_support/rt-thread/lv_rt_thread_conf.h | 6 +- .../env_support/rt-thread/lv_rt_thread_port.c | 10 +- .../rt-thread/squareline/README.md | 0 .../rt-thread/squareline/SConscript | 25 + .../rt-thread/squareline}/lv_ui_entry.c | 2 +- .../rt-thread/squareline/ui/lvgl/lvgl.h | 15 + .../env_support/zephyr/module.yml | 0 .../examples/anim/index.rst | 0 .../examples/anim/lv_example_anim.h | 0 .../examples/anim/lv_example_anim_1.c | 1 - .../examples/anim/lv_example_anim_1.py | 0 .../examples/anim/lv_example_anim_2.c | 1 - .../examples/anim/lv_example_anim_2.py | 0 .../examples/anim/lv_example_anim_3.c | 0 .../examples/anim/lv_example_anim_3.py | 0 .../anim/lv_example_anim_timeline_1.c | 0 .../anim/lv_example_anim_timeline_1.py | 0 .../arduino/LVGL_Arduino/LVGL_Arduino.ino | 54 +- .../examples/assets/animimg001.c | 0 .../examples/assets/animimg001.png | Bin .../examples/assets/animimg002.c | 0 .../examples/assets/animimg002.png | Bin .../examples/assets/animimg003.c | 0 .../examples/assets/animimg003.png | Bin .../examples/assets/caret_down.png | Bin .../examples/assets/emoji/F600.png | Bin .../examples/assets/emoji/img_emoji_F617.c | 0 .../assets/font/lv_font_simsun_16_cjk.fnt | Bin .../examples/assets/font/montserrat-16.fnt | Bin .../examples/assets/font/montserrat-22.fnt | Bin .../examples/assets/img_caret_down.c | 0 .../examples/assets/img_caret_down.png | Bin .../examples/assets/img_cogwheel_alpha16.c | 0 .../examples/assets/img_cogwheel_argb.c | 0 .../examples/assets/img_cogwheel_argb.png | Bin .../assets/img_cogwheel_chroma_keyed.c | 0 .../assets/img_cogwheel_chroma_keyed.png | Bin .../examples/assets/img_cogwheel_indexed16.c | 0 .../assets/img_cogwheel_indexed16.png | Bin .../examples/assets/img_cogwheel_rgb.c | 0 .../examples/assets/img_cogwheel_rgb.png | Bin .../examples/assets/img_hand.c | 0 .../examples/assets/img_hand_hour.png | Bin .../examples/assets/img_hand_min.png | Bin .../examples/assets/img_skew_strip.c | 0 .../examples/assets/img_skew_strip.png | Bin .../assets/img_skew_strip_80x20_argb8888.fnt | Bin .../examples/assets/img_star.c | 0 .../examples/assets/img_star.png | Bin .../examples/assets/img_strip.png | Bin .../examples/assets/imgbtn_left.c | 0 .../examples/assets/imgbtn_left.png | Bin .../examples/assets/imgbtn_mid.c | 0 .../examples/assets/imgbtn_mid.png | Bin .../examples/assets/imgbtn_right.c | 0 .../examples/assets/imgbtn_right.png | Bin .../examples/event/index.rst | 0 .../examples/event/lv_example_event.h | 0 .../examples/event/lv_example_event_1.c | 0 .../examples/event/lv_example_event_1.py | 0 .../examples/event/lv_example_event_2.c | 0 .../examples/event/lv_example_event_2.py | 0 .../examples/event/lv_example_event_3.c | 0 .../examples/event/lv_example_event_3.py | 0 .../examples/event/lv_example_event_4.c | 0 .../examples/get_started/index.rst | 0 .../get_started/lv_example_get_started.h | 0 .../get_started/lv_example_get_started_1.c | 0 .../get_started/lv_example_get_started_1.py | 0 .../get_started/lv_example_get_started_2.c | 0 .../get_started/lv_example_get_started_2.py | 0 .../get_started/lv_example_get_started_3.c | 0 .../get_started/lv_example_get_started_3.py | 0 .../examples/header.py | 0 .../examples/layouts/flex/index.rst | 0 .../examples/layouts/flex/lv_example_flex.h | 0 .../examples/layouts/flex/lv_example_flex_1.c | 2 +- .../layouts/flex/lv_example_flex_1.py | 0 .../examples/layouts/flex/lv_example_flex_2.c | 0 .../layouts/flex/lv_example_flex_2.py | 0 .../examples/layouts/flex/lv_example_flex_3.c | 0 .../layouts/flex/lv_example_flex_3.py | 0 .../examples/layouts/flex/lv_example_flex_4.c | 0 .../layouts/flex/lv_example_flex_4.py | 0 .../examples/layouts/flex/lv_example_flex_5.c | 0 .../layouts/flex/lv_example_flex_5.py | 0 .../examples/layouts/flex/lv_example_flex_6.c | 0 .../layouts/flex/lv_example_flex_6.py | 0 .../examples/layouts/grid/index.rst | 0 .../examples/layouts/grid/lv_example_grid.h | 0 .../examples/layouts/grid/lv_example_grid_1.c | 0 .../layouts/grid/lv_example_grid_1.py | 0 .../examples/layouts/grid/lv_example_grid_2.c | 1 - .../layouts/grid/lv_example_grid_2.py | 0 .../examples/layouts/grid/lv_example_grid_3.c | 0 .../layouts/grid/lv_example_grid_3.py | 0 .../examples/layouts/grid/lv_example_grid_4.c | 1 - .../layouts/grid/lv_example_grid_4.py | 0 .../examples/layouts/grid/lv_example_grid_5.c | 0 .../layouts/grid/lv_example_grid_5.py | 0 .../examples/layouts/grid/lv_example_grid_6.c | 0 .../layouts/grid/lv_example_grid_6.py | 0 .../examples/layouts/lv_example_layout.h | 0 .../examples/libs/bmp/example_16bit.bmp | Bin .../examples/libs/bmp/example_24bit.bmp | Bin .../examples/libs/bmp/example_32bit.bmp | Bin .../examples/libs/bmp/index.rst | 0 .../examples/libs/bmp/lv_example_bmp.h | 0 .../examples/libs/bmp/lv_example_bmp_1.c | 0 .../examples/libs/bmp/lv_example_bmp_1.py | 0 .../examples/libs/ffmpeg/birds.mp4 | Bin .../examples/libs/ffmpeg/ffmpeg.png | Bin .../examples/libs/ffmpeg/index.rst | 0 .../examples/libs/ffmpeg/lv_example_ffmpeg.h | 0 .../libs/ffmpeg/lv_example_ffmpeg_1.c | 1 - .../libs/ffmpeg/lv_example_ffmpeg_2.c | 0 .../examples/libs/freetype/Lato-Regular.ttf | Bin .../examples/libs/freetype/index.rst | 0 .../libs/freetype/lv_example_freetype.h | 0 .../libs/freetype/lv_example_freetype_1.c | 0 .../libs/freetype/lv_example_freetype_1.py | 0 .../examples/libs/gif/bulb.gif | Bin .../examples/libs/gif/img_bulb_gif.c | 1 - .../examples/libs/gif/img_bulb_gif.py | 0 .../examples/libs/gif/index.rst | 0 .../examples/libs/gif/lv_example_gif.h | 0 .../examples/libs/gif/lv_example_gif_1.c | 0 .../examples/libs/gif/lv_example_gif_1.py | 0 .../examples/libs/lv_example_libs.h | 0 .../examples/libs/png/img_wink_png.c | 1 - .../examples/libs/png/img_wink_png.py | 0 .../examples/libs/png/index.rst | 0 .../examples/libs/png/lv_example_png.h | 0 .../examples/libs/png/lv_example_png_1.c | 0 .../examples/libs/png/lv_example_png_1.py | 0 .../examples/libs/png/wink.png | Bin .../examples/libs/qrcode/index.rst | 0 .../examples/libs/qrcode/lv_example_qrcode.h | 0 .../libs/qrcode/lv_example_qrcode_1.c | 0 .../libs/qrcode/lv_example_qrcode_1.py | 0 .../examples/libs/rlottie/index.rst | 0 .../libs/rlottie/lv_example_rlottie.h | 0 .../libs/rlottie/lv_example_rlottie_1.c | 0 .../libs/rlottie/lv_example_rlottie_1.py | 0 .../libs/rlottie/lv_example_rlottie_2.c | 0 .../libs/rlottie/lv_example_rlottie_2.py | 0 .../libs/rlottie/lv_example_rlottie_approve.c | 0 .../rlottie/lv_example_rlottie_approve.json | 0 .../rlottie/lv_example_rlottie_approve.py | 0 .../examples/libs/sjpg/index.rst | 0 .../examples/libs/sjpg/lv_example_sjpg.h | 0 .../examples/libs/sjpg/lv_example_sjpg_1.c | 0 .../examples/libs/sjpg/lv_example_sjpg_1.py | 0 .../examples/libs/sjpg/small_image.sjpg | Bin .../examples/lv_examples.h | 0 .../examples/lv_examples.mk | 2 +- .../examples/others/fragment/index.rst | 0 .../others/fragment/lv_example_fragment.h | 0 .../others/fragment/lv_example_fragment_1.c | 3 +- .../others/fragment/lv_example_fragment_2.c | 1 - .../examples/others/gridnav/index.rst | 0 .../others/gridnav/lv_example_gridnav.h | 0 .../others/gridnav/lv_example_gridnav_1.c | 0 .../others/gridnav/lv_example_gridnav_2.c | 1 - .../others/gridnav/lv_example_gridnav_3.c | 4 - .../others/gridnav/lv_example_gridnav_4.c | 1 - .../examples/others/ime/index.rst | 0 .../others/ime/lv_example_ime_pinyin.h | 0 .../others/ime/lv_example_ime_pinyin_1.c | 0 .../others/ime/lv_example_ime_pinyin_2.c | 0 .../examples/others/imgfont/index.rst | 0 .../others/imgfont/lv_example_imgfont.h | 0 .../others/imgfont/lv_example_imgfont_1.c | 0 .../examples/others/lv_example_others.h | 0 .../examples/others/monkey/index.rst | 0 .../others/monkey/lv_example_monkey.h | 0 .../others/monkey/lv_example_monkey_1.c | 0 .../others/monkey/lv_example_monkey_2.c | 0 .../others/monkey/lv_example_monkey_3.c | 0 .../examples/others/msg/index.rst | 0 .../examples/others/msg/lv_example_msg.h | 0 .../examples/others/msg/lv_example_msg_1.c | 0 .../examples/others/msg/lv_example_msg_2.c | 0 .../examples/others/msg/lv_example_msg_3.c | 3 - .../examples/others/snapshot/index.rst | 0 .../others/snapshot/lv_example_snapshot.h | 0 .../others/snapshot/lv_example_snapshot_1.c | 0 .../others/snapshot/lv_example_snapshot_1.py | 0 .../examples/porting/lv_port_disp_template.c | 1 - .../examples/porting/lv_port_disp_template.h | 0 .../examples/porting/lv_port_fs_template.c | 0 .../examples/porting/lv_port_fs_template.h | 0 .../examples/porting/lv_port_indev_template.c | 0 .../examples/porting/lv_port_indev_template.h | 0 .../examples/scroll/index.rst | 0 .../examples/scroll/lv_example_scroll.h | 1 - .../examples/scroll/lv_example_scroll_1.c | 0 .../examples/scroll/lv_example_scroll_1.py | 0 .../examples/scroll/lv_example_scroll_2.c | 0 .../examples/scroll/lv_example_scroll_2.py | 0 .../examples/scroll/lv_example_scroll_3.c | 0 .../examples/scroll/lv_example_scroll_3.py | 0 .../examples/scroll/lv_example_scroll_4.c | 2 - .../examples/scroll/lv_example_scroll_4.py | 0 .../examples/scroll/lv_example_scroll_5.c | 1 - .../examples/scroll/lv_example_scroll_5.py | 0 .../examples/scroll/lv_example_scroll_6.c | 0 .../examples/scroll/lv_example_scroll_6.py | 0 .../examples/styles/index.rst | 0 .../examples/styles/lv_example_style.h | 0 .../examples/styles/lv_example_style_1.c | 0 .../examples/styles/lv_example_style_1.py | 0 .../examples/styles/lv_example_style_10.c | 0 .../examples/styles/lv_example_style_10.py | 0 .../examples/styles/lv_example_style_11.c | 0 .../examples/styles/lv_example_style_11.py | 0 .../examples/styles/lv_example_style_12.c | 0 .../examples/styles/lv_example_style_12.py | 0 .../examples/styles/lv_example_style_13.c | 0 .../examples/styles/lv_example_style_13.py | 0 .../examples/styles/lv_example_style_14.c | 3 - .../examples/styles/lv_example_style_14.py | 0 .../examples/styles/lv_example_style_15.c | 2 - .../examples/styles/lv_example_style_2.c | 0 .../examples/styles/lv_example_style_2.py | 0 .../examples/styles/lv_example_style_3.c | 0 .../examples/styles/lv_example_style_3.py | 0 .../examples/styles/lv_example_style_4.c | 0 .../examples/styles/lv_example_style_4.py | 0 .../examples/styles/lv_example_style_5.c | 0 .../examples/styles/lv_example_style_5.py | 0 .../examples/styles/lv_example_style_6.c | 0 .../examples/styles/lv_example_style_6.py | 0 .../examples/styles/lv_example_style_7.c | 0 .../examples/styles/lv_example_style_7.py | 0 .../examples/styles/lv_example_style_8.c | 0 .../examples/styles/lv_example_style_8.py | 0 .../examples/styles/lv_example_style_9.c | 0 .../examples/styles/lv_example_style_9.py | 0 .../examples/test_ex.sh | 0 .../examples/widgets/animimg/index.rst | 0 .../widgets/animimg/lv_example_animimg_1.c | 2 +- .../widgets/animimg/lv_example_animimg_1.py | 0 .../examples/widgets/arc/index.rst | 0 .../examples/widgets/arc/lv_example_arc_1.c | 0 .../examples/widgets/arc/lv_example_arc_1.py | 0 .../examples/widgets/arc/lv_example_arc_2.c | 2 - .../examples/widgets/arc/lv_example_arc_2.py | 0 .../examples/widgets/bar/index.rst | 0 .../examples/widgets/bar/lv_example_bar_1.c | 0 .../examples/widgets/bar/lv_example_bar_1.py | 0 .../examples/widgets/bar/lv_example_bar_2.c | 0 .../examples/widgets/bar/lv_example_bar_2.py | 0 .../examples/widgets/bar/lv_example_bar_3.c | 1 - .../examples/widgets/bar/lv_example_bar_3.py | 0 .../examples/widgets/bar/lv_example_bar_4.c | 0 .../examples/widgets/bar/lv_example_bar_4.py | 0 .../examples/widgets/bar/lv_example_bar_5.c | 1 - .../examples/widgets/bar/lv_example_bar_5.py | 0 .../examples/widgets/bar/lv_example_bar_6.c | 0 .../examples/widgets/bar/lv_example_bar_6.py | 0 .../examples/widgets/bar/test.py | 0 .../examples/widgets/btn/index.rst | 0 .../examples/widgets/btn/lv_example_btn_1.c | 0 .../examples/widgets/btn/lv_example_btn_1.py | 0 .../examples/widgets/btn/lv_example_btn_2.c | 0 .../examples/widgets/btn/lv_example_btn_2.py | 0 .../examples/widgets/btn/lv_example_btn_3.c | 0 .../examples/widgets/btn/lv_example_btn_3.py | 0 .../examples/widgets/btnmatrix/index.rst | 0 .../btnmatrix/lv_example_btnmatrix_1.c | 1 - .../btnmatrix/lv_example_btnmatrix_1.py | 0 .../btnmatrix/lv_example_btnmatrix_2.c | 1 - .../btnmatrix/lv_example_btnmatrix_2.py | 0 .../btnmatrix/lv_example_btnmatrix_3.c | 1 - .../btnmatrix/lv_example_btnmatrix_3.py | 0 .../examples/widgets/calendar/index.rst | 0 .../widgets/calendar/lv_example_calendar_1.c | 0 .../widgets/calendar/lv_example_calendar_1.py | 0 .../examples/widgets/canvas/index.rst | 0 .../widgets/canvas/lv_example_canvas_1.c | 1 - .../widgets/canvas/lv_example_canvas_1.py | 0 .../widgets/canvas/lv_example_canvas_2.c | 0 .../widgets/canvas/lv_example_canvas_2.py | 0 .../examples/widgets/chart/index.rst | 0 .../widgets/chart/lv_example_chart_1.c | 0 .../widgets/chart/lv_example_chart_1.py | 0 .../widgets/chart/lv_example_chart_2.c | 0 .../widgets/chart/lv_example_chart_2.py | 0 .../widgets/chart/lv_example_chart_3.c | 0 .../widgets/chart/lv_example_chart_3.py | 0 .../widgets/chart/lv_example_chart_4.c | 1 - .../widgets/chart/lv_example_chart_4.py | 0 .../widgets/chart/lv_example_chart_5.c | 99 + .../widgets/chart/lv_example_chart_5.py | 0 .../widgets/chart/lv_example_chart_6.c | 0 .../widgets/chart/lv_example_chart_6.py | 0 .../widgets/chart/lv_example_chart_7.c | 0 .../widgets/chart/lv_example_chart_7.py | 0 .../widgets/chart/lv_example_chart_8.c | 0 .../widgets/chart/lv_example_chart_8.py | 0 .../widgets/chart/lv_example_chart_9.c | 1 - .../widgets/chart/lv_example_chart_9.py | 0 .../examples/widgets/checkbox/index.rst | 0 .../widgets/checkbox/lv_example_checkbox_1.c | 0 .../widgets/checkbox/lv_example_checkbox_1.py | 0 .../widgets/checkbox/lv_example_checkbox_2.c | 3 - .../examples/widgets/colorwheel/index.rst | 0 .../colorwheel/lv_example_colorwheel_1.c | 0 .../colorwheel/lv_example_colorwheel_1.py | 0 .../examples/widgets/dropdown/index.rst | 0 .../widgets/dropdown/lv_example_dropdown_1.c | 0 .../widgets/dropdown/lv_example_dropdown_1.py | 0 .../widgets/dropdown/lv_example_dropdown_2.c | 1 - .../widgets/dropdown/lv_example_dropdown_2.py | 0 .../widgets/dropdown/lv_example_dropdown_3.c | 0 .../widgets/dropdown/lv_example_dropdown_3.py | 0 .../examples/widgets/img/index.rst | 0 .../examples/widgets/img/lv_example_img_1.c | 1 - .../examples/widgets/img/lv_example_img_1.py | 0 .../examples/widgets/img/lv_example_img_2.c | 1 - .../examples/widgets/img/lv_example_img_2.py | 0 .../examples/widgets/img/lv_example_img_3.c | 1 - .../examples/widgets/img/lv_example_img_3.py | 0 .../examples/widgets/img/lv_example_img_4.c | 0 .../examples/widgets/img/lv_example_img_4.py | 0 .../examples/widgets/imgbtn/index.rst | 0 .../widgets/imgbtn/lv_example_imgbtn_1.c | 0 .../widgets/imgbtn/lv_example_imgbtn_1.py | 0 .../examples/widgets/keyboard/index.rst | 0 .../widgets/keyboard/lv_example_keyboard_1.c | 0 .../widgets/keyboard/lv_example_keyboard_1.py | 0 .../examples/widgets/label/index.rst | 0 .../widgets/label/lv_example_label_1.c | 0 .../widgets/label/lv_example_label_1.py | 0 .../widgets/label/lv_example_label_2.c | 0 .../widgets/label/lv_example_label_2.py | 0 .../widgets/label/lv_example_label_3.c | 0 .../widgets/label/lv_example_label_3.py | 0 .../widgets/label/lv_example_label_4.c | 0 .../widgets/label/lv_example_label_5.c | 0 .../widgets/label/lv_example_label_5.py | 0 .../examples/widgets/led/index.rst | 0 .../examples/widgets/led/lv_example_led_1.c | 0 .../examples/widgets/led/lv_example_led_1.py | 0 .../examples/widgets/line/index.rst | 0 .../examples/widgets/line/lv_example_line_1.c | 0 .../widgets/line/lv_example_line_1.py | 0 .../examples/widgets/list/index.rst | 0 .../examples/widgets/list/lv_example_list_1.c | 0 .../widgets/list/lv_example_list_1.py | 0 .../examples/widgets/list/lv_example_list_2.c | 1 - .../widgets/list/lv_example_list_2.py | 0 .../examples/widgets/list/test.py | 0 .../examples/widgets/lv_example_widgets.h | 0 .../examples/widgets/menu/index.rst | 0 .../examples/widgets/menu/lv_example_menu_1.c | 0 .../widgets/menu/lv_example_menu_1.py | 0 .../examples/widgets/menu/lv_example_menu_2.c | 0 .../widgets/menu/lv_example_menu_2.py | 0 .../examples/widgets/menu/lv_example_menu_3.c | 0 .../widgets/menu/lv_example_menu_3.py | 0 .../examples/widgets/menu/lv_example_menu_4.c | 4 +- .../widgets/menu/lv_example_menu_4.py | 0 .../examples/widgets/menu/lv_example_menu_5.c | 0 .../examples/widgets/meter/index.rst | 0 .../widgets/meter/lv_example_meter_1.c | 0 .../widgets/meter/lv_example_meter_1.py | 0 .../widgets/meter/lv_example_meter_2.c | 1 - .../widgets/meter/lv_example_meter_2.py | 0 .../widgets/meter/lv_example_meter_3.c | 0 .../widgets/meter/lv_example_meter_3.py | 0 .../widgets/meter/lv_example_meter_4.c | 0 .../widgets/meter/lv_example_meter_4.py | 0 .../examples/widgets/msgbox/index.rst | 0 .../widgets/msgbox/lv_example_msgbox_1.c | 0 .../widgets/msgbox/lv_example_msgbox_1.py | 0 .../examples/widgets/obj/index.rst | 0 .../examples/widgets/obj/lv_example_obj_1.c | 0 .../examples/widgets/obj/lv_example_obj_1.py | 0 .../examples/widgets/obj/lv_example_obj_2.c | 1 - .../examples/widgets/obj/lv_example_obj_2.py | 0 .../examples/widgets/roller/index.rst | 0 .../widgets/roller/lv_example_roller_1.c | 0 .../widgets/roller/lv_example_roller_1.py | 0 .../widgets/roller/lv_example_roller_2.c | 0 .../widgets/roller/lv_example_roller_2.py | 0 .../widgets/roller/lv_example_roller_3.c | 0 .../widgets/roller/lv_example_roller_3.py | 0 .../examples/widgets/slider/index.rst | 0 .../widgets/slider/lv_example_slider_1.c | 0 .../widgets/slider/lv_example_slider_1.py | 0 .../widgets/slider/lv_example_slider_2.c | 2 - .../widgets/slider/lv_example_slider_2.py | 0 .../widgets/slider/lv_example_slider_3.c | 0 .../widgets/slider/lv_example_slider_3.py | 0 .../examples/widgets/span/index.rst | 0 .../examples/widgets/span/lv_example_span_1.c | 0 .../widgets/span/lv_example_span_1.py | 0 .../examples/widgets/spinbox/index.rst | 0 .../widgets/spinbox/lv_example_spinbox_1.c | 2 - .../widgets/spinbox/lv_example_spinbox_1.py | 0 .../examples/widgets/spinner/index.rst | 0 .../widgets/spinner/lv_example_spinner_1.c | 0 .../widgets/spinner/lv_example_spinner_1.py | 0 .../examples/widgets/switch/index.rst | 0 .../widgets/switch/lv_example_switch_1.c | 0 .../widgets/switch/lv_example_switch_1.py | 0 .../examples/widgets/table/index.rst | 0 .../widgets/table/lv_example_table_1.c | 1 - .../widgets/table/lv_example_table_1.py | 0 .../widgets/table/lv_example_table_2.c | 1 - .../widgets/table/lv_example_table_2.py | 0 .../examples/widgets/tabview/index.rst | 0 .../widgets/tabview/lv_example_tabview_1.c | 0 .../widgets/tabview/lv_example_tabview_1.py | 0 .../widgets/tabview/lv_example_tabview_2.c | 11 - .../widgets/tabview/lv_example_tabview_2.py | 9 - .../examples/widgets/textarea/index.rst | 0 .../widgets/textarea/lv_example_textarea_1.c | 0 .../widgets/textarea/lv_example_textarea_1.py | 0 .../widgets/textarea/lv_example_textarea_2.c | 1 - .../widgets/textarea/lv_example_textarea_2.py | 0 .../widgets/textarea/lv_example_textarea_3.c | 0 .../widgets/textarea/lv_example_textarea_3.py | 0 .../examples/widgets/tileview/index.rst | 0 .../widgets/tileview/lv_example_tileview_1.c | 1 - .../widgets/tileview/lv_example_tileview_1.py | 0 .../examples/widgets/win/index.rst | 0 .../examples/widgets/win/lv_example_win_1.c | 2 - .../examples/widgets/win/lv_example_win_1.py | 0 .../lvgl/lvgl_v8.4/idf_component.yml | 5 + .../{lvgl_v8.3 => lvgl_v8.4}/library.json | 2 +- .../library.properties | 2 +- .../lv_conf_template.h | 32 +- .../lvgl/{lvgl_v8.3 => lvgl_v8.4}/lvgl.h | 4 +- .../lvgl/{lvgl_v8.3 => lvgl_v8.4}/lvgl.mk | 0 .../lvgl/lvgl_v8.4/lvgl.pc.in | 10 + .../scripts/.gitignore | 0 .../{lvgl_v8.3 => lvgl_v8.4}/scripts/Doxyfile | 0 .../scripts/build_html_examples.sh | 1 + .../scripts/built_in_font/DejaVuSans.ttf | Bin .../FontAwesome5-Solid+Brands+Regular.woff | Bin .../built_in_font/Montserrat-Medium.ttf | Bin .../scripts/built_in_font/SimSun.woff | Bin .../built_in_font/built_in_font_gen.py | 0 .../scripts/built_in_font/generate_all.py | 0 .../scripts/built_in_font/unscii-8.ttf | Bin .../scripts/changelog-template.hbs | 0 .../scripts/changelog_gen.sh | 0 .../scripts/code-format.cfg | 0 .../scripts/code-format.py | 0 .../scripts/cppcheck_run.sh | 0 .../scripts/filetohex.py | 0 .../scripts/find_version.sh | 0 .../scripts/genexamplelist.sh | 0 .../scripts/infer_run.sh | 0 .../scripts/install-prerequisites.sh | 0 .../lvgl/lvgl_v8.4/scripts/install_astyle.sh | 9 + .../scripts/jpg_to_sjpg.py | 0 .../scripts/lv_conf_internal_gen.py | 0 .../scripts/release/com.py | 0 .../scripts/release/commits.txt | 0 .../scripts/release/patch.py | 0 .../scripts/release/release.py | 0 .../scripts/style_api_gen.py | 8 +- .../{lvgl_v8.3 => lvgl_v8.4}/src/Makefile | 0 .../src/core/Makefile | 0 .../src/core/lv_core.mk | 0 .../src/core/lv_disp.c | 14 +- .../src/core/lv_disp.h | 0 .../src/core/lv_event.c | 8 +- .../src/core/lv_event.h | 2 - .../src/core/lv_group.c | 30 +- .../src/core/lv_group.h | 2 - .../src/core/lv_indev.c | 31 +- .../src/core/lv_indev.h | 0 .../src/core/lv_indev_scroll.c | 136 +- .../src/core/lv_indev_scroll.h | 0 .../src/core/lv_obj.c | 50 +- .../src/core/lv_obj.h | 7 +- .../src/core/lv_obj_class.c | 0 .../src/core/lv_obj_class.h | 2 - .../src/core/lv_obj_draw.c | 86 +- .../src/core/lv_obj_draw.h | 2 - .../src/core/lv_obj_pos.c | 53 +- .../src/core/lv_obj_pos.h | 2 - .../src/core/lv_obj_scroll.c | 4 - .../src/core/lv_obj_scroll.h | 4 +- .../src/core/lv_obj_style.c | 53 +- .../src/core/lv_obj_style.h | 15 +- .../src/core/lv_obj_style_gen.c | 8 + .../src/core/lv_obj_style_gen.h | 7 + .../src/core/lv_obj_tree.c | 9 +- .../src/core/lv_obj_tree.h | 2 - .../src/core/lv_refr.c | 108 +- .../src/core/lv_refr.h | 0 .../src/core/lv_theme.c | 0 .../src/core/lv_theme.h | 0 .../src/draw/Makefile | 0 .../src/draw/arm2d/lv_draw_arm2d.mk | 0 .../src/draw/arm2d/lv_gpu_arm2d.c | 965 +- .../src/draw/arm2d/lv_gpu_arm2d.h | 0 .../src/draw/lv_draw.c | 0 .../src/draw/lv_draw.h | 5 +- .../src/draw/lv_draw.mk | 1 + .../src/draw/lv_draw_arc.c | 0 .../src/draw/lv_draw_arc.h | 0 .../src/draw/lv_draw_img.c | 28 +- .../src/draw/lv_draw_img.h | 1 - .../src/draw/lv_draw_label.c | 6 +- .../src/draw/lv_draw_label.h | 6 +- .../src/draw/lv_draw_layer.c | 0 .../src/draw/lv_draw_layer.h | 0 .../src/draw/lv_draw_line.c | 4 +- .../src/draw/lv_draw_line.h | 7 +- .../src/draw/lv_draw_mask.c | 84 +- .../src/draw/lv_draw_mask.h | 18 +- .../src/draw/lv_draw_rect.c | 2 +- .../src/draw/lv_draw_rect.h | 3 +- .../src/draw/lv_draw_transform.c | 1 - .../src/draw/lv_draw_transform.h | 0 .../src/draw/lv_draw_triangle.c | 0 .../src/draw/lv_draw_triangle.h | 0 .../src/draw/lv_img_buf.c | 81 +- .../src/draw/lv_img_buf.h | 11 +- .../src/draw/lv_img_cache.c | 0 .../src/draw/lv_img_cache.h | 0 .../src/draw/lv_img_decoder.c | 31 +- .../src/draw/lv_img_decoder.h | 2 - .../src/draw/nema_gfx/lv_draw_nema_gfx.c | 554 + .../src/draw/nema_gfx/lv_draw_nema_gfx.h | 134 + .../src/draw/nema_gfx/lv_draw_nema_gfx.mk | 8 + .../src/draw/nema_gfx/lv_draw_nema_gfx_img.c | 243 + .../draw/nema_gfx/lv_draw_nema_gfx_letter.c | 330 + .../src/draw/nxp/lv_draw_nxp.mk | 2 - .../src/draw/nxp/pxp/lv_draw_nxp_pxp.mk | 1 + .../lvgl_v8.4/src/draw/nxp/pxp/lv_draw_pxp.c | 275 + .../src/draw/nxp/pxp/lv_draw_pxp.h} | 25 +- .../src/draw/nxp/pxp/lv_draw_pxp_blend.c | 407 +- .../src/draw/nxp/pxp/lv_draw_pxp_blend.h | 130 + .../src/draw/nxp/pxp/lv_gpu_nxp_pxp.c | 36 +- .../src/draw/nxp/pxp/lv_gpu_nxp_pxp.h | 21 +- .../src/draw/nxp/pxp/lv_gpu_nxp_pxp_osa.c | 63 +- .../src/draw/nxp/pxp/lv_gpu_nxp_pxp_osa.h | 0 .../src/draw/nxp/vglite/lv_draw_nxp_vglite.mk | 5 +- .../src/draw/nxp/vglite/lv_draw_vglite.c | 557 + .../src/draw/nxp/vglite/lv_draw_vglite.h} | 27 +- .../src/draw/nxp/vglite/lv_draw_vglite_arc.c | 152 +- .../src/draw/nxp/vglite/lv_draw_vglite_arc.h | 26 +- .../draw/nxp/vglite/lv_draw_vglite_blend.c | 634 + .../draw/nxp/vglite/lv_draw_vglite_blend.h | 168 + .../src/draw/nxp/vglite/lv_draw_vglite_line.c | 142 + .../src/draw/nxp/vglite/lv_draw_vglite_line.h | 83 + .../src/draw/nxp/vglite/lv_draw_vglite_rect.c | 459 + .../src/draw/nxp/vglite/lv_draw_vglite_rect.h | 97 + .../src/draw/nxp/vglite/lv_vglite_buf.c | 141 + .../src/draw/nxp/vglite/lv_vglite_buf.h | 124 + .../src/draw/nxp/vglite/lv_vglite_utils.c | 149 + .../src/draw/nxp/vglite/lv_vglite_utils.h} | 117 +- .../src/draw/renesas/lv_draw_renesas.mk | 7 + .../src/draw/renesas/lv_gpu_d2_draw_label.c | 292 + .../src/draw/renesas/lv_gpu_d2_ra6m3.c | 742 + .../src/draw/renesas/lv_gpu_d2_ra6m3.h | 56 + .../src/draw/sdl/README.md | 0 .../src/draw/sdl/lv_draw_sdl.c | 1 - .../src/draw/sdl/lv_draw_sdl.h | 1 - .../src/draw/sdl/lv_draw_sdl.mk | 0 .../src/draw/sdl/lv_draw_sdl_arc.c | 10 +- .../src/draw/sdl/lv_draw_sdl_bg.c | 0 .../src/draw/sdl/lv_draw_sdl_composite.c | 27 +- .../src/draw/sdl/lv_draw_sdl_composite.h | 13 +- .../src/draw/sdl/lv_draw_sdl_img.c | 60 +- .../src/draw/sdl/lv_draw_sdl_img.h | 17 +- .../src/draw/sdl/lv_draw_sdl_label.c | 18 +- .../src/draw/sdl/lv_draw_sdl_layer.c | 8 +- .../src/draw/sdl/lv_draw_sdl_layer.h | 1 + .../src/draw/sdl/lv_draw_sdl_line.c | 4 +- .../src/draw/sdl/lv_draw_sdl_mask.c | 0 .../src/draw/sdl/lv_draw_sdl_mask.h | 1 - .../src/draw/sdl/lv_draw_sdl_polygon.c | 8 +- .../src/draw/sdl/lv_draw_sdl_priv.h | 2 +- .../src/draw/sdl/lv_draw_sdl_rect.c | 339 +- .../src/draw/sdl/lv_draw_sdl_rect.h | 32 +- .../src/draw/sdl/lv_draw_sdl_stack_blur.c | 10 +- .../src/draw/sdl/lv_draw_sdl_stack_blur.h | 0 .../src/draw/sdl/lv_draw_sdl_texture_cache.c | 16 +- .../src/draw/sdl/lv_draw_sdl_texture_cache.h | 11 +- .../src/draw/sdl/lv_draw_sdl_utils.c | 0 .../src/draw/sdl/lv_draw_sdl_utils.h | 0 .../draw/stm32_dma2d/lv_draw_stm32_dma2d.mk | 0 .../src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c | 773 + .../src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h | 81 + .../src/draw/sw/Makefile | 0 .../src/draw/sw/lv_draw_sw.c | 0 .../src/draw/sw/lv_draw_sw.h | 10 +- .../src/draw/sw/lv_draw_sw.mk | 0 .../src/draw/sw/lv_draw_sw_arc.c | 0 .../src/draw/sw/lv_draw_sw_blend.c | 79 +- .../src/draw/sw/lv_draw_sw_blend.h | 3 +- .../src/draw/sw/lv_draw_sw_dither.c | 14 +- .../src/draw/sw/lv_draw_sw_dither.h | 22 +- .../src/draw/sw/lv_draw_sw_gradient.c | 26 +- .../src/draw/sw/lv_draw_sw_gradient.h | 6 +- .../src/draw/sw/lv_draw_sw_img.c | 7 +- .../src/draw/sw/lv_draw_sw_layer.c | 2 - .../src/draw/sw/lv_draw_sw_letter.c | 10 +- .../src/draw/sw/lv_draw_sw_line.c | 22 +- .../src/draw/sw/lv_draw_sw_polygon.c | 0 .../src/draw/sw/lv_draw_sw_rect.c | 30 +- .../src/draw/sw/lv_draw_sw_transform.c | 5 +- .../draw/swm341_dma2d/lv_draw_swm341_dma2d.mk | 0 .../draw/swm341_dma2d/lv_gpu_swm341_dma2d.c | 0 .../draw/swm341_dma2d/lv_gpu_swm341_dma2d.h | 0 .../src/extra/Makefile | 0 .../src/extra/README.md | 0 .../src/extra/layouts/Makefile | 0 .../src/extra/layouts/flex/Makefile | 0 .../src/extra/layouts/flex/lv_flex.c | 14 +- .../src/extra/layouts/flex/lv_flex.h | 0 .../src/extra/layouts/grid/Makefile | 0 .../src/extra/layouts/grid/lv_grid.c | 11 - .../src/extra/layouts/grid/lv_grid.h | 0 .../src/extra/layouts/lv_layouts.h | 0 .../src/extra/libs/Makefile | 0 .../src/extra/libs/bmp/Makefile | 0 .../src/extra/libs/bmp/lv_bmp.c | 4 - .../src/extra/libs/bmp/lv_bmp.h | 0 .../src/extra/libs/ffmpeg/Makefile | 0 .../src/extra/libs/ffmpeg/lv_ffmpeg.c | 0 .../src/extra/libs/ffmpeg/lv_ffmpeg.h | 0 .../src/extra/libs/freetype/Makefile | 0 .../src/extra/libs/freetype/arial.ttf | Bin .../src/extra/libs/freetype/lv_freetype.c | 0 .../src/extra/libs/freetype/lv_freetype.h | 0 .../src/extra/libs/fsdrv/Makefile | 0 .../src/extra/libs/fsdrv/lv_fs_fatfs.c | 0 .../src/extra/libs/fsdrv/lv_fs_littlefs.c | 332 + .../src/extra/libs/fsdrv/lv_fs_posix.c | 7 +- .../src/extra/libs/fsdrv/lv_fs_stdio.c | 2 - .../src/extra/libs/fsdrv/lv_fs_win32.c | 1 - .../src/extra/libs/fsdrv/lv_fsdrv.h | 5 + .../src/extra/libs/gif/Makefile | 0 .../src/extra/libs/gif/gifdec.c | 26 +- .../src/extra/libs/gif/gifdec.h | 2 +- .../src/extra/libs/gif/lv_gif.c | 18 +- .../src/extra/libs/gif/lv_gif.h | 0 .../src/extra/libs/lv_libs.h | 1 + .../src/extra/libs/png/Makefile | 0 .../src/extra/libs/png/lodepng.c | 0 .../src/extra/libs/png/lodepng.h | 0 .../src/extra/libs/png/lv_png.c | 57 +- .../src/extra/libs/png/lv_png.h | 0 .../src/extra/libs/qrcode/Makefile | 0 .../src/extra/libs/qrcode/lv_qrcode.c | 1 - .../src/extra/libs/qrcode/lv_qrcode.h | 0 .../src/extra/libs/qrcode/qrcodegen.c | 158 +- .../src/extra/libs/qrcode/qrcodegen.h | 0 .../src/extra/libs/rlottie/Makefile | 0 .../src/extra/libs/rlottie/lv_rlottie.c | 1 - .../src/extra/libs/rlottie/lv_rlottie.h | 0 .../src/extra/libs/sjpg/Makefile | 0 .../src/extra/libs/sjpg/lv_sjpg.c | 7 - .../src/extra/libs/sjpg/lv_sjpg.h | 0 .../src/extra/libs/sjpg/tjpgd.c | 0 .../src/extra/libs/sjpg/tjpgd.h | 0 .../src/extra/libs/sjpg/tjpgdcnf.h | 0 .../src/extra/libs/tiny_ttf/lv_tiny_ttf.c | 284 + .../src/extra/libs/tiny_ttf/lv_tiny_ttf.h | 62 + .../src/extra/libs/tiny_ttf/stb_rect_pack.h | 633 + .../extra/libs/tiny_ttf/stb_truetype_htcw.h | 5558 +++++++ .../src/extra/lv_extra.c | 4 + .../src/extra/lv_extra.h | 0 .../src/extra/lv_extra.mk | 2 +- .../src/extra/others/Makefile | 0 .../src/extra/others/fragment/Makefile | 0 .../src/extra/others/fragment/README.md | 0 .../src/extra/others/fragment/lv_fragment.c | 0 .../src/extra/others/fragment/lv_fragment.h | 2 - .../others/fragment/lv_fragment_manager.c | 2 - .../src/extra/others/gridnav/Makefile | 0 .../src/extra/others/gridnav/lv_gridnav.c | 1 + .../src/extra/others/gridnav/lv_gridnav.h | 0 .../src/extra/others/ime/Makefile | 0 .../src/extra/others/ime/lv_ime_pinyin.c | 18 +- .../src/extra/others/ime/lv_ime_pinyin.h | 5 - .../src/extra/others/imgfont/Makefile | 0 .../src/extra/others/imgfont/lv_imgfont.c | 0 .../src/extra/others/imgfont/lv_imgfont.h | 0 .../src/extra/others/lv_others.h | 0 .../src/extra/others/monkey/Makefile | 0 .../src/extra/others/monkey/lv_monkey.c | 0 .../src/extra/others/monkey/lv_monkey.h | 0 .../src/extra/others/msg/Makefile | 0 .../src/extra/others/msg/lv_msg.c | 21 +- .../src/extra/others/msg/lv_msg.h | 10 + .../src/extra/others/snapshot/Makefile | 0 .../src/extra/others/snapshot/lv_snapshot.c | 25 +- .../src/extra/others/snapshot/lv_snapshot.h | 13 +- .../src/extra/themes/Makefile | 0 .../src/extra/themes/basic/Makefile | 0 .../src/extra/themes/basic/lv_theme_basic.c | 4 - .../src/extra/themes/basic/lv_theme_basic.h | 0 .../src/extra/themes/default/Makefile | 0 .../extra/themes/default/lv_theme_default.c | 6 - .../extra/themes/default/lv_theme_default.h | 0 .../src/extra/themes/lv_themes.h | 0 .../src/extra/themes/mono/Makefile | 0 .../src/extra/themes/mono/lv_theme_mono.c | 3 - .../src/extra/themes/mono/lv_theme_mono.h | 0 .../src/extra/widgets/Makefile | 0 .../src/extra/widgets/animimg/Makefile | 0 .../src/extra/widgets/animimg/lv_animimg.c | 2 +- .../src/extra/widgets/animimg/lv_animimg.h | 5 +- .../src/extra/widgets/calendar/Makefile | 0 .../src/extra/widgets/calendar/lv_calendar.c | 1 - .../src/extra/widgets/calendar/lv_calendar.h | 0 .../calendar/lv_calendar_header_arrow.c | 0 .../calendar/lv_calendar_header_arrow.h | 0 .../calendar/lv_calendar_header_dropdown.c | 57 +- .../calendar/lv_calendar_header_dropdown.h | 9 + .../src/extra/widgets/chart/Makefile | 0 .../src/extra/widgets/chart/lv_chart.c | 54 +- .../src/extra/widgets/chart/lv_chart.h | 3 - .../src/extra/widgets/colorwheel/Makefile | 0 .../extra/widgets/colorwheel/lv_colorwheel.c | 3 - .../extra/widgets/colorwheel/lv_colorwheel.h | 2 - .../src/extra/widgets/imgbtn/Makefile | 0 .../src/extra/widgets/imgbtn/lv_imgbtn.c | 13 +- .../src/extra/widgets/imgbtn/lv_imgbtn.h | 2 - .../src/extra/widgets/keyboard/Makefile | 0 .../src/extra/widgets/keyboard/lv_keyboard.c | 2 +- .../src/extra/widgets/keyboard/lv_keyboard.h | 0 .../src/extra/widgets/led/Makefile | 0 .../src/extra/widgets/led/lv_led.c | 0 .../src/extra/widgets/led/lv_led.h | 2 - .../src/extra/widgets/list/Makefile | 0 .../src/extra/widgets/list/lv_list.c | 0 .../src/extra/widgets/list/lv_list.h | 0 .../src/extra/widgets/lv_widgets.h | 0 .../src/extra/widgets/menu/Makefile | 0 .../src/extra/widgets/menu/lv_menu.c | 5 + .../src/extra/widgets/menu/lv_menu.h | 0 .../src/extra/widgets/meter/Makefile | 0 .../src/extra/widgets/meter/lv_meter.c | 20 +- .../src/extra/widgets/meter/lv_meter.h | 4 +- .../src/extra/widgets/msgbox/Makefile | 0 .../src/extra/widgets/msgbox/lv_msgbox.c | 4 +- .../src/extra/widgets/msgbox/lv_msgbox.h | 0 .../src/extra/widgets/span/Makefile | 0 .../src/extra/widgets/span/lv_span.c | 2 +- .../src/extra/widgets/span/lv_span.h | 1 - .../src/extra/widgets/spinbox/Makefile | 0 .../src/extra/widgets/spinbox/lv_spinbox.c | 3 - .../src/extra/widgets/spinbox/lv_spinbox.h | 0 .../src/extra/widgets/spinner/Makefile | 0 .../src/extra/widgets/spinner/lv_spinner.c | 3 - .../src/extra/widgets/spinner/lv_spinner.h | 0 .../src/extra/widgets/tabview/Makefile | 0 .../src/extra/widgets/tabview/lv_tabview.c | 18 +- .../src/extra/widgets/tabview/lv_tabview.h | 2 +- .../src/extra/widgets/tileview/Makefile | 0 .../src/extra/widgets/tileview/lv_tileview.c | 0 .../src/extra/widgets/tileview/lv_tileview.h | 0 .../src/extra/widgets/win/Makefile | 0 .../src/extra/widgets/win/lv_win.c | 2 - .../src/extra/widgets/win/lv_win.h | 1 - .../src/font/Makefile | 0 .../src/font/korean.ttf | Bin .../src/font/lv_font.c | 0 .../src/font/lv_font.h | 2 +- .../src/font/lv_font.mk | 0 .../font/lv_font_dejavu_16_persian_hebrew.c | 7 - .../src/font/lv_font_fmt_txt.c | 6 +- .../src/font/lv_font_fmt_txt.h | 0 .../src/font/lv_font_loader.c | 0 .../src/font/lv_font_loader.h | 0 .../src/font/lv_font_montserrat_10.c | 7 - .../src/font/lv_font_montserrat_12.c | 7 - .../src/font/lv_font_montserrat_12_subpx.c | 7 - .../src/font/lv_font_montserrat_14.c | 0 .../src/font/lv_font_montserrat_16.c | 0 .../src/font/lv_font_montserrat_18.c | 7 - .../src/font/lv_font_montserrat_20.c | 7 - .../src/font/lv_font_montserrat_22.c | 7 - .../src/font/lv_font_montserrat_24.c | 0 .../src/font/lv_font_montserrat_26.c | 7 - .../src/font/lv_font_montserrat_28.c | 0 .../font/lv_font_montserrat_28_compressed.c | 7 - .../src/font/lv_font_montserrat_30.c | 0 .../src/font/lv_font_montserrat_32.c | 7 - .../src/font/lv_font_montserrat_34.c | 7 - .../src/font/lv_font_montserrat_36.c | 7 - .../src/font/lv_font_montserrat_38.c | 7 - .../src/font/lv_font_montserrat_40.c | 7 - .../src/font/lv_font_montserrat_42.c | 7 - .../src/font/lv_font_montserrat_44.c | 7 - .../src/font/lv_font_montserrat_46.c | 7 - .../src/font/lv_font_montserrat_48.c | 7 - .../src/font/lv_font_montserrat_8.c | 7 - .../src/font/lv_font_simsun_16_cjk.c | 7 - .../src/font/lv_font_unscii_16.c | 9 - .../src/font/lv_font_unscii_8.c | 9 - .../src/font/lv_symbol_def.h | 1 - .../{lvgl_v8.3 => lvgl_v8.4}/src/hal/Makefile | 0 .../{lvgl_v8.3 => lvgl_v8.4}/src/hal/lv_hal.h | 0 .../src/hal/lv_hal.mk | 0 .../src/hal/lv_hal_disp.c | 37 +- .../src/hal/lv_hal_disp.h | 16 +- .../src/hal/lv_hal_indev.c | 0 .../src/hal/lv_hal_indev.h | 3 +- .../src/hal/lv_hal_tick.c | 2 +- .../src/hal/lv_hal_tick.h | 2 +- .../{lvgl_v8.3 => lvgl_v8.4}/src/lv_api_map.h | 3 - .../src/lv_conf_internal.h | 78 +- .../src/lv_conf_kconfig.h | 4 +- .../lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/lvgl.h | 0 .../src/misc/Makefile | 0 .../src/misc/lv_anim.c | 1 - .../src/misc/lv_anim.h | 0 .../src/misc/lv_anim_timeline.c | 0 .../src/misc/lv_anim_timeline.h | 0 .../src/misc/lv_area.c | 73 +- .../src/misc/lv_area.h | 10 +- .../src/misc/lv_assert.h | 0 .../src/misc/lv_async.c | 0 .../src/misc/lv_async.h | 0 .../src/misc/lv_bidi.c | 5 +- .../src/misc/lv_bidi.h | 1 - .../src/misc/lv_color.c | 2 +- .../src/misc/lv_color.h | 20 +- .../{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_fs.c | 0 .../{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_fs.h | 1 - .../{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_gc.c | 0 .../{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_gc.h | 0 .../{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_ll.c | 0 .../{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_ll.h | 0 .../src/misc/lv_log.c | 0 .../src/misc/lv_log.h | 0 .../src/misc/lv_lru.c | 13 +- .../src/misc/lv_lru.h | 2 - .../src/misc/lv_math.c | 4 +- .../src/misc/lv_math.h | 6 +- .../src/misc/lv_mem.c | 9 +- .../src/misc/lv_mem.h | 11 +- .../src/misc/lv_misc.mk | 0 .../src/misc/lv_printf.c | 0 .../src/misc/lv_printf.h | 6 + .../src/misc/lv_style.c | 4 +- .../src/misc/lv_style.h | 34 +- .../src/misc/lv_style_gen.c | 8 + .../src/misc/lv_style_gen.h | 6 + .../src/misc/lv_templ.c | 0 .../src/misc/lv_templ.h | 0 .../src/misc/lv_timer.c | 2 +- .../src/misc/lv_timer.h | 4 +- .../src/misc/lv_tlsf.c | 1 - .../src/misc/lv_tlsf.h | 0 .../src/misc/lv_txt.c | 0 .../src/misc/lv_txt.h | 0 .../src/misc/lv_txt_ap.c | 0 .../src/misc/lv_txt_ap.h | 0 .../src/misc/lv_types.h | 0 .../src/misc/lv_utils.c | 0 .../src/misc/lv_utils.h | 0 .../src/widgets/Makefile | 0 .../src/widgets/lv_arc.c | 201 +- .../src/widgets/lv_arc.h | 9 +- .../src/widgets/lv_bar.c | 2 + .../src/widgets/lv_bar.h | 0 .../src/widgets/lv_btn.c | 0 .../src/widgets/lv_btn.h | 0 .../src/widgets/lv_btnmatrix.c | 54 +- .../src/widgets/lv_btnmatrix.h | 25 +- .../src/widgets/lv_canvas.c | 24 +- .../src/widgets/lv_canvas.h | 3 +- .../src/widgets/lv_checkbox.c | 14 +- .../src/widgets/lv_checkbox.h | 2 +- .../src/widgets/lv_dropdown.c | 15 +- .../src/widgets/lv_dropdown.h | 0 .../src/widgets/lv_img.c | 14 +- .../src/widgets/lv_img.h | 2 - .../src/widgets/lv_label.c | 7 +- .../src/widgets/lv_label.h | 0 .../src/widgets/lv_line.c | 0 .../src/widgets/lv_line.h | 0 .../src/widgets/lv_objx_templ.c | 0 .../src/widgets/lv_objx_templ.h | 0 .../src/widgets/lv_roller.c | 45 +- .../src/widgets/lv_roller.h | 2 - .../src/widgets/lv_slider.c | 8 +- .../src/widgets/lv_slider.h | 0 .../src/widgets/lv_switch.c | 1 - .../src/widgets/lv_switch.h | 0 .../src/widgets/lv_table.c | 177 +- .../src/widgets/lv_table.h | 33 +- .../src/widgets/lv_textarea.c | 3 - .../src/widgets/lv_textarea.h | 0 .../src/widgets/lv_widgets.mk | 0 .../{lvgl_v8.3 => lvgl_v8.4}/tests/.gitignore | 0 .../tests/CMakeLists.txt | 753 +- .../{lvgl_v8.3 => lvgl_v8.4}/tests/README.md | 0 .../tests/__makefile__/Makefile | 0 .../tests/__makefile__/test.c | 0 .../{lvgl_v8.3 => lvgl_v8.4}/tests/config.yml | 0 .../{lvgl_v8.3 => lvgl_v8.4}/tests/main.py | 0 .../lvgl/lvgl_v8.4/tests/ref_imgs/arc_1.png | Bin 0 -> 10563 bytes .../lvgl/lvgl_v8.4/tests/ref_imgs/arc_2.png | Bin 0 -> 10022 bytes .../lvgl_v8.4/tests/ref_imgs/dropdown_1.png | Bin 0 -> 12588 bytes .../tests/ref_imgs/dropdown_2.png | Bin .../lvgl_v8.4/tests/ref_imgs/roller_1.png | Bin 0 -> 28643 bytes .../lvgl_v8.4/tests/ref_imgs/roller_2.png | Bin 0 -> 29539 bytes .../tests/ref_imgs/scr1.png | Bin .../tests/ref_imgs/table_1.png | Bin .../lvgl_v8.4/tests/ref_imgs/tiny_ttf_1.png | Bin 0 -> 16444 bytes .../tests/src/lv_test_conf.h | 6 + .../tests/src/lv_test_helpers.h | 0 .../tests/src/lv_test_indev.c | 0 .../tests/src/lv_test_indev.h | 0 .../tests/src/lv_test_init.c | 0 .../tests/src/lv_test_init.h | 0 .../tests/src/test_cases/_test_template.c | 0 .../tests/src/test_cases/test_arc.c | 47 + .../tests/src/test_cases/test_bar.c | 0 .../tests/src/test_cases/test_checkbox.c | 0 .../tests/src/test_cases/test_config.c | 0 .../tests/src/test_cases/test_demo_stress.c | 0 .../tests/src/test_cases/test_demo_widgets.c | 0 .../tests/src/test_cases/test_dropdown.c | 6 +- .../tests/src/test_cases/test_event.c | 1 - .../tests/src/test_cases/test_font_loader.c | 0 .../tests/src/test_cases/test_fs.c | 1 - .../tests/src/test_cases/test_line.c | 0 .../tests/src/test_cases/test_mem.c | 0 .../tests/src/test_cases/test_obj_tree.c | 0 .../tests/src/test_cases/test_roller.c | 107 + .../tests/src/test_cases/test_screen_load.c | 127 + .../tests/src/test_cases/test_slider.c | 0 .../tests/src/test_cases/test_snapshot.c | 1 - .../tests/src/test_cases/test_style.c | 0 .../tests/src/test_cases/test_switch.c | 0 .../tests/src/test_cases/test_table.c | 0 .../tests/src/test_cases/test_textarea.c | 0 .../tests/src/test_cases/test_tiny_ttf.c | 49 + .../tests/src/test_cases/test_txt.c | 0 .../tests/src/test_files/readtest.txt | Bin .../tests/src/test_fonts/font_1.c | 0 .../tests/src/test_fonts/font_1.fnt | Bin .../tests/src/test_fonts/font_2.c | 0 .../tests/src/test_fonts/font_2.fnt | Bin .../tests/src/test_fonts/font_3.c | 0 .../tests/src/test_fonts/font_3.fnt | Bin .../tests/src/test_fonts/ubuntu_font.c | 11970 ++++++++++++++++ .../tests/unity/generate_test_runner.rb | 0 .../tests/unity/run_test.erb | 0 .../tests/unity/type_sanitizer.rb | 0 .../tests/unity/unity.c | 0 .../tests/unity/unity.h | 0 .../tests/unity/unity_internals.h | 0 .../lvgl_v8.4/tests/unity/unity_support.c | 307 + .../tests/unity/unity_support.h | 0 src/W800_SDK_v1.00.10/tools/w800/inc.mk | 2 +- 1327 files changed, 31337 insertions(+), 7379 deletions(-) delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CHANGELOG.md delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/js/custom.js delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/nxp.md delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/fsdrv.md delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/arm-2d.md delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/env_support/rt-thread/squareline/SConscript delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/examples/widgets/chart/lv_example_chart_5.c delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/idf_component.yml delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/lv_gpu_nxp.c delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/pxp/lv_draw_pxp_blend.h delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_blend.c delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_blend.h delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_rect.c delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_gpu_nxp_vglite.c delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/tests/ref_imgs/dropdown_1.png delete mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/tests/unity/unity_support.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/.codecov.yml (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/.editorconfig (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/FUNDING.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/bug-report.md create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/config.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/dev-discussion.md create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/auto-comment.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/pull_request_template.md create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/arduino.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/build_micropython.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/ccpp.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/check_conf.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/check_style.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/close_old_issues.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/compile_docs.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/esp_upload_component.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/main.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/makefile.yml create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/release.yml rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/.gitignore (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/.pre-commit-config.yaml (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/CMakeLists.txt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/Kconfig (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/LICENCE.txt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/Makefile (67%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/README.md (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/README_pt_BR.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/README_zh.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/SConscript (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/component.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/README.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/README.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_benchmark_cogwheel_alpha16.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_benchmark_cogwheel_argb.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_benchmark_cogwheel_chroma_keyed.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_benchmark_cogwheel_indexed16.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_benchmark_cogwheel_rgb.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_benchmark_cogwheel_rgb565a8.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_cogwheel_argb.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_cogwheel_chroma_keyed.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_cogwheel_indexed16.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/img_cogwheel_rgb.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/lv_font_bechmark_montserrat_12_compr_az.c.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/lv_font_bechmark_montserrat_16_compr_az.c.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/assets/lv_font_bechmark_montserrat_28_compr_az.c.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/lv_demo_benchmark.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/lv_demo_benchmark.h (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/screenshot1.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/benchmark/screenshot2.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/keypad_encoder/README.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/keypad_encoder/lv_demo_keypad_encoder.c (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/keypad_encoder/lv_demo_keypad_encoder.h (93%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/keypad_encoder/screenshot1.gif (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/keypad_encoder/screenshot1.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/lv_demos.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/lv_demos.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/README.md (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_list_pause.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_list_play.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_loop.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_next.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_pause.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_play.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_prev.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_rnd.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/corner_1.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/corner_2.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/cover_1.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/cover_2.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/cover_3.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_chart.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_chat.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_download.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_heart.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_slider.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/list_border.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/wave_bottom.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/wave_top.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_list_pause.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_list_play.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_loop.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_next.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_pause.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_play.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_prev.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_rnd.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/corner_1.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/corner_2.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/cover_1.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/cover_2.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/cover_3.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/icn_chart.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/icn_chat.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/icn_download.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/icn_heart.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/icn_slider.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/list_border.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/wave_bottom.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/wave_top.png rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_corner_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_list_pause.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_list_pause_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_list_play.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_list_play_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_loop.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_loop_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_next.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_next_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_pause.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_pause_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_play.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_play_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_prev.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_prev_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_rnd.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_btn_rnd_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_corner_left.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_corner_left_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_corner_right.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_corner_right_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_cover_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_cover_1_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_cover_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_cover_2_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_cover_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_cover_3_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_icon_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_icon_1_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_icon_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_icon_2_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_icon_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_icon_3_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_icon_4.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_icon_4_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_list_border.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_list_border_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_logo.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_slider_knob.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_slider_knob_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_wave_bottom.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_wave_bottom_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_wave_top.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/img_lv_demo_music_wave_top_large.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/spectrum.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/spectrum_1.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/spectrum_2.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/assets/spectrum_3.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/lv_demo_music.c (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/lv_demo_music.h (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/lv_demo_music_list.c (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/lv_demo_music_list.h (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/lv_demo_music_main.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/lv_demo_music_main.h (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/music/screenshot1.gif (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/stress/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/stress/README.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/stress/lv_demo_stress.c (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/stress/lv_demo_stress.h (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/stress/screenshot1.gif (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/stress/screenshot1.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/assets/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/assets/avatar.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/assets/clothes.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/assets/img_clothes.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/assets/img_demo_widgets_avatar.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/assets/img_lvgl_logo.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/assets/lvgl_logo.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/lv_demo_widgets.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/lv_demo_widgets.h (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/lv_demo_widgets.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/screenshot1.gif (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/demos/widgets/screenshot1.png (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CHANGELOG.md rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/CODE_OF_CONDUCT.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/CODING_STYLE.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/CONTRIBUTING.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/ROADMAP.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_ext/lv_example.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_static/css/custom.css (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_static/css/fontawesome.min.css (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_static/img/home_1.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_static/img/home_2.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_static/img/home_3.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_static/img/home_4.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_static/img/home_5.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_static/img/home_6.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_static/img/home_banner.jpg (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/js/custom.js rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_templates/layout.html (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/_templates/page.html (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/build.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/conf.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/example_list.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/favicon.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/bindings/cpp.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/bindings/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/bindings/micropython.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/os/freertos.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/os/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/os/nuttx.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/os/rt-thread.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/os/zephyr.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/platforms/arduino.md (93%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/platforms/cmake.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/platforms/espressif.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/platforms/index.md (92%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/nxp.md rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/platforms/pc-simulator.md (98%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/renesas.md rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/platforms/stm32.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/platforms/tasmota-berry.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/get-started/quick-overview.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/intro/index.md (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/layouts/flex.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/layouts/grid.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/layouts/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/libs/bmp.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/libs/ffmpeg.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/libs/freetype.md (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/fsdrv.md rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/libs/gif.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/libs/index.md (92%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/libs/png.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/libs/qrcode.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/libs/rlottie.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/libs/sjpg.md (97%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/tiny_ttf.md rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/logo_lvgl.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/align.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/anim-timeline.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/bidi.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/boxmodel.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/btn_example.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/button_style_example.gif (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/button_style_example.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/codeblocks.jpg (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/eclipse.jpg (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/layers.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/par_child1.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/par_child2.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/par_child3.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/platformio.jpg (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/qtcreator.jpg (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/simple_button_example.gif (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/simple_button_example.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/symbols.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/sys.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/misc/visualstudio.jpg (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/others/fragment.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/others/gridnav.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/others/ime_pinyin.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/others/imgfont.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/others/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/others/monkey.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/others/msg.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/others/snapshot.md (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/animation.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/color.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/coords.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/display.md (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/drawing.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/event.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/file-system.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/font.md (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/image.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/indev.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/layer.md (90%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/new_widget.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/object.md (99%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/arm-2d.md rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/renderers/dma2d.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/renderers/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/renderers/pxp-vglite.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/renderers/sdl.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/renderers/sw.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/scroll.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/style-props.md (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/style.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/overview/timer.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/display.md (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/gpu.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/indev.md (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/log.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/os.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/project.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/sleep.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/tick.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/porting/timer-handler.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/requirements.txt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/arc.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/bar.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/btn.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/btnmatrix.md (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/canvas.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/checkbox.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/dropdown.md (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/img.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/label.md (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/line.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/roller.md (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/slider.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/switch.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/table.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/core/textarea.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/animimg.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/calendar.md (65%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/chart.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/colorwheel.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/imgbtn.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/keyboard.md (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/led.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/list.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/menu.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/meter.md (92%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/msgbox.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/span.md (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/spinbox.md (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/spinner.md (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/tabview.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/tileview.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/extra/win.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/index.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/docs/widgets/obj.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmake/custom.cmake (90%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmake/esp.cmake (89%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmake/micropython.cmake (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmake/zephyr.cmake (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3/env_support/cmsis-pack/LVGL.lvgl.1.0.6.pack => lvgl_v8.4/env_support/cmsis-pack/LVGL.lvgl.8.4.0.pack} (80%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmsis-pack/LVGL.lvgl.pdsc (69%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmsis-pack/LVGL.pidx (61%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmsis-pack/README.md (74%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmsis-pack/gen_pack.sh (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmsis-pack/lv_cmsis_pack.txt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/cmsis-pack/lv_conf_cmsis.h (83%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/rt-thread/SConscript (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/rt-thread/lv_rt_thread_conf.h (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/rt-thread/lv_rt_thread_port.c (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/rt-thread/squareline/README.md (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/env_support/rt-thread/squareline/SConscript rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3/env_support/rt-thread/squareline/ui => lvgl_v8.4/env_support/rt-thread/squareline}/lv_ui_entry.c (88%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/env_support/rt-thread/squareline/ui/lvgl/lvgl.h rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/env_support/zephyr/module.yml (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/lv_example_anim.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/lv_example_anim_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/lv_example_anim_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/lv_example_anim_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/lv_example_anim_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/lv_example_anim_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/lv_example_anim_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/lv_example_anim_timeline_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/anim/lv_example_anim_timeline_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/arduino/LVGL_Arduino/LVGL_Arduino.ino (65%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/animimg001.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/animimg001.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/animimg002.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/animimg002.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/animimg003.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/animimg003.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/caret_down.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/emoji/F600.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/emoji/img_emoji_F617.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/font/lv_font_simsun_16_cjk.fnt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/font/montserrat-16.fnt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/font/montserrat-22.fnt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_caret_down.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_caret_down.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_cogwheel_alpha16.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_cogwheel_argb.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_cogwheel_argb.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_cogwheel_chroma_keyed.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_cogwheel_chroma_keyed.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_cogwheel_indexed16.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_cogwheel_indexed16.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_cogwheel_rgb.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_cogwheel_rgb.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_hand.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_hand_hour.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_hand_min.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_skew_strip.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_skew_strip.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_skew_strip_80x20_argb8888.fnt (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_star.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_star.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/img_strip.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/imgbtn_left.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/imgbtn_left.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/imgbtn_mid.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/imgbtn_mid.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/imgbtn_right.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/assets/imgbtn_right.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/event/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/event/lv_example_event.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/event/lv_example_event_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/event/lv_example_event_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/event/lv_example_event_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/event/lv_example_event_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/event/lv_example_event_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/event/lv_example_event_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/event/lv_example_event_4.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/get_started/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/get_started/lv_example_get_started.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/get_started/lv_example_get_started_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/get_started/lv_example_get_started_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/get_started/lv_example_get_started_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/get_started/lv_example_get_started_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/get_started/lv_example_get_started_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/get_started/lv_example_get_started_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/header.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_1.c (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_4.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_4.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_5.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_5.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_6.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/flex/lv_example_flex_6.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_4.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_4.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_5.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_5.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_6.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/grid/lv_example_grid_6.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/layouts/lv_example_layout.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/bmp/example_16bit.bmp (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/bmp/example_24bit.bmp (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/bmp/example_32bit.bmp (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/bmp/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/bmp/lv_example_bmp.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/bmp/lv_example_bmp_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/bmp/lv_example_bmp_1.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/ffmpeg/birds.mp4 (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/ffmpeg/ffmpeg.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/ffmpeg/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/ffmpeg/lv_example_ffmpeg.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/ffmpeg/lv_example_ffmpeg_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/ffmpeg/lv_example_ffmpeg_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/freetype/Lato-Regular.ttf (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/freetype/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/freetype/lv_example_freetype.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/freetype/lv_example_freetype_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/freetype/lv_example_freetype_1.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/gif/bulb.gif (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/gif/img_bulb_gif.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/gif/img_bulb_gif.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/gif/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/gif/lv_example_gif.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/gif/lv_example_gif_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/gif/lv_example_gif_1.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/lv_example_libs.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/png/img_wink_png.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/png/img_wink_png.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/png/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/png/lv_example_png.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/png/lv_example_png_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/png/lv_example_png_1.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/png/wink.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/qrcode/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/qrcode/lv_example_qrcode.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/qrcode/lv_example_qrcode_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/qrcode/lv_example_qrcode_1.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/rlottie/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/rlottie/lv_example_rlottie.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/rlottie/lv_example_rlottie_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/rlottie/lv_example_rlottie_1.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/rlottie/lv_example_rlottie_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/rlottie/lv_example_rlottie_2.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/rlottie/lv_example_rlottie_approve.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/rlottie/lv_example_rlottie_approve.json (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/rlottie/lv_example_rlottie_approve.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/sjpg/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/sjpg/lv_example_sjpg.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/sjpg/lv_example_sjpg_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/sjpg/lv_example_sjpg_1.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/libs/sjpg/small_image.sjpg (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/lv_examples.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/lv_examples.mk (84%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/fragment/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/fragment/lv_example_fragment.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/fragment/lv_example_fragment_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/fragment/lv_example_fragment_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/gridnav/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/gridnav/lv_example_gridnav.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/gridnav/lv_example_gridnav_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/gridnav/lv_example_gridnav_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/gridnav/lv_example_gridnav_3.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/gridnav/lv_example_gridnav_4.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/ime/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/ime/lv_example_ime_pinyin.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/ime/lv_example_ime_pinyin_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/ime/lv_example_ime_pinyin_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/imgfont/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/imgfont/lv_example_imgfont.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/imgfont/lv_example_imgfont_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/lv_example_others.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/monkey/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/monkey/lv_example_monkey.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/monkey/lv_example_monkey_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/monkey/lv_example_monkey_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/monkey/lv_example_monkey_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/msg/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/msg/lv_example_msg.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/msg/lv_example_msg_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/msg/lv_example_msg_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/msg/lv_example_msg_3.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/snapshot/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/snapshot/lv_example_snapshot.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/snapshot/lv_example_snapshot_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/others/snapshot/lv_example_snapshot_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/porting/lv_port_disp_template.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/porting/lv_port_disp_template.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/porting/lv_port_fs_template.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/porting/lv_port_fs_template.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/porting/lv_port_indev_template.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/porting/lv_port_indev_template.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_4.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_4.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_5.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_5.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_6.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/scroll/lv_example_scroll_6.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_10.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_10.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_11.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_11.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_12.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_12.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_13.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_13.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_14.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_14.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_15.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_4.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_4.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_5.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_5.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_6.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_6.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_7.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_7.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_8.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_8.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_9.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/styles/lv_example_style_9.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/test_ex.sh (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/animimg/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/animimg/lv_example_animimg_1.c (88%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/animimg/lv_example_animimg_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/arc/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/arc/lv_example_arc_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/arc/lv_example_arc_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/arc/lv_example_arc_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/arc/lv_example_arc_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_3.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_4.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_4.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_5.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_5.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_6.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/lv_example_bar_6.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/bar/test.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btn/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btn/lv_example_btn_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btn/lv_example_btn_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btn/lv_example_btn_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btn/lv_example_btn_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btn/lv_example_btn_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btn/lv_example_btn_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btnmatrix/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btnmatrix/lv_example_btnmatrix_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btnmatrix/lv_example_btnmatrix_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btnmatrix/lv_example_btnmatrix_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btnmatrix/lv_example_btnmatrix_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btnmatrix/lv_example_btnmatrix_3.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/btnmatrix/lv_example_btnmatrix_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/calendar/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/calendar/lv_example_calendar_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/calendar/lv_example_calendar_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/canvas/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/canvas/lv_example_canvas_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/canvas/lv_example_canvas_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/canvas/lv_example_canvas_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/canvas/lv_example_canvas_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_4.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_4.py (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/examples/widgets/chart/lv_example_chart_5.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_5.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_6.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_6.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_7.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_7.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_8.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_8.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_9.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/chart/lv_example_chart_9.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/checkbox/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/checkbox/lv_example_checkbox_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/checkbox/lv_example_checkbox_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/checkbox/lv_example_checkbox_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/colorwheel/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/colorwheel/lv_example_colorwheel_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/colorwheel/lv_example_colorwheel_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/dropdown/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/dropdown/lv_example_dropdown_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/dropdown/lv_example_dropdown_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/dropdown/lv_example_dropdown_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/dropdown/lv_example_dropdown_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/dropdown/lv_example_dropdown_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/dropdown/lv_example_dropdown_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/img/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/img/lv_example_img_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/img/lv_example_img_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/img/lv_example_img_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/img/lv_example_img_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/img/lv_example_img_3.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/img/lv_example_img_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/img/lv_example_img_4.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/img/lv_example_img_4.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/imgbtn/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/imgbtn/lv_example_imgbtn_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/imgbtn/lv_example_imgbtn_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/keyboard/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/keyboard/lv_example_keyboard_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/keyboard/lv_example_keyboard_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/lv_example_label_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/lv_example_label_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/lv_example_label_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/lv_example_label_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/lv_example_label_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/lv_example_label_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/lv_example_label_4.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/lv_example_label_5.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/label/lv_example_label_5.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/led/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/led/lv_example_led_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/led/lv_example_led_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/line/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/line/lv_example_line_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/line/lv_example_line_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/list/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/list/lv_example_list_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/list/lv_example_list_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/list/lv_example_list_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/list/lv_example_list_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/list/test.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/lv_example_widgets.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/lv_example_menu_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/lv_example_menu_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/lv_example_menu_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/lv_example_menu_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/lv_example_menu_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/lv_example_menu_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/lv_example_menu_4.c (93%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/lv_example_menu_4.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/menu/lv_example_menu_5.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/meter/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/meter/lv_example_meter_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/meter/lv_example_meter_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/meter/lv_example_meter_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/meter/lv_example_meter_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/meter/lv_example_meter_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/meter/lv_example_meter_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/meter/lv_example_meter_4.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/meter/lv_example_meter_4.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/msgbox/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/msgbox/lv_example_msgbox_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/msgbox/lv_example_msgbox_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/obj/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/obj/lv_example_obj_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/obj/lv_example_obj_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/obj/lv_example_obj_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/obj/lv_example_obj_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/roller/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/roller/lv_example_roller_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/roller/lv_example_roller_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/roller/lv_example_roller_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/roller/lv_example_roller_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/roller/lv_example_roller_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/roller/lv_example_roller_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/slider/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/slider/lv_example_slider_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/slider/lv_example_slider_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/slider/lv_example_slider_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/slider/lv_example_slider_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/slider/lv_example_slider_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/slider/lv_example_slider_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/span/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/span/lv_example_span_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/span/lv_example_span_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/spinbox/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/spinbox/lv_example_spinbox_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/spinbox/lv_example_spinbox_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/spinner/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/spinner/lv_example_spinner_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/spinner/lv_example_spinner_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/switch/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/switch/lv_example_switch_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/switch/lv_example_switch_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/table/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/table/lv_example_table_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/table/lv_example_table_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/table/lv_example_table_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/table/lv_example_table_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/tabview/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/tabview/lv_example_tabview_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/tabview/lv_example_tabview_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/tabview/lv_example_tabview_2.c (81%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/tabview/lv_example_tabview_2.py (77%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/textarea/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/textarea/lv_example_textarea_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/textarea/lv_example_textarea_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/textarea/lv_example_textarea_2.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/textarea/lv_example_textarea_2.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/textarea/lv_example_textarea_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/textarea/lv_example_textarea_3.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/tileview/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/tileview/lv_example_tileview_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/tileview/lv_example_tileview_1.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/win/index.rst (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/win/lv_example_win_1.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/examples/widgets/win/lv_example_win_1.py (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/idf_component.yml rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/library.json (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/library.properties (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/lv_conf_template.h (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/lvgl.h (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/lvgl.mk (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/lvgl.pc.in rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/.gitignore (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/Doxyfile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/build_html_examples.sh (92%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/built_in_font/DejaVuSans.ttf (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/built_in_font/FontAwesome5-Solid+Brands+Regular.woff (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/built_in_font/Montserrat-Medium.ttf (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/built_in_font/SimSun.woff (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/built_in_font/built_in_font_gen.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/built_in_font/generate_all.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/built_in_font/unscii-8.ttf (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/changelog-template.hbs (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/changelog_gen.sh (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/code-format.cfg (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/code-format.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/cppcheck_run.sh (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/filetohex.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/find_version.sh (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/genexamplelist.sh (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/infer_run.sh (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/install-prerequisites.sh (100%) mode change 100644 => 100755 create mode 100755 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/scripts/install_astyle.sh rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/jpg_to_sjpg.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/lv_conf_internal_gen.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/release/com.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/release/commits.txt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/release/patch.py (100%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/release/release.py (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/scripts/style_api_gen.py (98%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_core.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_disp.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_disp.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_event.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_event.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_group.c (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_group.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_indev.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_indev.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_indev_scroll.c (88%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_indev_scroll.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj.c (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_class.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_class.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_draw.c (88%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_draw.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_pos.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_pos.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_scroll.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_scroll.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_style.c (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_style.h (92%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_style_gen.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_style_gen.h (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_tree.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_obj_tree.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_refr.c (92%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_refr.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_theme.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/core/lv_theme.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/arm2d/lv_draw_arm2d.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/arm2d/lv_gpu_arm2d.c (63%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/arm2d/lv_gpu_arm2d.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw.mk (92%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_arc.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_arc.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_img.c (93%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_img.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_label.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_label.h (88%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_layer.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_layer.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_line.c (89%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_line.h (81%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_mask.c (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_mask.h (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_rect.c (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_rect.h (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_transform.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_transform.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_triangle.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_draw_triangle.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_img_buf.c (82%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_img_buf.h (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_img_cache.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_img_cache.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_img_decoder.c (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/lv_img_decoder.h (99%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nema_gfx/lv_draw_nema_gfx.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nema_gfx/lv_draw_nema_gfx.h create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nema_gfx/lv_draw_nema_gfx.mk create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nema_gfx/lv_draw_nema_gfx_img.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nema_gfx/lv_draw_nema_gfx_letter.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/lv_draw_nxp.mk (93%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/pxp/lv_draw_nxp_pxp.mk (92%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/pxp/lv_draw_pxp.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3/src/draw/nxp/lv_gpu_nxp.h => lvgl_v8.4/src/draw/nxp/pxp/lv_draw_pxp.h} (77%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/pxp/lv_draw_pxp_blend.c (55%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/pxp/lv_draw_pxp_blend.h rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/pxp/lv_gpu_nxp_pxp.c (74%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/pxp/lv_gpu_nxp_pxp.h (92%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/pxp/lv_gpu_nxp_pxp_osa.c (74%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/pxp/lv_gpu_nxp_pxp_osa.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/vglite/lv_draw_nxp_vglite.mk (72%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_draw_vglite.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_rect.h => lvgl_v8.4/src/draw/nxp/vglite/lv_draw_vglite.h} (75%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/vglite/lv_draw_vglite_arc.c (82%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/nxp/vglite/lv_draw_vglite_arc.h (71%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_draw_vglite_blend.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_draw_vglite_blend.h create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_draw_vglite_line.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_draw_vglite_line.h create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_draw_vglite_rect.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_draw_vglite_rect.h create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_vglite_buf.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_vglite_buf.h create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/nxp/vglite/lv_vglite_utils.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3/src/draw/nxp/vglite/lv_gpu_nxp_vglite.h => lvgl_v8.4/src/draw/nxp/vglite/lv_vglite_utils.h} (64%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/renesas/lv_draw_renesas.mk create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/renesas/lv_gpu_d2_draw_label.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/renesas/lv_gpu_d2_ra6m3.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/renesas/lv_gpu_d2_ra6m3.h rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/README.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_arc.c (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_bg.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_composite.c (90%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_composite.h (85%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_img.c (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_img.h (70%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_label.c (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_layer.c (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_layer.h (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_line.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_mask.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_mask.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_polygon.c (92%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_priv.h (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_rect.c (68%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_rect.h (57%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_stack_blur.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_stack_blur.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_texture_cache.c (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_texture_cache.h (90%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_utils.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sdl/lv_draw_sdl_utils.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/stm32_dma2d/lv_draw_stm32_dma2d.mk (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw.h (84%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_arc.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_blend.c (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_blend.h (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_dither.c (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_dither.h (50%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_gradient.c (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_gradient.h (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_img.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_layer.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_letter.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_line.c (93%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_polygon.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_rect.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/sw/lv_draw_sw_transform.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/swm341_dma2d/lv_draw_swm341_dma2d.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/swm341_dma2d/lv_gpu_swm341_dma2d.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/draw/swm341_dma2d/lv_gpu_swm341_dma2d.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/README.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/layouts/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/layouts/flex/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/layouts/flex/lv_flex.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/layouts/flex/lv_flex.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/layouts/grid/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/layouts/grid/lv_grid.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/layouts/grid/lv_grid.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/layouts/lv_layouts.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/bmp/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/bmp/lv_bmp.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/bmp/lv_bmp.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/ffmpeg/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/ffmpeg/lv_ffmpeg.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/ffmpeg/lv_ffmpeg.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/freetype/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/freetype/arial.ttf (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/freetype/lv_freetype.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/freetype/lv_freetype.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/fsdrv/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/fsdrv/lv_fs_fatfs.c (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/extra/libs/fsdrv/lv_fs_littlefs.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/fsdrv/lv_fs_posix.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/fsdrv/lv_fs_stdio.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/fsdrv/lv_fs_win32.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/fsdrv/lv_fsdrv.h (85%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/gif/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/gif/gifdec.c (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/gif/gifdec.h (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/gif/lv_gif.c (91%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/gif/lv_gif.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/lv_libs.h (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/png/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/png/lodepng.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/png/lodepng.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/png/lv_png.c (82%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/png/lv_png.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/qrcode/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/qrcode/lv_qrcode.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/qrcode/lv_qrcode.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/qrcode/qrcodegen.c (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/qrcode/qrcodegen.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/rlottie/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/rlottie/lv_rlottie.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/rlottie/lv_rlottie.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/sjpg/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/sjpg/lv_sjpg.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/sjpg/lv_sjpg.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/sjpg/tjpgd.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/sjpg/tjpgd.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/libs/sjpg/tjpgdcnf.h (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/extra/libs/tiny_ttf/lv_tiny_ttf.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/extra/libs/tiny_ttf/lv_tiny_ttf.h create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/extra/libs/tiny_ttf/stb_rect_pack.h create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/src/extra/libs/tiny_ttf/stb_truetype_htcw.h rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/lv_extra.c (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/lv_extra.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/lv_extra.mk (83%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/fragment/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/fragment/README.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/fragment/lv_fragment.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/fragment/lv_fragment.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/fragment/lv_fragment_manager.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/gridnav/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/gridnav/lv_gridnav.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/gridnav/lv_gridnav.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/ime/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/ime/lv_ime_pinyin.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/ime/lv_ime_pinyin.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/imgfont/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/imgfont/lv_imgfont.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/imgfont/lv_imgfont.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/lv_others.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/monkey/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/monkey/lv_monkey.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/monkey/lv_monkey.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/msg/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/msg/lv_msg.c (88%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/msg/lv_msg.h (90%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/snapshot/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/snapshot/lv_snapshot.c (87%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/others/snapshot/lv_snapshot.h (84%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/basic/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/basic/lv_theme_basic.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/basic/lv_theme_basic.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/default/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/default/lv_theme_default.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/default/lv_theme_default.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/lv_themes.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/mono/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/mono/lv_theme_mono.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/themes/mono/lv_theme_mono.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/animimg/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/animimg/lv_animimg.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/animimg/lv_animimg.h (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/calendar/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/calendar/lv_calendar.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/calendar/lv_calendar.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/calendar/lv_calendar_header_arrow.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/calendar/lv_calendar_header_arrow.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/calendar/lv_calendar_header_dropdown.c (70%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/calendar/lv_calendar_header_dropdown.h (65%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/chart/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/chart/lv_chart.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/chart/lv_chart.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/colorwheel/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/colorwheel/lv_colorwheel.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/colorwheel/lv_colorwheel.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/imgbtn/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/imgbtn/lv_imgbtn.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/imgbtn/lv_imgbtn.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/keyboard/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/keyboard/lv_keyboard.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/keyboard/lv_keyboard.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/led/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/led/lv_led.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/led/lv_led.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/list/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/list/lv_list.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/list/lv_list.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/lv_widgets.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/menu/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/menu/lv_menu.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/menu/lv_menu.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/meter/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/meter/lv_meter.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/meter/lv_meter.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/msgbox/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/msgbox/lv_msgbox.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/msgbox/lv_msgbox.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/span/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/span/lv_span.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/span/lv_span.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/spinbox/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/spinbox/lv_spinbox.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/spinbox/lv_spinbox.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/spinner/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/spinner/lv_spinner.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/spinner/lv_spinner.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/tabview/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/tabview/lv_tabview.c (96%) mode change 100644 => 100755 rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/tabview/lv_tabview.h (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/tileview/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/tileview/lv_tileview.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/tileview/lv_tileview.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/win/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/win/lv_win.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/extra/widgets/win/lv_win.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/korean.ttf (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_dejavu_16_persian_hebrew.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_fmt_txt.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_fmt_txt.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_loader.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_loader.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_10.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_12.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_12_subpx.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_14.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_16.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_18.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_20.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_22.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_24.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_26.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_28.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_28_compressed.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_30.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_32.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_34.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_36.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_38.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_40.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_42.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_44.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_46.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_48.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_montserrat_8.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_simsun_16_cjk.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_unscii_16.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_font_unscii_8.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/font/lv_symbol_def.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/hal/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/hal/lv_hal.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/hal/lv_hal.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/hal/lv_hal_disp.c (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/hal/lv_hal_disp.h (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/hal/lv_hal_indev.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/hal/lv_hal_indev.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/hal/lv_hal_tick.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/hal/lv_hal_tick.h (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/lv_api_map.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/lv_conf_internal.h (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/lv_conf_kconfig.h (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/lvgl.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_anim.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_anim.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_anim_timeline.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_anim_timeline.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_area.c (88%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_area.h (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_assert.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_async.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_async.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_bidi.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_bidi.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_color.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_color.h (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_fs.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_fs.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_gc.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_gc.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_ll.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_ll.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_log.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_log.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_lru.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_lru.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_math.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_math.h (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_mem.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_mem.h (93%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_misc.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_printf.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_printf.h (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_style.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_style.h (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_style_gen.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_style_gen.h (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_templ.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_templ.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_timer.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_timer.h (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_tlsf.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_tlsf.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_txt.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_txt.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_txt_ap.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_txt_ap.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_types.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_utils.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/misc/lv_utils.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_arc.c (78%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_arc.h (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_bar.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_bar.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_btn.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_btn.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_btnmatrix.c (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_btnmatrix.h (87%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_canvas.c (97%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_canvas.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_checkbox.c (96%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_checkbox.h (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_dropdown.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_dropdown.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_img.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_img.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_label.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_label.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_line.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_line.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_objx_templ.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_objx_templ.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_roller.c (94%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_roller.h (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_slider.c (98%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_slider.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_switch.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_switch.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_table.c (87%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_table.h (86%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_textarea.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_textarea.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/src/widgets/lv_widgets.mk (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/.gitignore (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/CMakeLists.txt (95%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/README.md (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/__makefile__/Makefile (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/__makefile__/test.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/config.yml (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/main.py (100%) mode change 100644 => 100755 create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/ref_imgs/arc_1.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/ref_imgs/arc_2.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/ref_imgs/dropdown_1.png rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/ref_imgs/dropdown_2.png (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/ref_imgs/roller_1.png create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/ref_imgs/roller_2.png rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/ref_imgs/scr1.png (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/ref_imgs/table_1.png (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/ref_imgs/tiny_ttf_1.png rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/lv_test_conf.h (83%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/lv_test_helpers.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/lv_test_indev.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/lv_test_indev.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/lv_test_init.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/lv_test_init.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/_test_template.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_arc.c (78%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_bar.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_checkbox.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_config.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_demo_stress.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_demo_widgets.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_dropdown.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_event.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_font_loader.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_fs.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_line.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_mem.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_obj_tree.c (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/src/test_cases/test_roller.c create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/src/test_cases/test_screen_load.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_slider.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_snapshot.c (99%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_style.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_switch.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_table.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_textarea.c (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/src/test_cases/test_tiny_ttf.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_cases/test_txt.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_files/readtest.txt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_fonts/font_1.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_fonts/font_1.fnt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_fonts/font_2.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_fonts/font_2.fnt (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_fonts/font_3.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/src/test_fonts/font_3.fnt (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/src/test_fonts/ubuntu_font.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/unity/generate_test_runner.rb (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/unity/run_test.erb (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/unity/type_sanitizer.rb (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/unity/unity.c (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/unity/unity.h (100%) rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/unity/unity_internals.h (100%) create mode 100644 src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/tests/unity/unity_support.c rename src/W800_SDK_v1.00.10/lvgl/{lvgl_v8.3 => lvgl_v8.4}/tests/unity/unity_support.h (100%) diff --git a/src/W800_SDK_v1.00.10/lvgl/Makefile b/src/W800_SDK_v1.00.10/lvgl/Makefile index 20a0fa7..dded7af 100644 --- a/src/W800_SDK_v1.00.10/lvgl/Makefile +++ b/src/W800_SDK_v1.00.10/lvgl/Makefile @@ -3,7 +3,7 @@ sinclude $(TOP_DIR)/tools/w800/conf.mk ifndef PDIR GEN_LIBS = liblvgl$(LIB_EXT) -COMPONENTS_liblvgl = lvgl_v8.3/liblvglv8_3$(LIB_EXT) \ +COMPONENTS_liblvgl = lvgl_v8.4/liblvglv8_4$(LIB_EXT) \ lvgl_port/liblvgl_port$(LIB_EXT) endif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_port/lv_conf.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_port/lv_conf.h index b139c2f..a10e363 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_port/lv_conf.h +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_port/lv_conf.h @@ -1,6 +1,6 @@ /** * @file lv_conf.h - * Configuration file for v8.3.3 + * Configuration file for v8.4.0 */ /* @@ -49,7 +49,7 @@ #define LV_MEM_CUSTOM 0 #if LV_MEM_CUSTOM == 0 /*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/ - #define LV_MEM_SIZE (35 * 1024U) /*[bytes]*/ + #define LV_MEM_SIZE (35U * 1024U) /*[bytes]*/ /*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/ #define LV_MEM_ADR 0 /*0: unused*/ @@ -89,6 +89,9 @@ #if LV_TICK_CUSTOM #define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/ #define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/ + /*If using lvgl as ESP32 component*/ + // #define LV_TICK_CUSTOM_INCLUDE "esp_timer.h" + // #define LV_TICK_CUSTOM_SYS_TIME_EXPR ((esp_timer_get_time() / 1000LL)) #endif /*LV_TICK_CUSTOM*/ /*Default Dot Per Inch. Used to initialize default sizes such as widgets sized, style paddings. @@ -173,6 +176,9 @@ * GPU *-----------*/ +/*Use TSi's (aka Think Silicon) acceleration library NemaGFX */ +#define LV_USE_NEMA_GFX 0 + /*Use Arm's 2D acceleration library Arm-2D */ #define LV_USE_GPU_ARM2D 0 @@ -180,10 +186,18 @@ #define LV_USE_GPU_STM32_DMA2D 0 #if LV_USE_GPU_STM32_DMA2D /*Must be defined to include path of CMSIS header of target processor - e.g. "stm32f769xx.h" or "stm32f429xx.h"*/ + e.g. "stm32f7xx.h" or "stm32f4xx.h"*/ #define LV_GPU_DMA2D_CMSIS_INCLUDE #endif +/*Enable RA6M3 G2D GPU*/ +#define LV_USE_GPU_RA6M3_G2D 0 +#if LV_USE_GPU_RA6M3_G2D + /*include path of target processor + e.g. "hal_data.h"*/ + #define LV_GPU_RA6M3_G2D_INCLUDE "hal_data.h" +#endif + /*Use SWM341's DMA2D GPU*/ #define LV_USE_GPU_SWM341_DMA2D 0 #if LV_USE_GPU_SWM341_DMA2D @@ -628,6 +642,13 @@ #define LV_FS_FATFS_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/ #endif +/*API for LittleFS (library needs to be added separately). Uses lfs_file_open, lfs_file_read, etc*/ +#define LV_USE_FS_LITTLEFS 0 +#if LV_USE_FS_LITTLEFS + #define LV_FS_LITTLEFS_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/ + #define LV_FS_LITTLEFS_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/ +#endif + /*PNG decoder library*/ #define LV_USE_PNG 0 @@ -661,6 +682,13 @@ #endif #endif +/*Tiny TTF library*/ +#define LV_USE_TINY_TTF 0 +#if LV_USE_TINY_TTF + /*Load TTF data from files*/ + #define LV_TINY_TTF_FILE_SUPPORT 0 +#endif + /*Rlottie library*/ #define LV_USE_RLOTTIE 0 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CHANGELOG.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CHANGELOG.md deleted file mode 100644 index d32fecb..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CHANGELOG.md +++ /dev/null @@ -1,1826 +0,0 @@ -# Changelog - -## [v8.3.3](https://github.com/lvgl/lvgl/compare/v8.3.2...v8.3.3) 06 October 2022 - -v8.3.3 is the same as v8.3.2. It was released only because the version number was set incorrectly in lvgl.h. - -## [v8.3.2](https://github.com/lvgl/lvgl/compare/v8.3.1...v8.3.2) 27 September 2022 - -### Fixes - -- fix(fragment): fixed child fragment event dispatch [`3683`](https://github.com/lvgl/lvgl/pull/3683) -- fix(sdl): clear streaming/target texture with FillRect [`3682`](https://github.com/lvgl/lvgl/pull/3682) -- fix(sdl): transformation with alpha (#3576) [`3678`](https://github.com/lvgl/lvgl/pull/3678) -- fix(draw_sw): fix image cache to access the freed stack space [`3584`](https://github.com/lvgl/lvgl/pull/3584) -- fix(style): use compile time prop_cnt for const styles [`3609`](https://github.com/lvgl/lvgl/pull/3609) -- fix(demo): can not found lvgl.h file [`3477`](https://github.com/lvgl/lvgl/pull/3477) -- fix(ci) checkout lv_micropython release/v8 branch [`3524`](https://github.com/lvgl/lvgl/pull/3524) -- fix(canvas): fix clipéping on transformation [`b884aba`](https://github.com/lvgl/lvgl/commit/b884abae26f3824b27783a85d18ed51e550347c1) -- fix(draw): allow drawing outline with LV_DRAW_COMPLEX == 0 too [`ece3495`](https://github.com/lvgl/lvgl/commit/ece34950040e218fc73605a4e88f1060c2a274f8) -- fix(colorwheel): fix updating color when using lv_colorwheel_set_hsv [`d59bba1`](https://github.com/lvgl/lvgl/commit/d59bba12db115afb4b6aa53eed2625221dfff2fd) -- fix(slider): find the nearest value on click instead of floor [`dfd14fa`](https://github.com/lvgl/lvgl/commit/dfd14fa778aef25d0db61748a58aa9989ce5e2c8) -- fix(draw): fix border drawing with thick borders [`d5b2a9b`](https://github.com/lvgl/lvgl/commit/d5b2a9b2562cbfa327bf0ec03c11d28576037a14) -- fix(refr): fix true double double buffering logic with transparent screens [`8b605cc`](https://github.com/lvgl/lvgl/commit/8b605cc48224d0497cdd936fa77229e0c3d606d2) -- fix(group): be sure obj is removed from its current group in lv_group_add_obj [`5156ee0`](https://github.com/lvgl/lvgl/commit/5156ee058d5de674a00ffd84d15d460de7f0e53b) -- fix(style): add missing invalidation in lv_obj_remove_local_style_prop [`a0515ba`](https://github.com/lvgl/lvgl/commit/a0515ba30dd74b8b22a6709d334eb03782ee1a4d) - -### Docs - -- docs(draw) remove reference to old lv_fs_add_drv function [`3564`](https://github.com/lvgl/lvgl/pull/3564) -- docs(disp): LV_COLOR_SCREEN_TRANSP remove dependency on LV_COLOR_DEPTH_32 as transparency is supported across all color depths [`3556`](https://github.com/lvgl/lvgl/pull/3556) - -### CI and tests - -- ci: protect test.c with #if LV_BUILD_TEST [`be485d7`](https://github.com/lvgl/lvgl/commit/be485d7605136d2a5d6a633c7cb5b7c525cae7ee) - -### Others - -- chore(rt-thread) backport fixes from v9 [`3604`](https://github.com/lvgl/lvgl/pull/3604) - -- chore: fix warnings [`7640950`](https://github.com/lvgl/lvgl/commit/76409502163ffe67cfbab9c7f24f2226cc8a5941) -- remove accidentally added code [`5022476`](https://github.com/lvgl/lvgl/commit/5022476edc8676f2a6ef7b919d3578159edeef7c) - - -## [v8.3.1](https://github.com/lvgl/lvgl/compare/v8.3.0...v8.3.1) 25 July 2022 - -### Fixes - -- fix(led): add bg_color draw descriptors back to led draw event to support LV_DRAW_COMPLEX 0 [`3515`](https://github.com/lvgl/lvgl/pull/3515) -- fix(slider): fix knob drawing in symmetrical mode [`2967172`](https://github.com/lvgl/lvgl/commit/2967172bee806e77da6ee2307c79e867af3f76bc) -- fix(refr): fix lv_refr_get_top_obj [`9750c97`](https://github.com/lvgl/lvgl/commit/9750c97aff4dc3de80559b150852b829f006d6bf) -- fix(arc): fix arc knob invalidation in SYMMETRICAL mode [`a283273`](https://github.com/lvgl/lvgl/commit/a283273bd27599dae6b044a941b6591ad45e059b) - -### Examples - -- example(freetype): Update the Micropython example to use the Lato font [`71913d3`](https://github.com/lvgl/lvgl/commit/71913d300dde25d1b87d1b44fa1fa47854defd59) -- example(freetype): replace the arial font with lato to avoid licensing issues [`8544cc3`](https://github.com/lvgl/lvgl/commit/8544cc38062d9c817013bbe6aedbb47112e580ad) - -### Docs - -- docs(readme): fix LVGL version typo (8.3.0) [`3462`](https://github.com/lvgl/lvgl/pull/3462) -- docs(tasmota): support LVGL 8.3.0 (#3511) [`62662f6`](https://github.com/lvgl/lvgl/commit/62662f68e9cf90adcb96d42030eca5fa135b96a5) - - - -## [v8.3.0](https://github.com/lvgl/lvgl/compare/v8.2.0...v8.3.0) 6 July 2022 - - -### Overview - -- **Layers** Support transforming (zoom and rotate) any widgets and their children drawn by LVGL. To do this LVGL renders the transformed widgets into a layer and draws that layer as an image applying all the transformations. Layers are also used when `opa` (not `bg_opa`, `border_opa`, etc) and `blend_mode` are set. This way nested objects are blended as one layer to avoid color bleeding. See more [here](https://docs.lvgl.io/master/overview/style.html#opacity-blend-modes-and-transformations). -- **inherit and initial style properties** Besides setting "normal values" for style properties now you can set them to `inherit` (inherit the parent's value) and `initial` (set the system default). See more [here](https://docs.lvgl.io/master/overview/style.html#forced-value-inheritance-default-value) -- **NXP-PXP and VGLITE GPU support** The support for NXP GPUs are added again -- **Color font support** You can use emojis and images in texts with this great new features. See more [here](https://docs.lvgl.io/master/others/imgfont.html). -- **ARM2D GPU support** Get support for ARM's own GPU. -- **PubSub messaging** A publisher-subscriber based messaging system is added to make communication between components easier. See more [here](https://docs.lvgl.io/master/others/msg.html). -- **Pinyin IME** Add support for Pinyin IME Chinese input. See more [here](https://docs.lvgl.io/master/others/ime_pinyin.html). -- **render_start_cb** A new callback is added to `lv_disp_drv_t` to indicate when the rendering starts. It's useful to make synchronization, e.g. wait for a TE signal. - - -### New Features - -- feat(ime_pinyin): add API to support 9-key input mode [`3447`](https://github.com/lvgl/lvgl/pull/3447) -- feat(font): add font placeholder drawing configuration [`3446`](https://github.com/lvgl/lvgl/pull/3446) -- feat(fsdrv): add posix lseek() error checking [`3444`](https://github.com/lvgl/lvgl/pull/3444) -- feat(misc): add asynchronous call function cancellation function [`3439`](https://github.com/lvgl/lvgl/pull/3439) -- feat(ime_pinyin): add API to use Pinyin IME(Chinese input) [`3408`](https://github.com/lvgl/lvgl/pull/3408) -- feat(style) add 'inherit' and 'initial' CSS properties [`3390`](https://github.com/lvgl/lvgl/pull/3390) -- feat(porting): add flushing control to the template [`3384`](https://github.com/lvgl/lvgl/pull/3384) -- feat(anim): add deleted callback (#3279) [`3295`](https://github.com/lvgl/lvgl/pull/3295) -- feat(cmsis-pack): monthly update for May [`3394`](https://github.com/lvgl/lvgl/pull/3394) -- feat(textarea): make it possible to customize the bullet character [`3388`](https://github.com/lvgl/lvgl/pull/3388) -- feat(disp): add a temporary invalidation disable interface [`3378`](https://github.com/lvgl/lvgl/pull/3378) -- feat(group): add edge callbacks when trying to move focus past beginning or end [`3374`](https://github.com/lvgl/lvgl/pull/3374) -- feat(benchmark): make lvgl render at the highest frame rate [`3352`](https://github.com/lvgl/lvgl/pull/3352) -- feat(rt-thread): allow users to control refresh period in the lvgl thread [`3375`](https://github.com/lvgl/lvgl/pull/3375) -- feat(cmsis-pack): Monthly update for May (alpha) [`3359`](https://github.com/lvgl/lvgl/pull/3359) -- feat(demos): add a callback for benchmark [`3353`](https://github.com/lvgl/lvgl/pull/3353) -- feat(gpu): Update lv_gpu_arm2d with new features [`3340`](https://github.com/lvgl/lvgl/pull/3340) -- feat(draw): improve acceleration for LV_IMG_CF_ALPHA_8BIT [`3337`](https://github.com/lvgl/lvgl/pull/3337) -- feat(anim): add the function of getting global animation refresher timer [`3331`](https://github.com/lvgl/lvgl/pull/3331) -- feat(demo): add Weighted FPS and Opa speed log output [`3326`](https://github.com/lvgl/lvgl/pull/3326) -- feat(gpu): Update gpu arm 2d [`3320`](https://github.com/lvgl/lvgl/pull/3320) -- feat(cmsis-pack): Monthly update for April [`3300`](https://github.com/lvgl/lvgl/pull/3300) -- feat(fsdrv) fix issues for win32 backends [`3284`](https://github.com/lvgl/lvgl/pull/3284) -- feat(cmake-build): Option to allow building shared libraries. [`3278`](https://github.com/lvgl/lvgl/pull/3278) -- feat(hal): add render_start_cb to disp_drv [`3274`](https://github.com/lvgl/lvgl/pull/3274) -- feat(cmsis-pack): monthly update for April (v1.0.3-alpha) [`3271`](https://github.com/lvgl/lvgl/pull/3271) -- feat(benchmark): add trace output for running a specific scenario [`3245`](https://github.com/lvgl/lvgl/pull/3245) -- feat(env_support): cmsis pack monthly update [`3209`](https://github.com/lvgl/lvgl/pull/3209) -- feat(tabview): support vertical scrolling [`3184`](https://github.com/lvgl/lvgl/pull/3184) -- feat(span): add an interface for setting the number of lines [`3200`](https://github.com/lvgl/lvgl/pull/3200) -- feat(indev): add possibility to enable/disable all input devices at once [`3179`](https://github.com/lvgl/lvgl/pull/3179) -- feat(font): add imgfont - can be used to add emojis to label/span [`3160`](https://github.com/lvgl/lvgl/pull/3160) -- feat(gpu): add gpu arm2d [`3162`](https://github.com/lvgl/lvgl/pull/3162) -- feat(dma2d): add lv_draw_stm32_dma2d_buffer_copy function [`3147`](https://github.com/lvgl/lvgl/pull/3147) -- feat(disp): add screen out animations [`3081`](https://github.com/lvgl/lvgl/pull/3081) -- feat(menu): make menu widget more compatible with encoder [`3061`](https://github.com/lvgl/lvgl/pull/3061) -- feat(label): added animation style property to apply it to circular scrolling animation of label widget [`3128`](https://github.com/lvgl/lvgl/pull/3128) -- feat(script): add pre-commit configuration for code formatting [`3092`](https://github.com/lvgl/lvgl/pull/3092) -- feat(refr): prevents dirty areas from being modified during rendering [`3107`](https://github.com/lvgl/lvgl/pull/3107) -- feat(log): improve lv_log and add log the result from lv_demo_benchmark [`3084`](https://github.com/lvgl/lvgl/pull/3084) -- feat(fragment): add fragment manager (a UI Controller concept) [`2940`](https://github.com/lvgl/lvgl/pull/2940) -- feat(porting): add a macro lv_run_timer_handler_in_period to simplify porting [`3063`](https://github.com/lvgl/lvgl/pull/3063) -- feat(gpu): reattach nxp pxp vglite accelerators(#3322) [`029eef7`](https://github.com/lvgl/lvgl/commit/029eef79c4cf6fef4ad46f7e335011ba4172381b) -- feat(draw): support transforming widgets and improfe sw transform [`318146a`](https://github.com/lvgl/lvgl/commit/318146a2c25362eabf258470be263a4cfeaefe87) -- feat(msg): add publisher-subscriber messaging [`79a29d7`](https://github.com/lvgl/lvgl/commit/79a29d749d3e261ebadbe31fccbff896f63b4d93) -- feat(benchmark): add an API to run specific scene (#3089) [`305ad00`](https://github.com/lvgl/lvgl/commit/305ad00893c0d18d9a65e28ee03d65f76f8abb0a) -- feat(gpu): add SWM341 gpu support (synwit) [`07b7eea`](https://github.com/lvgl/lvgl/commit/07b7eea56c048a0654c254cadebee8caf5f7933b) -- feat(arc): add lv_arc_align_obj_to_angle and lv_arc_rotate_obj_to_angle [`a76bb70`](https://github.com/lvgl/lvgl/commit/a76bb70a79dfa5b841328f07ede0907c700a039a) -- feat(draw): add draw_ctx->buffer_copy [`d034511`](https://github.com/lvgl/lvgl/commit/d034511bba3a27aa1a29d2e1b612b1adeb4e2ae1) -- feat(dropdown): add lv_dropdown_get_option_index [`9997fb0`](https://github.com/lvgl/lvgl/commit/9997fb00aa60b4478c76fa8387a74ca5b3c595b2) -- feat(tabview) add API to rename tab. [`2c9695a`](https://github.com/lvgl/lvgl/commit/2c9695afb4ed6597ae54806c5eb2a287925343f8) -- feat(indev): send LV_EVENT_PRESS_LOST on release with wait_until_release [`cc18518`](https://github.com/lvgl/lvgl/commit/cc18518e96df63c2a02ee9d423cb7bc23382e5a7) -- feat(style) add 'inherit' and 'initial' CSS properties (#3390) [`9a48de0`](https://github.com/lvgl/lvgl/commit/9a48de0f8b19ec02a44aaf6b330066eed7d0a105) -- feat(draw): improve acceleration for LV_IMG_CF_ALPHA_8BIT (#3337) [`8d3c41d`](https://github.com/lvgl/lvgl/commit/8d3c41d5170dad0455fea3d95b2765db70d3c7c2) -- feat(label): added animation style property to apply it to circular scrolling animation of label widget (#3128) [`340d45c`](https://github.com/lvgl/lvgl/commit/340d45cfa91b7108d43af906fc51b1c431877827) -- feat(gridnav): add lv_gridnav_set_focused [`b6d2daa`](https://github.com/lvgl/lvgl/commit/b6d2daa4935128ca8193863d4deaf58fa40b3154) - -### Performance - -- perf(draw): speed up non normal blend modes [`5a06fce`](https://github.com/lvgl/lvgl/commit/5a06fce472c103b4204002a7932dd6c6d05eb13c) -- perf(draw): minor optimiziation in point transformation [`c6c2864`](https://github.com/lvgl/lvgl/commit/c6c286404898bf559eca6eb5bb007251790c572c) -- perf(layer): cache the layer_type [`ac2e2f1`](https://github.com/lvgl/lvgl/commit/ac2e2f132e264d5f0f0313f4e6adbcf56d937a14) - -### Fixes - -- fix(draw): conflict with external ALIGN define [`3336`](https://github.com/lvgl/lvgl/pull/3336) -- fix(arc): fix bug with LV_ARC_MODE_REVERSE (#3417) [`3418`](https://github.com/lvgl/lvgl/pull/3418) -- fix(fragment): memory leak of fragments #3438 [`3442`](https://github.com/lvgl/lvgl/pull/3442) -- fix(draw): solve memory leaking issue [`3437`](https://github.com/lvgl/lvgl/pull/3437) -- fix(gridnav) correct logic in find_last_focusable [`3423`](https://github.com/lvgl/lvgl/pull/3423) -- fix(examples) correct comment in slider example [`3419`](https://github.com/lvgl/lvgl/pull/3419) -- fix(sdl): add transformation support for the SDL backend [`3403`](https://github.com/lvgl/lvgl/pull/3403) -- fix(bmp): fix with LV_COLOR_16_SWAP [`3412`](https://github.com/lvgl/lvgl/pull/3412) -- fix(sdl): fix LRU, reported in #3402 [`3404`](https://github.com/lvgl/lvgl/pull/3404) -- fix(draw) avoid use-after-free when drawing arcs [`3399`](https://github.com/lvgl/lvgl/pull/3399) -- fix(subpx): fix subpixel rendering font is not displaying bug [`3387`](https://github.com/lvgl/lvgl/pull/3387) -- fix(style): reset style lookup table after gc sweep/lv_deinit [`3385`](https://github.com/lvgl/lvgl/pull/3385) -- fix(benchmark): fix the issue that wrong scene number is used [`3372`](https://github.com/lvgl/lvgl/pull/3372) -- fix(draw): fix colour supports for indexed and alpha-only [`3371`](https://github.com/lvgl/lvgl/pull/3371) -- fix(mem): fix TLSF returning the wrong pointer when the requested size is too large [`3325`](https://github.com/lvgl/lvgl/pull/3325) -- fix(demo): fix warning. [`3344`](https://github.com/lvgl/lvgl/pull/3344) -- fix(config): add LV_GPU_SDL_LRU_SIZE [`3348`](https://github.com/lvgl/lvgl/pull/3348) -- feat(draw): improve acceleration for LV_IMG_CF_ALPHA_8BIT [`3337`](https://github.com/lvgl/lvgl/pull/3337) -- fix(txt): fix returned value of lv_txt_iso8859_1_next(..., NULL) [`3338`](https://github.com/lvgl/lvgl/pull/3338) -- fix(benchmark): remove redundant string for the small screens [`3335`](https://github.com/lvgl/lvgl/pull/3335) -- fix(chart): fix accessing uninitialized point_area [`3327`](https://github.com/lvgl/lvgl/pull/3327) -- fix(config): add LV_LAYER_SIMPLE_BUF_SIZE to Kconfig [`3312`](https://github.com/lvgl/lvgl/pull/3312) -- fix(config): Keep the sequence of widget in order [`3314`](https://github.com/lvgl/lvgl/pull/3314) -- fix(config): fix typo in LV_USE_PERF_MONITOR and LV_USE_MEM_MONITOR [`3313`](https://github.com/lvgl/lvgl/pull/3313) -- fix(refr): initializing row_cnt is to silence the warning [`3309`](https://github.com/lvgl/lvgl/pull/3309) -- fix(meter): fix typo [`3308`](https://github.com/lvgl/lvgl/pull/3308) -- fix(draw): update Makefiles [`3303`](https://github.com/lvgl/lvgl/pull/3303) -- fix(lodepng): fix NULL pointer access [`3307`](https://github.com/lvgl/lvgl/pull/3307) -- fix(Kconfig): change the type of LV_FS_STDIO_LETTER from string to int [`3282`](https://github.com/lvgl/lvgl/pull/3282) -- fix(demo): fix Wformat warning [`3290`](https://github.com/lvgl/lvgl/pull/3290) -- fix(snapshot): add missing ASSERT checks [`3292`](https://github.com/lvgl/lvgl/pull/3292) -- fix(Kconfig): Add LV_USE_GRIDNAV and LV_USE_FRAGMENT to Kconfig [`3270`](https://github.com/lvgl/lvgl/pull/3270) -- fix(msgbox): do not execute init obj when obj == NULL [`3264`](https://github.com/lvgl/lvgl/pull/3264) -- fix(menu): use LV_ASSERT_MALLOC check for new_node [`3263`](https://github.com/lvgl/lvgl/pull/3263) -- fix(canvas):image cache may expire after set canvas's buff [`3267`](https://github.com/lvgl/lvgl/pull/3267) -- fix(obj_style): prevent access to class null pointer [`3252`](https://github.com/lvgl/lvgl/pull/3252) -- fix(png): fix possible memory leak when decoding fails [`3249`](https://github.com/lvgl/lvgl/pull/3249) -- fix(libs): fix possible buffer underflow caused by extension matching [`3250`](https://github.com/lvgl/lvgl/pull/3250) -- fix(fs): track multiple directory handles with win32 backends [`3243`](https://github.com/lvgl/lvgl/pull/3243) -- fix(png): use LV_IMG_CF_TRUE_COLOR_ALPHA instead of LV_IMG_CF_RAW_ALPHA [`3212`](https://github.com/lvgl/lvgl/pull/3212) -- fix(Keil-AC5): slience warnings in Keil-AC5 [`3221`](https://github.com/lvgl/lvgl/pull/3221) -- fix(meter): fix infinite loop caused by loop variable type mismatch [`3232`](https://github.com/lvgl/lvgl/pull/3232) -- fix(chart): remove invalid decision branches [`3231`](https://github.com/lvgl/lvgl/pull/3231) -- fix(gradient): assert before dividing by 0 [`3228`](https://github.com/lvgl/lvgl/pull/3228) -- fix(calendar): fix infinite loop caused by loop variable type mismatch [`3230`](https://github.com/lvgl/lvgl/pull/3230) -- fix(flex): assert before dividing by 0 [`3237`](https://github.com/lvgl/lvgl/pull/3237) -- fix(hal): fix LV_ASSERT_MALLOC wrong placement [`3236`](https://github.com/lvgl/lvgl/pull/3236) -- fix(disp): fix missing null pointer judgment [`3238`](https://github.com/lvgl/lvgl/pull/3238) -- fix(obj_class): fix possible memory leak when the default disp is NULL [`3235`](https://github.com/lvgl/lvgl/pull/3235) -- fix(draw_sw_letter): fix incorrect use of sizeof for a pointer [`3234`](https://github.com/lvgl/lvgl/pull/3234) -- fix(indev): fix null pointer access caused by typo [`3229`](https://github.com/lvgl/lvgl/pull/3229) -- fix(event): remove invalid decision branches [`3233`](https://github.com/lvgl/lvgl/pull/3233) -- fix(draw_mask): remove invalid decision branches [`3225`](https://github.com/lvgl/lvgl/pull/3225) -- fix(spinbox): remove invalid judgment [`3227`](https://github.com/lvgl/lvgl/pull/3227) -- fix(gradient): remove invalid decision branches [`3226`](https://github.com/lvgl/lvgl/pull/3226) -- fix(txt): return 0 if letter_uni is out of range [`3224`](https://github.com/lvgl/lvgl/pull/3224) -- fix(calendar): fix possible array access out of bounds [`3223`](https://github.com/lvgl/lvgl/pull/3223) -- fix(style): remove useless null pointer judgment [`3222`](https://github.com/lvgl/lvgl/pull/3222) -- fix(obj): scrolling exception when use lv_obj_set_parent() [`3210`](https://github.com/lvgl/lvgl/pull/3210) -- fix(libs): fix memcmp memory access overflow [`3205`](https://github.com/lvgl/lvgl/pull/3205) -- fix(png): fix possible file leaks [`3204`](https://github.com/lvgl/lvgl/pull/3204) -- fix(docs): rename task-handler.md to timer-handler.md [`3203`](https://github.com/lvgl/lvgl/pull/3203) -- fix(lru): Fix use of undefined variables [`3181`](https://github.com/lvgl/lvgl/pull/3181) -- fix(rt-thread): Sconscript use LOCAL_CFLAGS to replace LOCAL_CCFLAGS [`3196`](https://github.com/lvgl/lvgl/pull/3196) -- fix(make) make files under draw/gpu [`3202`](https://github.com/lvgl/lvgl/pull/3202) -- fix(docs-CN):fix broken links to docs in dir get-started [`3195`](https://github.com/lvgl/lvgl/pull/3195) -- fix broken links to docs in dir get-started [`3190`](https://github.com/lvgl/lvgl/pull/3190) -- fix(indev): fix warning about formatting uint32_t with %d [`3193`](https://github.com/lvgl/lvgl/pull/3193) -- fix(Kconfig): move LV_USE_IMGFONT to others menu [`3176`](https://github.com/lvgl/lvgl/pull/3176) -- fix(draw): src_buf_tmp will be NULL when LV_DRAW_COMPLEX is '0' [`3163`](https://github.com/lvgl/lvgl/pull/3163) -- fix(span): align the baselines [`3164`](https://github.com/lvgl/lvgl/pull/3164) -- fix(menu): fix crash on delete [`3154`](https://github.com/lvgl/lvgl/pull/3154) -- fix(Kconfig): add missing LV_USE_THEME_MONO [`3146`](https://github.com/lvgl/lvgl/pull/3146) -- fix(demo/stress): remove the unused assets [`3139`](https://github.com/lvgl/lvgl/pull/3139) -- fix(jpg): swap high and low bytes when macro LV_COLOR_16_SWAP is 1 [`3138`](https://github.com/lvgl/lvgl/pull/3138) -- fix(script): in lv_conf_internal fix some widget dependencies when using Kconfig [`3119`](https://github.com/lvgl/lvgl/pull/3119) -- fix(demo): minor fix for benchmark [`3114`](https://github.com/lvgl/lvgl/pull/3114) -- fix(misc): in lv_map() handle if maximum value less than minimum value [`3113`](https://github.com/lvgl/lvgl/pull/3113) -- fix(extra): adjust image decoder initialization order [`3085`](https://github.com/lvgl/lvgl/pull/3085) -- fix(chart): optimize chart invalidation [`3028`](https://github.com/lvgl/lvgl/pull/3028) -- fix(refr): fix performance monitor NULL pointer access [`3105`](https://github.com/lvgl/lvgl/pull/3105) -- fix(misc): Remove duplicate declaration of _lv_log_add. [`3103`](https://github.com/lvgl/lvgl/pull/3103) -- fix(gridnav): get key code from the actual event [`3101`](https://github.com/lvgl/lvgl/pull/3101) -- fix(draw_rect): delete __STDC_VERSION__ to ensure C++ compatibility [`3099`](https://github.com/lvgl/lvgl/pull/3099) -- fix(font):draw placeholder if get_glyph_dsc() returns false [`3000`](https://github.com/lvgl/lvgl/pull/3000) -- fix(conf): work around GCC bug [`3082`](https://github.com/lvgl/lvgl/pull/3082) -- fix(fsdrv): replacing sprintf with lv_snprintf for safety [`3079`](https://github.com/lvgl/lvgl/pull/3079) -- fix(cmsis-pack): add PIDX for cmsis-pack [`3064`](https://github.com/lvgl/lvgl/pull/3064) -- feat(gpu): add SWM341 gpu support (synwit) [`07b7eea`](https://github.com/lvgl/lvgl/commit/07b7eea56c048a0654c254cadebee8caf5f7933b) -- fix(fs): fix cached read and add unit test for lv_fs [`98660a8`](https://github.com/lvgl/lvgl/commit/98660a861d874d29e8356452baff21788b6a9ef1) -- fix(table): invalidate only the changed cell [`306fa19`](https://github.com/lvgl/lvgl/commit/306fa1968238fe33dd95e2865e147bceb4706ad5) -- fix(draw): handle non BLEND_MODE_NORMAL for ARGB drawing [`9ac8ce6`](https://github.com/lvgl/lvgl/commit/9ac8ce69f67234563d4254e29e1903a638bb8f4e) -- fix(draw): revert handling of style_opa on not MAIN parts [`51a7a61`](https://github.com/lvgl/lvgl/commit/51a7a61df365685a7cd04b0512ba3844dcfa7209) -- fix(draw): clip the bg img to the rectangle's area in lv_draw_sw_rect [`77d726e`](https://github.com/lvgl/lvgl/commit/77d726efb2467ff86691dee487f97aac79ea45c2) -- fix(obj): fix LV_OBJ_FLAG_OVERFLOW_VISIBLE [`c742f2c`](https://github.com/lvgl/lvgl/commit/c742f2c8888ad0102cebe91b4069b376068baa81) -- fix(scroll): do not fire scroll begin/end event on every scroll step [`25ce6e3`](https://github.com/lvgl/lvgl/commit/25ce6e3ae9e144e2df5dad34475dda3542015f6a) -- fix(indev): do not send keys to objects in disabled state [`b0a46c4`](https://github.com/lvgl/lvgl/commit/b0a46c4837c922cb1303ef768da3209e7efa45ae) -- fix(disp): make lv_scr_load work better with lv_scr_load_anim and auto_del = true [`52287fd`](https://github.com/lvgl/lvgl/commit/52287fd64ad59c35794d1f4486b777f4eb686abc) -- fix(draw): create intermediate layer for blend modes too [`8b15007`](https://github.com/lvgl/lvgl/commit/8b150075681455c6424ddd536e991307ac828eb4) -- fix(group): in lv_group_remove() fix if the object to focus is deleted [`72cb683`](https://github.com/lvgl/lvgl/commit/72cb683c799f65cd4fbae22dafc3a35c123bb66b) -- fix(draw): be sure angle values are in the correct range [`e624b90`](https://github.com/lvgl/lvgl/commit/e624b90db3515816eee8f6ce72677350487f3a02) -- fix(scroll): send LV_EVENT_SCROLL_BEGIN/END with no animation too [`777fe1e`](https://github.com/lvgl/lvgl/commit/777fe1ea706f38b82ab8ee180548ecb85334a469) -- fix(arc): fix arc image drawing issue [`7153e3f`](https://github.com/lvgl/lvgl/commit/7153e3f8b7b660474b8907954c80e21eb2f0bd21) -- fix(refr): fix memory write out of bounds issue [`13c99fc`](https://github.com/lvgl/lvgl/commit/13c99fc4b66d3e8d0ffcd6fda21d3b5a40b0771c) -- fix(gif): fix rare issue when drawing the gif's background [`b1e2c06`](https://github.com/lvgl/lvgl/commit/b1e2c0665829aa489f444169ce80fcd7cdf487bb) -- fix(chart): fix misaligned horizontal tick lines on bar charts [`4572a0c`](https://github.com/lvgl/lvgl/commit/4572a0c6c92b126e229ce9aada551d71b4f4296b) -- fix(font): use 0 width for non printable characters [`7cf5709`](https://github.com/lvgl/lvgl/commit/7cf5709b0669ab64e437a796c50f6bdb97b9d0d5) -- revert(group): 72cb683c799f65cd4fbae22dafc3a35c123bb66b [`b7b22c1`](https://github.com/lvgl/lvgl/commit/b7b22c190c6d9e11a841289708f55be0be86830f) -- fix(keyboard): don't show popovers on map change [`ac202e7`](https://github.com/lvgl/lvgl/commit/ac202e7b96510b9b12beb8a1eee3dfd65bc56a3d) -- fix(refr): consider masks with LV_OBJ_FLAG_OVERFLOW_VISIBLE [`a7f9dfa`](https://github.com/lvgl/lvgl/commit/a7f9dfa8c3e4fd56cc2db5c3f3926b9391d3661f) -- fix(draw): fix the calculation of the transformed coordinates [`76de7c6`](https://github.com/lvgl/lvgl/commit/76de7c6b7bce6da62f5e961ee477bfa324675683) -- fix(style): fix heap use after free with transition styles [`d9ae58b`](https://github.com/lvgl/lvgl/commit/d9ae58b6977ccfda90e02fa6f5b852d398f8600a) -- fix(tabview, tileview): fix scrolling [`22854ff`](https://github.com/lvgl/lvgl/commit/22854ff3fba236f50893221805c9cc4d378baaca) -- fix(draw): fix disp_bg_img drawing [`dea75d9`](https://github.com/lvgl/lvgl/commit/dea75d9b4a90601bf81bf69d533c4f13e62aa88c) -- fix(textarea): fix max length handling [`127d8e8`](https://github.com/lvgl/lvgl/commit/127d8e82e344cd8762672e787b1ee06390050b65) -- fix(btnmatrix): fix extra draw size calculation to not clip shadow [`7ada130`](https://github.com/lvgl/lvgl/commit/7ada1301c2ee113a5184618538b979f6d9912239) -- fix(indev): scroll_ throw_vect cannot converge to 0 when vect is negative [`e5c11f1`](https://github.com/lvgl/lvgl/commit/e5c11f1f68275d294d5b8892366aa424a5a14bca) -- fix(theme): make the basic theme even more simpler [`62d6f3c`](https://github.com/lvgl/lvgl/commit/62d6f3c533ca6d13fce3056074c1e44ffea355b1) -- fix(color): color mix rounding error [`523062b`](https://github.com/lvgl/lvgl/commit/523062b9ee8a106ad4b3b7bd0ee7baca743f2e5f) -- fix(style): _lv_style_prop_lookup_flags tell all flags for LV_STYLE_PROP_ANY [`e53f602`](https://github.com/lvgl/lvgl/commit/e53f60259c01ab1243b0cf56eb228b7f5eedc203) -- fix(list): use for icon [`b171f7d`](https://github.com/lvgl/lvgl/commit/b171f7dde2a895142385ea1275f3f51255cb2811) -- fix(layout): fix the handling of FLOATING children [`48728a7`](https://github.com/lvgl/lvgl/commit/48728a7839d6859d7d6fc4f86f5fbcbcd9939348) -- fix(style): make color filter inherited [`5546b9d`](https://github.com/lvgl/lvgl/commit/5546b9d740de8d774071328251413ec29c12d288) -- fix(spinbox): set its default width in its class [`3d92972`](https://github.com/lvgl/lvgl/commit/3d9297269598ca40e2f8dd2d8f31150d41e94cb8) -- fix: fix warning [`6c00552`](https://github.com/lvgl/lvgl/commit/6c005526295aeb277edad42b3a05b0c7e6d72eaf) -- fix(draw): fix transformations on subdivided areas [`cbff8e8`](https://github.com/lvgl/lvgl/commit/cbff8e83e50fecc2b4b43d661deb91d8d81d6696) -- fix(slider): fix left knob in ranged mode [`17f5e0a`](https://github.com/lvgl/lvgl/commit/17f5e0accb15871040a6225a9c0471ceadd6dc16) -- fix(Kconfig): allow unchecking LV_CONF_SKIP [`f3a07a3`](https://github.com/lvgl/lvgl/commit/f3a07a3e8a21f3f9f2c48a2803b8bd991968cb05) -- fix(style): fix using width for both width and height in radius transition [`6acbdaa`](https://github.com/lvgl/lvgl/commit/6acbdaa53d941b891db377e65111bd999f04631d) -- fix(dropdown): fix scrolling when options are CENTER aligned [`e651383`](https://github.com/lvgl/lvgl/commit/e651383688dd29ab2e990cd997118435832d959c) -- fix(grid): fix dead branch [`46bf27d`](https://github.com/lvgl/lvgl/commit/46bf27d50bb668bdd1f84489cb70986ee0ef9fab) -- fix(hal): disable driver->screen_transp by default regardless to LV_COLOR_SCREEN_TRANSP [`ff7204e`](https://github.com/lvgl/lvgl/commit/ff7204ecadd10132b436b11c8948b9a882b58798) -- fix(theme): fix mono theme init [`5ec6694`](https://github.com/lvgl/lvgl/commit/5ec6694f7874f3c99a764e7ee2d45a933865c91c) -- fix(bmp) fix typo in BPP condition [`cbc38af`](https://github.com/lvgl/lvgl/commit/cbc38afb3a0d3ca02159ab89242749809e64df0c) -- fix(theme): in the basic theme show the textarea cursor only in focuses state [`bb03fb1`](https://github.com/lvgl/lvgl/commit/bb03fb197c7083680fd7dc730794a52561cabfd4) -- fix(draw): fix img recolor [`23eecce`](https://github.com/lvgl/lvgl/commit/23eecce008dacd8e5f5d56d017e4e5705f0c31e6) -- fix(theme) add disabled style to textarea in the default theme [`00f6759`](https://github.com/lvgl/lvgl/commit/00f67597d3c87ff811e5e682c10ef20227218651) -- fix(meter): improve the precision of tick line drawing [`0255c6d`](https://github.com/lvgl/lvgl/commit/0255c6dd39640d7ec639cbd339a0fbdcdfb2bb82) -- fix(gpu): fix warning with NXP GPU [`6be43b8`](https://github.com/lvgl/lvgl/commit/6be43b83b3dc9340263552167dbbb07c1069bdb0) -- fix(color): compensate rounding error during blending [`42d9c07`](https://github.com/lvgl/lvgl/commit/42d9c07eeb0abfdbf8746da3569a5f8bc156ae71) -- fix(examples) use type-safe function for retrieving event param [`71d535d`](https://github.com/lvgl/lvgl/commit/71d535defd730fc20ed8d57faa2550781be4f3d7) -- fix(draw) ensure variable is initialized to avoid warning [`276f28a`](https://github.com/lvgl/lvgl/commit/276f28a8a2f4ac2f6268a4363879faa6296e14ad) -- feat(draw): improve acceleration for LV_IMG_CF_ALPHA_8BIT (#3337) [`8d3c41d`](https://github.com/lvgl/lvgl/commit/8d3c41d5170dad0455fea3d95b2765db70d3c7c2) -- fix(spinbox): rename lv_spinbox_set_pos to lv_spinbox_set_cursor_pos [`a99eb6b`](https://github.com/lvgl/lvgl/commit/a99eb6bb6ae12f3fcb86f5268a0c000fb165e159) -- fix(layout): use uint16_t LV_LAYOUT_FLEX/GRID [`c596a36`](https://github.com/lvgl/lvgl/commit/c596a36d9ecf92ae5ce1ecc812210bf3a7df4999) -- fix(event) avoid using a boolean as a pointer [`06fff4b`](https://github.com/lvgl/lvgl/commit/06fff4b9bac35d63564de87fa63f7bedd8a0f9f2) -- fix(theme): properly disable transitions if LV_THEME_DEFAULT_TRANSITION_TIME==0 [`242112b`](https://github.com/lvgl/lvgl/commit/242112b2df8b6cc12aa9920cc3b2fdc9a11d807f) -- fix(scroll): fix scroll to view to the left [`7c74f65`](https://github.com/lvgl/lvgl/commit/7c74f6556abbc299a79b1490c06151a43c902f61) -- fix(fs): mark the read cache as invalid by default [`54f9987`](https://github.com/lvgl/lvgl/commit/54f99870b3cac619fb7057618637d7ee19d58bb3) -- fix(menu): fix crash on delete (#3154) [`a6c4c13`](https://github.com/lvgl/lvgl/commit/a6c4c134902f9a4c156672a70108e809b58fa18c) -- fix(roller): fix unexpected jump in infinite mode [`18f2d78`](https://github.com/lvgl/lvgl/commit/18f2d78728c758179e4ef01ebc632da4e1263be7) -- fix(conf): work around GCC bug (#3082) [`c6b34bc`](https://github.com/lvgl/lvgl/commit/c6b34bc85bb6f5e57e1c87857e03d1a0bd225e4c) - -### Examples -- example(ime_pinyin): improved lv_example_ime_pinyin_1 [`3428`](https://github.com/lvgl/lvgl/pull/3428) -- example(imgfont): fix lvgl.h include path [`3405`](https://github.com/lvgl/lvgl/pull/3405) -- example(btnmatrix): update lv_example_btnmatrix_2 to expicitly check which part is drawn [`6b2eac1`](https://github.com/lvgl/lvgl/commit/6b2eac1dd70df62916b46cee8d4b981ff088b1a7) -- example(slider): make lv_example_slider_3 work with dark theme too [`4a766c5`](https://github.com/lvgl/lvgl/commit/4a766c516db7c2572a075ec5ffe748d30af8c7b9) -- example(span): avoid ambiguous meaing [`7bb09e3`](https://github.com/lvgl/lvgl/commit/7bb09e358026aff3d55d881237624baac77db890) -- demo(benchmark): add LV_DEMO_BENCHMARK_RGB565A8 option [`afaa8c9`](https://github.com/lvgl/lvgl/commit/afaa8c93006a88db9f115b2b318eef790928d2a6) - -### Docs - -- docs(indev): add comment in input device part [`3422`](https://github.com/lvgl/lvgl/pull/3422) -- docs(slider) mention that VALUE_CHANGED is not sent on release [`3397`](https://github.com/lvgl/lvgl/pull/3397) -- docs(readme): add version portuguese brazilian [`3349`](https://github.com/lvgl/lvgl/pull/3349) -- docs(pc-simulator): add MDK with FastModel [`3318`](https://github.com/lvgl/lvgl/pull/3318) -- docs(intro): update for v8.2.0 [`3316`](https://github.com/lvgl/lvgl/pull/3316) -- docs(readme) update link to the PlatformIO Registry [`3296`](https://github.com/lvgl/lvgl/pull/3296) -- docs(gesture): fix typo lv_indev_act() -> lv_indev_get_act() [`3291`](https://github.com/lvgl/lvgl/pull/3291) -- docs(scroll) add information about scroll coordinates [`3088`](https://github.com/lvgl/lvgl/pull/3088) -- docs(msgbox) fix typo [`3095`](https://github.com/lvgl/lvgl/pull/3095) -- docs(scroll): use LV_DIR_VER instead of LV_DIR_TOP [`3066`](https://github.com/lvgl/lvgl/pull/3066) -- docs: rearrange the get-started section [`8a81532`](https://github.com/lvgl/lvgl/commit/8a8153219163b689e8f96d6a97c1f128eefd7ce2) -- docs: add section for renderers and gpus [`378aaa6`](https://github.com/lvgl/lvgl/commit/378aaa637bdcaef8f06667ab9d56c914e0a61beb) -- docs collapse APIs by default [`ebd20af`](https://github.com/lvgl/lvgl/commit/ebd20af6e9cbd68230f49b6c85d940569a7db81c) -- docs(images): fix notes about breaking change inf v8.2 [`9a1e385`](https://github.com/lvgl/lvgl/commit/9a1e385b2b3498ed70704bf0ed33e4bd263747d8) -- docs(sim): add link to qt-creator [`88bbef1`](https://github.com/lvgl/lvgl/commit/88bbef14bf69725a1ab62bffa6ab79355ea31c2d) -- docs(chart): describe how to set the space between columns [`746917d`](https://github.com/lvgl/lvgl/commit/746917dcca74c53f6b2dc3849c9d588a0bf91b60) -- docs(README): fix broken link [`c2c44c6`](https://github.com/lvgl/lvgl/commit/c2c44c68ee69cdee16fce7833cbf6d6dc0d551ab) -- docs(examples) avoid redirects when loading examples [`d367bb7`](https://github.com/lvgl/lvgl/commit/d367bb7cf17dc34863f4439bba9b66a820088951) -- docs(gesture): describe how prevent sending events after a gesture [`65db5c9`](https://github.com/lvgl/lvgl/commit/65db5c99e05f86d2ec69ebae9f1fc50fe30a3145) -- docs(get-started): add quick-overview to the index [`91ebf81`](https://github.com/lvgl/lvgl/commit/91ebf810aacfe972f0ae140a1a61031eea9cda0c) -- docs(others): add imgfont to the index [`656a0e5`](https://github.com/lvgl/lvgl/commit/656a0e5167dca8c6c29497130e374080397fa45f) - -### CI and tests - -- ci(slider): add unit test [`3198`](https://github.com/lvgl/lvgl/pull/3198) -- test(line): add unit tests for line widget [`3104`](https://github.com/lvgl/lvgl/pull/3104) -- test(table): replicate issue when reducing table cells [`3121`](https://github.com/lvgl/lvgl/pull/3121) -- test(textarea): add unit test [`3074`](https://github.com/lvgl/lvgl/pull/3074) -- test(table): add unit tests [`3040`](https://github.com/lvgl/lvgl/pull/3040) -- ci(docs) replace use of sed with proper configuration variables [`1816fa5`](https://github.com/lvgl/lvgl/commit/1816fa576cc40ef1795e95ed127d93df5390b0cf) -- ci add Makefile test [`ea79cee`](https://github.com/lvgl/lvgl/commit/ea79cee01a6bec9b3ce5b6c232dd7ca0d020d5c9) -- test(mem) add test for #3324 [`9700664`](https://github.com/lvgl/lvgl/commit/97006647d8ed3af65fd2113ddf01c7882a4dba19) -- test(img): fix image error diff handler [`48d87e1`](https://github.com/lvgl/lvgl/commit/48d87e1ed2d362e9c3bd84eb60c311ad6519ae85) -- ci update docs builder to work with Python 3.10 [`a3d66c9`](https://github.com/lvgl/lvgl/commit/a3d66c9b67d226f8ab4555616ecf2ea62e307962) -- ci make sure LVGL assertions cause tests to fail [`b83c5aa`](https://github.com/lvgl/lvgl/commit/b83c5aa9bc4a278a6758f76e77ac9c403e483948) -- ci remove formatting comment [`d345f76`](https://github.com/lvgl/lvgl/commit/d345f76d02a23d94550b1b60be90585f6f5276b7) -- ci don't run workflows twice on PRs [`fcc1152`](https://github.com/lvgl/lvgl/commit/fcc1152f9c14494f128f26a6b47b00864a70c741) -- ci bump test timeout to 30 seconds [skip ci] [`85e3e23`](https://github.com/lvgl/lvgl/commit/85e3e2387845bd29c9f85b406623e41d36b66808) -- ci limit tests to 15 seconds [`003f18f`](https://github.com/lvgl/lvgl/commit/003f18f86c5c728920575cf1d34dd0f811607a51) -- ci(makefile) fix typo in GitHub action [`a101e70`](https://github.com/lvgl/lvgl/commit/a101e70ebd4120549236abd637049678dd6800e7) -- ci(switch): fix mem leak test [`8481e3a`](https://github.com/lvgl/lvgl/commit/8481e3a33bc3313b679babac31e6193ec4319bcd) -- ci(stale) bump action version [`5977eef`](https://github.com/lvgl/lvgl/commit/5977eeff3c559c0473d5abd8a99687eeb4659c61) -- ci use GCC problem matcher on ARM tests as well [`9fcefe5`](https://github.com/lvgl/lvgl/commit/9fcefe5a49a024054a3cee08d273b8fe5cf8840e) - - -## [v8.2.0](https://github.com/littlevgl/lvgl/compare/v8.1.0...v8.2.0) 31 January 2022 - - -### Overview - -Among many fixes and minor updates these are the most important features in v8.2.0: -- Abstract render layer to make it easier to attach external draw engines -- Add `LV_FLAD_OVERFLOW_VISIBLE`. If enabled the children of an object won't be clipped to the boundary of the object -- Add ffmpeg decoder support to play videos and open a wide variety of image formats -- Add font fallback support -- Add gradient dithering support -- Add "monkey test" -- Add cmsis-pack support -- Add Grid navigation (`lv_gridnav`) - -The GPU support for NXP microcontrollers is still not updated to the new draw architecture. See [#3052](https://github.com/lvgl/lvgl/issues/3052) - -### Breaking Changes - -- :warning: feat(fs): add caching option for lv_fs-read [`2979`](https://github.com/littlevgl/lvgl/pull/2979) -- :warning: feat(span): lv_spangroup_get_expand_width() adds a parameter [`2968`](https://github.com/littlevgl/lvgl/pull/2968) -- :warning: arch(draw): allow replacing the draw engine [`db53ea9`](https://github.com/littlevgl/lvgl/commit/db53ea925c9502b20f38db0fc30c4ef599bdfc33) -- :warning: indexed images are not chroma keyed. Use the alpha chaneel instead. - -### Architectural - -- arch(draw): separate SW renderer to allow replacing it [`2803`](https://github.com/littlevgl/lvgl/pull/2803) -- arch: merge lv_demos [`5414652`](https://github.com/littlevgl/lvgl/commit/5414652a4108dc6761b859fbb48a43e37e67a37a) -- arch(sdl): migrated to use new backend architecture [`2840`](https://github.com/littlevgl/lvgl/pull/2840) -- arch(env): move rt-thread into env_support folder [`3025`](https://github.com/littlevgl/lvgl/pull/3025) -- arch(env): arch(env): move the cmake folder into the env_support folder [`773d50f`](https://github.com/littlevgl/lvgl/commit/773d50f0acafa279fa7440ddcf15e80cf07eda54) -- arch(env): move the zephyr folder into the env_support folder [`4bd1e7e`](https://github.com/littlevgl/lvgl/commit/4bd1e7e9f7acc5295b65440477e76a048094afbf) - -### New Features - -- feat(cmsis-pack): prepare for lvgl v8.2.0 release [`3062`](https://github.com/littlevgl/lvgl/pull/3062) -- feat(gridnav): add lv_gridnav [`2911`](https://github.com/littlevgl/lvgl/pull/2911) -- feat: update the cmsis-pack to 0.8.3 [`3021`](https://github.com/littlevgl/lvgl/pull/3021) -- feat(sdl): support rounded images [`3012`](https://github.com/littlevgl/lvgl/pull/3012) -- feat(cmsis-pack): add cmsis-pack support [`2993`](https://github.com/littlevgl/lvgl/pull/2993) -- feat(event): add preprocessing and stop bubbling features for events [`3003`](https://github.com/littlevgl/lvgl/pull/3003) -- feat(draw): add gradient dithering support [`2872`](https://github.com/littlevgl/lvgl/pull/2872) -- feat(symbols): add guards to LV_SYMBOL_* to allow redefining them [`2973`](https://github.com/littlevgl/lvgl/pull/2973) -- feat(obj): subdivide LV_OBJ_FLAG_SCROLL_CHAIN into ...CHAIN_HOR and ...CHAIN_VER [`2961`](https://github.com/littlevgl/lvgl/pull/2961) -- feat(draw): add draw_bg callback to draw_ctx #2934 [`2935`](https://github.com/littlevgl/lvgl/pull/2935) -- feat(docs): add Chinese readme [`2919`](https://github.com/littlevgl/lvgl/pull/2919) -- feat(txt): add used_width parameter to _lv_txt_get_next_line() [`2898`](https://github.com/littlevgl/lvgl/pull/2898) -- feat(others) add monkey test [`2885`](https://github.com/littlevgl/lvgl/pull/2885) -- feat(rlottie): add animation control options [`2857`](https://github.com/littlevgl/lvgl/pull/2857) -- feat(lv_hal_indev): add missing lv_indev_delete() [`2854`](https://github.com/littlevgl/lvgl/pull/2854) -- feat(freetype): optimize memory allocation [`2849`](https://github.com/littlevgl/lvgl/pull/2849) -- feat(Kconfig): add FreeType config [`2846`](https://github.com/littlevgl/lvgl/pull/2846) -- feat(widgets): add menu widget [`2603`](https://github.com/littlevgl/lvgl/pull/2603) -- feat(refr): add reset function for FPS statistics [`2832`](https://github.com/littlevgl/lvgl/pull/2832) -- feat(Kconfig): add monitor position configuration [`2834`](https://github.com/littlevgl/lvgl/pull/2834) -- feat(examples) add micropython versions of the external library examples [`2762`](https://github.com/littlevgl/lvgl/pull/2762) -- feat(freetype): support bold and italic [`2824`](https://github.com/littlevgl/lvgl/pull/2824) -- feat(font) add fallback support and mem. font load option to FreeType [`2796`](https://github.com/littlevgl/lvgl/pull/2796) -- feat(lib) add ffmpeg video and image decoder [`2805`](https://github.com/littlevgl/lvgl/pull/2805) -- feat(obj): add LV_OBJ_FLAG_OVERFLOW_VISIBLE [`e7ac0e4`](https://github.com/littlevgl/lvgl/commit/e7ac0e41988e5fda772e17292c05d65bcaf58394) -- feat(scrollbar): add more control over scrollbar paddings [`4197b2f`](https://github.com/littlevgl/lvgl/commit/4197b2fd6ebec4b4dcfeeb2c41b724e09b77d1d0) -- feat(dropdown): keep the list on open/close for simpler styling [`9d3134b`](https://github.com/littlevgl/lvgl/commit/9d3134b66e40882c232afa79498c41294603f437) -- feat(qrcode) use destructor instead of lv_qrcode_delete() [`318edd8`](https://github.com/littlevgl/lvgl/commit/318edd8a3f61a65be3ed15a97c0870de0ad4125a) -- feat(disp) allow decoupling the disp_refr timer [`85cc84a`](https://github.com/littlevgl/lvgl/commit/85cc84ad947786bb3d4857290503047946a55c43) -- feat(obj): add lv_obj_get_event_user_data() [`53ececc`](https://github.com/littlevgl/lvgl/commit/53ececc5ec6f62ee4ab47ea66a847679e3836f52) -- feat(obj) add LV_OBJ_FLAG_SCROLL_WITH_ARROW [`70327bd`](https://github.com/littlevgl/lvgl/commit/70327bdb2d758336340c5a3b378ab876bfee2d53) -- feat(slider): consider ext_click_area on the knob with LV_OBJ_FLAG_ADV_HITTEST [`9d3fb41`](https://github.com/littlevgl/lvgl/commit/9d3fb418969c13b93f01a6b0342a1cd8d02e9b6c) - -### Performance - -- perf(sdl): optimize the use of SDL_RenderSetClipRect [`2941`](https://github.com/littlevgl/lvgl/pull/2941) -- perf(color): add faster lv_color_hex function [`2864`](https://github.com/littlevgl/lvgl/pull/2864) - -### Fixes - -- fix(micropython) update examples for new API [`3059`](https://github.com/littlevgl/lvgl/pull/3059) -- fix: increase default value of LV_MEM_SIZE for lv_demo_widgets #3057 [`3058`](https://github.com/littlevgl/lvgl/pull/3058) -- fix(cmsis-pack): fix issue #3032 [`3056`](https://github.com/littlevgl/lvgl/pull/3056) -- fix(porting): add missing function prototypes [`3054`](https://github.com/littlevgl/lvgl/pull/3054) -- fix(kconfig): add missing default values [`3050`](https://github.com/littlevgl/lvgl/pull/3050) -- fix(canvas): force canvas to use sw draw [`3045`](https://github.com/littlevgl/lvgl/pull/3045) -- fix(rt-thread): use ARCH_CPU_BIG_ENDIAN to replace RT_USING_BIG_ENDIAN [`3044`](https://github.com/littlevgl/lvgl/pull/3044) -- fix(gradient): general cleanup and fix for alignment issues [`3036`](https://github.com/littlevgl/lvgl/pull/3036) -- fix(draw): rendering issues for vertical gradient with and without dithering [`3034`](https://github.com/littlevgl/lvgl/pull/3034) -- fix uninitialized variable [`3033`](https://github.com/littlevgl/lvgl/pull/3033) -- fix(lru): lower dependency for standard C functions [`3024`](https://github.com/littlevgl/lvgl/pull/3024) -- fix(env_support): move cmsis-pack to env_support folder [`3026`](https://github.com/littlevgl/lvgl/pull/3026) -- fix(doc): full covering opacity is 255, not 256 [`3022`](https://github.com/littlevgl/lvgl/pull/3022) -- fix uninitialized variables [`3023`](https://github.com/littlevgl/lvgl/pull/3023) -- fix various issues for esp32 [`3007`](https://github.com/littlevgl/lvgl/pull/3007) -- fix(sdl): fix clipped image drawing [`2992`](https://github.com/littlevgl/lvgl/pull/2992) -- fix(draw): missed bg_color renaming in the draw function [`3002`](https://github.com/littlevgl/lvgl/pull/3002) -- fix(porting): fix typo and an unmatched prototype [`2998`](https://github.com/littlevgl/lvgl/pull/2998) -- fix(conf) add missing LV_LOG_LEVEL default definition [`2996`](https://github.com/littlevgl/lvgl/pull/2996) -- fix(refr): crash if full_refresh = 1 [`2999`](https://github.com/littlevgl/lvgl/pull/2999) -- fix(Kconfig): adapt to lvgl's built-in demos [`2989`](https://github.com/littlevgl/lvgl/pull/2989) -- fix(Makefile): compilation errors [`2944`](https://github.com/littlevgl/lvgl/pull/2944) -- fix(rlottie): fix variable name [`2971`](https://github.com/littlevgl/lvgl/pull/2971) -- fix(group): in lv_group_del() remove group from indev (lvgl#2963) [`2964`](https://github.com/littlevgl/lvgl/pull/2964) -- fix(obj): old parent's scroll is not updated in lv_obj_set_parent() [`2965`](https://github.com/littlevgl/lvgl/pull/2965) -- fix(fatfs) add missing cast [`2969`](https://github.com/littlevgl/lvgl/pull/2969) -- fix(snapshot) fix memory leak [`2970`](https://github.com/littlevgl/lvgl/pull/2970) -- fix(examples) move event callback registration outside loop in `lv_example_event_3` [`2959`](https://github.com/littlevgl/lvgl/pull/2959) -- fix(canvas): off by one error in size check in lv_canvas_copy_buf [`2950`](https://github.com/littlevgl/lvgl/pull/2950) -- fix(indev) add braces to avoid compiler warning [`2947`](https://github.com/littlevgl/lvgl/pull/2947) -- fix: fix parameter order in function prototypes [`2929`](https://github.com/littlevgl/lvgl/pull/2929) -- fix(style):add const qualifier for lv_style_get_prop() [`2933`](https://github.com/littlevgl/lvgl/pull/2933) -- fix(dropdown): in lv_dropdown_get_selected_str handle if there are no options [`2925`](https://github.com/littlevgl/lvgl/pull/2925) -- fix: lv_deinit/lv_init crash or hang [`2910`](https://github.com/littlevgl/lvgl/pull/2910) -- fix(rt-thread): improve the structure [`2912`](https://github.com/littlevgl/lvgl/pull/2912) -- fix: removed string format warnings for int32_t and uint32_t [`2924`](https://github.com/littlevgl/lvgl/pull/2924) -- fix(lv_fs_win32): add missing include of <stdio.h> [`2918`](https://github.com/littlevgl/lvgl/pull/2918) -- fix: use unsigned integer literal for bit shifing. [`2888`](https://github.com/littlevgl/lvgl/pull/2888) -- chore(lottie) move rlottie_capi.h to lv_rlottie.c [`2902`](https://github.com/littlevgl/lvgl/pull/2902) -- fix(qrcodegen) add brackets around assert calls [`2897`](https://github.com/littlevgl/lvgl/pull/2897) -- fix(list) guard image creation with LV_USE_IMG [`2881`](https://github.com/littlevgl/lvgl/pull/2881) -- fix(snapshot): make fake display size big enough to avoid align issue. [`2883`](https://github.com/littlevgl/lvgl/pull/2883) -- fix(sdl) correct makefile [`2884`](https://github.com/littlevgl/lvgl/pull/2884) -- fix(draw): fix set_px_cb memory write overflow crash. [`2882`](https://github.com/littlevgl/lvgl/pull/2882) -- fix(freetype): fix memset error [`2877`](https://github.com/littlevgl/lvgl/pull/2877) -- fix(span): fix align and break word [`2861`](https://github.com/littlevgl/lvgl/pull/2861) -- fix(refr): swap buffers only on the last area with direct mode [`2867`](https://github.com/littlevgl/lvgl/pull/2867) -- fix(arc) free memory when drawing full-circle arc [`2869`](https://github.com/littlevgl/lvgl/pull/2869) -- fix(indev): update lv_indev_drv_update to free the read_timer [`2850`](https://github.com/littlevgl/lvgl/pull/2850) -- fix(draw): fix memory access out of bounds when using blend subtract [`2860`](https://github.com/littlevgl/lvgl/pull/2860) -- fix(chart) add lv_chart_refresh() to the functions which modify the data [`2841`](https://github.com/littlevgl/lvgl/pull/2841) -- fix(conf) mismatched macro judgment [`2843`](https://github.com/littlevgl/lvgl/pull/2843) -- fix(ffmpeg): when disabled LV_FFMPEG_AV_DUMP_FORMAT makes av_log quiet [`2838`](https://github.com/littlevgl/lvgl/pull/2838) -- fix(rt-thread): fix a bug of log [`2811`](https://github.com/littlevgl/lvgl/pull/2811) -- fix(log): to allow printf and custom_print_cb to work at same time [`2837`](https://github.com/littlevgl/lvgl/pull/2837) -- fix(keyboard): add missing functions [`2835`](https://github.com/littlevgl/lvgl/pull/2835) -- fix(checkbox) remove unnecessary events [`2829`](https://github.com/littlevgl/lvgl/pull/2829) -- fix(qrcode): replace memcpy() with lv_memcpy() and delete useless macros [`2827`](https://github.com/littlevgl/lvgl/pull/2827) -- fix(font) improve builtin font source files generation process [`2825`](https://github.com/littlevgl/lvgl/pull/2825) -- fix(CMake) split CMakeLists.txt, add options, includes and dependencies [`2753`](https://github.com/littlevgl/lvgl/pull/2753) -- fix(obj): make lv_obj_fade_in/out use the current opa as start value [`2819`](https://github.com/littlevgl/lvgl/pull/2819) -- fix(qrcode):minimize margins as much as possible [`2804`](https://github.com/littlevgl/lvgl/pull/2804) -- fix(scripts): switch all scripts to python3 [`2820`](https://github.com/littlevgl/lvgl/pull/2820) -- fix(event): event_send_core crash in special case. [`2807`](https://github.com/littlevgl/lvgl/pull/2807) -- fix(Kconfig) remove duplicate LV_BUILD_EXAMPLES configuration [`2813`](https://github.com/littlevgl/lvgl/pull/2813) -- fix(obj): in obj event use the current target instead of target [`2785`](https://github.com/littlevgl/lvgl/pull/2785) -- fix(draw_label): radius Mask doesn't work in Specific condition [`2784`](https://github.com/littlevgl/lvgl/pull/2784) -- fix(draw_mask): will crash if get_width/height < 0 [`2793`](https://github.com/littlevgl/lvgl/pull/2793) -- fix(theme) make the basic theme really basic [`a369f18`](https://github.com/littlevgl/lvgl/commit/a369f18c57c6b9d20a37959d621f9cb16348ef99) -- fix(arc): fix knob invalidation [`345f688`](https://github.com/littlevgl/lvgl/commit/345f6882c9802dd9be55dfda5fe50c17e8c002b0) -- fix(theme): add arc, spinner and colorwheel to basic theme [`adc218a`](https://github.com/littlevgl/lvgl/commit/adc218a7b303c564da021714e5a109a5d003fc30) -- fix(conf) define LV_LOG_TRACE_... to 0 in lv_conf_internal.h to avoid warnings [`305284c`](https://github.com/littlevgl/lvgl/commit/305284c2b5aadec7bcfa68c6517c98d44be7c8a9) -- fix(draw): consider opa and clip corner on bg_img [`d51aea4`](https://github.com/littlevgl/lvgl/commit/d51aea4dffc706876ac729373c33a74743bc05e9) -- fix(draw): add grad_cache_mem to GC_ROOTs [`138db9c`](https://github.com/littlevgl/lvgl/commit/138db9c5d6b1f1d42c48d1307f5f508149ab0fda) -- fix(bar, slider): fix shadow drawing on short indicators [`364ca3c`](https://github.com/littlevgl/lvgl/commit/364ca3ca1763fb732a049bfce689e2f588593cd4) -- fix(theme): fix theme initialization issue introduced in 6e0072479 [`d231644`](https://github.com/littlevgl/lvgl/commit/d2316447c5c240960236d41814ef20e63cd56f00) -- fix(draw): add lv_draw_sw_bg [`49642d3`](https://github.com/littlevgl/lvgl/commit/49642d3891c563b6c82bb407bacc4b73329a8c93) -- fix(draw) border_draw crash is special case [`075831a`](https://github.com/littlevgl/lvgl/commit/075831a54c30d294879619c90ca4d16676c0775a) -- fix(theme): fix crash in lv_theme_basic_init [`ca5f04c`](https://github.com/littlevgl/lvgl/commit/ca5f04cfe33e1db0b72a07812557634b86028c27) -- fix(draw): fix indexed image drawing [`5a0dbcc`](https://github.com/littlevgl/lvgl/commit/5a0dbccf890b7a86315140dfe052da6b6aeca531) -- fix(roller): clip overflowing text [`5709528`](https://github.com/littlevgl/lvgl/commit/5709528550f7bdb0a16da1c05ea8094fc085db08) -- fix(align) fix LV_SIZE_CONTENT size calculation with not LEFT or TOP alignment [`9c67642`](https://github.com/littlevgl/lvgl/commit/9c676421ff159de1a96409f5557d36090c1728f9) -- fix(draw): futher bg_img draw fixes [`81bfb76`](https://github.com/littlevgl/lvgl/commit/81bfb765e5baba359e61dcb030f3ee96160a6335) -- fix(btnmatrix): keep the selected button even on release [`d47cd1d`](https://github.com/littlevgl/lvgl/commit/d47cd1d7fe910efc189e2f43f046a09184cfff13) -- fix(sw): make knob size calculation more intuitive [`5ec532d`](https://github.com/littlevgl/lvgl/commit/5ec532dfd5ffa0d47a1ac80c9a468d6362f3d933) -- fix(switch): make knob height calculation similar to slider [`0921dfc`](https://github.com/littlevgl/lvgl/commit/0921dfc8cd9d00e70ead8cbef8a898711af8f43e) -- fix(span): explicitly set span->txt to the return value of lv_mem_realloc(#3005) [`a9a6cb8`](https://github.com/littlevgl/lvgl/commit/a9a6cb8efd16c55a175791a43a3f4043a3a5e01f) -- fix(example): update LVGL_Arduino.ino [`d79283c`](https://github.com/littlevgl/lvgl/commit/d79283c145f92124c800453bcaf1caf1f9684bc5) -- fix(draw) simplify how outline_pad is compnesated [`81d8be1`](https://github.com/littlevgl/lvgl/commit/81d8be13d67d6b17b663bc703c1e0e18a18890a7) -- fix(obj) make LV_OBJ_FLAG_SCROLL_CHAIN part of the enum instead of define [`f8d8856`](https://github.com/littlevgl/lvgl/commit/f8d88567f635f325d6738ce2343f3b3c29f1e40a) -- fix(label): dot not add dots if the label height > 1 font line height [`4d61f38`](https://github.com/littlevgl/lvgl/commit/4d61f3802013b31b0af5f08f66bb86f5179db141) -- fix(event): crash if an object was deleted in an event [`9810920`](https://github.com/littlevgl/lvgl/commit/9810920fc5d34a984bddf6e41156e87e509cfd27) -- fix(build) fix sdl build with make [`43729d1`](https://github.com/littlevgl/lvgl/commit/43729d1502dad0ca797b4b6fb8c69a48c81a2af7) -- fix(config): fix anonymous choice [`71c739c`](https://github.com/littlevgl/lvgl/commit/71c739cc2dbcebf16e8adc805dda182011e725da) -- chore(docs): fix lv_list_add_text [`a5fbf22`](https://github.com/littlevgl/lvgl/commit/a5fbf22d415a52cb2641c6dfda6937a10e4952cc) -- fix(png) check png magic number to be sure it's a png image [`1092550`](https://github.com/littlevgl/lvgl/commit/1092550775c464f9ae8c406786fe02115776d5c6) -- fix(btnmatrix): fix crash if an empty btnmatrix is pressed [`2392f58`](https://github.com/littlevgl/lvgl/commit/2392f585bb9317153f6fb648d2a660cbdc3e276f) -- fix(mem/perf monitor): fix issue introduced in #2910 [`0788d91`](https://github.com/littlevgl/lvgl/commit/0788d918990fd1c03bd7a04941cfbbdf6d21987c) -- fix(layout) fix layout recalculation trigger in lv_obj_add/clear_fleg [`ee65410`](https://github.com/littlevgl/lvgl/commit/ee65410c3725070ed1779c95fb8742107cdd9267) -- fix(obj) fix lv_obj_fade_in [`4931384`](https://github.com/littlevgl/lvgl/commit/49313840ee9b249f2ef9142e872657856810acfc) -- fix(draw): fix clipping children to parent [`5c98ac8`](https://github.com/littlevgl/lvgl/commit/5c98ac85117c24f4da61803f0dc5a9bb6cfd1fdc) -- fix: remove symlinks to be accepted as an Ardunio library [`6701d36`](https://github.com/littlevgl/lvgl/commit/6701d36afe40130479dc83efc05d4860f3f29636) -- chore: fix typos in FATFS config [`74091c4`](https://github.com/littlevgl/lvgl/commit/74091c42f7cf4e85e46e706692accb65879741e2) -- fix(refr): fix missed buffer switch in double full-screen buffer + direct_mode [`731ef5a`](https://github.com/littlevgl/lvgl/commit/731ef5a75ea7feb7319315bd15bc1a43b899c1ca) -- chore(qrcode): fix warnings [`e9d7080`](https://github.com/littlevgl/lvgl/commit/e9d70803e11378eddf435e66c2181c0fa77211c7) -- docs(event): tell to not adjust widgets in draw events [`933d67f`](https://github.com/littlevgl/lvgl/commit/933d67fe5b8596da203c318aa9551aad1c2887e6) -- fix(table, chart): fix memory leaks [`8d52de1`](https://github.com/littlevgl/lvgl/commit/8d52de14b33262a11de87f5d782611a38726a1a7) -- fix(event): handle object deletion in indev->fedback_cb [`bfc8edf`](https://github.com/littlevgl/lvgl/commit/bfc8edf802382f78e96125c886427c99c7f9a600) -- fix(roller): snap on press lost [`fa9340c`](https://github.com/littlevgl/lvgl/commit/fa9340c45fd4a86b4a44878286850f3f67133bf4) -- fix(dropdown) be sure the list is the top object on the screen [`cb7fc2b`](https://github.com/littlevgl/lvgl/commit/cb7fc2bb59f788ce8024d62a5b1e821575a9cb74) -- fix(img) fix invalidation issue on transformations [`d5ede0e`](https://github.com/littlevgl/lvgl/commit/d5ede0ebc6685d4857b5ac554d53c0a7373d7532) -- fix(obj) fix comments of lv_obj_set_pos/x/y [`b9a5078`](https://github.com/littlevgl/lvgl/commit/b9a5078cd9d57662fc6e684d57a0ee4e70ca49c0) - -### Examples - -- example: add non-null judgment to lv_example_obj_2 [`2799`](https://github.com/littlevgl/lvgl/pull/2799) -- example(table): fix text alignment [`b03dc9c`](https://github.com/littlevgl/lvgl/commit/b03dc9cf862584c2e2be2c900fa4ff6e67b336f8) - -### Docs - -- docs(demos) update information to reflect new layout [`3029`](https://github.com/littlevgl/lvgl/pull/3029) -- docs(porting): remove duplicated content [`2984`](https://github.com/littlevgl/lvgl/pull/2984) -- docs(display) fix typo [`2946`](https://github.com/littlevgl/lvgl/pull/2946) -- docs(get-started) add introduction for Tasmota and Berry [`2874`](https://github.com/littlevgl/lvgl/pull/2874) -- docs fix spelling, parameter descriptions, comments, etc [`2865`](https://github.com/littlevgl/lvgl/pull/2865) -- docs: spelling fixes [`2828`](https://github.com/littlevgl/lvgl/pull/2828) -- docs(style) minor style fix [`2818`](https://github.com/littlevgl/lvgl/pull/2818) -- docs(porting/display) fix formatting [`2812`](https://github.com/littlevgl/lvgl/pull/2812) -- docs(roadmap) update [`084439e`](https://github.com/littlevgl/lvgl/commit/084439e9476339ff571820e38bb677157edef135) -- docs(widgets) fix edit links [`7ed1a56`](https://github.com/littlevgl/lvgl/commit/7ed1a5625a5139ede832c0058b2bc6309b395321) -- docs(contributing) update commit message format [`1cd851f`](https://github.com/littlevgl/lvgl/commit/1cd851f8c09e813d75feaf9bf312f887f5ba76f0) -- docs(porting): add more details about adding lvgl to your project [`6ce7348`](https://github.com/littlevgl/lvgl/commit/6ce73486d319bfdb1c379d090036a7eeaabf5b43) -- docs(indev): add description about gestures [`2719862`](https://github.com/littlevgl/lvgl/commit/2719862fc3065b5d72c74c3f5f0923c3f6cc82c6) -- docs(style): describe const styles [`28ffae8`](https://github.com/littlevgl/lvgl/commit/28ffae8c931ff01a4e5d426a2e496053e840c094) -- docs(faq): add "LVGL doesn't start, nothing is drawn on the display" section [`0388d92`](https://github.com/littlevgl/lvgl/commit/0388d9218a36debf6c989eb999ae68478d8f6b02) -- docs add demos [`02a6614`](https://github.com/littlevgl/lvgl/commit/02a6614b38b7d94e56d8fc1f858b0e40a46c024d) -- docs(fs): update fs interface description to the latest API [`285e6b3`](https://github.com/littlevgl/lvgl/commit/285e6b39f99c078e57a611cf84cbfc3b546e112e) -- docs(format) let wrap [`4bf49a8`](https://github.com/littlevgl/lvgl/commit/4bf49a82a3df422ebbfc4e47d4a93c945afdf0fa) -- docs(imgbtn) fix typo [`d792c5f`](https://github.com/littlevgl/lvgl/commit/d792c5f6c2e9d85c693e4f8089cb59c82d8cf805) -- docs(porting) clarify that displays must be registered before input devices [`1c64b78`](https://github.com/littlevgl/lvgl/commit/1c64b78866b4bb920db75a4b19f8ff1eb7f68a76) -- docs(event) fix lv_event_get_original_target vs lv_event_get_current_target [`cdd5128`](https://github.com/littlevgl/lvgl/commit/cdd5128bc0e17b2ffa3f9fc8f5f133d35fca4e35) -- docs(events) rename LV_EVENT_APPLY to LV_EVENT_READY (#2791) [`bf6837f`](https://github.com/littlevgl/lvgl/commit/bf6837f4c045b01144842ae63c4052e4cac7dafb) -- docs(gpu): link style properties and boxing model [`6266851`](https://github.com/littlevgl/lvgl/commit/6266851381d3b1f1e350dc4689e6bc71ece2f5c1) -- docs(gesture): clarify gesture triggering with scrolling [`e3b43ee`](https://github.com/littlevgl/lvgl/commit/e3b43eec943db48f7cbee83e07e531d41bc61ac0) -- docs(contributing): remove the mentioning of the dev branch [`00d4ef3`](https://github.com/littlevgl/lvgl/commit/00d4ef3c53d9b53e993c76d1eb0bafa7b1c9b721) -- docs(bar) fix default range [`eeee48b`](https://github.com/littlevgl/lvgl/commit/eeee48b1c943fc288521e4479d874348f4690842) -- docs(event): tell to not adjust widgets in draw events [`933d67f`](https://github.com/littlevgl/lvgl/commit/933d67fe5b8596da203c318aa9551aad1c2887e6) -- docs(switch) improve wording [`b4986ab`](https://github.com/littlevgl/lvgl/commit/b4986ab5dceb47f934c0a44a58152367f1bf8f43) -- docs(font) fix example to match v8 [`2f80896`](https://github.com/littlevgl/lvgl/commit/2f808965a1892e11cb84f50c6546871d2f2aa122) - -### CI and tests - -- test(bar): add unit tests [`2845`](https://github.com/littlevgl/lvgl/pull/2845) -- test(switch): add initial unit test [`2794`](https://github.com/littlevgl/lvgl/pull/2794) -- test(demo) add tests for widget and stress demos [`3bd6ad8`](https://github.com/littlevgl/lvgl/commit/3bd6ad80e7e7d0936b6e54ca88760db551f7848b) -- test(dropdown) fix to pass again [`918b3de`](https://github.com/littlevgl/lvgl/commit/918b3defd78245136da92f46fac937815ef35a1a) -- test add support for using system heap [`446b1eb`](https://github.com/littlevgl/lvgl/commit/446b1ebf2bc1ba38b5349c660534f113a9a066a9) -- ci remove formatting request workflow [`6de89e4`](https://github.com/littlevgl/lvgl/commit/6de89e4b7b0a0f72cf53e59a90bd22362088eb71) -- ci initial support for cross-architecture tests [`7008770`](https://github.com/littlevgl/lvgl/commit/7008770261903170d19472a52b54fedaafa7bbda) -- ci create handler for formatting requests [`7af7849`](https://github.com/littlevgl/lvgl/commit/7af78498a898cba6263b51094ffbc486d6b30b3a) -- test(style) add test for gradient [`da8f345`](https://github.com/littlevgl/lvgl/commit/da8f34566b0c0f3335c471c518f0766bdeb65766) -- test(event) add test for #2886 [`51ef9c2`](https://github.com/littlevgl/lvgl/commit/51ef9c242ccfff37905d71132aab33d2f642b427) -- ci add workflow to check code formatting [`a2b555e`](https://github.com/littlevgl/lvgl/commit/a2b555e096f7d401b5d8e877a6b5e81ff81c747a) -- ci attempt to speed up cross tests [`80408f7`](https://github.com/littlevgl/lvgl/commit/80408f704e8442a27f6dca96c41f1d3bded7ce52) -- ci apply my updates to the verify-formatting action [`02f02fa`](https://github.com/littlevgl/lvgl/commit/02f02fa78fc4101b1cde87fe912cb3105a689195) -- ci: add arduino linter action [`f79b00c`](https://github.com/littlevgl/lvgl/commit/f79b00cce0d31c7e5519a871b27d803fdb30fdfd) -- ci update action [`be9722c`](https://github.com/littlevgl/lvgl/commit/be9722c420a1ac2e9efde79135bf96bc508edb33) -- ci more formatting action updates [`1f6037c`](https://github.com/littlevgl/lvgl/commit/1f6037ce98c8617221d321d3371ad6dc8649553a) -- ci disable LeakSanitizer on dockerized tests [`c9e1927`](https://github.com/littlevgl/lvgl/commit/c9e19272c62f01544ff7cb5ef15d65b0d4fce5a5) -- ci one last try at this for tonight [`dddafae`](https://github.com/littlevgl/lvgl/commit/dddafaec942b7886722cdec28e2bd0f20f2a3413) -- ci try alternate checkout mechanism [`cb3de30`](https://github.com/littlevgl/lvgl/commit/cb3de308fdcdebb9c980df1d167a6be3657b2540) -- test(style) fix compile error [`ba083df`](https://github.com/littlevgl/lvgl/commit/ba083dfd6dc31d1d9127542cd1aff860d5a0153c) -- test(template) simplify _test_template.c [`b279f63`](https://github.com/littlevgl/lvgl/commit/b279f63d6bf84159aab855b962a9f431d5c40eb3) -- ci force ccache to be saved every time [`a7c590f`](https://github.com/littlevgl/lvgl/commit/a7c590f10d4c39ae33d89ad86ef608092030654b) -- ci switch to codecov v2 [`6b84155`](https://github.com/littlevgl/lvgl/commit/6b841555cd847d07375b92b54a814c41ccb522de) -- ci more debugging for formatting action [`2f8e4bc`](https://github.com/littlevgl/lvgl/commit/2f8e4bc4c43fa395676e2be5d3d55999206190b4) -- ci inline apt-get commands [`90e2b9f`](https://github.com/littlevgl/lvgl/commit/90e2b9f05e73527dfa2b2df0b1da30512827b8a8) -- ci(micropython) use ESP-IDF 4.4 [`b34fe9e`](https://github.com/littlevgl/lvgl/commit/b34fe9ed8b945fd83a1956cf4ddf2d40485a62ca) -- ci add 5k stack limit [`4122dda`](https://github.com/littlevgl/lvgl/commit/4122dda399679baa3b8bbd2e7055412b132227ab) -- ci force use of ccache in PATH [`6de3fa8`](https://github.com/littlevgl/lvgl/commit/6de3fa8004639ea02d45c1be2985290e65a3d6c0) -- ci add back stack usage check at 4 kilobytes [`89135d6`](https://github.com/littlevgl/lvgl/commit/89135d663daca34c9d9695a4c12b4208ef4ba217) -- ci temporarily disable stack usage check [`1900c21`](https://github.com/littlevgl/lvgl/commit/1900c215482b9b1b5af1dd7c5cb8a95e89906b77) -- ci(cross) use python3 instead of python [`df7eaa0`](https://github.com/littlevgl/lvgl/commit/df7eaa020d656c519b5197cd3d19c587cb1dd234) -- ci use specific version tag [`59b4769`](https://github.com/littlevgl/lvgl/commit/59b476934452d5821424c70954aa32be6f476608) -- ci fix check style action [`5bb3686`](https://github.com/littlevgl/lvgl/commit/5bb3686ea8b6feb55d6bb2b345f5c6cee52d514a) -- ci fix typo in formatting action [`d1ccbf6`](https://github.com/littlevgl/lvgl/commit/d1ccbf607fd3aec61c4606a8f2c268225654b792) -- ci test formatting action [`065d821`](https://github.com/littlevgl/lvgl/commit/065d821c7050af6ad94c7d6dc2d4976a817e54a0) -- ci(micropython) switch to newer GCC action [`1fa7257`](https://github.com/littlevgl/lvgl/commit/1fa7257801f4e0d3c184be438fd7ecb067818c48) -- ci(style) force color on diff to help highlight whitespace changes [`04f47ea`](https://github.com/littlevgl/lvgl/commit/04f47eae0d40c8385535428566d1851ff8ea20eb) -- ci(cross) install build-essential [`772f219`](https://github.com/littlevgl/lvgl/commit/772f219c0af4ba013ee9b71883e7dc265e5d22f9) -- ci force pushing to upstream branch [`8277f78`](https://github.com/littlevgl/lvgl/commit/8277f78d132b4c397f39a9e17cdb7bdd381d1778) -- ci ensure lvgl-bot is used to make commits [`9fcf52a`](https://github.com/littlevgl/lvgl/commit/9fcf52a82bb4dbcfc47e69b7875d66a3d25ba87f) - - - - -## [v8.1.0](https://github.com/lvgl/lvgl/compare/v8.0.2...v8.1.0) 10 November 2021 - -### Overview -v8.1 is a minor release, so besides many fixes it contains a lot of new features too. - -Some of the most important features are -- Built in support for SDL based GPU drawing -- Much faster circle drawing in the software renderer -- Several [3rd party libraries](https://docs.lvgl.io/master/libs/index.html) are merged directly into LVGL. -- Add LVGL as an [RT-Thread](https://packages.rt-thread.org/en/detail.html?package=LVGL) and [ESP32](https://components.espressif.com/component/lvgl/lvgl) component - -### Breaking Changes - -- :warning: feat(calendar): add the header directly into the calendar widget [`2e08f80`](https://github.com/lvgl/lvgl/commit/2e08f80361a9d7e5b97f49af6afc3549ffbf2758) - -### Architectural - -- arch add small 3rd party libs to lvgl [`2569`](https://github.com/lvgl/lvgl/pull/2569) - -### New Features - -- feat(display) add direct_mode drawing mode [`2460`](https://github.com/lvgl/lvgl/pull/2460) -- feat(conf): make LV_MEM_BUF_MAX_NUM configurable [`2747`](https://github.com/lvgl/lvgl/pull/2747) -- feat(disp): add non-fullscreen display utilities [`2724`](https://github.com/lvgl/lvgl/pull/2724) -- feat(rlottie) add LVGL-Rlottie interface as 3rd party lib [`2700`](https://github.com/lvgl/lvgl/pull/2700) -- feat(rtthread): prepare for porting the device-driver of rt-thread [`2719`](https://github.com/lvgl/lvgl/pull/2719) -- feat(fsdrv) add driver based on Win32 API [`2701`](https://github.com/lvgl/lvgl/pull/2701) -- feat(span) indent supports percent for fix and break mode [`2693`](https://github.com/lvgl/lvgl/pull/2693) -- feat(rt-thread): implement rt-thread sconscirpt [`2674`](https://github.com/lvgl/lvgl/pull/2674) -- feat(lv_spinbox) support both right-to-left and left-to-right digit steps when clicking encoder button [`2644`](https://github.com/lvgl/lvgl/pull/2644) -- feat add support for rt-thread RTOS [`2660`](https://github.com/lvgl/lvgl/pull/2660) -- feat(disp): Enable rendering to display subsection [`2583`](https://github.com/lvgl/lvgl/pull/2583) -- feat(keyboard): add user-defined modes [`2651`](https://github.com/lvgl/lvgl/pull/2651) -- feat(event) add LV_EVENT_CHILD_CREATED/DELETED [`2618`](https://github.com/lvgl/lvgl/pull/2618) -- feat(btnmatrix/keyboard): add option to show popovers on button press [`2537`](https://github.com/lvgl/lvgl/pull/2537) -- feat(msgbox) add a content area for custom content [`2561`](https://github.com/lvgl/lvgl/pull/2561) -- feat(tests): Include debug information to test builds [`2568`](https://github.com/lvgl/lvgl/pull/2568) -- feat(drawing) hardware accelerated rendering by SDL2 [`2484`](https://github.com/lvgl/lvgl/pull/2484) -- feat(msgbox): omit title label unless needed [`2539`](https://github.com/lvgl/lvgl/pull/2539) -- feat(msgbox): add function to get selected button index [`2538`](https://github.com/lvgl/lvgl/pull/2538) -- feat(make) add lvgl interface target for micropython [`2529`](https://github.com/lvgl/lvgl/pull/2529) -- feat(obj) add lv_obj_move_to_index(obj, index), renamed lv_obj_get_child_id(obj) to lv_obj_get_index(obj) [`2514`](https://github.com/lvgl/lvgl/pull/2514) -- feat(obj) add lv_obj_swap() function [`2461`](https://github.com/lvgl/lvgl/pull/2461) -- feat(mem) LV_MEM_POOL_ALLOC [`2458`](https://github.com/lvgl/lvgl/pull/2458) -- feat(switch) add smooth animation when changing state [`2442`](https://github.com/lvgl/lvgl/pull/2442) -- feat(anim) add interface for handling lv_anim user data. [`2415`](https://github.com/lvgl/lvgl/pull/2415) -- feat(obj) add lv_is_initialized [`2402`](https://github.com/lvgl/lvgl/pull/2402) -- feat(obj) Backport keypad and encoder scrolling from v7 `lv_page` to v8 `lv_obj` [`2390`](https://github.com/lvgl/lvgl/pull/2390) -- feat(snapshot) add API to take snapshot for object [`2353`](https://github.com/lvgl/lvgl/pull/2353) -- feat(anim) add anim timeline [`2309`](https://github.com/lvgl/lvgl/pull/2309) -- feat(span) Add missing spangroup functions [`2379`](https://github.com/lvgl/lvgl/pull/2379) -- feat(img) add img_size property [`2284`](https://github.com/lvgl/lvgl/pull/2284) -- feat(calendar) improve MicroPython example [`2366`](https://github.com/lvgl/lvgl/pull/2366) -- feat(spinbox ) add function to set cursor to specific position [`2314`](https://github.com/lvgl/lvgl/pull/2314) - -- feat(timer) check if lv_tick_inc is called [`aa6641a`](https://github.com/lvgl/lvgl/commit/aa6641a6f1c1311ce7e0f94783ee7f582452a88f) -- feat(event, widgets) improve the parameter of LV_EVENT_DRAW_PART_BEGIN/END [`88c4859`](https://github.com/lvgl/lvgl/commit/88c485949fca2686357a7dee88d5730678ba9bc7) -- feat(docs) improvements to examples [`4b8c73a`](https://github.com/lvgl/lvgl/commit/4b8c73a5770657ab55bbe825f7887e28c55a8a4a) -- feat(obj) send LV_EVENT_DRAW_PART_BEGIN/END for MAIN and SCROLLBAR parts [`b203167`](https://github.com/lvgl/lvgl/commit/b203167c7583905e2cb4006e57a16432841a2353) -- feat(led) send LV_EVENT_DRAW_PART_BEGIN/END [`fcd4aa3`](https://github.com/lvgl/lvgl/commit/fcd4aa3924469c2a92ab6a04b7bc6de6304cc54a) -- feat(chart) send LV_EVENT_DRAW_PART_BEGIN/END before/after the division line drawing section. [`e0ae2aa`](https://github.com/lvgl/lvgl/commit/e0ae2aa106874b1cf60ba54dd043cde8f834f7e9) -- feat(tests) upload coverage to codecov [`4fff99d`](https://github.com/lvgl/lvgl/commit/4fff99da1dd2f8bd0c1e0012d81d46aaadb0d5a3) -- feat(conf) add better check for Kconfig default [`f8fe536`](https://github.com/lvgl/lvgl/commit/f8fe5366bb051cd5090e4a06658eb0d32decc0b3) -- feat(draw) add LV_BLEND_MODE_MULTIPLY [`cc78ef4`](https://github.com/lvgl/lvgl/commit/cc78ef450649a10f260649dc3ba19ac8a6b88e86) -- feat(test) add assert for screenshot compare [`2f7a005`](https://github.com/lvgl/lvgl/commit/2f7a005bd31c10d0a048f55641e4af11bcb5bbfa) -- feat(event) pass the scroll animation to LV_EVENT_SCROLL_BEGIN [`ca54ecf`](https://github.com/lvgl/lvgl/commit/ca54ecfe0eac880203d23b2d2244b9b63b9f7b77) -- feat(obj) place the scrollbar to the left with RTL base dir. [`906448e`](https://github.com/lvgl/lvgl/commit/906448ef6321f160859f21c5937180bb89d8ef1e) -- feat(log) allow overwriting LV_LOG_... macros [`17b8a76`](https://github.com/lvgl/lvgl/commit/17b8a76c4a887c9cf464484406a6631ea0194ad5) -- feat(arc) add support to LV_OBJ_FLAG_ADV_HITTEST [`dfa4f5c`](https://github.com/lvgl/lvgl/commit/dfa4f5cff561a60b4ffcec17e025f1e056854fff) -- feat(event) add LV_SCREEN_(UN)LOAD_START [`7bae9e3`](https://github.com/lvgl/lvgl/commit/7bae9e3ddde9d6bdc06ae437f20a789cd330a556) -- feat(obj) add lv_obj_del_delayed() [`c6a2e15`](https://github.com/lvgl/lvgl/commit/c6a2e15ec23c8e96f71bafa8e43ef67fc4a73d0a) -- feat(docs) add view on GitHub link [`a716ac6`](https://github.com/lvgl/lvgl/commit/a716ac6ed267e0a2e019fe7d2fda1bef0046cdc7) -- feat(event) add LV_EVENT_SCREEN_LOADED/UNLOADED events [`ee5369e`](https://github.com/lvgl/lvgl/commit/ee5369e2d2ce12f47c78a2bf339aa6fb2421ba2b) -- feat(textarea) remove the need of lv_textarea_set_align [`56ebb1a`](https://github.com/lvgl/lvgl/commit/56ebb1a4c8cc988482ac9f118fa3c654553db941) -- feat(rt-thread): support LVGL projects with GCC/Keil(AC5)/Keil(AC6)/IAR [`32d33fe`](https://github.com/lvgl/lvgl/commit/32d33fe4d9a38f6c215a6b9a631eb987339677ae) -- feat(docs) lazy load individual examples as well [`918d948`](https://github.com/lvgl/lvgl/commit/918d94801f2ee4ad7b6c075d96d2e9195459fbb8) - -- feat: add LV_USE_MEM_PERF/MONITOR_POS [`acd0f4f`](https://github.com/lvgl/lvgl/commit/acd0f4fbc71ffbfeb382b7af1fa52caf3cdcda6c) -- feat(canvas) add lv_canvas_set_px_opa [`b3b3ffc`](https://github.com/lvgl/lvgl/commit/b3b3ffc2b3b322f7401d15c4ba2ef0cdb00e2990) -- feat(event) add lv_obj_remove_event_cb_with_user_data [`4eddeb3`](https://github.com/lvgl/lvgl/commit/4eddeb35abee1f9cd2d1fd210f11cc096cb609c7) -- feat(obj) add lv_obj_get_x/y_aligned [`98bc1fe`](https://github.com/lvgl/lvgl/commit/98bc1fe09e12a64333e91b4c25327c283a700af5) - -### Performance - -- perf(draw) reimplement circle drawing algorithms [`2374`](https://github.com/lvgl/lvgl/pull/2374) -- perf(anim_timeline) add lv_anim_timeline_stop() [`2411`](https://github.com/lvgl/lvgl/pull/2411) - -- perf(obj) remove lv_obj_get_child_cnt from cycle limit checks [`ebb9ce9`](https://github.com/lvgl/lvgl/commit/ebb9ce913e604055724fd5f72562c9de0933ff73) -- perf(draw) reimplement rectangle drawing algorithms [`5b3d3dc`](https://github.com/lvgl/lvgl/commit/5b3d3dc8b35bdd16e5dea00ffc40b7a20471079d) -- perf(draw) ignore masks if they don't affect the current draw area [`a842791`](https://github.com/lvgl/lvgl/commit/a8427915c747dfe562f7f7e80adb6d1be5b2eeae) -- perf(refresh) optimize where to wait for lv_disp_flush_ready with 2 buffers [`d0172f1`](https://github.com/lvgl/lvgl/commit/d0172f14a454c98e6979322e7c2622a7001bb3e6) -- perf(draw) speed up additive blending [`3abe517`](https://github.com/lvgl/lvgl/commit/3abe517abf3b62366f2eb4bed77d5c7a691f7ed5) - -### Fixes - -- fix(bidi): add weak characters to the previous strong character's run [`2777`](https://github.com/lvgl/lvgl/pull/2777) -- fix(draw_img): radius mask doesn't work in specific condition [`2786`](https://github.com/lvgl/lvgl/pull/2786) -- fix(border_post): ignore bg_img_opa draw when draw border_post [`2788`](https://github.com/lvgl/lvgl/pull/2788) -- fix(refresh) switch to portable format specifiers [`2781`](https://github.com/lvgl/lvgl/pull/2781) -- fix(stm32) Mark unused variable in stm32 DMA2D driver [`2782`](https://github.com/lvgl/lvgl/pull/2782) -- fix(conf): Make LV_COLOR_MIX_ROUND_OFS configurable [`2766`](https://github.com/lvgl/lvgl/pull/2766) -- fix(misc): correct the comment and code style [`2769`](https://github.com/lvgl/lvgl/pull/2769) -- fix(draw_map) use existing variables instead function calls [`2776`](https://github.com/lvgl/lvgl/pull/2776) -- fix(draw_img): fix typos in API comments [`2773`](https://github.com/lvgl/lvgl/pull/2773) -- fix(draw_img):radius Mask doesn't work in Specific condition [`2775`](https://github.com/lvgl/lvgl/pull/2775) -- fix(proto) Remove redundant prototype declarations [`2771`](https://github.com/lvgl/lvgl/pull/2771) -- fix(conf) better support bool option from Kconfign [`2555`](https://github.com/lvgl/lvgl/pull/2555) -- fix(draw_border):draw error if radius == 0 and parent clip_corner == true [`2764`](https://github.com/lvgl/lvgl/pull/2764) -- fix(msgbox) add declaration for lv_msgbox_content_class [`2761`](https://github.com/lvgl/lvgl/pull/2761) -- fix(core) add L suffix to enums to ensure 16-bit compatibility [`2760`](https://github.com/lvgl/lvgl/pull/2760) -- fix(anim): add lv_anim_get_playtime [`2745`](https://github.com/lvgl/lvgl/pull/2745) -- fix(area) minor fixes [`2749`](https://github.com/lvgl/lvgl/pull/2749) -- fix(mem): ALIGN_MASK should equal 0x3 on 32bit platform [`2748`](https://github.com/lvgl/lvgl/pull/2748) -- fix(template) prototype error [`2755`](https://github.com/lvgl/lvgl/pull/2755) -- fix(anim): remove time_orig from lv_anim_t [`2744`](https://github.com/lvgl/lvgl/pull/2744) -- fix(draw_rect):bottom border lost if enable clip_corner [`2742`](https://github.com/lvgl/lvgl/pull/2742) -- fix(anim) and improvement [`2738`](https://github.com/lvgl/lvgl/pull/2738) -- fix(draw border):border draw error if border width > radius [`2739`](https://github.com/lvgl/lvgl/pull/2739) -- fix(fsdrv): remove the seek call in fs_open [`2736`](https://github.com/lvgl/lvgl/pull/2736) -- fix(fsdrv): skip the path format if LV_FS_xxx_PATH not defined [`2726`](https://github.com/lvgl/lvgl/pull/2726) -- fix: mark unused variable with LV_UNUSED(xxx) instead of (void)xxx [`2734`](https://github.com/lvgl/lvgl/pull/2734) -- fix(fsdrv): fix typo error in commit 752fba34f677ad73aee [`2732`](https://github.com/lvgl/lvgl/pull/2732) -- fix(fsdrv): return error in case of the read/write failure [`2729`](https://github.com/lvgl/lvgl/pull/2729) -- fix(refr) silence compiler warning due to integer type mismatch [`2722`](https://github.com/lvgl/lvgl/pull/2722) -- fix(fs): fix the off-by-one error in the path function [`2725`](https://github.com/lvgl/lvgl/pull/2725) -- fix(timer): remove the code duplication in lv_timer_exec [`2708`](https://github.com/lvgl/lvgl/pull/2708) -- fix(async): remove the wrong comment from lv_async_call [`2707`](https://github.com/lvgl/lvgl/pull/2707) -- fix(kconfig): change CONFIG_LV_THEME_DEFAULT_FONT to CONFIG_LV_FONT_DEFAULT [`2703`](https://github.com/lvgl/lvgl/pull/2703) -- fix add MP support for LVGL 3rd party libraries [`2666`](https://github.com/lvgl/lvgl/pull/2666) -- fix(png) memory leak for sjpg and use lv_mem_... in lv_png [`2704`](https://github.com/lvgl/lvgl/pull/2704) -- fix(gif) unified whence and remove off_t [`2690`](https://github.com/lvgl/lvgl/pull/2690) -- fix(rt-thread): include the rt-thread configuration header file [`2692`](https://github.com/lvgl/lvgl/pull/2692) -- fix(rt-thread): fix the ci error [`2691`](https://github.com/lvgl/lvgl/pull/2691) -- fix(fsdrv) minor fs issue [`2682`](https://github.com/lvgl/lvgl/pull/2682) -- fix(hal) fix typos and wording in docs for lv_hal_indev.h [`2685`](https://github.com/lvgl/lvgl/pull/2685) -- fix(hal tick): add precompile !LV_TICK_CUSTOM for global variables and lv_tick_inc() [`2675`](https://github.com/lvgl/lvgl/pull/2675) -- fix(anim_timeline) avoid calling lv_anim_del(NULL, NULL) [`2628`](https://github.com/lvgl/lvgl/pull/2628) -- fix(kconfig) sync Kconfig with the latest lv_conf_template.h [`2662`](https://github.com/lvgl/lvgl/pull/2662) -- fix(log) reduce the stack usage in log function [`2649`](https://github.com/lvgl/lvgl/pull/2649) -- fix(conf) make a better style alignment in lv_conf_internal.h [`2652`](https://github.com/lvgl/lvgl/pull/2652) -- fix(span) eliminate warning in lv_get_snippet_cnt() [`2659`](https://github.com/lvgl/lvgl/pull/2659) -- fix(config): remove the nonexistent Kconfig [`2654`](https://github.com/lvgl/lvgl/pull/2654) -- fix(Kconfig): add LV_MEM_ADDR config [`2653`](https://github.com/lvgl/lvgl/pull/2653) -- fix(log): replace printf with fwrite to save the stack size [`2655`](https://github.com/lvgl/lvgl/pull/2655) -- fix typos [`2634`](https://github.com/lvgl/lvgl/pull/2634) -- fix LV_FORMAT_ATTRIBUTE fix for gnu > 4.4 [`2631`](https://github.com/lvgl/lvgl/pull/2631) -- fix(meter) make lv_meter_indicator_type_t of type uint8_t [`2632`](https://github.com/lvgl/lvgl/pull/2632) -- fix(span):crash if span->txt = "" [`2616`](https://github.com/lvgl/lvgl/pull/2616) -- fix(disp) set default theme also for non-default displays [`2596`](https://github.com/lvgl/lvgl/pull/2596) -- fix(label):LONG_DOT mode crash if text Utf-8 encode > 1 [`2591`](https://github.com/lvgl/lvgl/pull/2591) -- fix( example) in lv_example_scroll_3.py float_btn should only be created once [`2602`](https://github.com/lvgl/lvgl/pull/2602) -- fix lv_deinit when LV_USE_GPU_SDL is enabled [`2598`](https://github.com/lvgl/lvgl/pull/2598) -- fix add missing LV_ASSERT_OBJ checks [`2575`](https://github.com/lvgl/lvgl/pull/2575) -- fix(lv_conf_internal_gen.py) formatting fixes on the generated file [`2542`](https://github.com/lvgl/lvgl/pull/2542) -- fix(span) opa bug [`2584`](https://github.com/lvgl/lvgl/pull/2584) -- fix(snapshot) snapshot is affected by parent's style because of wrong coords [`2579`](https://github.com/lvgl/lvgl/pull/2579) -- fix(label):make draw area contain ext_draw_size [`2587`](https://github.com/lvgl/lvgl/pull/2587) -- fix(btnmatrix): make ORed values work correctly with lv_btnmatrix_has_btn_ctrl [`2571`](https://github.com/lvgl/lvgl/pull/2571) -- fix compiling of examples when cmake is used [`2572`](https://github.com/lvgl/lvgl/pull/2572) -- fix(lv_textarea) fix crash while delete non-ascii character in pwd mode [`2549`](https://github.com/lvgl/lvgl/pull/2549) -- fix(lv_log.h): remove the duplicated semicolon from LV_LOG_xxx [`2544`](https://github.com/lvgl/lvgl/pull/2544) -- fix(zoom) multiplication overflow on 16-bit platforms [`2536`](https://github.com/lvgl/lvgl/pull/2536) -- fix(printf) use __has_include for more accurate limits information [`2532`](https://github.com/lvgl/lvgl/pull/2532) -- fix(font) add assert in lv_font.c if the font is NULL [`2533`](https://github.com/lvgl/lvgl/pull/2533) -- fix(lv_types.h): remove c/c++ compiler version check [`2525`](https://github.com/lvgl/lvgl/pull/2525) -- fix(lv_utils.c): remove the unneeded header inclusion [`2526`](https://github.com/lvgl/lvgl/pull/2526) -- fix(Kconfig) fix the comment in LV_THEME_DEFAULT_DARK [`2524`](https://github.com/lvgl/lvgl/pull/2524) -- fix(sprintf) add format string for rp2 port [`2512`](https://github.com/lvgl/lvgl/pull/2512) -- fix(span) fix some bugs (overflow,decor,align) [`2518`](https://github.com/lvgl/lvgl/pull/2518) -- fix(color) Bad cast in lv_color_mix() caused UB with 16bpp or less [`2509`](https://github.com/lvgl/lvgl/pull/2509) -- fix(imgbtn) displayed incorrect when the coordinate is negative [`2501`](https://github.com/lvgl/lvgl/pull/2501) -- fix(event) be sure to move all elements in copy “lv_obj_remove_event_cb” [`2492`](https://github.com/lvgl/lvgl/pull/2492) -- fix(draw) use correct pointer in lv_draw_mask assertion [`2483`](https://github.com/lvgl/lvgl/pull/2483) -- feat(mem) LV_MEM_POOL_ALLOC [`2458`](https://github.com/lvgl/lvgl/pull/2458) -- fix(cmake) require 'main' for Micropython [`2444`](https://github.com/lvgl/lvgl/pull/2444) -- fix(docs) add static keyword to driver declaration [`2452`](https://github.com/lvgl/lvgl/pull/2452) -- fix(build) remove main component dependency [`2420`](https://github.com/lvgl/lvgl/pull/2420) -- fix circle drawing algorithms [`2413`](https://github.com/lvgl/lvgl/pull/2413) -- fix(docs) wrong spelling of words in pictures [`2409`](https://github.com/lvgl/lvgl/pull/2409) -- fix(chart) fixed point-following cursor during vertical scroll in charts [`2400`](https://github.com/lvgl/lvgl/pull/2400) -- fix(chart) fixed cursor positioning with large Y rescaling without LV_USE_LARGE_COORD [`2399`](https://github.com/lvgl/lvgl/pull/2399) -- fix(grid.h) typos [`2395`](https://github.com/lvgl/lvgl/pull/2395) -- fix(anim_timeline) heap use after free [`2394`](https://github.com/lvgl/lvgl/pull/2394) -- fix(snapshot) add missing import on MicroPython example [`2389`](https://github.com/lvgl/lvgl/pull/2389) -- fix(disp) Fix assert failure in lv_disp_remove [`2382`](https://github.com/lvgl/lvgl/pull/2382) -- fix(span) modify the underline position [`2376`](https://github.com/lvgl/lvgl/pull/2376) -- fix(color) remove extraneous _LV_COLOR_MAKE_TYPE_HELPER [`2372`](https://github.com/lvgl/lvgl/pull/2372) -- fix(spinner) should not be clickable [`2373`](https://github.com/lvgl/lvgl/pull/2373) -- fix(workflow) silence SDL warning for MicroPython [`2367`](https://github.com/lvgl/lvgl/pull/2367) -- fix (span) fill LV_EVENT_GET_SELF_SIZE [`2360`](https://github.com/lvgl/lvgl/pull/2360) -- fix(workflow) change MicroPython workflow to use master [`2358`](https://github.com/lvgl/lvgl/pull/2358) -- fix(disp) fix memory leak in lv_disp_remove [`2355`](https://github.com/lvgl/lvgl/pull/2355) -- fix(lv_obj.h)typos [`2350`](https://github.com/lvgl/lvgl/pull/2350) -- fix(obj) delete useless type conversion [`2343`](https://github.com/lvgl/lvgl/pull/2343) -- fix(lv_obj_scroll.h) typos [`2345`](https://github.com/lvgl/lvgl/pull/2345) -- fix(txt) enhance the function of break_chars [`2327`](https://github.com/lvgl/lvgl/pull/2327) - -- fix(vglite): update for v8 [`e3e3eea`](https://github.com/lvgl/lvgl/commit/e3e3eeaf8c1593d384c6537244a301cdc1abd3d9) -- fix(widgets) use lv_obj_class for all the widgets [`3fb8baf`](https://github.com/lvgl/lvgl/commit/3fb8baf503411e006765020f60f295a4be16ba2d) -- fix(refr) reduce the nesting level in lv_refr_area [`2df1282`](https://github.com/lvgl/lvgl/commit/2df12827dda3f217fa26d2c98445a9b3f1ff22ab) -- fix(pxp): update for v8 [`8a2a4a1`](https://github.com/lvgl/lvgl/commit/8a2a4a11c81d029ff737980b883c62dfbb4b44c6) -- fix(obj) move clean ups from lv_obj_del to lv_obj_destructor [`b063937`](https://github.com/lvgl/lvgl/commit/b06393747f61e36996a0cb22f9309c951f900ded) -- fix (draw) fix arc bg image drawing with full arcs [`c3b6c6d`](https://github.com/lvgl/lvgl/commit/c3b6c6dc64735e1bde492a8d5570f3e3a9500a0b) -- fix(pxp): update RTOS macro for SDK 2.10 [`00c3eb1`](https://github.com/lvgl/lvgl/commit/00c3eb197cb85e480809d97eb722589d75d81d94) -- fix(textarea) style update in oneline mode + improve sroll to cursor [`60d9a5e`](https://github.com/lvgl/lvgl/commit/60d9a5e493bf17ee9887ba44890d00905bc55970) -- feat(led) send LV_EVENT_DRAW_PART_BEGIN/END [`fcd4aa3`](https://github.com/lvgl/lvgl/commit/fcd4aa3924469c2a92ab6a04b7bc6de6304cc54a) -- fix warnings introduced by 3fb8baf5 [`e302403`](https://github.com/lvgl/lvgl/commit/e3024032dc5de2ece4fa17059ebad4189a5fa670) -- fix(roller) fix partial redraw of the selected area [`6bc40f8`](https://github.com/lvgl/lvgl/commit/6bc40f8c4417a94ab26b25220324e471e03ce443) -- fix(flex) fix layout update and invalidation issues [`5bd82b0`](https://github.com/lvgl/lvgl/commit/5bd82b038b841c0f7c93bbdacdbd61d6b9585846) -- fix(indev) focus on objects on release instead of press [`76a8293`](https://github.com/lvgl/lvgl/commit/76a8293375b705a5e02e4f9c8f8a42d99db762e2) -- fix tests [`449952e`](https://github.com/lvgl/lvgl/commit/449952e3b78d02802960dabb0207b960c82e8e5a) -- fix(dropdown) forget the selected option on encoder longpress [`e66b935`](https://github.com/lvgl/lvgl/commit/e66b9350617eee15e94fb6a353283433e4c2c494) -- fix(obj) improve how the focusing indev is determined [`a04f2de`](https://github.com/lvgl/lvgl/commit/a04f2dea644787ea25ef988a43e10c5005c57066) -- fix(workflow) speed up MicroPython workflow [`38ad5d5`](https://github.com/lvgl/lvgl/commit/38ad5d548b2024f0f742ba769a6715fc376541a1) -- fix(test) do not including anything in test files when not running tests [`9043860`](https://github.com/lvgl/lvgl/commit/90438603ad020799b14bc9839a51dceedfdabd7a) -- fix tests [`36b9db3`](https://github.com/lvgl/lvgl/commit/36b9db38b728b40096b9ee613f4482ef9654d570) -- fix(scroll) fire LV_EVENT_SCROLL_BEGIN in the same spot for both axes [`b158932`](https://github.com/lvgl/lvgl/commit/b1589326d41924292fbc2c62b474dec288bc9da5) -- fix(btnmatrix) fix button invalidation on focus change [`77cedfa`](https://github.com/lvgl/lvgl/commit/77cedfa08f3f8aec67c6a2fe8e5ae9bab5a0e7c7) -- fix(tlsf) do not use <assert.h> [`c9745b9`](https://github.com/lvgl/lvgl/commit/c9745b9c4ea9e7c6de4bd8ad9a0d8001bfb91165) -- fix(template) include lvgl.h in lv_port_*_template.c files [`0ae15bd`](https://github.com/lvgl/lvgl/commit/0ae15bd470548ff159f44e7c3f4b225ab3eec928) -- fix(docs) add margin for example description [`b5f632e`](https://github.com/lvgl/lvgl/commit/b5f632ee7a265ce4f2472522b422b8cd5366aaa9) -- fix(imgbtn) use the correct src in LV_EVENT_GET_SELF_SIZE [`04c515a`](https://github.com/lvgl/lvgl/commit/04c515adac764761e60094db789269130ac89b36) -- fix(color) remove extraneous cast for 8-bit color [`157534c`](https://github.com/lvgl/lvgl/commit/157534cdbfaa7b769114126f74c38661b99d025b) -- fix(workflow) use same Unix port variant for MicroPython submodules [`ac68b10`](https://github.com/lvgl/lvgl/commit/ac68b10e539ddb8bde47ec453a99f2b876e12c65) -- fix(README) improve grammar [`de81889`](https://github.com/lvgl/lvgl/commit/de81889cbdc889360e8bc00684f9ca77ff97d89f) -- fix(printf) skip defining attribute if pycparser is used [`ee9bbea`](https://github.com/lvgl/lvgl/commit/ee9bbea29c807707353e8b9ec09048990de18e4e) -- fix(README) spelling correction [`41869f2`](https://github.com/lvgl/lvgl/commit/41869f238e773e599959c9ef2fee0b7206712ee2) -- fix(color) overflow with 16-bit color depth [`fe6d8d7`](https://github.com/lvgl/lvgl/commit/fe6d8d7636ae283afda68e85b2d1f143d8d05462) -- fix(docs) consider an example to be visible over a wider area [`145a0fa`](https://github.com/lvgl/lvgl/commit/145a0fad0857dad7f2066e7d22436827e0d3fd7d) -- fix(codecov) disable uploading coverage for pull requests [`27d88de`](https://github.com/lvgl/lvgl/commit/27d88de899e91cd5bb9fc69fe9d71cb180cfb44b) -- fix(arc) disable LV_OBJ_FLAG_SCROLL_CHAIN by default [`f172eb3`](https://github.com/lvgl/lvgl/commit/f172eb3fd78481d6076ead395abfd765646ad21e) -- fix(template) update lv_objx_template to v8 [`38bb8af`](https://github.com/lvgl/lvgl/commit/38bb8afc16720e8d8fe6e72be6fae4f9da593bbc) -- fix(align) avoid circular references with LV_SIZE_CONTENT [`038b781`](https://github.com/lvgl/lvgl/commit/038b78122e72db67cec886d09eb2d21aaa019df7) -- fix(draw) with additive blending with 32-bit color depth [`786db2a`](https://github.com/lvgl/lvgl/commit/786db2afe6458e24681b8a40fa798429956d3420) -- fix(arc) fix arc invalidation again [`5ced080`](https://github.com/lvgl/lvgl/commit/5ced08001c384bf7c840750c0e254b5f0115a070) -- fix(align) fix lv_obj_align_to [`93b38e9`](https://github.com/lvgl/lvgl/commit/93b38e92be9ed3ae050a1ee6e5b680ab43fd4850) -- fix(scroll) keep the scroll position on object deleted [`52edbb4`](https://github.com/lvgl/lvgl/commit/52edbb46b0741d2761a11ef1b3d516ec96a7c8b3) -- fix(dropdown) handle LV_KEY_ENTER [`8a50edd`](https://github.com/lvgl/lvgl/commit/8a50edd0689c7133ca18fd476596ddc4088f86a9) -- fix various minor warnings [`924bc75`](https://github.com/lvgl/lvgl/commit/924bc754adcbabaf3518bac6067e7ea37f2f0f04) -- fix(textarea) various cursor drawing fixes [`273a0eb`](https://github.com/lvgl/lvgl/commit/273a0eb32f04e81f326288a71682bea1c812c76a) -- fix(label) consider base dir lv_label_get_letter_pos in special cases [`6df5122`](https://github.com/lvgl/lvgl/commit/6df51225c261b252f0935804b0357d6e585da53d) -- fix(imgbtn) add lv_imgbtn_set_state [`26e15fa`](https://github.com/lvgl/lvgl/commit/26e15fa577f97d510b218fb95fc9a4bd440b00bc) -- fix(printf) add (int) casts to log messages to avoid warnings on %d [`d9d3f27`](https://github.com/lvgl/lvgl/commit/d9d3f271267e760c8459b65c392914143a58b89c) -- fix(test) silence make [`7610d38`](https://github.com/lvgl/lvgl/commit/7610d38bb044b1bd95dd68ab57f79f82e2527cca) -- fix(test) silence make [`37fd9d8`](https://github.com/lvgl/lvgl/commit/37fd9d8a24c276079ed26b5d6704bcefc9f8dc70) -- fix(calendar) update the MP example [`0bab4a7`](https://github.com/lvgl/lvgl/commit/0bab4a72cf769872a9adfd5bfa1c4536e6f909a8) -- fix(scroll) fix scroll_area_into_view with objects larger than the parent [`5240fdd`](https://github.com/lvgl/lvgl/commit/5240fdda5ccc33d166f8201818868add5d1d6d0d) -- fix(msgbox) handle NULL btn map parameter [`769c4a3`](https://github.com/lvgl/lvgl/commit/769c4a30cf962be1f74e0b1cd7ebaefbd6ba8a8b) -- fix (scroll) do not send unnecessary scroll end events [`3ce5226`](https://github.com/lvgl/lvgl/commit/3ce5226c9d9db279904c4f076ae77e6e03572e4c) -- fix(obj_pos) consider all alignments in content size calculation but only if x and y = 0 [`5b27ebb`](https://github.com/lvgl/lvgl/commit/5b27ebb4097166f8c4a50ee5d39249939bf79814) -- fix(img decoder) add error handling if the dsc->data = NULL [`d0c1c67`](https://github.com/lvgl/lvgl/commit/d0c1c673a8ec17b842ebf97d5f21938ec8901346) -- fix(txt): skip basic arabic vowel characters when processing conjunction [`5b54800`](https://github.com/lvgl/lvgl/commit/5b548006eda0695cabf2ee237a7faee8c69e4659) -- fix(typo) rename LV_OBJ_FLAG_SNAPABLE to LV_OBJ_FLAG_SNAPPABLE [`e697807`](https://github.com/lvgl/lvgl/commit/e697807cf5c01be2531fc52df78ecad75ce39a7a) -- fix(lv_printf.h): to eliminate the errors in Keil and IAR [`f6d7dc7`](https://github.com/lvgl/lvgl/commit/f6d7dc7f00d0a20f7f1966ed890a225b1fc87107) -- fix(draw) fix horizontal gradient drawing [`4c034e5`](https://github.com/lvgl/lvgl/commit/4c034e56e049ad3d9bca5eb4b3e8721e60c11d36) -- fix(dropdown) use LV_EVENT_READY/CANCEL on list open/close [`4dd1d56`](https://github.com/lvgl/lvgl/commit/4dd1d566fc30bbaf1424dda8b78df97c6bf07402) -- fix(table) clip overflowing content [`8c15933`](https://github.com/lvgl/lvgl/commit/8c15933030cad6cdbfe4967f566ed6959547fada) -- fix(test) add #if guard to exclude test related files from the build [`c12a22e`](https://github.com/lvgl/lvgl/commit/c12a22ee87681d1344696a3b9531e9100808eb85) -- fix(test) add #if guard to exclude test related files from the build [`fc364a4`](https://github.com/lvgl/lvgl/commit/fc364a466c0693aefa0401f5eddee2bbc3037ef0) -- fix(freetype) fix underline calculation [`76c8ee6`](https://github.com/lvgl/lvgl/commit/76c8ee6b7e81d8640aa5ba620947660a1c90482b) -- fix(style) refresh ext. draw pad for padding and bg img [`37a5d0c`](https://github.com/lvgl/lvgl/commit/37a5d0c85ac28718f4f32eadff3ddaf6b474cf75) -- fix(draw) underflow in subpixel font drawing [`6d5ac70`](https://github.com/lvgl/lvgl/commit/6d5ac702ad20ac3092c224ca36e412b0d6cec321) -- fix(scrollbar) hide the scrollbar if the scrollble flag is removed [`188a946`](https://github.com/lvgl/lvgl/commit/188a9467b1bd45d42368a687736a9151d081c1e8) -- fix(color): minor fixes(#2767) [`a4978d0`](https://github.com/lvgl/lvgl/commit/a4978d0913be705caffe3c080524bb7915a5e3e2) -- fix(group) skip object if an of the parents is hidden [`5799c10`](https://github.com/lvgl/lvgl/commit/5799c1084398b365c7a9669406d4fbe258a501ef) -- fix(obj) fix size invalidation issue on padding change [`33ba722`](https://github.com/lvgl/lvgl/commit/33ba7225f55f0cb17f73ce891466c7ebe1327898) -- fix(label) do not bidi process text in lv_label_ins_text [`e95efc1`](https://github.com/lvgl/lvgl/commit/e95efc152f52b7495acb011353a55b3663f7860e) -- fix(refr) set disp_drv->draw_buf->flushing_last correctly with sw rotation [`c514bdd`](https://github.com/lvgl/lvgl/commit/c514bddd9b4064e2eba0c3ec4c7a51415acd74e4) -- fix(draw) fix drawing small arcs [`8081599`](https://github.com/lvgl/lvgl/commit/8081599e9b65c758bbdc0168f857515bebaf1c80) -- fix(chart) invalidation with LV_CHART_UPDATE_MODE_SHIFT [`d61617c`](https://github.com/lvgl/lvgl/commit/d61617cd67f792908a1554a44c663c73a41bb357) -- fix(build) fix micropython build error [`54338f6`](https://github.com/lvgl/lvgl/commit/54338f6e57518a59615bdd191fcf5af1365eabea) -- fix(draw) fix border width of simple (radius=0, no masking) borders [`20f1867`](https://github.com/lvgl/lvgl/commit/20f186759664f31f07d6613ea8d77df256cd4597) -- fix(calendar) fix calculation today and highlighted day [`8f0b5ab`](https://github.com/lvgl/lvgl/commit/8f0b5ab0230007fa72127b78db500b9ceb84bf35) -- fix(style) initialize colors to black instead of zero [`524f8dd`](https://github.com/lvgl/lvgl/commit/524f8dd50b4407c78fa6cd947c42e73eab401da1) -- fix(sjpg) remove unnecessary typedefs [`c2d93f7`](https://github.com/lvgl/lvgl/commit/c2d93f78b98ba347001bd29d58b6654492bb8d70) -- fix(label) fix clipped italic letters [`2efa6dc`](https://github.com/lvgl/lvgl/commit/2efa6dce78604cdf422ff233a99f7dd5f06b821c) -- fix(draw) shadow drawing with large shadow width [`f810265`](https://github.com/lvgl/lvgl/commit/f810265c0d91135b71ae110d33d43841ec0e44f8) -- fix(dropdown) add missing invalidations [`33b5d4a`](https://github.com/lvgl/lvgl/commit/33b5d4a4fe6f28962ee7988f74d5ae842dc49b04) -- fix(dropdown) adjust the handling of keys sent to the dropdown [`e41c507`](https://github.com/lvgl/lvgl/commit/e41c50780495c7d6ac6a2b0edf12fc98c9d85a6b) -- fix(disp) be sure the pending scr load animation is finished in lv_scr_load_anim [`eb6ae52`](https://github.com/lvgl/lvgl/commit/eb6ae526432453e4b9dbc7a760cd65d164050548) -- fix(color) fox color premult precision with 16-bit color depth [`f334226`](https://github.com/lvgl/lvgl/commit/f3342269f272c474265700527f52d3ba92111531) -- fix(obj_pos) save x,y even if the object is on a layout [`a9b660c`](https://github.com/lvgl/lvgl/commit/a9b660c278658224f05fbe43d0199c48711db9fd) -- fix(scrollbar) hide the scrollbar if the scrollable flag is removed [`d9c6ad0`](https://github.com/lvgl/lvgl/commit/d9c6ad0425e761d605124e4555adc72854fec4a6) -- fix(dropdown) fix list position with RTL base direction [`79edb37`](https://github.com/lvgl/lvgl/commit/79edb37b0ab5015111bade6074fda81ae101b91b) -- fix(obj) fix lv_obj_align_to with RTL base direction [`531afcc`](https://github.com/lvgl/lvgl/commit/531afcc6cec7f67df06e369a185aef6fdc85af7b) -- fix(chart) fix sending LV_EVENT_DRAW_PART_BEGIN/END for the cursor [`34b8cd9`](https://github.com/lvgl/lvgl/commit/34b8cd9c12604bc1029efa39bd66322b8b771dbe) -- fix(arduino) fix the prototype of my_touchpad_read in the LVGL_Arduino.ino [`1a62f7a`](https://github.com/lvgl/lvgl/commit/1a62f7a619faa93406bc5895ac3338c232de2226) -- fix(checkbox) consider the bg border when positioning the indicator [`a39dac9`](https://github.com/lvgl/lvgl/commit/a39dac9e5c82ecabd135953acafa335941ca0a89) -- fix(dropdown) send LV_EVENT_VALUE_CHANGED to allow styling of the list [`dae7039`](https://github.com/lvgl/lvgl/commit/dae7039803030f908986602b3ce308dc1c3974af) -- fix(group) fix infinite loop [`bdce0bc`](https://github.com/lvgl/lvgl/commit/bdce0bc60cb6e938ce39a0defe5b24249bc66a99) -- fix(keyboard) use LVGL heap functions instead of POSIX [`b20a706`](https://github.com/lvgl/lvgl/commit/b20a706112a3107db13bbd405991ece4cbe00a88) -- fix(blend) fix green channel with additive blending [`78158f0`](https://github.com/lvgl/lvgl/commit/78158f039f19eb17bf1b7c173922c1af26c1e528) -- fix(btnmatrix) do not show pressed, focused or focus key states on disabled buttons [`3df2a74`](https://github.com/lvgl/lvgl/commit/3df2a7444758d2df023f321ccb5931de44af2a48) -- fix(font) handle the last pixel of the glyphs in font loader correctly [`fa98989`](https://github.com/lvgl/lvgl/commit/fa9898941f8efa1966cb6f326d1eebdd31211d04) -- fix(table) fix an off-by-one issue in self size calculation [`ea2545a`](https://github.com/lvgl/lvgl/commit/ea2545ae5dade0845889174737d072137bbb6591) -- fix shadowed variable [`e209260`](https://github.com/lvgl/lvgl/commit/e20926056b28bb64f38abc764a4fca045757e800) -- fix shadowed variable [`df60018`](https://github.com/lvgl/lvgl/commit/df600183f211bde0ff34add973a7a401a1da9af1) -- fix(chart) be sure the chart doesn't remain scrolled out on zoom out [`ad5b1bd`](https://github.com/lvgl/lvgl/commit/ad5b1bdc00a4a44e775a280f8b686353ef4f2a38) -- fix(docs) commit to meta repo as lvgl-bot instead of actual commit author [`f0e8549`](https://github.com/lvgl/lvgl/commit/f0e8549fe14d4e95aedcc98a63acce5a4ad1145b) -- fix(table) invalidate the table on cell value change [`cb3692e`](https://github.com/lvgl/lvgl/commit/cb3692e3029ae452eab04dce21715b7863a9f2a1) -- fix(group) allow refocusing objects [`1520208`](https://github.com/lvgl/lvgl/commit/1520208b14c38713719f507273024624a0f54f1a) -- fix(tabview) fix with left and right tabs [`17c5744`](https://github.com/lvgl/lvgl/commit/17c57449eeae8a693ad5601cf4169cf44d57d5c9) -- fix(msgbox) create modals on top layer instead of act screen [`5cf6303`](https://github.com/lvgl/lvgl/commit/5cf6303e741ec22e2e87f69af4109855eb637e63) -- fix(theme) show disabled state on buttons of btnmatrix, msgbox and keyboard [`0be582b`](https://github.com/lvgl/lvgl/commit/0be582b391e60774d6158411b835b679b010a99b) -- fix(label) update lv_label_get_letter_pos to work with LV_BASE_DIR_AUTO too [`580e05a`](https://github.com/lvgl/lvgl/commit/580e05a0e1531d86d5229ade4ced2c336fbce634) -- fix(label) fix in lv_label_get_letter_pos with when pos==line_start [`58f3f56`](https://github.com/lvgl/lvgl/commit/58f3f5625c2b29278c3e122d8eeba4d9bc597db9) -- fix(gif) replace printf statement with LVGL logging [`56f62b8`](https://github.com/lvgl/lvgl/commit/56f62b8d7356017319d21d44a8f450705ec6486b) -- fix(docs) add fsdrv back [`64527a5`](https://github.com/lvgl/lvgl/commit/64527a5a1ba9d37883c1303a3d4ee1a41e9b4ed3) -- fix(table) remove unnecessary invalidation on pressing [`6f90f9c`](https://github.com/lvgl/lvgl/commit/6f90f9cefba0bc1ea74e737e0e659402f0309cf7) -- fix(chart) draw line chart indicator (bullet) [`fba37a3`](https://github.com/lvgl/lvgl/commit/fba37a30abd1b4d7af78a288fb61dccacc99da08) -- fix(anim) return the first anim if exec_cb is NULL in lv_anim_get() [`fb7ea10`](https://github.com/lvgl/lvgl/commit/fb7ea1040153bd0f2d5c282f9fb31add32c55ce9) -- fix(label) fix lv_label_get_letter_on with BIDI enabled [`192419e`](https://github.com/lvgl/lvgl/commit/192419e7bb300bd64b51d684827719fe1c22cfdb) -- fix(checkbox) add missing invalidations [`bb39e9d`](https://github.com/lvgl/lvgl/commit/bb39e9d6f95235445e3ea1bc52b0d5a1b7a2e24a) -- fix(draw) fix gradient calculation of the rectangle is clipped [`13e3470`](https://github.com/lvgl/lvgl/commit/13e347055bd54c37e7fcb645120ea9ab3134ebec) -- fix(chart) fix typo in 655f42b8 [`6118d63`](https://github.com/lvgl/lvgl/commit/6118d63c2f23e2a157c84a010dcfa0d1fa851382) -- fix(example) fix lv_example_chart_2 [`89081c2`](https://github.com/lvgl/lvgl/commit/89081c2d6ee418b326538e1f39345d43864993c8) -- fix(calendar) fix the position calculation today [`ad05e19`](https://github.com/lvgl/lvgl/commit/ad05e196fb3937ebcba211495013700c0022f777) -- fix(tick) minor optimization on lv_tick_inc call test [`b4305df`](https://github.com/lvgl/lvgl/commit/b4305df5745684a785be071149de8dd342817db4) -- fix(docs) use let instead of const for variable which gets changed [`3cf5751`](https://github.com/lvgl/lvgl/commit/3cf5751461d6a85974da4e5c66593736ae140a1a) -- fix(theme) fix the switch style in the default theme [`0c0dc8e`](https://github.com/lvgl/lvgl/commit/0c0dc8ea30289254732cbba7ada7fd4f092caf22) -- fix(tlsf) undef printf before define-ing it [`cc935b8`](https://github.com/lvgl/lvgl/commit/cc935b87f69e6107d12d9ba4a2c83103f7dd4356) -- fix(msgbox) prevent the buttons being wider than the msgbox [`73e036b`](https://github.com/lvgl/lvgl/commit/73e036bba748e8677f219f573cba5f82c4158a17) -- fix(chart) don't draw series lines with < 1 points [`655f42b`](https://github.com/lvgl/lvgl/commit/655f42b852669f27ab8bfde84bf70cf0b7ea027d) -- fix(tests) remove src/test_runners when cleaning [`6726b0f`](https://github.com/lvgl/lvgl/commit/6726b0f5df3f4689368782b601bb01f76498123b) -- fix(label) remove duplicated lv_obj_refresh_self_size [`a070ecf`](https://github.com/lvgl/lvgl/commit/a070ecfe8c1cf7c07c035ba6c35c3ffaef56d6e1) -- fix(colorwheel) disable LV_OBJ_FLAG_SCROLL_CHAIN by default [`48d1c29`](https://github.com/lvgl/lvgl/commit/48d1c292a3c19380d5669baf911954cc1b083d43) - -- fix(obj) do not set the child's position in lv_obj_set_parent [`d89a5fb`](https://github.com/lvgl/lvgl/commit/d89a5fbbd2af33cf759c120e6a14b334099c4c98) -- feat: add LV_USE_MEM_PERF/MONITOR_POS [`acd0f4f`](https://github.com/lvgl/lvgl/commit/acd0f4fbc71ffbfeb382b7af1fa52caf3cdcda6c) -- fix(scroll) in scroll to view functions respect disabled LV_OBJ_FLAG_SCROLLABLE [`9318e02`](https://github.com/lvgl/lvgl/commit/9318e02ef5e29d2f6ce0ab4b2aa67c6542752822) -- fix(flex) remove unused variable [`747b6a2`](https://github.com/lvgl/lvgl/commit/747b6a2a9af9bafe4e6c778cca23e278cb7e4ea4) -- feat(canvas) add lv_canvas_set_px_opa [`b3b3ffc`](https://github.com/lvgl/lvgl/commit/b3b3ffc2b3b322f7401d15c4ba2ef0cdb00e2990) -- fix(textarea) allow using cursor with not full bg_opa [`c9d3965`](https://github.com/lvgl/lvgl/commit/c9d396571d0726aab5d011f37df648d337e5bc12) -- fix(txt) _lv_txt_get_next_line return 0 on empty texts [`82f3fbc`](https://github.com/lvgl/lvgl/commit/82f3fbcad7b710a89b876c32f3583090c99e847c) -- fix(btnmatrix) always update row_cnt [`86012ae`](https://github.com/lvgl/lvgl/commit/86012aefc7197209357290c780029aa39b3738dc) -- fix(scroll) minor fixes on obj scroll handling [`a4128a8`](https://github.com/lvgl/lvgl/commit/a4128a83562e0daacd949333ba7cbfec650f8050) -- fix(table) consider border width for cell positions [`f2987b6`](https://github.com/lvgl/lvgl/commit/f2987b6591046f1384b0089187fd81da10834021) -- fix(log) be sure LV_LOG_... is not empty if logs are disabled [`47734c4`](https://github.com/lvgl/lvgl/commit/47734c4abedf6b6005069d15a8c4c2fcff73f85e) -- fix(arc) fix LV_ARC_MODE_REVERSE [`df3b969`](https://github.com/lvgl/lvgl/commit/df3b96900b1266ed4856438d9121e39905d510bb) -- fix(obj) in lv_obj_move_to_index() do not send LV_EVENT_CHILD_CHANGED on all changed child [`32e8276`](https://github.com/lvgl/lvgl/commit/32e8276db7403d8dc9c9b9f0c77d331049e8c07d) -- feat(event) add lv_obj_remove_event_cb_with_user_data [`4eddeb3`](https://github.com/lvgl/lvgl/commit/4eddeb35abee1f9cd2d1fd210f11cc096cb609c7) -- fix(draw) fix shadow drawing with radius=0 [`4250e3c`](https://github.com/lvgl/lvgl/commit/4250e3c62737697cd8bc78d991a3d66216efa437) -- fix(msgbox) directly store the pointer of all children [`eb5eaa3`](https://github.com/lvgl/lvgl/commit/eb5eaa39406473cd90a7f78d710ce950cbf47548) -- fix(draw) use the filtered colors in lv_obj_init_draw_xxx_dsc() functions [`78725f2`](https://github.com/lvgl/lvgl/commit/78725f23da24fe22543ab3388c87bf3cfbd0e51a) -- fix(arc) fix full arc invalidation [`98b9ce5`](https://github.com/lvgl/lvgl/commit/98b9ce599751c9de0421acd419430cc6ccd7cad9) -- chore(led) expose LV_LED_BRIGHT_MIN/MAX in led.h [`3f18b23`](https://github.com/lvgl/lvgl/commit/3f18b234f601edefb16b1ffdb0c539e823b1c025) -- fix(group) keep the focused object in lv_group_swap_obj [`a997147`](https://github.com/lvgl/lvgl/commit/a9971471ba34352a1d7b307977cb2f635b28a031) -- fix(obj) swap objects in the group too in lv_obj_swap() [`52c7558`](https://github.com/lvgl/lvgl/commit/52c7558ab46a7024e05499edb483f115b13086f0) -- fix(theme) use opacity on button's shadow in the default theme [`c5342e9`](https://github.com/lvgl/lvgl/commit/c5342e9324c492c70b65f8c228d44b7a290cf110) -- fix(win) enable clip_corner and border_post by default [`493ace3`](https://github.com/lvgl/lvgl/commit/493ace352fea0eaa37abccaa0938c0c4a12a995a) -- fix(draw) fix rectangle drawing with clip_corner enabled [`01237da`](https://github.com/lvgl/lvgl/commit/01237da474b9703fb544163db5f66645c2b6935c) -- fix(arc) fix other invalidation issues [`b0a7337`](https://github.com/lvgl/lvgl/commit/b0a733766daee1edfabaec8df4a5fedd0180ccaf) -- feat(obj) add lv_obj_get_x/y_aligned [`98bc1fe`](https://github.com/lvgl/lvgl/commit/98bc1fe09e12a64333e91b4c25327c283a700af5) -- fix(calendar) fix incorrect highlight of today [`adbac52`](https://github.com/lvgl/lvgl/commit/adbac5220b2d75f08de110b3f426066e24f46998) -- fix(arc, meter) fix invalidation in special cases [`0f14f49`](https://github.com/lvgl/lvgl/commit/0f14f49465ca701c98f76ac95bda4a537c0fadfa) -- fix(canvas) invalidate the image on delete [`a1b362c`](https://github.com/lvgl/lvgl/commit/a1b362c98622ecbc063cfb17fb091fdab4522e8a) -- fix(msgbox) return the correct pointer from lv_msgbox_get_text [`50ea6fb`](https://github.com/lvgl/lvgl/commit/50ea6fb3fefb3a6edc958154c575dcdcacbfdb3a) -- fix(bidi) fix the handling of LV_BASE_DIR_AUTO in several widgets [`7672847`](https://github.com/lvgl/lvgl/commit/7672847ce325e909981582b4153993025da7fe50) -- fix(build) remove main component dependency (#2420) [`f2c2393`](https://github.com/lvgl/lvgl/commit/f2c2393b305cd71d2fc01ff8945965dccb8488b4) -- fix(meter) fix inner mask usage [`c28c146`](https://github.com/lvgl/lvgl/commit/c28c14631040fd08da122e192458cb0c65bc9faf) -- fix(log) fix warning for empty log macros [`4dba8df`](https://github.com/lvgl/lvgl/commit/4dba8df2a196fc7a2b7a8686efb6e47fc6cf0fc6) -- fix(theme) improve button focus of keyboard [`2504b7e`](https://github.com/lvgl/lvgl/commit/2504b7e4361ad8009e005faf112987585c2e8356) -- fix(tabview) send LV_EVENT_VALUE_CHANGED only once [`933d282`](https://github.com/lvgl/lvgl/commit/933d2829aca8bc269c0b481f2a535274626374bc) -- fix(obj style) fix children reposition if the parent's padding changes. [`57cf661`](https://github.com/lvgl/lvgl/commit/57cf6610a9ec2e6458035abfdaa5554f4296c89c) -- fix(template) update indev template for v8 [`d8a3d3d`](https://github.com/lvgl/lvgl/commit/d8a3d3d0d759ad0145f134a3f08433f3fdffcb75) -- fix(obj) detecting which indev sent LV_EVENT_FOCUS [`f03d4b8`](https://github.com/lvgl/lvgl/commit/f03d4b8cb9928077a04b839db0bd5c625919d903) -- fix(roller) adjust the size of the selected area correctly [`01d1c87`](https://github.com/lvgl/lvgl/commit/01d1c873e19d0d77e1444ba79468db63f26a448a) -- fix(imgbtn) consider width==LV_SIZE_CONTENT if only mid. img is set [`7e49f48`](https://github.com/lvgl/lvgl/commit/7e49f48894c5c3eb9793dbf1c8630f3cfdc3c091) -- fix(flex) fix NULL pointer dereference [`97ba12f`](https://github.com/lvgl/lvgl/commit/97ba12f280f0fa5400ff18c5317b9736063d8391) -- fix(obj, switch) do not send LV_EVENT_VALUE_CHANGED twice [`713b39e`](https://github.com/lvgl/lvgl/commit/713b39ecdb7e8e219cc295bad7d953ff2136f138) -- fix(coords) fix using large coordinates [`428db94`](https://github.com/lvgl/lvgl/commit/428db9494dc43d65026a9c1fb42c50daede82fc2) -- fix(chart) fix crash if no series are added [`c728b5c`](https://github.com/lvgl/lvgl/commit/c728b5ceda0a5a93d5a0859eb88261db582cf1eb) -- fix(meter) fix needle image invalidation [`54d8e81`](https://github.com/lvgl/lvgl/commit/54d8e8170bd4964909cee15a256408e7f08ccf21) -- fix(mem) add lv_ prefix to tlsf functions and types [`0d52b59`](https://github.com/lvgl/lvgl/commit/0d52b59cb16dda377f8a1ac581a851b830b7bf53) -- fix(pxp) change LV_COLOR_TRANSP to LV_COLOR_CHROMA_KEY to v8 compatibility [`81f3068`](https://github.com/lvgl/lvgl/commit/81f3068dd77d47e7079e6697ea5d00f69202c1bd) - -### Examples - -- example(chart) add area chart example [`2507`](https://github.com/lvgl/lvgl/pull/2507) -- example(anim) add demo to use cubic-bezier [`2393`](https://github.com/lvgl/lvgl/pull/2393) -- feat(example) add lv_example_chart_9.py [`2604`](https://github.com/lvgl/lvgl/pull/2604) -- feat(example) add lv_example_chart_8.py [`2611`](https://github.com/lvgl/lvgl/pull/2611) -- feat(example) chart example to add gap between the old and new data [`2565`](https://github.com/lvgl/lvgl/pull/2565) -- feat(example) add lv example list 2 [`2545`](https://github.com/lvgl/lvgl/pull/2545) -- feat(examples) add MicroPython version of lv_example_anim_3 and allow loading roller font dynamically [`2412`](https://github.com/lvgl/lvgl/pull/2412) -- feat(examples) added MP version of second tabview example [`2347`](https://github.com/lvgl/lvgl/pull/2347) -- fix(example):format codes [`2731`](https://github.com/lvgl/lvgl/pull/2731) -- fix(example) minor fixes in lv_example_chart_2.py [`2601`](https://github.com/lvgl/lvgl/pull/2601) -- feat(example) add text with gradient example [`462fbcb`](https://github.com/lvgl/lvgl/commit/462fbcbf49f47b9f329b6c15d2ca04ef09806cd9) -- fix(example_roller_3) mask free param bug [`2553`](https://github.com/lvgl/lvgl/pull/2553) -- fix(examples) don't compile assets unless needed [`2523`](https://github.com/lvgl/lvgl/pull/2523) -- fix(example) scroll example sqort types [`2498`](https://github.com/lvgl/lvgl/pull/2498) -- fix(examples) join usage [`2425`](https://github.com/lvgl/lvgl/pull/2425) -- fix(examples) add missing lv.PART.INDICATOR [`2423`](https://github.com/lvgl/lvgl/pull/2423) -- fix(examples) use lv.grid_fr for MicroPython [`2419`](https://github.com/lvgl/lvgl/pull/2419) -- fix(examples) remove symlinks [`2406`](https://github.com/lvgl/lvgl/pull/2406) -- fix(examples) import 'u'-prefixed versions of modules [`2365`](https://github.com/lvgl/lvgl/pull/2365) -- fix(examples) remove cast in MP scripts [`2354`](https://github.com/lvgl/lvgl/pull/2354) -- fix(examples) fix MicroPython examples and run the examples with CI [`2339`](https://github.com/lvgl/lvgl/pull/2339) -- fix(examples) align with renamed Micropython APIs [`2338`](https://github.com/lvgl/lvgl/pull/2338) - -- fix(examples) adjust canvas example for MicroPython API change [`52d1c2e`](https://github.com/lvgl/lvgl/commit/52d1c2e5b53eda4270abc0caa0eb309b35c010c8) -- fix(example) revert test code [`77e2c1f`](https://github.com/lvgl/lvgl/commit/77e2c1ff3d3ff035a3613f2ed0e5538513e8b4a1) -- feat(example) add checkbox example for radio buttons [`d089b36`](https://github.com/lvgl/lvgl/commit/d089b364e700d1216813106f7b4dfa6cee9aa806) -- feat(example) add text with gradient example [`462fbcb`](https://github.com/lvgl/lvgl/commit/462fbcbf49f47b9f329b6c15d2ca04ef09806cd9) -- fix(examples) exclude example animimg images if animimg is disabled [`4d7d306`](https://github.com/lvgl/lvgl/commit/4d7d30677af9ef158fe51fb1d8900d234ea5e181) -- fix(example) adjust the object sizes in lv_example_anim_timeline_1() [`71a10e4`](https://github.com/lvgl/lvgl/commit/71a10e4ecd4acfddcea279a0b5da219dfb002ff7) -- fix(example) revert text code from lv_example_checkbox_2 [`28e9593`](https://github.com/lvgl/lvgl/commit/28e9593e5802a2e7d493515059c6327e60ccbf28) - - -### Docs - -- docs: fix typo [`2765`](https://github.com/lvgl/lvgl/pull/2765) -- docs(colorwheel) fix old API names [`2643`](https://github.com/lvgl/lvgl/pull/2643) -- docs(display) fix typo [`2624`](https://github.com/lvgl/lvgl/pull/2624) -- docs add static for lv_indev_drv_t [`2605`](https://github.com/lvgl/lvgl/pull/2605) -- docs(animimg) add to extra widgets index and fix example [`2610`](https://github.com/lvgl/lvgl/pull/2610) -- docs(animimg) Add missing animation image page [`2609`](https://github.com/lvgl/lvgl/pull/2609) -- docs(group) remove reference to lv_cont which is gone in v8 [`2580`](https://github.com/lvgl/lvgl/pull/2580) -- docs(style) use correct API name for local styles [`2550`](https://github.com/lvgl/lvgl/pull/2550) -- docs(all) Proofread, fix typos and add clarifications in confusing areas [`2528`](https://github.com/lvgl/lvgl/pull/2528) -- docs(flex) update flex.md [`2517`](https://github.com/lvgl/lvgl/pull/2517) -- docs more spelling fixes [`2499`](https://github.com/lvgl/lvgl/pull/2499) -- docs fix typo: arae -> area [`2488`](https://github.com/lvgl/lvgl/pull/2488) -- docs(readme) fix typo: hosing → hosting. [`2477`](https://github.com/lvgl/lvgl/pull/2477) -- docs update company name and year [`2476`](https://github.com/lvgl/lvgl/pull/2476) -- docs fix typos [`2472`](https://github.com/lvgl/lvgl/pull/2472) -- docs(overview) fix typo [`2465`](https://github.com/lvgl/lvgl/pull/2465) -- docs(bar) fix typos in widget examples [`2463`](https://github.com/lvgl/lvgl/pull/2463) -- docs(overview) fix typo [`2454`](https://github.com/lvgl/lvgl/pull/2454) -- docs(chart) typos [`2427`](https://github.com/lvgl/lvgl/pull/2427) -- docs(layout) add internal padding paragraph to grid and flex layout p… [`2392`](https://github.com/lvgl/lvgl/pull/2392) -- docs(porting) fix indev example to remove v7 bool return [`2381`](https://github.com/lvgl/lvgl/pull/2381) -- docs(README) fix broken references [`2329`](https://github.com/lvgl/lvgl/pull/2329) -- docs(grid) typo fix [`2310`](https://github.com/lvgl/lvgl/pull/2310) -- docs(color) language fixes [`2302`](https://github.com/lvgl/lvgl/pull/2302) -- docs(lv_obj_style) update add_style and remove_style function headers [`2287`](https://github.com/lvgl/lvgl/pull/2287) - -- docs(contributing) add commit message format section [`3668e54`](https://github.com/lvgl/lvgl/commit/3668e54f06b9e51f407b6f6eb24829c03e3d0ac5) -- docs minor typo fixes [`84c0086`](https://github.com/lvgl/lvgl/commit/84c00862ae0213a54469e08900da7acf435ed5fe) -- docs(arduino) update some outdated information [`9a77102`](https://github.com/lvgl/lvgl/commit/9a77102c40f68140d0ba2c6c5e493e51a8773f64) -- docs(keyboard) add note regarding event handler [`255f729`](https://github.com/lvgl/lvgl/commit/255f7294d387d65bbc56c0f8af84f7fa2f3cfdfa) -- docs minor CSS fix [`acbb680`](https://github.com/lvgl/lvgl/commit/acbb680683fc726e942f59d4296501838e90bde1) -- docs minor CSS improvements [`7f367d6`](https://github.com/lvgl/lvgl/commit/7f367d6956c4d87b75a90cf1798550e986c5c248) -- docs(keyboard) change `LV_KEYBOARD_MODE_NUM` to `LV_KEYBOARD_MODE_NUMBER` [`6e83d37`](https://github.com/lvgl/lvgl/commit/6e83d378e933c426550a7d6bc8fd0dd7fa9ba051) -- docs(textarea) clarify the use of text selection bg_color [`65673c0`](https://github.com/lvgl/lvgl/commit/65673c0e15c48b5926da26ae1a1b8d0a0a8161a3) -- docs list all examples on one page [`25acaf4`](https://github.com/lvgl/lvgl/commit/25acaf45ca87271106b23b52d0d941228e117859) -- docs(examples) add MicroPython examples [`6f37c4f`](https://github.com/lvgl/lvgl/commit/6f37c4fc560c13545177e15576c5b3085c8f2c2a) -- docs(filesystem) update to v8 [`7971ade`](https://github.com/lvgl/lvgl/commit/7971ade47b15898efb6fca17d34ca30f1ee5c926) -- docs(style) complete the description of style the properties [`55e8846`](https://github.com/lvgl/lvgl/commit/55e8846871f812f888c8354e4ec8974ac0650165) -- docs example list fixes [`cd600d1`](https://github.com/lvgl/lvgl/commit/cd600d105650bae08f9732a654c6a2c85e610cd5) -- docs(style) complete the description of style the properties [`ff087da`](https://github.com/lvgl/lvgl/commit/ff087dafb4ecd016ee4920bfe4f162b1db58f7cb) -- docs(README) update links, examples, and add services menu [`3471bd1`](https://github.com/lvgl/lvgl/commit/3471bd1c698ee58f6632415559dcc34e9d2ee3c0) -- docs(color) update colors' docs [`9056b5e`](https://github.com/lvgl/lvgl/commit/9056b5ee1bfea6796307bdf983a4a00ea47fe9f0) -- docs update lv_fs.h, layer and align.png to v8 [`31ab062`](https://github.com/lvgl/lvgl/commit/31ab0628d5cfc57e55f42e5f59689388b034177c) -- docs(color) minor fix [`ac8f453`](https://github.com/lvgl/lvgl/commit/ac8f4534a51b418377c2eac62dbd731b9be71977) -- docs update changelog [`c386110`](https://github.com/lvgl/lvgl/commit/c386110e2390399ab97936622e59c510ba414e19) -- docs(extra) add extra/README.md [`8cd504d`](https://github.com/lvgl/lvgl/commit/8cd504d58bb679fe1f260e3eee59fcb0b85cb589) -- docs add lazy load to the iframes of the examples [`c49e830`](https://github.com/lvgl/lvgl/commit/c49e830aad2c847611f3398767e85c193909559a) -- docs(os) add example and clarify some points [`d996453`](https://github.com/lvgl/lvgl/commit/d996453207caa50a90a66d05565431fa288be96b) -- docs(rlottie) fix build error [`ce0b564`](https://github.com/lvgl/lvgl/commit/ce0b56458846daa65288f901e9b8ef1083eab468) -- docs include paths in libs [`f5f9562`](https://github.com/lvgl/lvgl/commit/f5f956233657f95b45a45d872e5d6e68c05eecd4) -- docs libs fixes [`8e7bba6`](https://github.com/lvgl/lvgl/commit/8e7bba6acec66a4f6b80496de9fd21a8e3c4c6ee) -- docs(obj) add comment lv_obj_get_x/y/width/height about postponed layout recalculation [`533066e`](https://github.com/lvgl/lvgl/commit/533066e6accbe2cbe1b60556eb61ebb2a07185a2) -- docs fix example list [`ed77ed1`](https://github.com/lvgl/lvgl/commit/ed77ed1dae088ef29194cf3c6bb552e1ee67d78b) -- docs describe the options to include or skip lv_conf.h [`174ef66`](https://github.com/lvgl/lvgl/commit/174ef6692e0b05338890a1cf524d9dcbf5c25f6c) -- docs(overview) spelling fixes [`d2efb8c`](https://github.com/lvgl/lvgl/commit/d2efb8c6e5ceedbb9d9c1a1c89ef709e6570e360) -- docs(table) describe keypad/encoder navigation [`749d1b3`](https://github.com/lvgl/lvgl/commit/749d1b3ec31ec2ef27f594ed0a4af93edb2c10f0) -- docs update CHANGELOG [`0f8bc18`](https://github.com/lvgl/lvgl/commit/0f8bc18f6aacb6a74e0bda59068d3d178fa66434) -- docs(image) mention the frame_id parameter of lv_img_decoder_open [`2433732`](https://github.com/lvgl/lvgl/commit/2433732570a817f566308e025d89227a8c650f5f) -- docs(arduino) update how to use the examples [`06962a5`](https://github.com/lvgl/lvgl/commit/06962a564fd668eced22b2e9bc19e7732abf94ec) -- docs(rlottie): fix typo in commands [`ed9169c`](https://github.com/lvgl/lvgl/commit/ed9169c56dc1f34b1f021457b78c9f3eccba13cf) -- docs(indev, layer) update lv_obj_set_click() to lv_obj_add_flag() [`bcd99e8`](https://github.com/lvgl/lvgl/commit/bcd99e8e438cc1b63762f8933d26bbb38fd42a2d) -- docs update version support table [`e6e98ab`](https://github.com/lvgl/lvgl/commit/e6e98abbc25cc4aa20b05d1002a651e4012ebff7) -- docs fix example list [`c6f99ad`](https://github.com/lvgl/lvgl/commit/c6f99ad200c7862c2f3cca3811bc2bdc2c95e971) -- docs(examples) add <hr/> to better separate examples [`a1b59e3`](https://github.com/lvgl/lvgl/commit/a1b59e34dd23fb12bd6e9ab0ffa92b2bfcec66b3) -- docs(checkbox) update the comment lv_checkbox_set_text_static [`3e0ddd0`](https://github.com/lvgl/lvgl/commit/3e0ddd028511c6c4a0ba33a15526f404b31a50b8) -- docs(grid) fix missing article [`da0c97a`](https://github.com/lvgl/lvgl/commit/da0c97a367746573fa2385d0ddd184f27ca20dbd) -- docs(display) fix grammar in one spot [`5dbea7d`](https://github.com/lvgl/lvgl/commit/5dbea7d72522e78f66fb468e1d5a98fa28179ed1) -- docs(style) fix typo in style property descriptions [`4e3b860`](https://github.com/lvgl/lvgl/commit/4e3b86020fdc8e183335c6c9b8604129e3e3ddcc) -- docs(flex) fix typo in flex grow section [`e5fafc4`](https://github.com/lvgl/lvgl/commit/e5fafc412214ab01d46ebd37e272e3ffc3164ea4) -- docs(indev) clarify purpose of `continue_reading` flag [`706f81e`](https://github.com/lvgl/lvgl/commit/706f81e5862af27fb0b60cdaf02c650c31787c78) -- docs(license) update company name and year [`7c1eb00`](https://github.com/lvgl/lvgl/commit/7c1eb0064535f2d914b9dc885ebb2a2d0d73381d) -- docs fix typo [`8ab8064`](https://github.com/lvgl/lvgl/commit/8ab806459c1b99990b91b4cd6a656ff6736c1b63) -- docs add libs to the main index [`1a8fed5`](https://github.com/lvgl/lvgl/commit/1a8fed5df02545fe97845e3acd86e33f7048cd8e) -- docs add btn_example.png [`8731ef1`](https://github.com/lvgl/lvgl/commit/8731ef141e2ad2f022b1c01e1bf7605f983b013f) - -- docs(btnmatrix) fix typo with set_all/clear_all parameters [`51a82a1`](https://github.com/lvgl/lvgl/commit/51a82a17ffe938d07d94660f49fd18962060943a) - -### CI and tests - -- ci(micropython) fix git fetch [`2757`](https://github.com/lvgl/lvgl/pull/2757) -- test(txt) initial unit tests and general code cleanup/fixes [`2623`](https://github.com/lvgl/lvgl/pull/2623) -- test add setUp and tearDown to test template [`2648`](https://github.com/lvgl/lvgl/pull/2648) -- test(arc) add initial unit tests [`2617`](https://github.com/lvgl/lvgl/pull/2617) -- ci(micropython) add ESP32 and STM32 tests [`2629`](https://github.com/lvgl/lvgl/pull/2629) -- test(checkbox) add initial tests [`2551`](https://github.com/lvgl/lvgl/pull/2551) -- test(ci) build and run tests in parallel. [`2515`](https://github.com/lvgl/lvgl/pull/2515) -- ci(tests) run tests using ctest [`2503`](https://github.com/lvgl/lvgl/pull/2503) -- ci(tests) add dependency on GNU parallel [`2510`](https://github.com/lvgl/lvgl/pull/2510) -- ci(tests) use common script to install development prereqs [`2504`](https://github.com/lvgl/lvgl/pull/2504) -- test convert Makefile to CMake [`2495`](https://github.com/lvgl/lvgl/pull/2495) -- test Refactor unit test scripts. [`2473`](https://github.com/lvgl/lvgl/pull/2473) - -- test(font_loader) migrate the existing font loader test [`bc5b3be`](https://github.com/lvgl/lvgl/commit/bc5b3be61f7751852dc99509a6ab83faaf6d1235) -- test add build test again, add dropdown test, integrate gcov and gvocr [`e35b1d0`](https://github.com/lvgl/lvgl/commit/e35b1d04bdc7d531d72ebce7d1f031be2631e776) -- test(dropdown) add tess for keypad and encoder [`4143b80`](https://github.com/lvgl/lvgl/commit/4143b804c8f4b4324141ad0f529bac4e9acf1442) -- test add keypad and encoder emulators [`e536bb6`](https://github.com/lvgl/lvgl/commit/e536bb6325728db21ef5c729a99f2161a8125625) -- tests add mouse emulator [`2ba810b`](https://github.com/lvgl/lvgl/commit/2ba810b8de19afc3e9ac18e5bd8ab16af10a4433) -- tests add README [`b765643`](https://github.com/lvgl/lvgl/commit/b765643e4902de359e88fdf6d314e9afdb2daa9a) -- test add move tests to test_cases and test_runners directories [`e9e010a`](https://github.com/lvgl/lvgl/commit/e9e010a8468ee307c350e071251f22459173e601) -- test fix CI build error [`c38cae2`](https://github.com/lvgl/lvgl/commit/c38cae22fbf6cef7564fbebe2145a7def20d52e1) -- ci add config for 8bpp [`3eacc59`](https://github.com/lvgl/lvgl/commit/3eacc5923c0a554e7ff4489776a8982dfc142115) -- test move more source files to src folder [`3672f87`](https://github.com/lvgl/lvgl/commit/3672f873328b4471ac9d5d23696f7bc99a87bc43) -- test update CI for the new tests [`a3898b9`](https://github.com/lvgl/lvgl/commit/a3898b931e81860acf197bc88fd3dd6f8885eb2c) -- test cleaned up report folder [`b9b4ba5`](https://github.com/lvgl/lvgl/commit/b9b4ba5b2608f5709678463f62b3d3f937780235) -- test fix build error [`61cda59`](https://github.com/lvgl/lvgl/commit/61cda59cbe8569326ef9d366c520b89be292f5ea) -- test(font_loader) migrate the existing font loader test [`d6dbbaa`](https://github.com/lvgl/lvgl/commit/d6dbbaaa34304b4c889415439ab562056e0840a5) -- test add move tests to test_cases and test_runners directories [`d2e735e`](https://github.com/lvgl/lvgl/commit/d2e735ef36bd99c16ccaa281dcaa5f418e2dec98) -- test add 3rd party libs to all tests and also fix them [`7a95fa9`](https://github.com/lvgl/lvgl/commit/7a95fa9e2de9639a3c2f1990ff63b467be54a7aa) -- test(arc): add test case for adv_hittest [`e83df6f`](https://github.com/lvgl/lvgl/commit/e83df6f14de1a9eb1d137b123fac96c25a1b7715) -- ci create check for lv_conf_internal.h [`5d8285e`](https://github.com/lvgl/lvgl/commit/5d8285e2d37e19670c1daeff229e1dc331f053c4) -- test fix warning and docs build error [`d908f31`](https://github.com/lvgl/lvgl/commit/d908f31f8f50024d8b3c8d0a11aff9cc1b011049) -- ci(micropython) add rp2 port [`1ab5c96`](https://github.com/lvgl/lvgl/commit/1ab5c9689f61fd2991653beec7d023472fc96239) -- test(dropdown) remove dummy test case [`9fb98da`](https://github.com/lvgl/lvgl/commit/9fb98da8a280dc3d5753da1d2aa79eeb1cba47e0) -- ci(codecov) hide statuses on commits for now [`0b7be77`](https://github.com/lvgl/lvgl/commit/0b7be778a29412fe5562a736855121d19350889c) -- ci(docs) run apt-get update before installation [`f215174`](https://github.com/lvgl/lvgl/commit/f215174999a18b0e5904e97bfda48f3b81271aa1) -- test fix LV_USE_LOG_LEVEL -> LV_LOG_LEVEL typo [`80f0b09`](https://github.com/lvgl/lvgl/commit/80f0b09e34596564ca6ec7c23d148f4ce2e17ca3) -- ci(micropython) add GCC problem matcher [`ab316a0`](https://github.com/lvgl/lvgl/commit/ab316a07bc4d89a633fdd00bc7ff8c5db4b00ad8) - -- test convert Makefile to CMake (#2495) [`9c846ee`](https://github.com/lvgl/lvgl/commit/9c846ee493862ef11b46942a6e5af3c1ed8468d1) - -### Others - -- chore: replace (void)xxx with LV_UNUSED(xxx) [`2779`](https://github.com/lvgl/lvgl/pull/2779) -- animation improvement [`2743`](https://github.com/lvgl/lvgl/pull/2743) -- Improve LV_FORMAT_ATTRIBUTE usage [`2673`](https://github.com/lvgl/lvgl/pull/2673) -- Fix typo in commands to build rlottie [`2723`](https://github.com/lvgl/lvgl/pull/2723) -- del(.gitmodules): delete .gitmodules [`2718`](https://github.com/lvgl/lvgl/pull/2718) -- lv_obj_draw_part_dsc_t.text_length added [`2694`](https://github.com/lvgl/lvgl/pull/2694) -- expose LV_COLOR_DEPTH and LV_COLOR_16_SWAP in micropython [`2679`](https://github.com/lvgl/lvgl/pull/2679) -- sync lvgl/lv_fs_if [`2676`](https://github.com/lvgl/lvgl/pull/2676) -- build: always enable CMake install rule in default configuration [`2636`](https://github.com/lvgl/lvgl/pull/2636) -- build: fix lib name in CMakeLists [`2641`](https://github.com/lvgl/lvgl/pull/2641) -- build: remove use of 'project' keyword in CMakeLists [`2640`](https://github.com/lvgl/lvgl/pull/2640) -- build add install rule to CMakeList.txt [`2621`](https://github.com/lvgl/lvgl/pull/2621) -- Fixed row size calculation [`2633`](https://github.com/lvgl/lvgl/pull/2633) -- arch add small 3rd party libs to lvgl [`2569`](https://github.com/lvgl/lvgl/pull/2569) -- Kconfig: Add missing options [`2597`](https://github.com/lvgl/lvgl/pull/2597) -- Espressif IDF component manager [`2521`](https://github.com/lvgl/lvgl/pull/2521) -- chore(btnmatrix) removed unnecessary semicolon [`2520`](https://github.com/lvgl/lvgl/pull/2520) -- Update README.md [`2516`](https://github.com/lvgl/lvgl/pull/2516) -- Corrected a function name in obj.md [`2511`](https://github.com/lvgl/lvgl/pull/2511) -- Simple spelling fixes [`2496`](https://github.com/lvgl/lvgl/pull/2496) -- added lv_obj_move_up() and lv_obj_move_down() [`2467`](https://github.com/lvgl/lvgl/pull/2467) -- Fix buf name error for "lv_port_disp_template.c" and optimize the arduino example [`2475`](https://github.com/lvgl/lvgl/pull/2475) -- Fix two examples in the docs with new v8 api [`2486`](https://github.com/lvgl/lvgl/pull/2486) -- kconfig: minor fix for default dark theme option [`2426`](https://github.com/lvgl/lvgl/pull/2426) -- doc(table) update doc on cell merging [`2397`](https://github.com/lvgl/lvgl/pull/2397) -- added example lv_example_anim_timeline_1.py [`2387`](https://github.com/lvgl/lvgl/pull/2387) -- refactor(printf) add printf-like function attribute to _lv_txt_set_text_vfmt and lv_label_set_text_fmt [`2332`](https://github.com/lvgl/lvgl/pull/2332) -- Update win.md [`2352`](https://github.com/lvgl/lvgl/pull/2352) -- Nxp pxp vglite v8 dev [`2313`](https://github.com/lvgl/lvgl/pull/2313) -- More Snapable --> Snappable replacements [`2304`](https://github.com/lvgl/lvgl/pull/2304) -- Spelling and other language fixes to documentation [`2293`](https://github.com/lvgl/lvgl/pull/2293) -- Update quick-overview.md [`2295`](https://github.com/lvgl/lvgl/pull/2295) -- adding micropython examples [`2286`](https://github.com/lvgl/lvgl/pull/2286) - -- format run code-formtter.sh [`d67dd94`](https://github.com/lvgl/lvgl/commit/d67dd943cadb3d21a3d9488b6354f669e2e58c65) -- Update ROADMAP.md [`2b1ae3c`](https://github.com/lvgl/lvgl/commit/2b1ae3c107539dec130b988cddca5ddb2b5af652) -- Create .codecov.yml [`e53aa82`](https://github.com/lvgl/lvgl/commit/e53aa82658a1d7324f328c986cb5b7b669803ba2) -- refactor(examples) drop JS-specific code from header.py [`ef41450`](https://github.com/lvgl/lvgl/commit/ef41450ed87f4f4dd936b63349b5a0c9ce880618) -- make test run on master and release/v8.* [`227402a`](https://github.com/lvgl/lvgl/commit/227402a81a1cdd34cd57ec04682166d3961c4481) -- Update release.yml [`0838f12`](https://github.com/lvgl/lvgl/commit/0838f1296b2c55c0b265650ee4310a79730536dd) -- refactor(examples) drop usys import from header.py [`ad1f91a`](https://github.com/lvgl/lvgl/commit/ad1f91ab32c38cab7f0d1448ce3c4e67b47f4526) -- Update ROADMAP.md [`a38fcf2`](https://github.com/lvgl/lvgl/commit/a38fcf2c7aa5fd156d3f2b6965ec4f81d7ff5503) -- Revert "feat(conf) add better check for Kconfig default" [`a5793c7`](https://github.com/lvgl/lvgl/commit/a5793c70a9a60340a5f1c5d33ba1d118af0a76e2) -- remove temporary test file [`a958c29`](https://github.com/lvgl/lvgl/commit/a958c29af7df66f84520036766929232e0c437c4) -- start to implement release/patch [`1626a0c`](https://github.com/lvgl/lvgl/commit/1626a0c029504f26e568677debcb7ab0f6053f83) -- chore(indev) minor formatting [`79ab3d2`](https://github.com/lvgl/lvgl/commit/79ab3d29b01e5f0bff1c754fdc36230584aeaaae) -- add basic patch release script [`1c3ecf1`](https://github.com/lvgl/lvgl/commit/1c3ecf1cc14f5501a345472278cc485a24b8ab9c) -- chore(example) minor improvements on lv_example_list_2 [`bb6d6b7`](https://github.com/lvgl/lvgl/commit/bb6d6b77999fde33f560bde92b394a8811303868) -- tool: add changelog_gen.sh to automatically generate changelog [`6d95521`](https://github.com/lvgl/lvgl/commit/6d955210765de972f78b8c307df2f2387e4580ed) -- update version numbers to v8.1.0-dev [`8691611`](https://github.com/lvgl/lvgl/commit/8691611de2206669cd22e3e97c844fdf2bf494b0) -- chore(test) improve prints [`ea8bed3`](https://github.com/lvgl/lvgl/commit/ea8bed34b49343a4e881bdd42096f69d245ef66e) -- chore(test) improve prints [`0c4bca0`](https://github.com/lvgl/lvgl/commit/0c4bca0f9cbeefaf20fd41e3a561d0e1799bc6b0) -- chore: update lv_conf_internal.h [`41c2dd1`](https://github.com/lvgl/lvgl/commit/41c2dd16ee87f85338603399bb92e1f6eab84bf6) -- chore(format) lv_conf_template.h minor formatting [`3c86d77`](https://github.com/lvgl/lvgl/commit/3c86d777c10c80ec9a4c5d3d403bd1395834004a) -- chore(docs) always deploy master to docs/master as well [`6d05692`](https://github.com/lvgl/lvgl/commit/6d05692d7820a2b833751d6881704b283f1fe618) -- Update CHANGELOG.md [`48fd73d`](https://github.com/lvgl/lvgl/commit/48fd73d20da4f19556660a9fca7faf042c965f56) -- Fix compile errors [`6c956cc`](https://github.com/lvgl/lvgl/commit/6c956cc0f402b96512ed07f8a93003a0319fc49c) -- Update textarea.md [`6d8799f`](https://github.com/lvgl/lvgl/commit/6d8799fbbfb1477ad2e0887644fb4cd900817199) -- chore(assert) add warning about higher memory usage if LV_USE_ASSERT_STYLE is enabled [`33e4330`](https://github.com/lvgl/lvgl/commit/33e433008e23b48540e83bc5399fd0ccb9e90630) -- Update page.html [`9573bab`](https://github.com/lvgl/lvgl/commit/9573bab5cbe2da643f5146e62c176bdd0113d954) -- chore(docs) force docs rebuild [`4a0f413`](https://github.com/lvgl/lvgl/commit/4a0f4139eb98e73b37abf62f66e2cf1c5d4e58db) -- Fix typo error in color.md [`572880c`](https://github.com/lvgl/lvgl/commit/572880ccd3374ccbe81cf09a0620bf95659ca883) -- Update arc.md [`2a9b9e6`](https://github.com/lvgl/lvgl/commit/2a9b9e6e1119db8294fdc63d93548fe06e2b6aa2) -- Update index.rst [`9ce2c77`](https://github.com/lvgl/lvgl/commit/9ce2c7702d15d74f64b7d4bf6273cba442b48c09) -- chore(docs) minor formatting on example's GitHub link [`75209e8`](https://github.com/lvgl/lvgl/commit/75209e893e89b6aa9d6a231af4661ce6a6dd6161) -- chore(lv_conf_template) fix spelling mistake [`9d134a9`](https://github.com/lvgl/lvgl/commit/9d134a99e3f59412ee4a941f20bf70053dd4326d) -- Update CHANGELOG.md [`8472360`](https://github.com/lvgl/lvgl/commit/847236044da01096beae4a586c874b4980f21a55) -- chore(stale) disable on forks [`93c1303`](https://github.com/lvgl/lvgl/commit/93c1303ee7989d25216262e1d0ea244b59b975f6) -- Revert "fix(tests) remove src/test_runners when cleaning" [`ae15a1b`](https://github.com/lvgl/lvgl/commit/ae15a1bbfe122115e5c8ac1f707929673843ad37) - -- style fix usage of clang-format directives [`2122583`](https://github.com/lvgl/lvgl/commit/2122583ec23d82422e1e3d6f2b5a20745fa5dd6d) -- Revert "fix(indev) focus on objects on release instead of press" [`f61b2ca`](https://github.com/lvgl/lvgl/commit/f61b2ca45502472cde8ac0983b73dbf153de2b20) - -## v8.0.2 (16.07.2021) -- fix(theme) improve button focus of keyboard -- fix(tabview) send LV_EVENT_VALUE_CHANGED only once -- fix(imgbtn) use the correct src in LV_EVENT_GET_SELF_SIZE -- fix(color) remove extraneous cast for 8-bit color -- fix(obj style) fix children reposition if the parent's padding changes. -- fix(color) remove extraneous _LV_COLOR_MAKE_TYPE_HELPER (#2372) -- fix(spinner) should not be clickable (#2373) -- fix(obj) improve how the focusing indev is determined -- fix(template) update indev template for v8 -- fix(printf) skip defining attribute if pycparser is used -- refactor(printf) add printf-like function attribute to _lv_txt_set_text_vfmt and lv_label_set_text_fmt (#2332) -- fix(template) include lvgl.h in lv_port_*_template.c files -- fix(obj) detecting which indev sent LV_EVENT_FOCUS -- fix (span) fill LV_EVENT_GET_SELF_SIZE (#2360) -- fix(arc) disable LV_OBJ_FLAG_SCROLL_CHAIN by default -- fix (draw) fix arc bg image drawing with full arcs -- fix(disp) fix memory leak in lv_disp_remove (#2355) -- fix warnings introduced by 3fb8baf5 -- fix(widgets) use lv_obj_class for all the widgets -- fix(obj) move clean ups from lv_obj_del to lv_obj_destructor -- fix(roller) fix partial redraw of the selected area -- fix(roller) adjust the size of the selected area correctly -- fix(obj) delete useless type conversion (#2343) -- fix(lv_obj_scroll.h) typos (#2345) -- fix(scroll) fire LV_EVENT_SCROLL_BEGIN in the same spot for both axes -- fix(btnmatrix) fix button invalidation on focus change -- fix(textarea) style update in oneline mode + improve scroll to cursor -- fix(tlsf) do not use -- fix(imgbtn) consider width==LV_SIZE_CONTENT if only mid. img is set -- fix(refr) reduce the nesting level in lv_refr_area -- fix(txt) enhance the function of break_chars (#2327) -- fix(pxp): update RTOS macro for SDK 2.10 -- fix(vglite): update for v8 -- fix(pxp): update for v8 -- fix(flex) fix layout update and invalidation issues -- fix(flex) fix NULL pointer dereference -- fix(obj, switch) do not send LV_EVENT_VALUE_CHANGED twice -- fix(color) overflow with 16-bit color depth -- fix(coords) fix using large coordinates -- fix(chart) fix crash if no series are added -- fix(chart) invalidation with LV_CHART_UPDATE_MODE_SHIFT -- fix(align) fix lv_obj_align_to G -- fix(table) invalidate the table on cell value change -- fix(label) remove duplicated lv_obj_refresh_self_size -- fix(draw) underflow in subpixel font drawing -- fix (scroll) do not send unnecessary scroll end events - - -## v8.0.1 (14.06.2021) -- docs(filesystem) update to v8 7971ade4 -- fix(msgbox) create modals on top layer instead of act screen 5cf6303e -- fix(colorwheel) disable LV_OBJ_FLAG_SCROLL_CHAIN by default 48d1c292 -- docs(grid) typo fix (#2310) 69d109d2 -- fix(arduino) fix the prototype of my_touchpad_read in the LVGL_Arduino.ino 1a62f7a6 -- fix(meter) fix needle image invalidation 54d8e817 -- fix(mem) add lv_ prefix to tlsf functions and types 0d52b59c -- fix(calendar) fix the position calculation today ad05e196 -- fix(typo) rename LV_OBJ_FLAG_SNAPABLE to LV_OBJ_FLAG_SNAPPABLE e697807c -- docs(color) language fixes (#2302) 07ecc9f1 -- fix(tick) minor optimization on lv_tick_inc call test b4305df5 -- Spelling and other language fixes to documentation (#2293) d0aaacaf -- fix(theme) show disabled state on buttons of btnmatrix, msgbox and keyboard 0be582b3 -- fix(scroll) keep the scroll position on object deleted 52edbb46 -- fix(msgbox) handle NULL btn map parameter 769c4a30 -- fix(group) allow refocusing objects 1520208b -- docs(overview) spelling fixes d2efb8c6 -- Merge branch 'master' of https://github.com/lvgl/lvgl 45960838 -- feat(timer) check if lv_tick_inc is called aa6641a6 -- feat(docs) add view on GitHub link a716ac6e -- fix(theme) fix the switch style in the default theme 0c0dc8ea -- docs fix typo 8ab80645 -- Merge branch 'master' of https://github.com/lvgl/lvgl e796448f -- feat(event) pass the scroll animation to LV_EVENT_SCROLL_BEGIN ca54ecfe -- fix(tabview) fix with left and right tabs 17c57449 -- chore(docs) force docs rebuild 4a0f4139 -- chore(docs) always deploy master to docs/master as well 6d05692d -- fix(template) update lv_objx_template to v8 38bb8afc -- docs(extra) add extra/README.md 8cd504d5 -- Update CHANGELOG.md 48fd73d2 -- Update quick-overview.md (#2295) 5616471c -- fix(pxp) change LV_COLOR_TRANSP to LV_COLOR_CHROMA_KEY to v8 compatibility 81f3068d -- adding micropython examples (#2286) c60ed68e -- docs(color) minor fix ac8f4534 -- fix(example) revert test code 77e2c1ff -- fix(draw) with additive blending with 32-bit color depth 786db2af -- docs(color) update colors' docs 9056b5ee -- Merge branch 'master' of https://github.com/lvgl/lvgl a711a1dd -- perf(refresh) optimize where to wait for lv_disp_flush_ready with 2 buffers d0172f14 -- docs(lv_obj_style) update add_style and remove_style function headers (#2287) 60f7bcbf -- fix memory leak of spangroup (#2285) 33e0926a -- fix make lv_img_cache.h public because cache invalidation is public 38ebcd81 -- Merge branch 'master' of https://github.com/lvgl/lvgl 2b292495 -- fix(btnmatrix) fix focus event handling 3b58ef14 -- Merge pull request #2280 from lvgl/dependabot/pip/docs/urllib3-1.26.5 a2f45b26 -- fix(label) calculating the clip area 57e211cc -- chore(deps): bump urllib3 from 1.26.4 to 1.26.5 in /docs b2f77dfc -- fix(docs) add docs about the default group 29bfe604 - -## v8.0.0 (01.06.2021) - -v8.0 brings many new features like simplified and more powerful scrolling, new layouts inspired by CSS Flexbox and Grid, simplified and improved widgets, more powerful events, hookable drawing, and more. - -v8 is a major change and therefore it's not backward compatible with v7. - -### Directory structure -- The `lv_` prefix is removed from the folder names -- The `docs` is moved to the `lvgl` repository -- The `examples` are moved to the `lvgl` repository -- Create an `src/extra` folder for complex widgets: - - It makes the core LVGL leaner - - In `extra` we can have a lot and specific widgets - - Good place for contributions - -### Widget changes -- `lv_cont` removed, layout features are moved to `lv_obj` -- `lv_page` removed, scroll features are moved to `lv_obj` -- `lv_objmask` the same can be achieved by events -- `lv_meter` added as the union of `lv_linemeter` and `lv_gauge` -- `lv_span` new widget mimicking HTML `` -- `lv_animing` new widget for simple slideshow animations -- \+ many minor changes and improvements - -### New scrolling -- Support "elastic" scrolling when scrolled in -- Support scroll chaining among any objects types (not only `lv_pages`s) -- Remove `lv_drag`. Similar effect can be achieved by setting the position in `LV_EVENT_PRESSING` -- Add snapping -- Add snap stop to scroll max 1 snap point - -### New layouts -- [CSS Grid](https://css-tricks.com/snippets/css/a-guide-to-grid/)-like layout support -- [CSS Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)-like layout support - -### Styles -- Optimize and simplify styles -- State is saved in the object instead of the style property -- Object size and position can be set in styles too - -### Events -- Allow adding multiple events to an object -- A `user_data` can be attached to the added events - -### Driver changes -- `lv_disp_drv_t`, `lv_indev_drv_t`, `lv_fs_drv_t` needs to be `static` -- `...disp_buf...` is renamed to `draw_buf`. See an initialization example [here](https://github.com/lvgl/lv_sim_eclipse_sdl/blob/release/v8.0/main.c#L128-L141). -- No partial update if two screen sized buffers are set -- `disp_drv->full_refresh = 1` makes always the whole display redraw. -- `hor_res` and `ver_res` need to be set in `disp_drv` -- `indev_read_cb` returns `void`. To indicate that there is more that to read set `data->continue_reading = 1` in the `read_cb` - -### Other changes -- Remove the copy parameter from create functions -- Simplified File system interface API -- Use a more generic inheritance -- The built-in themes are reworked -- `lv_obj_align` now saved the alignment and realigns the object automatically but can't be used to align to other than the parent -- `lv_obj_align_to` can align to an object but doesn't save the alignment -- `lv_pct(x)` can be used to set the size and position in percentage -- There are many other changes in widgets that are not detailed here. Please refer to the documentation of the widgets. - -### New release policy -- We will follow [Release branches with GitLab flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html#release-branches-with-gitlab-flow) -- Minor releases are expected in every 3-4 month -- `master` will always contain the latest changes - -### Migrating from v7 to v8 -- First and foremost, create a new `lv_conf.h` based on `lv_conf_template.h`. -- To try the new version it's recommended to use a simulator project and see the examples. -- When migrating your project to v8 - - Update the drivers are described above - - Update the styles - - Update the events - - Use the new layouts instead of `lv_cont` features - - Use `lv_obj` instead of `lv_page` - - See the changes in [Colors](https://docs.lvgl.io/8.0/overview/color.html) - - The other parts are mainly minor renames and refactoring. See the functions' documentation for descriptions. - -## v7.11.0 (16.03.2021) - -### New features -- Add better screen orientation management with software rotation support -- Decide text animation's direction based on base_dir (when using LV_USE_BIDI) - -### Bugfixes -- fix(gauge) fix needle invalidation -- fix(bar) correct symmetric handling for vertical sliders - -## v7.10.1 (16.02.2021) - -### Bugfixes -- fix(draw) overlap outline with background to prevent aliasing artifacts -- fix(indev) clear the indev's `act_obj` in `lv_indev_reset` -- fix(text) fix out of bounds read in `_lv_txt_get_width` -- fix(list) scroll list when button is focused using LV_KEY_NEXT/PREV -- fix(text) improve Arabic contextual analysis by adding hyphen processing and proper handling of lam-alef sequence -- fix(delete) delete animation after the children are deleted -- fix(gauge) consider paddings for needle images - -## v7.10.0 (02.02.2021) - -### New features -- feat(indev) allow input events to be passed to disabled objects -- feat(spinbox) add inline get_step function for MicroPython support - -### Bugfixes -- fix(btnmatrix) fix lv_btnmatrix_get_active_btn_text() when used in a group - -## v7.9.1 (19.01.2021) - -### Bugfixes -- fix(cpicker) fix division by zero -- fix(dropdown) fix selecting options after the last one -- fix(msgbox) use the animation time provided -- fix(gpu_nxp_pxp) fix incorrect define name -- fix(indev) don't leave edit mode if there is only one object in the group -- fix(draw_rect) fix draw pattern stack-use-after-scope error - - -## v7.9.0 (05.01.2021) - -### New features -- feat(chart) add lv_chart_remove_series and lv_chart_hide_series -- feat(img_cache) allow disabling image caching -- calendar: make get_day_of_week() public -- Added support for Zephyr integration - -### Bugfixes -- fix(draw_rect) free buffer used for arabic processing -- fix(win) arabic process the title of the window -- fix(dropdown) arabic process the option in lv_dropdown_add_option -- fix(textarea) buffer overflow in password mode with UTF-8 characters -- fix(textarea) cursor position after hiding character in password mode -- fix(linemeter) draw critical lines with correct color -- fix(lv_conf_internal) be sure Kconfig defines are always uppercase -- fix(kconfig) handle disable sprintf float correctly. -- fix(layout) stop layout after recursion threshold is reached -- fix(gauge) fix redraw with image needle - -## v7.8.1 (15.12.2020) - -### Bugfixes -- fix(lv_scr_load_anim) fix when multiple screens are loaded at the same time with delay -- fix(page) fix LV_SCROLLBAR_MODE_DRAG - -## v7.8.0 (01.12.2020) - -### New features -- make DMA2D non blocking -- add unscii-16 built-in font -- add KConfig -- add lv_refr_get_fps_avg() - -### Bugfixes -- fix(btnmatrix) handle arabic texts in button matrices -- fix(indev) disabled object shouldn't absorb clicks but let the parent to be clicked -- fix(arabic) support processing again already processed texts with _lv_txt_ap_proc -- fix(textarea) support Arabic letter connections -- fix(dropdown) support Arabic letter connections -- fix(value_str) support Arabic letter connections in value string property -- fix(indev) in LV_INDEV_TYPE_BUTTON recognize 1 cycle long presses too -- fix(arc) make arc work with encoder -- fix(slider) adjusting the left knob too with encoder -- fix reference to LV_DRAW_BUF_MAX_NUM in lv_mem.c -- fix(polygon draw) join adjacent points if they are on the same coordinate -- fix(linemeter) fix invalidation when setting new value -- fix(table) add missing invalidation when changing cell type -- refactor(roller) rename LV_ROLLER_MODE_INIFINITE -> LV_ROLLER_MODE_INFINITE - -## v7.7.2 (17.11.2020) -### Bugfixes -- fix(draw_triangle): fix polygon/triangle drawing when the order of points is counter-clockwise -- fix(btnmatrix): fix setting the same map with modified pointers -- fix(arc) fix and improve arc dragging -- label: Repair calculate back `dot` character logical error which cause infinite loop. -- fix(theme_material): remove the bottom border from tabview header -- fix(imgbtn) guess the closest available state with valid src -- fix(spinbox) update cursor position in lv_spinbox_set_step - -## v7.7.1 (03.11.2020) -### Bugfixes -- Respect btnmatrix's `one_check` in `lv_btnmatrix_set_btn_ctrl` -- Gauge: make the needle images to use the styles from `LV_GAUGE_PART_PART` -- Group: fix in `lv_group_remove_obj` to handle deleting hidden objects correctly - -## v7.7.0 (20.10.2020) - -### New features -- Add PXP GPU support (for NXP MCUs) -- Add VG-Lite GPU support (for NXP MCUs) -- Allow max. 16 cell types for table -- Add `lv_table_set_text_fmt()` -- Use margin on calendar header to set distances and padding to the size of the header -- Add `text_sel_bg` style property - -### Bugfixes -- Theme update to support text selection background -- Fix imgbtn state change -- Support RTL in table (draw columns right to left) -- Support RTL in pretty layout (draw columns right to left) -- Skip objects in groups if they are in disabled state -- Fix dropdown selection with RTL basedirection -- Fix rectangle border drawing with large width -- Fix `lv_win_clean()` - -## v7.6.1 (06.10.2020) - -### Bugfixes -- Fix BIDI support in dropdown list -- Fix copying base dir in `lv_obj_create` -- Handle sub pixel rendering in font loader -- Fix transitions with style caching -- Fix click focus -- Fix imgbtn image switching with empty style -- Material theme: do not set the text font to allow easy global font change - -## v7.6.0 (22.09.2020) - -### New features -- Check whether any style property has changed on a state change to decide if any redraw is required - -### Bugfixes -- Fix selection of options with non-ASCII letters in dropdown list -- Fix font loader to support LV_FONT_FMT_TXT_LARGE - -## v7.5.0 (15.09.2020) - -### New features -- Add `clean_dcache_cb` and `lv_disp_clean_dcache` to enable users to use their own cache management function -- Add `gpu_wait_cb` to wait until the GPU is working. It allows to run CPU a wait only when the rendered data is needed. -- Add 10px and 8ox built in fonts - -### Bugfixes -- Fix unexpected DEFOCUS on lv_page when clicking to bg after the scrollable -- Fix `lv_obj_del` and `lv_obj_clean` if the children list changed during deletion. -- Adjust button matrix button width to include padding when spanning multiple units. -- Add rounding to btnmatrix line height calculation -- Add `decmopr_buf` to GC roots -- Fix division by zero in draw_pattern (lv_draw_rect.c) if the image or letter is not found -- Fix drawing images with 1 px height or width - -## v7.4.0 (01.09.2020) - -The main new features of v7.4 are run-time font loading, style caching and arc knob with value setting by click. - -### New features -- Add `lv_font_load()` function - Loads a `lv_font_t` object from a binary font file -- Add `lv_font_free()` function - Frees the memory allocated by the `lv_font_load()` function -- Add style caching to reduce access time of properties with default value -- arc: add set value by click feature -- arc: add `LV_ARC_PART_KNOB` similarly to slider -- send gestures event if the object was dragged. User can check dragging with `lv_indev_is_dragging(lv_indev_act())` in the event function. - -### Bugfixes -- Fix color bleeding on border drawing -- Fix using 'LV_SCROLLBAR_UNHIDE' after 'LV_SCROLLBAR_ON' -- Fix cropping of last column/row if an image is zoomed -- Fix zooming and rotating mosaic images -- Fix deleting tabview with LEFT/RIGHT tab position -- Fix btnmatrix to not send event when CLICK_TRIG = true and the cursor slid from a pressed button -- Fix roller width if selected text is larger than the normal - -## v7.3.1 (18.08.2020) - -### Bugfixes -- Fix drawing value string twice -- Rename `lv_chart_clear_serie` to `lv_chart_clear_series` and `lv_obj_align_origo` to `lv_obj_align_mid` -- Add linemeter's mirror feature again -- Fix text decor (underline strikethrough) with older versions of font converter -- Fix setting local style property multiple times -- Add missing background drawing and radius handling to image button -- Allow adding extra label to list buttons -- Fix crash if `lv_table_set_col_cnt` is called before `lv_table_set_row_cnt` for the first time -- Fix overflow in large image transformations -- Limit extra button click area of button matrix's buttons. With large paddings it was counter-intuitive. (Gaps are mapped to button when clicked). -- Fix `lv_btnmatrix_set_one_check` not forcing exactly one button to be checked -- Fix color picker invalidation in rectangle mode -- Init disabled days to gray color in calendar - -## v7.3.0 (04.08.2020) - -### New features -- Add `lv_task_get_next` -- Add `lv_event_send_refresh`, `lv_event_send_refresh_recursive` to easily send `LV_EVENT_REFRESH` to object -- Add `lv_tabview_set_tab_name()` function - used to change a tab's name -- Add `LV_THEME_MATERIAL_FLAG_NO_TRANSITION` and `LV_THEME_MATERIAL_FLAG_NO_FOCUS` flags -- Reduce code size by adding: `LV_USE_FONT_COMPRESSED` and `LV_FONT_USE_SUBPX` and applying some optimization -- Add `LV_MEMCPY_MEMSET_STD` to use standard `memcpy` and `memset` - -### Bugfixes -- Do not print warning for missing glyph if its height OR width is zero. -- Prevent duplicated sending of `LV_EVENT_INSERT` from text area -- Tidy outer edges of cpicker widget. -- Remove duplicated lines from `lv_tabview_add_tab` -- btnmatrix: handle combined states of buttons (e.g. checked + disabled) -- textarea: fix typo in lv_textarea_set_scrollbar_mode -- gauge: fix image needle drawing -- fix using freed memory in _lv_style_list_remove_style - -## v7.2.0 (21.07.2020) - -### New features -- Add screen transitions with `lv_scr_load_anim()` -- Add display background color, wallpaper and opacity. Shown when the screen is transparent. Can be used with `lv_disp_set_bg_opa/color/image()`. -- Add `LV_CALENDAR_WEEK_STARTS_MONDAY` -- Add `lv_chart_set_x_start_point()` function - Set the index of the x-axis start point in the data array -- Add `lv_chart_set_ext_array()` function - Set an external array of data points to use for the chart -- Add `lv_chart_set_point_id()` function - Set an individual point value in the chart series directly based on index -- Add `lv_chart_get_x_start_point()` function - Get the current index of the x-axis start point in the data array -- Add `lv_chart_get_point_id()` function - Get an individual point value in the chart series directly based on index -- Add `ext_buf_assigned` bit field to `lv_chart_series_t` structure - it's true if external buffer is assigned to series -- Add `lv_chart_set_series_axis()` to assign series to primary or secondary axis -- Add `lv_chart_set_y_range()` to allow setting range of secondary y-axis (based on `lv_chart_set_range` but extended with an axis parameter) -- Allow setting different font for the selected text in `lv_roller` -- Add `theme->apply_cb` to replace `theme->apply_xcb` to make it compatible with the MicroPython binding -- Add `lv_theme_set_base()` to allow easy extension of built-in (or any) themes -- Add `lv_obj_align_x()` and `lv_obj_align_y()` functions -- Add `lv_obj_align_origo_x()` and `lv_obj_align_origo_y()` functions - -### Bugfixes -- `tileview` fix navigation when not screen sized -- Use 14px font by default to for better compatibility with smaller displays -- `linemeter` fix conversation of current value to "level" -- Fix drawing on right border -- Set the cursor image non-clickable by default -- Improve mono theme when used with keyboard or encoder - -## v7.1.0 (07.07.2020) - -### New features -- Add `focus_parent` attribute to `lv_obj` -- Allow using buttons in encoder input device -- Add lv_btnmatrix_set/get_align capability -- DMA2D: Remove dependency on ST CubeMX HAL -- Added `max_used` propriety to `lv_mem_monitor_t` struct -- In `lv_init` test if the strings are UTF-8 encoded. -- Add `user_data` to themes -- Add LV_BIG_ENDIAN_SYSTEM flag to lv_conf.h in order to fix displaying images on big endian systems. -- Add inline function lv_checkbox_get_state(const lv_obj_t * cb) to extend the checkbox functionality. -- Add inline function lv_checkbox_set_state(const lv_obj_t * cb, lv_btn_state_t state ) to extend the checkbox functionality. - -### Bugfixes -- `lv_img` fix invalidation area when angle or zoom changes -- Update the style handling to support Big endian MCUs -- Change some methods to support big endian hardware. -- remove use of c++ keyword 'new' in parameter of function lv_theme_set_base(). -- Add LV_BIG_ENDIAN_SYSTEM flag to lv_conf.h in order to fix displaying images on big endian systems. -- Fix inserting chars in text area in big endian hardware. - -## v7.0.2 (16.06.2020) - -### Bugfixes -- `lv_textarea` fix wrong cursor position when clicked after the last character -- Change all text related indices from 16-bit to 32-bit integers throughout whole library. #1545 -- Fix gestures -- Do not call `set_px_cb` for transparent pixel -- Fix list button focus in material theme -- Fix crash when a text area is cleared with the backspace of a keyboard -- Add version number to `lv_conf_template.h` -- Add log in true double buffering mode with `set_px_cb` -- `lv_dropdown`: fix missing `LV_EVENT_VALUE_CHANGED` event when used with encoder -- `lv_tileview`: fix if not the {0;0} tile is created first -- `lv_debug`: restructure to allow asserting in from `lv_misc` too -- add assert if `_lv_mem_buf_get()` fails -- `lv_textarea`: fix character delete in password mode -- Update `LV_OPA_MIN` and `LV_OPA_MAX` to widen the opacity processed range -- `lv_btnm` fix sending events for hidden buttons -- `lv_gaguge` make `lv_gauge_set_angle_offset` offset the labels and needles too -- Fix typo in the API `scrllable` -> `scrollable` -- `tabview` by default allow auto expanding the page only to right and bottom (#1573) -- fix crash when drawing gradient to the same color -- chart: fix memory leak -- `img`: improve hit test for transformed images - -## v7.0.1 (01.06.2020) - -### Bugfixes -- Make Micropython working by adding the required variables as GC_ROOT -- Prefix some internal API functions with `_` to reduce the API of LVGL -- Fix built-in SimSun CJK font -- Fix UTF-8 encoding when `LV_USE_ARABIC_PERSIAN_CHARS` is enabled -- Fix DMA2D usage when 32 bit images directly blended -- Fix lv_roller in infinite mode when used with encoder -- Add `lv_theme_get_color_secondary()` -- Add `LV_COLOR_MIX_ROUND_OFS` to adjust color mixing to make it compatible with the GPU -- Improve DMA2D blending -- Remove memcpy from `lv_ll` (caused issues with some optimization settings) -- `lv_chart` fix X tick drawing -- Fix vertical dashed line drawing -- Some additional minor fixes and formattings - -## v7.0.0 (18.05.2020) - -### Documentation -The docs for v7 is available at https://docs.littlevgl.com/v7/en/html/index.html - -### Legal changes - -The name of the project is changed to LVGL and the new website is on https://lvgl.io - -LVGL remains free under the same conditions (MIT license) and a company is created to manage LVGL and offer services. - -### New drawing system -Complete rework of LVGL's draw engine to use "masks" for more advanced and higher quality graphical effects. -A possible use-case of this system is to remove the overflowing content from the rounded edges. -It also allows drawing perfectly anti-aliased circles, lines, and arcs. -Internally, the drawings happen by defining masks (such as rounded rectangle, line, angle). -When something is drawn the currently active masks can make some pixels transparent. -For example, rectangle borders are drawn by using 2 rectangle masks: one mask removes the inner part and another the outer part. - -The API in this regard remained the same but some new functions were added: -- `lv_img_set_zoom`: set image object's zoom factor -- `lv_img_set_angle`: set image object's angle without using canvas -- `lv_img_set_pivot`: set the pivot point of rotation - -The new drawing engine brought new drawing features too. They are highlighted in the "style" section. - -### New style system -The old style system is replaced with a new more flexible and lightweighted one. -It uses an approach similar to CSS: support cascading styles, inheriting properties and local style properties per object. -As part of these updates, a lot of objects were reworked and the APIs have been changed. - -- more shadows options: *offset* and *spread* -- gradient stop position to shift the gradient area and horizontal gradient -- `LV_BLEND_MODE_NORMAL/ADDITIVE/SUBTRACTIVE` blending modes -- *clip corner*: crop the content on the rounded corners -- *text underline* and *strikethrough* -- dashed vertical and horizontal lines (*dash gap*, *dash_width*) -- *outline*: a border-like part drawn out of the background. Can have spacing to the background. -- *pattern*: display and image in the middle of the background or repeat it -- *value* display a text which is stored in the style. It can be used e.g. as a light-weighted text on buttons too. -- *margin*: similar to *padding* but used to keep space outside the object - -Read the [Style](https://docs.littlevgl.com/v7/en/html/overview/style.html) section of the documentation to learn how the new styles system works. - -### GPU integration -To better utilize GPUs, from this version GPU usage can be integrated into LVGL. In `lv_conf.h` any supported GPUs can be enabled with a single configuration option. - -Right now, only ST's DMA2D (Chrom-ART) is integrated. More will in the upcoming releases. - -### Renames -The following object types are renamed: -- sw -> switch -- ta -> textarea -- cb -> checkbox -- lmeter -> linemeter -- mbox -> msgbox -- ddlist -> dropdown -- btnm -> btnmatrix -- kb -> keyboard -- preload -> spinner -- lv_objx folder -> lv_widgets -- LV_FIT_FILL -> LV_FIT_PARENT -- LV_FIT_FLOOD -> LV_FLOOD_MAX -- LV_LAYOUT_COL_L/M/R -> LV_LAYOUT_COLUMN_LEFT/MID/RIGHT -- LV_LAYOUT_ROW_T/M/B -> LV_LAYOUT_ROW_TOP/MID/BOTTOM - -### Reworked and improved object -- `dropdown`: Completely reworked. Now creates a separate list when opened and can be dropped to down/up/left/right. -- `label`: `body_draw` is removed, instead, if its style has a visible background/border/shadow etc it will be drawn. Padding really makes the object larger (not just virtually as before) -- `arc`: can draw background too. -- `btn`: doesn't store styles for each state because it's done naturally in the new style system. -- `calendar`: highlight the pressed datum. The used styles are changed: use `LV_CALENDAR_PART_DATE` normal for normal dates, checked for highlighted, focused for today, pressed for the being pressed. (checked+pressed, focused+pressed also work) -- `chart`: only has `LINE` and `COLUMN` types because with new styles all the others can be described. LV_CHART_PART_SERIES sets the style of the series. bg_opa > 0 draws an area in LINE mode. `LV_CHART_PART_SERIES_BG` also added to set a different style for the series area. Padding in `LV_CHART_PART_BG` makes the series area smaller, and it ensures space for axis labels/numbers. -- `linemeter`, `gauge`: can have background if the related style properties are set. Padding makes the scale/lines smaller. scale_border_width and scale_end_border_width allow to draw an arc on the outer part of the scale lines. -- `gauge`: `lv_gauge_set_needle_img` allows use image as needle -- `canvas`: allow drawing to true color alpha and alpha only canvas, add `lv_canvas_blur_hor/ver` and rename `lv_canvas_rotate` to `lv_canvas_transform` -- `textarea`: If available in the font use bullet (`U+2022`) character in text area password - -### New object types -- `lv_objmask`: masks can be added to it. The children will be masked accordingly. - -### Others -- Change the built-in fonts to [Montserrat](https://fonts.google.com/specimen/Montserrat) and add built-in fonts from 12 px to 48 px for every 2nd size. -- Add example CJK and Arabic/Persian/Hebrew built-in font -- Add ° and "bullet" to the built-in fonts -- Add Arabic/Persian script support: change the character according to its position in the text. -- Add `playback_time` to animations. -- Add `repeat_count` to animations instead of the current "repeat forever". -- Replace `LV_LAYOUT_PRETTY` with `LV_LAYOUT_PRETTY_TOP/MID/BOTTOM` - -### Demos -- [lv_examples](https://github.com/littlevgl/lv_examples) was reworked and new examples and demos were added - -### New release policy -- Maintain this Changelog for every release -- Save old major version in new branches. E.g. `release/v6` -- Merge new features and fixes directly into `master` and release a patch or minor releases every 2 weeks. - -### Migrating from v6 to v7 -- First and foremost, create a new `lv_conf.h` based on `lv_conf_template.h`. -- To try the new version it suggested using a simulator project and see the examples. -- If you have a running project, the most difficult part of the migration is updating to the new style system. Unfortunately, there is no better way than manually updating to the new format. -- The other parts are mainly minor renames and refactoring as described above. diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/js/custom.js b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/js/custom.js deleted file mode 100644 index d16e00b..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/js/custom.js +++ /dev/null @@ -1,18 +0,0 @@ -/* API collapsing */ -document.addEventListener('DOMContentLoaded', (event) => { - document.querySelectorAll("dl.cpp").forEach(cppListing => { - const dt = cppListing.querySelector("dt"); - let shouldBeExpanded = false; - if(dt.id == document.location.hash.substring(1)) - shouldBeExpanded = true; - cppListing.classList.add(shouldBeExpanded ? "expanded" : "unexpanded"); - const button = document.createElement("span"); - button.classList.add("lv-api-expansion-button"); - button.addEventListener("click", () => { - cppListing.classList.toggle("unexpanded"); - cppListing.classList.toggle("expanded"); - }); - - dt.insertBefore(button, dt.firstChild); - }); -}) \ No newline at end of file diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/nxp.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/nxp.md deleted file mode 100644 index 9767fbf..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/nxp.md +++ /dev/null @@ -1,168 +0,0 @@ -# NXP -NXP has integrated LVGL into the MCUXpresso SDK packages for several of their general purpose and crossover -microcontrollers, allowing easy evaluation and migration into your product design. -[Download an SDK for a supported board](https://www.nxp.com/design/software/embedded-software/littlevgl-open-source-graphics-library:LITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY?&tid=vanLITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY) -today and get started with your next GUI application. - -## Creating new project with LVGL -Downloading the MCU SDK example project is recommended as a starting point. It comes fully configured with LVGL (and -with PXP/VGLite support if the modules are present), no additional integration work is required. - -## HW acceleration for NXP iMX RT platforms -Depending on the RT platform used, the acceleration can be done by NXP PXP (PiXel Pipeline) and/or the Verisilicon GPU -through an API named VGLite. There is a single NXP draw context that covers both GPUs allowing to have enabled either -one or even both at the same time. While enableing both 2D accelerators, the VGLite can be used to accelerate widget -drawing while the PXP accelerated blit and fill operations. - -Supported draw callbacks are available in "src/draw/nxp/lv_gpu_nxp.c": -```c - nxp_draw_ctx->base_draw.draw_arc = lv_draw_nxp_arc; - nxp_draw_ctx->base_draw.draw_rect = lv_draw_nxp_rect; - nxp_draw_ctx->base_draw.draw_img_decoded = lv_draw_nxp_img_decoded; - nxp_draw_ctx->blend = lv_draw_nxp_blend; -``` - -If enabled both GPUs, the PXP is the preffered one to be used for drawing operation. A fallback mechanism is -implemented so that if the feature is not supported by PXP (or if PXP fails), the VGLite will take over to handle the -task. At the end, the CPU will assure that every widget drawing is fully covered (if not already done by GPU). - -### PXP accelerator -Several drawing features in LVGL can be offloaded to the PXP engine. The VGLite (if supported) and CPU are available for -other operations while the PXP is running. An RTOS is required to block the LVGL drawing thread and switch to another -task or suspend the CPU for power savings. - -#### Features supported: - - RGB565 and ARGB8888 color formats - - Area fill + optional transparency - - BLIT (BLock Image Transfer) + optional transparency - - Color keying + optional transparency - - Recoloring (color tint) + optional transparency - - Image Rotation (90, 180, 270 degree) + optional transparency - - Recoloring (color tint) + Image Rotation (90, 180, 270 degree) + optional transparency - - Screen Rotation (90, 180, 270 degree) - - RTOS integration layer - - Default FreeRTOS and bare metal code provided - - - Combination of recolor and/or rotation + color key/alpha blend/transparency is supported but PXP needs two steps. - First step is to recolor/rotate the image to a temporarly buffer (please check LV_MEM_SIZE value for allocation limit) - and another step is required to handle color keying, alpha chanel or to apply transparency. - -#### Known limitations: - - Rotation is not supported for images unaligned to blocks of 16x16 pixels. -PXP is set to process 16x16 blocks to optimize the system for memory bandwidth and image processing time. -The output engine essentially truncates any output pixels after the desired number of pixels has been written. -When rotating a source image and the output is not divisible by the block size, the incorrect pixels could be truncated -and the final output image can look shifted. - -#### Basic configuration: - - Select NXP PXP engine in lv_conf.h: Set `LV_USE_GPU_NXP_PXP` to 1 - - Enable default implementation for interrupt handling, PXP start function and automatic initialization: - Set `LV_USE_GPU_NXP_PXP_AUTO_INIT` to 1 - - If `SDK_OS_FREE_RTOS` symbol is defined, FreeRTOS implementation will be used, otherwise bare metal code will be - included - -#### Basic initialization: - - If `LV_USE_GPU_NXP_PXP_AUTO_INIT` is enabled, no user code is required; PXP is initialized automatically in - `lv_init()` - - For manual PXP initialization, default configuration structure for callbacks can be used. Initialize PXP before - calling `lv_init()` -```c - #if LV_USE_GPU_NXP_PXP - #include "src/draw/nxp/pxp/lv_gpu_nxp_pxp.h" - #endif - . . . - #if LV_USE_GPU_NXP_PXP - PXP_COND_STOP(!lv_gpu_nxp_pxp_init(), "PXP init failed."); - #endif -``` - -#### Project setup: - - Add PXP related files to project: - - src/draw/nxp/pxp/lv_gpu_nxp_pxp.c, src/draw/nxp/pxp/lv_gpu_nxp_pxp.h: init, uninit, run/wait PXP device, log/trace - - src/draw/nxp/pxp/lv_draw_pxp_blend.c, src/draw/nxp/pxp/lv_draw_pxp_blend.h: fill and blit (w/o transformation) - - src/draw/nxp/pxp/lv_gpu_nxp_osa.c, src/draw/nxp/pxp/lv_gpu_osa.h: default implementation of OS-specific functions - (bare metal and FreeRTOS only) - - optional, required only if `LV_USE_GPU_NXP_PXP_AUTO_INIT` is set to 1 - - PXP related code depends on two drivers provided by MCU SDK. These drivers need to be added to project: - - fsl_pxp.c, fsl_pxp.h: PXP driver - - fsl_cache.c, fsl_cache.h: CPU cache handling functions - -#### Logging: - - By default, LV_GPU_NXP_PXP_LOG_ERRORS is enabled so that any PXP error will be seen on LVGL output - - For tracing logs about the PXP limitations or size thresholds, the user can enable LV_GPU_NXP_PXP_LOG_TRACES - -#### Advanced configuration: - - Implementation depends on multiple OS-specific functions. The struct `lv_nxp_pxp_cfg_t` with callback pointers is - used as a parameter for the `lv_gpu_nxp_pxp_init()` function. Default implementation for FreeRTOS and baremetal is - provided in lv_gpu_nxp_osa.c - - `pxp_interrupt_init()`: Initialize PXP interrupt (HW setup, OS setup) - - `pxp_interrupt_deinit()`: Deinitialize PXP interrupt (HW setup, OS setup) - - `pxp_run()`: Start PXP job. Use OS-specific mechanism to block drawing thread. PXP must finish drawing before - leaving this function. - - There are configurable area thresholds which are used to decide whether the area will be processed by CPU or by PXP. - Areas smaller than a defined value will be processed by CPU and those bigger than the threshold will be processed by - PXP. These thresholds may be defined as preprocessor variables. Default values are defined in lv_draw_pxp_blend.h - - `LV_GPU_NXP_PXP_BLIT_SIZE_LIMIT`: size threshold for image BLIT, BLIT with color keying, BLIT with recolor and - BLIT with rotation (OPA >= LV_OPA_MAX) - - `LV_GPU_NXP_PXP_BLIT_OPA_SIZE_LIMIT`: size threshold for image BLIT, BLIT with color keying, BLIT with recolor - and BLIT with rotation and transparency (OPA < LV_OPA_MAX) - - `LV_GPU_NXP_PXP_FILL_SIZE_LIMIT`: size threshold for fill operation (OPA >= LV_OPA_MAX) - - `LV_GPU_NXP_PXP_FILL_OPA_SIZE_LIMIT`: size threshold for fill operation with transparency (OPA < LV_OPA_MAX) - -### VGLite accelerator -Extra drawing features in LVGL can be handled by the VGLite engine. The PXP (if supported) and CPU are available for -other operations while the VGLite is running. An RTOS is required to block the LVGL drawing thread and switch to another -task or suspend the CPU for power savings. - -#### Features supported: - - RGB565 and ARGB8888 color formats - - Area fill + optional transparency - - BLIT (BLock Image Transfer) + optional transparency - - Image Rotation (any degree with decimal) + optional transparency - - Image Scale + optional transparency - - Draw background rectangle with radius or gradient - - Draw arc - - RTOS integration layer - -#### Basic configuration: - - Select NXP VGLite engine in lv_conf.h: Set `LV_USE_GPU_NXP_VG_LITE` to 1 - - `SDK_OS_FREE_RTOS` symbol needs to be defined so that the FreeRTOS implementation will be used - -#### Basic initialization: - - Initialize VGLite before calling `lv_init()` by specifying the width/height of tessellation window. Value should be - a multiple of 16; minimum value is 16 pixels, maximum cannot be greater than frame width. If less than or equal to 0, - then no tessellation buffer is created, in which case the function is used for a blit init. -```c - #if LV_USE_GPU_NXP_VG_LITE - #include "vg_lite.h" - #endif - . . . - #if LV_USE_GPU_NXP_VG_LITE - VG_LITE_COND_STOP(vg_lite_init(64, 64) != VG_LITE_SUCCESS, "VGLite init failed."); - #endif -``` - -#### Project setup: - - Add VGLite related files to project: - - src/draw/nxp/vglite/lv_gpu_nxp_vglite.c, src/draw/nxp/vglite/lv_gpu_nxp_vglite.h: buffer init, log/trace - - src/draw/nxp/vglite/lv_draw_vglite_blend.c, src/draw/nxp/vglite/lv_draw_vglite_blend.h: fill and blit - (w/o transformation) - - src/draw/nxp/vglite/lv_draw_vglite_rect.c, src/draw/nxp/vglite/lv_draw_vglite_rect.h: rectangle draw - - src/draw/nxp/vglite/lv_draw_vglite_arc.c, src/draw/nxp/vglite/lv_draw_vglite_arc.h: arc draw - -#### Logging: - - By default, LV_GPU_NXP_VG_LITE_LOG_ERRORS is enabled so that any VGLite error will be seen on LVGL output - - For tracing logs about the VGLite limitations, size thresholds or stride alignment, the user can enable - LV_GPU_NXP_VG_LITE_LOG_TRACES - -#### Advanced configuration: - - There are configurable area thresholds which are used to decide whether the area will be processed by CPU or by - VGLite. Areas smaller than a defined value will be processed by CPU and those bigger than the threshold will be - processed by VGLite. These thresholds may be defined as preprocessor variables. Default values are defined in - lv_draw_vglite_blend.h - - `LV_GPU_NXP_VG_LITE_BLIT_SIZE_LIMIT`: size threshold for image BLIT, BLIT with scale and BLIT with rotation - (OPA >= LV_OPA_MAX) - - `LV_GPU_NXP_VG_LITE_BLIT_OPA_SIZE_LIMIT`: size threshold for image BLIT, BLIT with scale and BLIT with rotation - and transparency (OPA < LV_OPA_MAX) - - `LV_GPU_NXP_VG_LITE_FILL_SIZE_LIMIT`: size threshold for fill operation (OPA >= LV_OPA_MAX) - - `LV_GPU_NXP_VG_LITE_FILL_OPA_SIZE_LIMIT`: size threshold for fill operation with transparency (OPA < LV_OPA_MAX) diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/fsdrv.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/fsdrv.md deleted file mode 100644 index 7b9015a..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/fsdrv.md +++ /dev/null @@ -1,21 +0,0 @@ - -# File System Interfaces - -LVGL has a [File system](https://docs.lvgl.io/master/overview/file-system.html) module to provide an abstraction layer for various file system drivers. - -LVG has built in support for: -- [FATFS](http://elm-chan.org/fsw/ff/00index_e.html) -- STDIO (Linux and Windows using C standard function .e.g fopen, fread) -- POSIX (Linux and Windows using POSIX function .e.g open, read) -- WIN32 (Windows using Win32 API function .e.g CreateFileA, ReadFile) - -You still need to provide the drivers and libraries, this extension provides only the bridge between FATFS, STDIO, POSIX, WIN32 and LVGL. - -## Usage - -In `lv_conf.h` enable `LV_USE_FS_...` and assign an upper cased letter to `LV_FS_..._LETTER` (e.g. `'S'`). -After that you can access files using that driver letter. E.g. `"S:path/to/file.txt"`. - -The work directory can be set with `LV_FS_..._PATH`. E.g. `"/home/joe/projects/"` The actual file/directory paths will be appended to it. - -Cached reading is also supported if `LV_FS_..._CACHE_SIZE` is set to not `0` value. `lv_fs_read` caches this size of data to lower the number of actual reads from the storage. diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/arm-2d.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/arm-2d.md deleted file mode 100644 index d655477..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/arm-2d.md +++ /dev/null @@ -1,4 +0,0 @@ -# ARM-2D GPU - -TODO - diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/env_support/rt-thread/squareline/SConscript b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/env_support/rt-thread/squareline/SConscript deleted file mode 100644 index 89a5099..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/env_support/rt-thread/squareline/SConscript +++ /dev/null @@ -1,13 +0,0 @@ -from building import * - -cwd = GetCurrentDir() -group = [] -src = [] -CPPPATH =[] - -src += Glob(cwd + '/ui/*.c') -CPPPATH += [cwd+'/ui'] - -group = group + DefineGroup('LVGL-SquareLine', src, depend = ['PKG_USING_LVGL_SQUARELINE'], CPPPATH = CPPPATH) - -Return('group') diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/examples/widgets/chart/lv_example_chart_5.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/examples/widgets/chart/lv_example_chart_5.c deleted file mode 100644 index c175e37..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/examples/widgets/chart/lv_example_chart_5.c +++ /dev/null @@ -1,99 +0,0 @@ -#include "../../lv_examples.h" -#if LV_USE_CHART && LV_USE_SLIDER && LV_BUILD_EXAMPLES - -static lv_obj_t * chart; -/* Source: https://github.com/ankur219/ECG-Arrhythmia-classification/blob/642230149583adfae1e4bd26c6f0e1fd8af2be0e/sample.csv*/ -static const lv_coord_t ecg_sample[] = { - -2, 2, 0, -15, -39, -63, -71, -68, -67, -69, -84, -95, -104, -107, -108, -107, -107, -107, -107, -114, -118, -117, - -112, -100, -89, -83, -71, -64, -58, -58, -62, -62, -58, -51, -46, -39, -27, -10, 4, 7, 1, -3, 0, 14, 24, 30, 25, 19, - 13, 7, 12, 15, 18, 21, 13, 6, 9, 8, 17, 19, 13, 11, 11, 11, 23, 30, 37, 34, 25, 14, 15, 19, 28, 31, 26, 23, 25, 31, - 39, 37, 37, 34, 30, 32, 22, 29, 31, 33, 37, 23, 13, 7, 2, 4, -2, 2, 11, 22, 33, 19, -1, -27, -55, -67, -72, -71, -63, - -49, -18, 35, 113, 230, 369, 525, 651, 722, 730, 667, 563, 454, 357, 305, 288, 274, 255, 212, 173, 143, 117, 82, 39, - -13, -53, -78, -91, -101, -113, -124, -131, -131, -131, -129, -128, -129, -125, -123, -123, -129, -139, -148, -153, - -159, -166, -183, -205, -227, -243, -248, -246, -254, -280, -327, -381, -429, -473, -517, -556, -592, -612, -620, - -620, -614, -604, -591, -574, -540, -497, -441, -389, -358, -336, -313, -284, -222, -167, -114, -70, -47, -28, -4, 12, - 38, 52, 58, 56, 56, 57, 68, 77, 86, 86, 80, 69, 67, 70, 82, 85, 89, 90, 89, 89, 88, 91, 96, 97, 91, 83, 78, 82, 88, 95, - 96, 105, 106, 110, 102, 100, 96, 98, 97, 101, 98, 99, 100, 107, 113, 119, 115, 110, 96, 85, 73, 64, 69, 76, 79, - 78, 75, 85, 100, 114, 113, 105, 96, 84, 74, 66, 60, 75, 85, 89, 83, 67, 61, 67, 73, 79, 74, 63, 57, 56, 58, 61, 55, - 48, 45, 46, 55, 62, 55, 49, 43, 50, 59, 63, 57, 40, 31, 23, 25, 27, 31, 35, 34, 30, 36, 34, 42, 38, 36, 40, 46, 50, - 47, 32, 30, 32, 52, 67, 73, 71, 63, 54, 53, 45, 41, 28, 13, 3, 1, 4, 4, -8, -23, -32, -31, -19, -5, 3, 9, 13, 19, - 24, 27, 29, 25, 22, 26, 32, 42, 51, 56, 60, 57, 55, 53, 53, 54, 59, 54, 49, 26, -3, -11, -20, -47, -100, -194, -236, - -212, -123, 8, 103, 142, 147, 120, 105, 98, 93, 81, 61, 40, 26, 28, 30, 30, 27, 19, 17, 21, 20, 19, 19, 22, 36, 40, - 35, 20, 7, 1, 10, 18, 27, 22, 6, -4, -2, 3, 6, -2, -13, -14, -10, -2, 3, 2, -1, -5, -10, -19, -32, -42, -55, -60, - -68, -77, -86, -101, -110, -117, -115, -104, -92, -84, -85, -84, -73, -65, -52, -50, -45, -35, -20, -3, 12, 20, 25, - 26, 28, 28, 30, 28, 25, 28, 33, 42, 42, 36, 23, 9, 0, 1, -4, 1, -4, -4, 1, 5, 9, 9, -3, -1, -18, -50, -108, -190, - -272, -340, -408, -446, -537, -643, -777, -894, -920, -853, -697, -461, -251, -60, 58, 103, 129, 139, 155, 170, 173, - 178, 185, 190, 193, 200, 208, 215, 225, 224, 232, 234, 240, 240, 236, 229, 226, 224, 232, 233, 232, 224, 219, 219, - 223, 231, 226, 223, 219, 218, 223, 223, 223, 233, 245, 268, 286, 296, 295, 283, 271, 263, 252, 243, 226, 210, 197, - 186, 171, 152, 133, 117, 114, 110, 107, 96, 80, 63, 48, 40, 38, 34, 28, 15, 2, -7, -11, -14, -18, -29, -37, -44, -50, - -58, -63, -61, -52, -50, -48, -61, -59, -58, -54, -47, -52, -62, -61, -64, -54, -52, -59, -69, -76, -76, -69, -67, - -74, -78, -81, -80, -73, -65, -57, -53, -51, -47, -35, -27, -22, -22, -24, -21, -17, -13, -10, -11, -13, -20, -20, - -12, -2, 7, -1, -12, -16, -13, -2, 2, -4, -5, -2, 9, 19, 19, 14, 11, 13, 19, 21, 20, 18, 19, 19, 19, 16, 15, 13, 14, - 9, 3, -5, -9, -5, -3, -2, -3, -3, 2, 8, 9, 9, 5, 6, 8, 8, 7, 4, 3, 4, 5, 3, 5, 5, 13, 13, 12, 10, 10, 15, 22, 17, - 14, 7, 10, 15, 16, 11, 12, 10, 13, 9, -2, -4, -2, 7, 16, 16, 17, 16, 7, -1, -16, -18, -16, -9, -4, -5, -10, -9, -8, - -3, -4, -10, -19, -20, -16, -9, -9, -23, -40, -48, -43, -33, -19, -21, -26, -31, -33, -19, 0, 17, 24, 9, -17, -47, - -63, -67, -59, -52, -51, -50, -49, -42, -26, -21, -15, -20, -23, -22, -19, -12, -8, 5, 18, 27, 32, 26, 25, 26, 22, - 23, 17, 14, 17, 21, 25, 2, -45, -121, -196, -226, -200, -118, -9, 73, 126, 131, 114, 87, 60, 42, 29, 26, 34, 35, 34, - 25, 12, 9, 7, 3, 2, -8, -11, 2, 23, 38, 41, 23, 9, 10, 13, 16, 8, -8, -17, -23, -26, -25, -21, -15, -10, -13, -13, - -19, -22, -29, -40, -48, -48, -54, -55, -66, -82, -85, -90, -92, -98, -114, -119, -124, -129, -132, -146, -146, -138, - -124, -99, -85, -72, -65, -65, -65, -66, -63, -64, -64, -58, -46, -26, -9, 2, 2, 4, 0, 1, 4, 3, 10, 11, 10, 2, -4, - 0, 10, 18, 20, 6, 2, -9, -7, -3, -3, -2, -7, -12, -5, 5, 24, 36, 31, 25, 6, 3, 7, 12, 17, 11, 0, -6, -9, -8, -7, -5, - -6, -2, -2, -6, -2, 2, 14, 24, 22, 15, 8, 4, 6, 7, 12, 16, 25, 20, 7, -16, -41, -60, -67, -65, -54, -35, -11, 30, - 84, 175, 302, 455, 603, 707, 743, 714, 625, 519, 414, 337, 300, 281, 263, 239, 197, 163, 136, 109, 77, 34, -18, -50, - -66, -74, -79, -92, -107, -117, -127, -129, -135, -139, -141, -155, -159, -167, -171, -169, -174, -175, -178, -191, - -202, -223, -235, -243, -237, -240, -256, -298, -345, -393, -432, -475, -518, -565, -596, -619, -623, -623, -614, - -599, -583, -559, -524, -477, -425, -383, -357, -331, -301, -252, -198, -143, -96, -57, -29, -8, 10, 31, 45, 60, 65, - 70, 74, 76, 79, 82, 79, 75, 62, - }; - -static void slider_x_event_cb(lv_event_t * e) -{ - lv_obj_t * obj = lv_event_get_target(e); - int32_t v = lv_slider_get_value(obj); - lv_chart_set_zoom_x(chart, v); -} - -static void slider_y_event_cb(lv_event_t * e) -{ - lv_obj_t * obj = lv_event_get_target(e); - int32_t v = lv_slider_get_value(obj); - lv_chart_set_zoom_y(chart, v); -} - -/** - * Display 1000 data points with zooming and scrolling. - * See how the chart changes drawing mode (draw only vertical lines) when - * the points get too crowded. - */ -void lv_example_chart_5(void) -{ - /*Create a chart*/ - chart = lv_chart_create(lv_scr_act()); - lv_obj_set_size(chart, 200, 150); - lv_obj_align(chart, LV_ALIGN_CENTER, -30, -30); - lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, -1000, 1000); - - /*Do not display points on the data*/ - lv_obj_set_style_size(chart, 0, LV_PART_INDICATOR); - - lv_chart_series_t * ser = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y); - - uint32_t pcnt = sizeof(ecg_sample) / sizeof(ecg_sample[0]); - lv_chart_set_point_count(chart, pcnt); - lv_chart_set_ext_y_array(chart, ser, (lv_coord_t *)ecg_sample); - - lv_obj_t * slider; - slider = lv_slider_create(lv_scr_act()); - lv_slider_set_range(slider, LV_IMG_ZOOM_NONE, LV_IMG_ZOOM_NONE * 10); - lv_obj_add_event_cb(slider, slider_x_event_cb, LV_EVENT_VALUE_CHANGED, NULL); - lv_obj_set_size(slider, 200, 10); - lv_obj_align_to(slider, chart, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); - - slider = lv_slider_create(lv_scr_act()); - lv_slider_set_range(slider, LV_IMG_ZOOM_NONE, LV_IMG_ZOOM_NONE * 10); - lv_obj_add_event_cb(slider, slider_y_event_cb, LV_EVENT_VALUE_CHANGED, NULL); - lv_obj_set_size(slider, 10, 150); - lv_obj_align_to(slider, chart, LV_ALIGN_OUT_RIGHT_MID, 20, 0); -} - -#endif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/idf_component.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/idf_component.yml deleted file mode 100644 index ba3fff1..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/idf_component.yml +++ /dev/null @@ -1,2 +0,0 @@ -description: LVGL - Light and Versatile Graphics Library -url: https://github.com/lvgl/lvgl \ No newline at end of file diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/lv_gpu_nxp.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/lv_gpu_nxp.c deleted file mode 100644 index 46da933..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/lv_gpu_nxp.c +++ /dev/null @@ -1,418 +0,0 @@ -/** - * @file lv_gpu_nxp.c - * - */ - -/** - * MIT License - * - * Copyright 2022 NXP - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next paragraph) - * shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/********************* - * INCLUDES - *********************/ - -#include "lv_gpu_nxp.h" - -#if LV_USE_GPU_NXP_PXP || LV_USE_GPU_NXP_VG_LITE - -/* - * allow to use both PXP and VGLITE - - * both 2D accelerators can be used at the same time: - * thus VGLITE can be used to accelerate widget drawing - * while PXP accelerates Blit & Fill operations. - */ -#if LV_USE_GPU_NXP_PXP - #include "pxp/lv_draw_pxp_blend.h" -#endif -#if LV_USE_GPU_NXP_VG_LITE - #include "vglite/lv_draw_vglite_blend.h" - #include "vglite/lv_draw_vglite_rect.h" - #include "vglite/lv_draw_vglite_arc.h" -#endif - -#if LV_COLOR_DEPTH != 32 - #include "../../core/lv_refr.h" -#endif - -/********************* - * DEFINES - *********************/ - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * STATIC PROTOTYPES - **********************/ - -static void lv_draw_nxp_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * dsc, - const lv_area_t * coords, const uint8_t * map_p, lv_img_cf_t cf); - -static void lv_draw_nxp_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc); - -static void lv_draw_nxp_rect(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dsc, const lv_area_t * coords); - -static lv_res_t draw_nxp_bg(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dsc, const lv_area_t * coords); - -static void lv_draw_nxp_arc(lv_draw_ctx_t * draw_ctx, const lv_draw_arc_dsc_t * dsc, const lv_point_t * center, - uint16_t radius, uint16_t start_angle, uint16_t end_angle); - -/********************** - * STATIC VARIABLES - **********************/ - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -void lv_draw_nxp_ctx_init(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx) -{ - lv_draw_sw_init_ctx(drv, draw_ctx); - - lv_draw_nxp_ctx_t * nxp_draw_ctx = (lv_draw_sw_ctx_t *)draw_ctx; - - nxp_draw_ctx->base_draw.draw_arc = lv_draw_nxp_arc; - nxp_draw_ctx->base_draw.draw_rect = lv_draw_nxp_rect; - nxp_draw_ctx->base_draw.draw_img_decoded = lv_draw_nxp_img_decoded; - nxp_draw_ctx->blend = lv_draw_nxp_blend; - //nxp_draw_ctx->base_draw.wait_for_finish = lv_draw_nxp_wait_cb; -} - -void lv_draw_nxp_ctx_deinit(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx) -{ - lv_draw_sw_deinit_ctx(drv, draw_ctx); -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -/** - * During rendering, LVGL might initializes new draw_ctxs and start drawing into - * a separate buffer (called layer). If the content to be rendered has "holes", - * e.g. rounded corner, LVGL temporarily sets the disp_drv.screen_transp flag. - * It means the renderers should draw into an ARGB buffer. - * With 32 bit color depth it's not a big problem but with 16 bit color depth - * the target pixel format is ARGB8565 which is not supported by the GPU. - * In this case, the NXP callbacks should fallback to SW rendering. - */ -static inline bool need_argb8565_support() -{ -#if LV_COLOR_DEPTH != 32 - lv_disp_t * disp = _lv_refr_get_disp_refreshing(); - - if(disp->driver->screen_transp == 1) - return true; -#endif - - return false; -} - -static void lv_draw_nxp_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc) -{ - lv_area_t blend_area; - - /*Let's get the blend area which is the intersection of the area to fill and the clip area.*/ - if(!_lv_area_intersect(&blend_area, dsc->blend_area, draw_ctx->clip_area)) - return; /*Fully clipped, nothing to do*/ - - /*Make the blend area relative to the buffer*/ - lv_area_move(&blend_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1); - - bool done = false; - - /*Fill/Blend only non masked, normal blended*/ - if(dsc->mask_buf == NULL && dsc->blend_mode == LV_BLEND_MODE_NORMAL && !need_argb8565_support()) { - lv_color_t * dest_buf = draw_ctx->buf; - lv_coord_t dest_stride = lv_area_get_width(draw_ctx->buf_area); -#if LV_USE_GPU_NXP_VG_LITE - lv_coord_t dest_width = lv_area_get_width(draw_ctx->buf_area); - lv_coord_t dest_height = lv_area_get_height(draw_ctx->buf_area); -#endif - - const lv_color_t * src_buf = dsc->src_buf; - - if(src_buf == NULL) { -#if LV_USE_GPU_NXP_PXP - done = (lv_gpu_nxp_pxp_fill(dest_buf, dest_stride, &blend_area, - dsc->color, dsc->opa) == LV_RES_OK); - if(!done) - PXP_LOG_TRACE("PXP fill failed. Fallback."); - -#endif -#if LV_USE_GPU_NXP_VG_LITE - if(!done) { - done = (lv_gpu_nxp_vglite_fill(dest_buf, dest_width, dest_height, &blend_area, - dsc->color, dsc->opa) == LV_RES_OK); - if(!done) - VG_LITE_LOG_TRACE("VG-Lite fill failed. Fallback."); - } -#endif - } - else { -#if LV_USE_GPU_NXP_PXP - done = (lv_gpu_nxp_pxp_blit(dest_buf, &blend_area, dest_stride, src_buf, dsc->blend_area, - dsc->opa, LV_DISP_ROT_NONE) == LV_RES_OK); - if(!done) - PXP_LOG_TRACE("PXP blit failed. Fallback."); -#endif -#if LV_USE_GPU_NXP_VG_LITE - if(!done) { - lv_gpu_nxp_vglite_blit_info_t blit; - lv_coord_t src_stride = lv_area_get_width(dsc->blend_area); - - blit.src = src_buf; - blit.src_width = lv_area_get_width(dsc->blend_area); - blit.src_height = lv_area_get_height(dsc->blend_area); - blit.src_stride = src_stride * (int32_t)sizeof(lv_color_t); - blit.src_area.x1 = (blend_area.x1 - (dsc->blend_area->x1 - draw_ctx->buf_area->x1)); - blit.src_area.y1 = (blend_area.y1 - (dsc->blend_area->y1 - draw_ctx->buf_area->y1)); - blit.src_area.x2 = blit.src_area.x1 + blit.src_width - 1; - blit.src_area.y2 = blit.src_area.y1 + blit.src_height - 1; - - blit.dst = dest_buf; - blit.dst_width = dest_width; - blit.dst_height = dest_height; - blit.dst_stride = dest_stride * (int32_t)sizeof(lv_color_t); - blit.dst_area.x1 = blend_area.x1; - blit.dst_area.y1 = blend_area.y1; - blit.dst_area.x2 = blend_area.x2; - blit.dst_area.y2 = blend_area.y2; - - blit.opa = dsc->opa; - blit.zoom = LV_IMG_ZOOM_NONE; - blit.angle = 0; - - done = (lv_gpu_nxp_vglite_blit(&blit) == LV_RES_OK); - - if(!done) - VG_LITE_LOG_TRACE("VG-Lite blit failed. Fallback."); - } -#endif - } - } - - if(!done) - lv_draw_sw_blend_basic(draw_ctx, dsc); -} - -static void lv_draw_nxp_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * dsc, - const lv_area_t * coords, const uint8_t * map_p, lv_img_cf_t cf) -{ - /*Use the clip area as draw area*/ - lv_area_t draw_area; - lv_area_copy(&draw_area, draw_ctx->clip_area); - bool mask_any = lv_draw_mask_is_any(&draw_area); -#if LV_USE_GPU_NXP_VG_LITE - bool recolor = (dsc->recolor_opa != LV_OPA_TRANSP); -#endif -#if LV_USE_GPU_NXP_PXP - bool scale = (dsc->zoom != LV_IMG_ZOOM_NONE); -#endif - bool done = false; - - lv_area_t blend_area; - /*Let's get the blend area which is the intersection of the area to fill and the clip area.*/ - if(!_lv_area_intersect(&blend_area, coords, draw_ctx->clip_area)) - return; /*Fully clipped, nothing to do*/ - - /*Make the blend area relative to the buffer*/ - lv_area_move(&blend_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1); - - const lv_color_t * src_buf = (const lv_color_t *)map_p; - if(!src_buf) { - lv_draw_sw_img_decoded(draw_ctx, dsc, coords, map_p, cf); - return; - } - - lv_color_t * dest_buf = draw_ctx->buf; - lv_coord_t dest_stride = lv_area_get_width(draw_ctx->buf_area); - -#if LV_USE_GPU_NXP_PXP - if(!mask_any && !scale && !need_argb8565_support() -#if LV_COLOR_DEPTH!=32 - && !lv_img_cf_has_alpha(cf) -#endif - ) { - done = (lv_gpu_nxp_pxp_blit_transform(dest_buf, &blend_area, dest_stride, src_buf, coords, - dsc, cf) == LV_RES_OK); - if(!done) - PXP_LOG_TRACE("PXP blit transform failed. Fallback."); - } -#endif - -#if LV_USE_GPU_NXP_VG_LITE - if(!done && !mask_any && !need_argb8565_support() && - !lv_img_cf_is_chroma_keyed(cf) && !recolor -#if LV_COLOR_DEPTH!=32 - && !lv_img_cf_has_alpha(cf) -#endif - ) { - lv_gpu_nxp_vglite_blit_info_t blit; - lv_coord_t src_stride = lv_area_get_width(coords); - - blit.src = src_buf; - blit.src_width = lv_area_get_width(coords); - blit.src_height = lv_area_get_height(coords); - blit.src_stride = src_stride * (int32_t)sizeof(lv_color_t); - blit.src_area.x1 = (blend_area.x1 - (coords->x1 - draw_ctx->buf_area->x1)); - blit.src_area.y1 = (blend_area.y1 - (coords->y1 - draw_ctx->buf_area->y1)); - blit.src_area.x2 = blit.src_area.x1 + blit.src_width - 1; - blit.src_area.y2 = blit.src_area.y1 + blit.src_height - 1; - - blit.dst = dest_buf; - blit.dst_width = lv_area_get_width(draw_ctx->buf_area); - blit.dst_height = lv_area_get_height(draw_ctx->buf_area); - blit.dst_stride = dest_stride * (int32_t)sizeof(lv_color_t); - blit.dst_area.x1 = blend_area.x1; - blit.dst_area.y1 = blend_area.y1; - blit.dst_area.x2 = blend_area.x2; - blit.dst_area.y2 = blend_area.y2; - - blit.opa = dsc->opa; - blit.angle = dsc->angle; - blit.pivot = dsc->pivot; - blit.zoom = dsc->zoom; - - done = (lv_gpu_nxp_vglite_blit_transform(&blit) == LV_RES_OK); - - if(!done) - VG_LITE_LOG_TRACE("VG-Lite blit transform failed. Fallback."); - } -#endif - - if(!done) - lv_draw_sw_img_decoded(draw_ctx, dsc, coords, map_p, cf); -} - -static void lv_draw_nxp_rect(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dsc, const lv_area_t * coords) -{ - bool done = false; - lv_draw_rect_dsc_t nxp_dsc; - - lv_memcpy(&nxp_dsc, dsc, sizeof(nxp_dsc)); -#if LV_DRAW_COMPLEX - /* Draw only the shadow */ - nxp_dsc.bg_opa = 0; - nxp_dsc.bg_img_opa = 0; - nxp_dsc.border_opa = 0; - nxp_dsc.outline_opa = 0; - - lv_draw_sw_rect(draw_ctx, &nxp_dsc, coords); - - /* Draw the background */ - nxp_dsc.shadow_opa = 0; - nxp_dsc.bg_opa = dsc->bg_opa; - done = (draw_nxp_bg(draw_ctx, &nxp_dsc, coords) == LV_RES_OK); -#endif /*LV_DRAW_COMPLEX*/ - - /* Draw the remaining parts */ - nxp_dsc.shadow_opa = 0; - if(done) - nxp_dsc.bg_opa = 0; - nxp_dsc.bg_img_opa = dsc->bg_img_opa; - nxp_dsc.border_opa = dsc->border_opa; - nxp_dsc.outline_opa = dsc->outline_opa; - - lv_draw_sw_rect(draw_ctx, &nxp_dsc, coords); -} - -static lv_res_t draw_nxp_bg(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dsc, const lv_area_t * coords) -{ - if(dsc->bg_opa <= LV_OPA_MIN) - return LV_RES_INV; - - lv_area_t bg_coords; - lv_area_copy(&bg_coords, coords); - - /*If the border fully covers make the bg area 1px smaller to avoid artifacts on the corners*/ - if(dsc->border_width > 1 && dsc->border_opa >= (lv_opa_t)LV_OPA_MAX && dsc->radius != 0) { - bg_coords.x1 += (dsc->border_side & LV_BORDER_SIDE_LEFT) ? 1 : 0; - bg_coords.y1 += (dsc->border_side & LV_BORDER_SIDE_TOP) ? 1 : 0; - bg_coords.x2 -= (dsc->border_side & LV_BORDER_SIDE_RIGHT) ? 1 : 0; - bg_coords.y2 -= (dsc->border_side & LV_BORDER_SIDE_BOTTOM) ? 1 : 0; - } - - lv_area_t clipped_coords; - if(!_lv_area_intersect(&clipped_coords, &bg_coords, draw_ctx->clip_area)) - return LV_RES_INV; - - lv_grad_dir_t grad_dir = dsc->bg_grad.dir; - lv_color_t bg_color = grad_dir == LV_GRAD_DIR_NONE ? dsc->bg_color : dsc->bg_grad.stops[0].color; - if(bg_color.full == dsc->bg_grad.stops[1].color.full) grad_dir = LV_GRAD_DIR_NONE; - - bool mask_any = lv_draw_mask_is_any(&bg_coords); - - /* - * Most simple case: just a plain rectangle (no mask, no radius, no gradient) - * shall fallback to lv_draw_sw_blend(). - * - * Complex case: gradient or radius but no mask. - */ - if(!mask_any && ((dsc->radius != 0) || (grad_dir != LV_GRAD_DIR_NONE)) && !need_argb8565_support()) { -#if LV_USE_GPU_NXP_VG_LITE - lv_res_t res = lv_gpu_nxp_vglite_draw_bg(draw_ctx, dsc, &bg_coords); - if(res != LV_RES_OK) - VG_LITE_LOG_TRACE("VG-Lite draw bg failed. Fallback."); - - return res; -#endif - } - - return LV_RES_INV; -} - -static void lv_draw_nxp_arc(lv_draw_ctx_t * draw_ctx, const lv_draw_arc_dsc_t * dsc, const lv_point_t * center, - uint16_t radius, uint16_t start_angle, uint16_t end_angle) -{ - bool done = false; - -#if LV_DRAW_COMPLEX - if(dsc->opa <= LV_OPA_MIN) - return; - if(dsc->width == 0) - return; - if(start_angle == end_angle) - return; - -#if LV_USE_GPU_NXP_VG_LITE - if(!need_argb8565_support()) { - done = (lv_gpu_nxp_vglite_draw_arc(draw_ctx, dsc, center, (int32_t)radius, - (int32_t)start_angle, (int32_t)end_angle) == LV_RES_OK); - if(!done) - VG_LITE_LOG_TRACE("VG-Lite draw arc failed. Fallback."); - } -#endif -#endif/*LV_DRAW_COMPLEX*/ - - if(!done) - lv_draw_sw_arc(draw_ctx, dsc, center, radius, start_angle, end_angle); -} - -#endif /*LV_USE_GPU_NXP_PXP || LV_USE_GPU_NXP_VG_LITE*/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/pxp/lv_draw_pxp_blend.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/pxp/lv_draw_pxp_blend.h deleted file mode 100644 index 43a6440..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/pxp/lv_draw_pxp_blend.h +++ /dev/null @@ -1,143 +0,0 @@ -/** - * @file lv_draw_pxp_blend.h - * - */ - -/** - * MIT License - * - * Copyright 2020-2022 NXP - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next paragraph) - * shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -#ifndef LV_DRAW_PXP_BLEND_H -#define LV_DRAW_PXP_BLEND_H - -#ifdef __cplusplus -extern "C" { -#endif - -/********************* - * INCLUDES - *********************/ - -#include "../../../lv_conf_internal.h" - -#if LV_USE_GPU_NXP_PXP -#include "lv_gpu_nxp_pxp.h" -#include "../../sw/lv_draw_sw.h" - -/********************* - * DEFINES - *********************/ - -#ifndef LV_GPU_NXP_PXP_BLIT_SIZE_LIMIT -/** Minimum area (in pixels) for image copy with 100% opacity to be handled by PXP*/ -#define LV_GPU_NXP_PXP_BLIT_SIZE_LIMIT 5000 -#endif - -#ifndef LV_GPU_NXP_PXP_BLIT_OPA_SIZE_LIMIT -/** Minimum area (in pixels) for image copy with transparency to be handled by PXP*/ -#define LV_GPU_NXP_PXP_BLIT_OPA_SIZE_LIMIT 5000 -#endif - -#ifndef LV_GPU_NXP_PXP_BUFF_SYNC_BLIT_SIZE_LIMIT -/** Minimum invalidated area (in pixels) to be synchronized by PXP during buffer sync */ -#define LV_GPU_NXP_PXP_BUFF_SYNC_BLIT_SIZE_LIMIT 5000 -#endif - -#ifndef LV_GPU_NXP_PXP_FILL_SIZE_LIMIT -/** Minimum area (in pixels) to be filled by PXP with 100% opacity*/ -#define LV_GPU_NXP_PXP_FILL_SIZE_LIMIT 5000 -#endif - -#ifndef LV_GPU_NXP_PXP_FILL_OPA_SIZE_LIMIT -/** Minimum area (in pixels) to be filled by PXP with transparency*/ -#define LV_GPU_NXP_PXP_FILL_OPA_SIZE_LIMIT 5000 -#endif - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * GLOBAL PROTOTYPES - **********************/ - -/** - * Fill area, with optional opacity. - * - * @param[in/out] dest_buf destination buffer - * @param[in] dest_stride width (stride) of destination buffer in pixels - * @param[in] fill_area area to fill - * @param[in] color color - * @param[in] opa transparency of the color - * @retval LV_RES_OK Fill completed - * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_PXP_LOG_ERRORS) - */ -lv_res_t lv_gpu_nxp_pxp_fill(lv_color_t * dest_buf, lv_coord_t dest_stride, const lv_area_t * fill_area, - lv_color_t color, lv_opa_t opa); - -/** - * BLock Image Transfer - copy rectangular image from src_buf to dst_buf with effects. - * By default, image is copied directly, with optional opacity. This function can also - * rotate the display output buffer to a specified angle (90x step). - * - * @param[in/out] dest_buf destination buffer - * @param[in] dest_area destination area - * @param[in] dest_stride width (stride) of destination buffer in pixels - * @param[in] src_buf source buffer - * @param[in] src_area source area with absolute coordinates to draw on destination buffer - * @param[in] opa opacity of the result - * @param[in] angle display rotation angle (90x) - * @retval LV_RES_OK Fill completed - * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_PXP_LOG_ERRORS) - */ -lv_res_t lv_gpu_nxp_pxp_blit(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride, - const lv_color_t * src_buf, const lv_area_t * src_area, lv_opa_t opa, lv_disp_rot_t angle); - -/** - * BLock Image Transfer - copy rectangular image from src_buf to dst_buf with transformation. - * - * - * @param[in/out] dest_buf destination buffer - * @param[in] dest_area destination area - * @param[in] dest_stride width (stride) of destination buffer in pixels - * @param[in] src_buf source buffer - * @param[in] src_area source area with absolute coordinates to draw on destination buffer - * @param[in] dsc image descriptor - * @param[in] cf color format - * @retval LV_RES_OK Fill completed - * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_PXP_LOG_ERRORS) - */ -lv_res_t lv_gpu_nxp_pxp_blit_transform(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride, - const lv_color_t * src_buf, const lv_area_t * src_area, const lv_draw_img_dsc_t * dsc, lv_img_cf_t cf); - -/********************** - * MACROS - **********************/ - -#endif /*LV_USE_GPU_NXP_PXP*/ - -#ifdef __cplusplus -} /*extern "C"*/ -#endif - -#endif /*LV_DRAW_PXP_BLEND_H*/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_blend.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_blend.c deleted file mode 100644 index b59b143..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_blend.c +++ /dev/null @@ -1,618 +0,0 @@ -/** - * @file lv_draw_vglite_blend.c - * - */ - -/** - * MIT License - * - * Copyright 2020-2022 NXP - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next paragraph) - * shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/********************* - * INCLUDES - *********************/ - -#include "lv_draw_vglite_blend.h" - -#if LV_USE_GPU_NXP_VG_LITE - -/********************* - * DEFINES - *********************/ - -/* Enable BLIT quality degradation workaround for RT595, recommended for screen's dimension > 352 pixels */ -#define RT595_BLIT_WRKRND_ENABLED 1 - -/* Internal compound symbol */ -#if (defined(CPU_MIMXRT595SFFOB) || defined(CPU_MIMXRT595SFFOB_cm33) || \ - defined(CPU_MIMXRT595SFFOC) || defined(CPU_MIMXRT595SFFOC_cm33)) && \ - RT595_BLIT_WRKRND_ENABLED -#define VG_LITE_BLIT_SPLIT_ENABLED 1 -#else -#define VG_LITE_BLIT_SPLIT_ENABLED 0 -#endif - -/** - * BLIT split threshold - BLITs with width or height higher than this value will be done - * in multiple steps. Value must be 16-aligned. Don't change. - */ -#define LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR 352 - - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * STATIC PROTOTYPES - **********************/ - -/** - * BLock Image Transfer - single direct BLIT. - * - * @param[in] blit Description of the transfer - * @retval LV_RES_OK Transfer complete - * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS) - */ -static lv_res_t _lv_gpu_nxp_vglite_blit_single(lv_gpu_nxp_vglite_blit_info_t * blit); - -#if VG_LITE_BLIT_SPLIT_ENABLED - - /** - * Move buffer pointer as close as possible to area, but with respect to alignment requirements. X-axis only. - * - * @param[in,out] area Area to be updated - * @param[in,out] buf Pointer to be updated - */ - static void _align_x(lv_area_t * area, lv_color_t ** buf); - - /** - * Move buffer pointer to the area start and update variables, Y-axis only. - * - * @param[in,out] area Area to be updated - * @param[in,out] buf Pointer to be updated - * @param[in] stridePx Buffer stride in pixels - */ - static void _align_y(lv_area_t * area, lv_color_t ** buf, uint32_t stridePx); - - /** - * Software BLIT as a fall-back scenario. - * - * @param[in] blit BLIT configuration - */ - static void _sw_blit(lv_gpu_nxp_vglite_blit_info_t * blit); - - /** - * Verify BLIT structure - widths, stride, pointer alignment - * - * @param[in] blit BLIT configuration - * @retval LV_RES_OK - * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS) - */ - static lv_res_t _lv_gpu_nxp_vglite_check_blit(lv_gpu_nxp_vglite_blit_info_t * blit); - - /** - * BLock Image Transfer - split BLIT. - * - * @param[in] blit BLIT configuration - * @retval LV_RES_OK Transfer complete - * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS) - */ - static lv_res_t _lv_gpu_nxp_vglite_blit_split(lv_gpu_nxp_vglite_blit_info_t * blit); -#endif - -/********************** - * STATIC VARIABLES - **********************/ - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -lv_res_t lv_gpu_nxp_vglite_fill(lv_color_t * dest_buf, lv_coord_t dest_width, lv_coord_t dest_height, - const lv_area_t * fill_area, lv_color_t color, lv_opa_t opa) -{ - uint32_t area_size = lv_area_get_size(fill_area); - lv_coord_t area_w = lv_area_get_width(fill_area); - lv_coord_t area_h = lv_area_get_height(fill_area); - - if(opa >= (lv_opa_t)LV_OPA_MAX) { - if(area_size < LV_GPU_NXP_VG_LITE_FILL_SIZE_LIMIT) - VG_LITE_RETURN_INV("Area size %d smaller than limit %d.", area_size, LV_GPU_NXP_VG_LITE_FILL_SIZE_LIMIT); - } - else { - if(area_size < LV_GPU_NXP_VG_LITE_FILL_OPA_SIZE_LIMIT) - VG_LITE_RETURN_INV("Area size %d smaller than limit %d.", area_size, LV_GPU_NXP_VG_LITE_FILL_OPA_SIZE_LIMIT); - } - - vg_lite_buffer_t vgbuf; - vg_lite_rectangle_t rect; - vg_lite_error_t err = VG_LITE_SUCCESS; - lv_color32_t col32 = {.full = lv_color_to32(color)}; /*Convert color to RGBA8888*/ - vg_lite_color_t vgcol; /* vglite takes ABGR */ - - if(lv_vglite_init_buf(&vgbuf, (uint32_t)dest_width, (uint32_t)dest_height, (uint32_t)dest_width * sizeof(lv_color_t), - (const lv_color_t *)dest_buf, false) != LV_RES_OK) - VG_LITE_RETURN_INV("Init buffer failed."); - - if(opa >= (lv_opa_t)LV_OPA_MAX) { /*Opaque fill*/ - rect.x = fill_area->x1; - rect.y = fill_area->y1; - rect.width = area_w; - rect.height = area_h; - - /*Clean & invalidate cache*/ - lv_vglite_invalidate_cache(); - -#if LV_COLOR_DEPTH==16 - vgcol = col32.full; -#else /*LV_COLOR_DEPTH==32*/ - vgcol = ((uint32_t)col32.ch.alpha << 24) | ((uint32_t)col32.ch.blue << 16) | ((uint32_t)col32.ch.green << 8) | - (uint32_t)col32.ch.red; -#endif - - err = vg_lite_clear(&vgbuf, &rect, vgcol); - VG_LITE_ERR_RETURN_INV(err, "Clear failed."); - - err = vg_lite_finish(); - VG_LITE_ERR_RETURN_INV(err, "Finish failed."); - } - else { /*fill with transparency*/ - - vg_lite_path_t path; - int32_t path_data[] = { /*VG rectangular path*/ - VLC_OP_MOVE, fill_area->x1, fill_area->y1, - VLC_OP_LINE, fill_area->x2 + 1, fill_area->y1, - VLC_OP_LINE, fill_area->x2 + 1, fill_area->y2 + 1, - VLC_OP_LINE, fill_area->x1, fill_area->y2 + 1, - VLC_OP_LINE, fill_area->x1, fill_area->y1, - VLC_OP_END - }; - - err = vg_lite_init_path(&path, VG_LITE_S32, VG_LITE_LOW, sizeof(path_data), path_data, - (vg_lite_float_t) fill_area->x1, (vg_lite_float_t) fill_area->y1, - ((vg_lite_float_t) fill_area->x2) + 1.0f, ((vg_lite_float_t) fill_area->y2) + 1.0f); - VG_LITE_ERR_RETURN_INV(err, "Init path failed."); - - /* Only pre-multiply color if hardware pre-multiplication is not present */ - if(!vg_lite_query_feature(gcFEATURE_BIT_VG_PE_PREMULTIPLY)) { - col32.ch.red = (uint8_t)(((uint16_t)col32.ch.red * opa) >> 8); - col32.ch.green = (uint8_t)(((uint16_t)col32.ch.green * opa) >> 8); - col32.ch.blue = (uint8_t)(((uint16_t)col32.ch.blue * opa) >> 8); - } - col32.ch.alpha = opa; - -#if LV_COLOR_DEPTH==16 - vgcol = col32.full; -#else /*LV_COLOR_DEPTH==32*/ - vgcol = ((uint32_t)col32.ch.alpha << 24) | ((uint32_t)col32.ch.blue << 16) | ((uint32_t)col32.ch.green << 8) | - (uint32_t)col32.ch.red; -#endif - - /*Clean & invalidate cache*/ - lv_vglite_invalidate_cache(); - - vg_lite_matrix_t matrix; - vg_lite_identity(&matrix); - - /*Draw rectangle*/ - err = vg_lite_draw(&vgbuf, &path, VG_LITE_FILL_EVEN_ODD, &matrix, VG_LITE_BLEND_SRC_OVER, vgcol); - VG_LITE_ERR_RETURN_INV(err, "Draw rectangle failed."); - - err = vg_lite_finish(); - VG_LITE_ERR_RETURN_INV(err, "Finish failed."); - - err = vg_lite_clear_path(&path); - VG_LITE_ERR_RETURN_INV(err, "Clear path failed."); - } - - return LV_RES_OK; -} - -lv_res_t lv_gpu_nxp_vglite_blit(lv_gpu_nxp_vglite_blit_info_t * blit) -{ - uint32_t dest_size = lv_area_get_size(&blit->dst_area); - - if(blit->opa >= (lv_opa_t)LV_OPA_MAX) { - if(dest_size < LV_GPU_NXP_VG_LITE_BLIT_SIZE_LIMIT) - VG_LITE_RETURN_INV("Area size %d smaller than limit %d.", dest_size, LV_GPU_NXP_VG_LITE_BLIT_SIZE_LIMIT); - } - else { - if(dest_size < LV_GPU_NXP_VG_LITE_BLIT_OPA_SIZE_LIMIT) - VG_LITE_RETURN_INV("Area size %d smaller than limit %d.", dest_size, LV_GPU_NXP_VG_LITE_BLIT_OPA_SIZE_LIMIT); - } - -#if VG_LITE_BLIT_SPLIT_ENABLED - return _lv_gpu_nxp_vglite_blit_split(blit); -#endif /* non RT595 */ - - /* Just pass down */ - return _lv_gpu_nxp_vglite_blit_single(blit); -} - -lv_res_t lv_gpu_nxp_vglite_blit_transform(lv_gpu_nxp_vglite_blit_info_t * blit) -{ - uint32_t dest_size = lv_area_get_size(&blit->dst_area); - - if(blit->opa >= (lv_opa_t)LV_OPA_MAX) { - if(dest_size < LV_GPU_NXP_VG_LITE_BLIT_SIZE_LIMIT) - VG_LITE_RETURN_INV("Area size %d smaller than limit %d.", dest_size, LV_GPU_NXP_VG_LITE_BLIT_SIZE_LIMIT); - } - else { - if(dest_size < LV_GPU_NXP_VG_LITE_BLIT_OPA_SIZE_LIMIT) - VG_LITE_RETURN_INV("Area size %d smaller than limit %d.", dest_size, LV_GPU_NXP_VG_LITE_BLIT_OPA_SIZE_LIMIT); - } - - return _lv_gpu_nxp_vglite_blit_single(blit); -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -#if VG_LITE_BLIT_SPLIT_ENABLED -static lv_res_t _lv_gpu_nxp_vglite_blit_split(lv_gpu_nxp_vglite_blit_info_t * blit) -{ - lv_res_t rv = LV_RES_INV; - - if(_lv_gpu_nxp_vglite_check_blit(blit) != LV_RES_OK) { - PRINT_BLT("Blit check failed\n"); - return LV_RES_INV; - } - - PRINT_BLT("BLIT from: " - "Area: %03d,%03d - %03d,%03d " - "Addr: %d\n\n", - blit->src_area.x1, blit->src_area.y1, - blit->src_area.x2, blit->src_area.y2, - (uintptr_t) blit->src); - - PRINT_BLT("BLIT to: " - "Area: %03d,%03d - %03d,%03d " - "Addr: %d\n\n", - blit->dst_area.x1, blit->dst_area.y1, - blit->dst_area.x2, blit->dst_area.y2, - (uintptr_t) blit->src); - - /* Stage 1: Move starting pointers as close as possible to [x1, y1], so coordinates are as small as possible. */ - _align_x(&blit->src_area, (lv_color_t **)&blit->src); - _align_y(&blit->src_area, (lv_color_t **)&blit->src, blit->src_stride / sizeof(lv_color_t)); - _align_x(&blit->dst_area, (lv_color_t **)&blit->dst); - _align_y(&blit->dst_area, (lv_color_t **)&blit->dst, blit->dst_stride / sizeof(lv_color_t)); - - /* Stage 2: If we're in limit, do a single BLIT */ - if((blit->src_area.x2 < LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR) && - (blit->src_area.y2 < LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR)) { - PRINT_BLT("Simple blit!\n"); - return _lv_gpu_nxp_vglite_blit_single(blit); - }; - - /* Stage 3: Split the BLIT into multiple tiles */ - PRINT_BLT("Split blit!\n"); - - PRINT_BLT("Blit " - "([%03d,%03d], [%03d,%03d]) -> " - "([%03d,%03d], [%03d,%03d]) | " - "([%03dx%03d] -> [%03dx%03d]) | " - "A:(%d -> %d)\n", - blit->src_area.x1, blit->src_area.y1, blit->src_area.x2, blit->src_area.y2, - blit->dst_area.x1, blit->dst_area.y1, blit->dst_area.x2, blit->dst_area.y2, - lv_area_get_width(&blit->src_area), lv_area_get_height(&blit->src_area), - lv_area_get_width(&blit->dst_area), lv_area_get_height(&blit->dst_area), - (uintptr_t) blit->src, (uintptr_t) blit->dst); - - - lv_coord_t totalWidth = lv_area_get_width(&blit->src_area); - lv_coord_t totalHeight = lv_area_get_height(&blit->src_area); - - lv_gpu_nxp_vglite_blit_info_t tileBlit; - - /* Number of tiles needed */ - int totalTilesX = (blit->src_area.x1 + totalWidth + LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR - 1) / - LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR; - int totalTilesY = (blit->src_area.y1 + totalHeight + LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR - 1) / - LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR; - - /* src and dst buffer shift against each other. Src buffer real data [0,0] may start actually at [3,0] in buffer, as - * the buffer pointer has to be aligned, while dst buffer real data [0,0] may start at [1,0] in buffer. alignment may be - * different */ - int shiftSrcX = (blit->src_area.x1 > blit->dst_area.x1) ? (blit->src_area.x1 - blit->dst_area.x1) : 0; - int shiftDstX = (blit->src_area.x1 < blit->dst_area.x1) ? (blit->dst_area.x1 - blit->src_area.x1) : 0; - - PRINT_BLT("\n"); - PRINT_BLT("Align shift: src: %d, dst: %d\n", shiftSrcX, shiftDstX); - - tileBlit = *blit; - - for(int tileY = 0; tileY < totalTilesY; tileY++) { - - tileBlit.src_area.y1 = 0; /* no vertical alignment, always start from 0 */ - tileBlit.src_area.y2 = totalHeight - tileY * LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR - 1; - if(tileBlit.src_area.y2 >= LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR) { - tileBlit.src_area.y2 = LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR - 1; /* Should never happen */ - } - tileBlit.src = blit->src + tileY * LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR * blit->src_stride / sizeof( - lv_color_t); /* stride in px! */ - - tileBlit.dst_area.y1 = tileBlit.src_area.y1; /* y has no alignment, always in sync with src */ - tileBlit.dst_area.y2 = tileBlit.src_area.y2; - - tileBlit.dst = blit->dst + tileY * LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR * blit->dst_stride / sizeof( - lv_color_t); /* stride in px! */ - - for(int tileX = 0; tileX < totalTilesX; tileX++) { - - if(tileX == 0) { - /* 1st tile is special - there may be a gap between buffer start pointer - * and area.x1 value, as the pointer has to be aligned. - * tileBlit.src pointer - keep init value from Y-loop. - * Also, 1st tile start is not shifted! shift is applied from 2nd tile */ - tileBlit.src_area.x1 = blit->src_area.x1; - tileBlit.dst_area.x1 = blit->dst_area.x1; - } - else { - /* subsequent tiles always starts from 0, but shifted*/ - tileBlit.src_area.x1 = 0 + shiftSrcX; - tileBlit.dst_area.x1 = 0 + shiftDstX; - /* and advance start pointer + 1 tile size */ - tileBlit.src += LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR; - tileBlit.dst += LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR; - } - - /* Clip tile end coordinates */ - tileBlit.src_area.x2 = totalWidth + blit->src_area.x1 - tileX * LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR - 1; - if(tileBlit.src_area.x2 >= LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR) { - tileBlit.src_area.x2 = LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR - 1; - } - - tileBlit.dst_area.x2 = totalWidth + blit->dst_area.x1 - tileX * LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR - 1; - if(tileBlit.dst_area.x2 >= LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR) { - tileBlit.dst_area.x2 = LV_GPU_NXP_VG_LITE_BLIT_SPLIT_THR - 1; - } - - if(tileX < (totalTilesX - 1)) { - /* And adjust end coords if shifted, but not for last tile! */ - tileBlit.src_area.x2 += shiftSrcX; - tileBlit.dst_area.x2 += shiftDstX; - } - - rv = _lv_gpu_nxp_vglite_blit_single(&tileBlit); - -#if BLIT_DBG_AREAS - lv_vglite_dbg_draw_rectangle((lv_color_t *) tileBlit.dst, tileBlit.dst_width, tileBlit.dst_height, &tileBlit.dst_area, - LV_COLOR_RED); - lv_vglite_dbg_draw_rectangle((lv_color_t *) tileBlit.src, tileBlit.src_width, tileBlit.src_height, &tileBlit.src_area, - LV_COLOR_GREEN); -#endif - - PRINT_BLT("Tile [%d, %d]: " - "([%d,%d], [%d,%d]) -> " - "([%d,%d], [%d,%d]) | " - "([%dx%d] -> [%dx%d]) | " - "A:(0x%8X -> 0x%8X) %s\n", - tileX, tileY, - tileBlit.src_area.x1, tileBlit.src_area.y1, tileBlit.src_area.x2, tileBlit.src_area.y2, - tileBlit.dst_area.x1, tileBlit.dst_area.y1, tileBlit.dst_area.x2, tileBlit.dst_area.y2, - lv_area_get_width(&tileBlit.src_area), lv_area_get_height(&tileBlit.src_area), - lv_area_get_width(&tileBlit.dst_area), lv_area_get_height(&tileBlit.dst_area), - (uintptr_t) tileBlit.src, (uintptr_t) tileBlit.dst, - rv == LV_RES_OK ? "OK!" : "!!! FAILED !!!"); - - if(rv != LV_RES_OK) { /* if anything goes wrong... */ -#if LV_GPU_NXP_VG_LITE_LOG_ERRORS - LV_LOG_ERROR("Split blit failed. Trying SW blit instead."); -#endif - _sw_blit(&tileBlit); - rv = LV_RES_OK; /* Don't report error, as SW BLIT was performed */ - } - - } - PRINT_BLT(" \n"); - } - - return rv; /* should never fail */ -} -#endif /* VG_LITE_BLIT_SPLIT_ENABLED */ - -static lv_res_t _lv_gpu_nxp_vglite_blit_single(lv_gpu_nxp_vglite_blit_info_t * blit) -{ - vg_lite_buffer_t src_vgbuf, dst_vgbuf; - vg_lite_error_t err = VG_LITE_SUCCESS; - uint32_t rect[4]; - vg_lite_float_t scale = 1.0; - - if(blit == NULL) { - /*Wrong parameter*/ - return LV_RES_INV; - } - - if(blit->opa < (lv_opa_t) LV_OPA_MIN) { - return LV_RES_OK; /*Nothing to BLIT*/ - } - - /*Wrap src/dst buffer into VG-Lite buffer*/ - if(lv_vglite_init_buf(&src_vgbuf, (uint32_t)blit->src_width, (uint32_t)blit->src_height, (uint32_t)blit->src_stride, - blit->src, true) != LV_RES_OK) - VG_LITE_RETURN_INV("Init buffer failed."); - - if(lv_vglite_init_buf(&dst_vgbuf, (uint32_t)blit->dst_width, (uint32_t)blit->dst_height, (uint32_t)blit->dst_stride, - blit->dst, false) != LV_RES_OK) - VG_LITE_RETURN_INV("Init buffer failed."); - - rect[0] = (uint32_t)blit->src_area.x1; /* start x */ - rect[1] = (uint32_t)blit->src_area.y1; /* start y */ - rect[2] = (uint32_t)blit->src_area.x2 - (uint32_t)blit->src_area.x1 + 1U; /* width */ - rect[3] = (uint32_t)blit->src_area.y2 - (uint32_t)blit->src_area.y1 + 1U; /* height */ - - vg_lite_matrix_t matrix; - vg_lite_identity(&matrix); - vg_lite_translate((vg_lite_float_t)blit->dst_area.x1, (vg_lite_float_t)blit->dst_area.y1, &matrix); - - if((blit->angle != 0) || (blit->zoom != LV_IMG_ZOOM_NONE)) { - vg_lite_translate(blit->pivot.x, blit->pivot.y, &matrix); - vg_lite_rotate(blit->angle / 10.0f, &matrix); /* angle is 1/10 degree */ - scale = 1.0f * blit->zoom / LV_IMG_ZOOM_NONE; - vg_lite_scale(scale, scale, &matrix); - vg_lite_translate(0.0f - blit->pivot.x, 0.0f - blit->pivot.y, &matrix); - } - - /*Clean & invalidate cache*/ - lv_vglite_invalidate_cache(); - - uint32_t color; - vg_lite_blend_t blend; - if(blit->opa >= (lv_opa_t)LV_OPA_MAX) { - color = 0xFFFFFFFFU; - blend = VG_LITE_BLEND_SRC_OVER; - src_vgbuf.transparency_mode = VG_LITE_IMAGE_TRANSPARENT; - } - else { - uint32_t opa = (uint32_t)blit->opa; - if(vg_lite_query_feature(gcFEATURE_BIT_VG_PE_PREMULTIPLY)) { - color = (opa << 24) | 0x00FFFFFFU; - } - else { - color = (opa << 24) | (opa << 16) | (opa << 8) | opa; - } - blend = VG_LITE_BLEND_SRC_OVER; - src_vgbuf.image_mode = VG_LITE_MULTIPLY_IMAGE_MODE; - src_vgbuf.transparency_mode = VG_LITE_IMAGE_TRANSPARENT; - } - - err = vg_lite_blit_rect(&dst_vgbuf, &src_vgbuf, rect, &matrix, blend, color, VG_LITE_FILTER_POINT); - VG_LITE_ERR_RETURN_INV(err, "Blit rectangle failed."); - - err = vg_lite_finish(); - VG_LITE_ERR_RETURN_INV(err, "Finish failed."); - - return LV_RES_OK; -} - -#if VG_LITE_BLIT_SPLIT_ENABLED - -static void _sw_blit(lv_gpu_nxp_vglite_blit_info_t * blit) -{ - int x, y; - - lv_coord_t w = lv_area_get_width(&blit->src_area); - lv_coord_t h = lv_area_get_height(&blit->src_area); - - int32_t srcStridePx = blit->src_stride / (int32_t)sizeof(lv_color_t); - int32_t dstStridePx = blit->dst_stride / (int32_t)sizeof(lv_color_t); - - lv_color_t * src = (lv_color_t *)blit->src + blit->src_area.y1 * srcStridePx + blit->src_area.x1; - lv_color_t * dst = (lv_color_t *)blit->dst + blit->dst_area.y1 * dstStridePx + blit->dst_area.x1; - - if(blit->opa >= (lv_opa_t)LV_OPA_MAX) { - /* simple copy */ - for(y = 0; y < h; y++) { - lv_memcpy(dst, src, (uint32_t)w * sizeof(lv_color_t)); - src += srcStridePx; - dst += dstStridePx; - } - } - else if(blit->opa >= LV_OPA_MIN) { - /* alpha blending */ - for(y = 0; y < h; y++) { - for(x = 0; x < w; x++) { - dst[x] = lv_color_mix(src[x], dst[x], blit->opa); - } - src += srcStridePx; - dst += dstStridePx; - } - } -} - -static lv_res_t _lv_gpu_nxp_vglite_check_blit(lv_gpu_nxp_vglite_blit_info_t * blit) -{ - - /* Test for minimal width */ - if(lv_area_get_width(&blit->src_area) < (lv_coord_t)LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX) - VG_LITE_RETURN_INV("Src area width (%d) is smaller than required (%d).", lv_area_get_width(&blit->src_area), - LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX); - - /* Test for minimal width */ - if(lv_area_get_width(&blit->dst_area) < (lv_coord_t)LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX) - VG_LITE_RETURN_INV("Dest area width (%d) is smaller than required (%d).", lv_area_get_width(&blit->dst_area), - LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX); - - /* Test for pointer alignment */ - if((((uintptr_t) blit->src) % LV_ATTRIBUTE_MEM_ALIGN_SIZE) != 0x0) - VG_LITE_RETURN_INV("Src buffer ptr (0x%X) not aligned to %d.", (size_t) blit->src, LV_ATTRIBUTE_MEM_ALIGN_SIZE); - - /* No alignment requirement for destination pixel buffer when using mode VG_LITE_LINEAR */ - - /* Test for stride alignment */ - if((blit->src_stride % (LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX * LV_COLOR_DEPTH / 8)) != 0x0) - VG_LITE_RETURN_INV("Src buffer stride (%d px) not aligned to %d px.", blit->src_stride, - LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX); - - /* Test for stride alignment */ - if((blit->dst_stride % (LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX * LV_COLOR_DEPTH / 8)) != 0x0) - VG_LITE_RETURN_INV("Dest buffer stride (%d px) not aligned to %d px.", blit->dst_stride, - LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX); - - if((lv_area_get_width(&blit->src_area) != lv_area_get_width(&blit->dst_area)) || - (lv_area_get_height(&blit->src_area) != lv_area_get_height(&blit->dst_area))) - VG_LITE_RETURN_INV("Src and dest buffer areas are not equal."); - - return LV_RES_OK; -} - -static void _align_x(lv_area_t * area, lv_color_t ** buf) -{ - - int alignedAreaStartPx = area->x1 - (area->x1 % (LV_ATTRIBUTE_MEM_ALIGN_SIZE * 8 / LV_COLOR_DEPTH)); - VG_LITE_COND_STOP(alignedAreaStartPx < 0, "Negative X alignment."); - - area->x1 -= alignedAreaStartPx; - area->x2 -= alignedAreaStartPx; - *buf += alignedAreaStartPx; -} - -static void _align_y(lv_area_t * area, lv_color_t ** buf, uint32_t stridePx) -{ - int LineToAlignMem; - int alignedAreaStartPy; - /* find how many lines of pixels will respect memory alignment requirement */ - if(stridePx % (uint32_t)LV_ATTRIBUTE_MEM_ALIGN_SIZE == 0U) { - alignedAreaStartPy = area->y1; - } - else { - LineToAlignMem = LV_ATTRIBUTE_MEM_ALIGN_SIZE / (sizeof(lv_color_t) * LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX); - VG_LITE_COND_STOP(LV_ATTRIBUTE_MEM_ALIGN_SIZE % (sizeof(lv_color_t) * LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX), - "Complex case: need gcd function."); - alignedAreaStartPy = area->y1 - (area->y1 % LineToAlignMem); - VG_LITE_COND_STOP(alignedAreaStartPy < 0, "Negative Y alignment."); - } - - area->y1 -= alignedAreaStartPy; - area->y2 -= alignedAreaStartPy; - *buf += (uint32_t)alignedAreaStartPy * stridePx; -} -#endif /*VG_LITE_BLIT_SPLIT_ENABLED*/ - -#endif /*LV_USE_GPU_NXP_VG_LITE*/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_blend.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_blend.h deleted file mode 100644 index bc448c6..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_blend.h +++ /dev/null @@ -1,149 +0,0 @@ -/** - * @file lv_draw_vglite_blend.h - * - */ - -/** - * MIT License - * - * Copyright 2020-2022 NXP - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next paragraph) - * shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -#ifndef LV_DRAW_VGLITE_BLEND_H -#define LV_DRAW_VGLITE_BLEND_H - -#ifdef __cplusplus -extern "C" { -#endif - -/********************* - * INCLUDES - *********************/ - -#include "../../../lv_conf_internal.h" - -#if LV_USE_GPU_NXP_VG_LITE -#include "lv_gpu_nxp_vglite.h" - -/********************* - * DEFINES - *********************/ - -#ifndef LV_GPU_NXP_VG_LITE_FILL_SIZE_LIMIT -/** Minimum area (in pixels) to be filled by VG-Lite with 100% opacity*/ -#define LV_GPU_NXP_VG_LITE_FILL_SIZE_LIMIT 5000 -#endif - -#ifndef LV_GPU_NXP_VG_LITE_FILL_OPA_SIZE_LIMIT -/** Minimum area (in pixels) to be filled by VG-Lite with transparency*/ -#define LV_GPU_NXP_VG_LITE_FILL_OPA_SIZE_LIMIT 5000 -#endif - -#ifndef LV_GPU_NXP_VG_LITE_BLIT_SIZE_LIMIT -/** Minimum area (in pixels) for image copy with 100% opacity to be handled by VG-Lite*/ -#define LV_GPU_NXP_VG_LITE_BLIT_SIZE_LIMIT 5000 -#endif - -#ifndef LV_GPU_NXP_VG_LITE_BUFF_SYNC_BLIT_SIZE_LIMIT -/** Minimum invalidated area (in pixels) to be synchronized by VG-Lite during buffer sync */ -#define LV_GPU_NXP_VG_LITE_BUFF_SYNC_BLIT_SIZE_LIMIT 5000 -#endif - -#ifndef LV_GPU_NXP_VG_LITE_BLIT_OPA_SIZE_LIMIT -/** Minimum area (in pixels) for image copy with transparency to be handled by VG-Lite*/ -#define LV_GPU_NXP_VG_LITE_BLIT_OPA_SIZE_LIMIT 5000 -#endif - -/********************** - * TYPEDEFS - **********************/ - -/** - * BLock Image Transfer descriptor structure - */ -typedef struct { - - const lv_color_t * src; /**< Source buffer pointer (must be aligned on 32 bytes)*/ - lv_area_t src_area; /**< Area to be copied from source*/ - lv_coord_t src_width; /**< Source buffer width*/ - lv_coord_t src_height; /**< Source buffer height*/ - int32_t src_stride; /**< Source buffer stride in bytes (must be aligned on 16 px)*/ - - const lv_color_t * dst; /**< Destination buffer pointer (must be aligned on 32 bytes)*/ - lv_area_t dst_area; /**< Target area in destination buffer (must be the same as src_area)*/ - lv_coord_t dst_width; /**< Destination buffer width*/ - lv_coord_t dst_height; /**< Destination buffer height*/ - int32_t dst_stride; /**< Destination buffer stride in bytes (must be aligned on 16 px)*/ - - lv_opa_t opa; /**< Opacity - alpha mix (0 = source not copied, 255 = 100% opaque)*/ - uint32_t angle; /**< Rotation angle (1/10 of degree)*/ - uint32_t zoom; /**< 256 = no zoom (1:1 scale ratio)*/ - lv_point_t pivot; /**< The coordinates of rotation pivot in source image buffer*/ -} lv_gpu_nxp_vglite_blit_info_t; - -/********************** - * GLOBAL PROTOTYPES - **********************/ - -/** - * Fill area, with optional opacity. - * - * @param[in/out] dest_buf Destination buffer pointer (must be aligned on 32 bytes) - * @param[in] dest_width Destination buffer width in pixels (must be aligned on 16 px) - * @param[in] dest_height Destination buffer height in pixels - * @param[in] fill_area Area to be filled - * @param[in] color Fill color - * @param[in] opa Opacity (255 = full, 128 = 50% background/50% color, 0 = no fill) - * @retval LV_RES_OK Fill completed - * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS) - */ -lv_res_t lv_gpu_nxp_vglite_fill(lv_color_t * dest_buf, lv_coord_t dest_width, lv_coord_t dest_height, - const lv_area_t * fill_area, lv_color_t color, lv_opa_t opa); - -/** - * BLock Image Transfer. - * - * @param[in] blit Description of the transfer - * @retval LV_RES_OK Transfer complete - * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS) - */ -lv_res_t lv_gpu_nxp_vglite_blit(lv_gpu_nxp_vglite_blit_info_t * blit); - -/** - * BLock Image Transfer with transformation. - * - * @param[in] blit Description of the transfer - * @retval LV_RES_OK Transfer complete - * @retval LV_RES_INV Error occurred (\see LV_GPU_NXP_VG_LITE_LOG_ERRORS) - */ -lv_res_t lv_gpu_nxp_vglite_blit_transform(lv_gpu_nxp_vglite_blit_info_t * blit); - -/********************** - * MACROS - **********************/ - -#endif /*LV_USE_GPU_NXP_VG_LITE*/ - -#ifdef __cplusplus -} /*extern "C"*/ -#endif - -#endif /*LV_DRAW_VGLITE_BLEND_H*/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_rect.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_rect.c deleted file mode 100644 index bc1d55c..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_draw_vglite_rect.c +++ /dev/null @@ -1,244 +0,0 @@ -/** - * @file lv_draw_vglite_rect.c - * - */ - -/** - * MIT License - * - * Copyright 2021, 2022 NXP - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next paragraph) - * shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/********************* - * INCLUDES - *********************/ - -#include "lv_draw_vglite_rect.h" - -#if LV_USE_GPU_NXP_VG_LITE - -/********************* - * DEFINES - *********************/ - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * STATIC PROTOTYPES - **********************/ - -/********************** - * STATIC VARIABLES - **********************/ - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -lv_res_t lv_gpu_nxp_vglite_draw_bg(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dsc, const lv_area_t * coords) -{ - vg_lite_buffer_t vgbuf; - vg_lite_error_t err = VG_LITE_SUCCESS; - lv_coord_t dest_width = lv_area_get_width(draw_ctx->buf_area); - lv_coord_t dest_height = lv_area_get_height(draw_ctx->buf_area); - vg_lite_path_t path; - vg_lite_color_t vgcol; /* vglite takes ABGR */ - vg_lite_matrix_t matrix; - lv_coord_t width = lv_area_get_width(coords); - lv_coord_t height = lv_area_get_height(coords); - vg_lite_linear_gradient_t gradient; - vg_lite_matrix_t * grad_matrix; - - if(dsc->radius < 0) - return LV_RES_INV; - - /* Make areas relative to draw buffer */ - lv_area_t rel_coords; - lv_area_copy(&rel_coords, coords); - lv_area_move(&rel_coords, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1); - - lv_area_t rel_clip; - lv_area_copy(&rel_clip, draw_ctx->clip_area); - lv_area_move(&rel_clip, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1); - - /*** Init destination buffer ***/ - if(lv_vglite_init_buf(&vgbuf, (uint32_t)dest_width, (uint32_t)dest_height, (uint32_t)dest_width * sizeof(lv_color_t), - (const lv_color_t *)draw_ctx->buf, false) != LV_RES_OK) - VG_LITE_RETURN_INV("Init buffer failed."); - - /*** Init path ***/ - int32_t rad = dsc->radius; - if(dsc->radius == LV_RADIUS_CIRCLE) { - rad = (width > height) ? height / 2 : width / 2; - } - - if((dsc->radius == LV_RADIUS_CIRCLE) && (width == height)) { - float tang = ((float)rad * BEZIER_OPTIM_CIRCLE); - int32_t cpoff = (int32_t)tang; - int32_t circle_path[] = { /*VG circle path*/ - VLC_OP_MOVE, rel_coords.x1 + rad, rel_coords.y1, - VLC_OP_CUBIC_REL, cpoff, 0, rad, rad - cpoff, rad, rad, /* top-right */ - VLC_OP_CUBIC_REL, 0, cpoff, cpoff - rad, rad, 0 - rad, rad, /* bottom-right */ - VLC_OP_CUBIC_REL, 0 - cpoff, 0, 0 - rad, cpoff - rad, 0 - rad, 0 - rad, /* bottom-left */ - VLC_OP_CUBIC_REL, 0, 0 - cpoff, rad - cpoff, 0 - rad, rad, 0 - rad, /* top-left */ - VLC_OP_END - }; - err = vg_lite_init_path(&path, VG_LITE_S32, VG_LITE_HIGH, sizeof(circle_path), circle_path, - (vg_lite_float_t) rel_clip.x1, (vg_lite_float_t) rel_clip.y1, - ((vg_lite_float_t) rel_clip.x2) + 1.0f, ((vg_lite_float_t) rel_clip.y2) + 1.0f); - } - else if(dsc->radius > 0) { - float tang = ((float)rad * BEZIER_OPTIM_CIRCLE); - int32_t cpoff = (int32_t)tang; - int32_t rounded_path[] = { /*VG rounded rectangular path*/ - VLC_OP_MOVE, rel_coords.x1 + rad, rel_coords.y1, - VLC_OP_LINE, rel_coords.x2 - rad + 1, rel_coords.y1, /* top */ - VLC_OP_CUBIC_REL, cpoff, 0, rad, rad - cpoff, rad, rad, /* top-right */ - VLC_OP_LINE, rel_coords.x2 + 1, rel_coords.y2 - rad + 1, /* right */ - VLC_OP_CUBIC_REL, 0, cpoff, cpoff - rad, rad, 0 - rad, rad, /* bottom-right */ - VLC_OP_LINE, rel_coords.x1 + rad, rel_coords.y2 + 1, /* bottom */ - VLC_OP_CUBIC_REL, 0 - cpoff, 0, 0 - rad, cpoff - rad, 0 - rad, 0 - rad, /* bottom-left */ - VLC_OP_LINE, rel_coords.x1, rel_coords.y1 + rad, /* left */ - VLC_OP_CUBIC_REL, 0, 0 - cpoff, rad - cpoff, 0 - rad, rad, 0 - rad, /* top-left */ - VLC_OP_END - }; - err = vg_lite_init_path(&path, VG_LITE_S32, VG_LITE_HIGH, sizeof(rounded_path), rounded_path, - (vg_lite_float_t) rel_clip.x1, (vg_lite_float_t) rel_clip.y1, - ((vg_lite_float_t) rel_clip.x2) + 1.0f, ((vg_lite_float_t) rel_clip.y2) + 1.0f); - } - else { - int32_t rect_path[] = { /*VG rectangular path*/ - VLC_OP_MOVE, rel_coords.x1, rel_coords.y1, - VLC_OP_LINE, rel_coords.x2 + 1, rel_coords.y1, - VLC_OP_LINE, rel_coords.x2 + 1, rel_coords.y2 + 1, - VLC_OP_LINE, rel_coords.x1, rel_coords.y2 + 1, - VLC_OP_LINE, rel_coords.x1, rel_coords.y1, - VLC_OP_END - }; - err = vg_lite_init_path(&path, VG_LITE_S32, VG_LITE_LOW, sizeof(rect_path), rect_path, - (vg_lite_float_t) rel_clip.x1, (vg_lite_float_t) rel_clip.y1, - ((vg_lite_float_t) rel_clip.x2) + 1.0f, ((vg_lite_float_t) rel_clip.y2) + 1.0f); - } - - VG_LITE_ERR_RETURN_INV(err, "Init path failed."); - vg_lite_identity(&matrix); - - /*** Init Color/Gradient ***/ - if(dsc->bg_grad.dir != (lv_grad_dir_t)LV_GRAD_DIR_NONE) { - uint32_t colors[2]; - uint32_t stops[2]; - lv_color32_t col32[2]; - - /* Gradient setup */ - uint8_t cnt = MAX(dsc->bg_grad.stops_count, 2); - for(uint8_t i = 0; i < cnt; i++) { - col32[i].full = lv_color_to32(dsc->bg_grad.stops[i].color); /*Convert color to RGBA8888*/ - stops[i] = dsc->bg_grad.stops[i].frac; -#if LV_COLOR_DEPTH==16 - colors[i] = ((uint32_t)col32[i].ch.alpha << 24) | ((uint32_t)col32[i].ch.blue << 16) | - ((uint32_t)col32[i].ch.green << 8) | (uint32_t)col32[i].ch.red; -#else /*LV_COLOR_DEPTH==32*/ - /* watchout: red and blue color components are inverted versus vg_lite_color_t order */ - colors[i] = ((uint32_t)col32[i].ch.alpha << 24) | ((uint32_t)col32[i].ch.red << 16) | - ((uint32_t)col32[i].ch.green << 8) | (uint32_t)col32[i].ch.blue; -#endif - } - - lv_memset_00(&gradient, sizeof(vg_lite_linear_gradient_t)); - - err = vg_lite_init_grad(&gradient); - VG_LITE_ERR_RETURN_INV(err, "Init gradient failed"); - - err = vg_lite_set_grad(&gradient, cnt, colors, stops); - VG_LITE_ERR_RETURN_INV(err, "Set gradient failed."); - - err = vg_lite_update_grad(&gradient); - VG_LITE_ERR_RETURN_INV(err, "Update gradient failed."); - - grad_matrix = vg_lite_get_grad_matrix(&gradient); - vg_lite_identity(grad_matrix); - vg_lite_translate((float)rel_coords.x1, (float)rel_coords.y1, grad_matrix); - - if(dsc->bg_grad.dir == (lv_grad_dir_t)LV_GRAD_DIR_VER) { - vg_lite_scale(1.0f, (float)height / 256.0f, grad_matrix); - vg_lite_rotate(90.0f, grad_matrix); - } - else { /*LV_GRAD_DIR_HOR*/ - vg_lite_scale((float)width / 256.0f, 1.0f, grad_matrix); - } - } - - lv_opa_t bg_opa = dsc->bg_opa; - lv_color32_t bg_col32 = {.full = lv_color_to32(dsc->bg_color)}; /*Convert color to RGBA8888*/ - if(bg_opa <= (lv_opa_t)LV_OPA_MAX) { - /* Only pre-multiply color if hardware pre-multiplication is not present */ - if(!vg_lite_query_feature(gcFEATURE_BIT_VG_PE_PREMULTIPLY)) { - bg_col32.ch.red = (uint8_t)(((uint16_t)bg_col32.ch.red * bg_opa) >> 8); - bg_col32.ch.green = (uint8_t)(((uint16_t)bg_col32.ch.green * bg_opa) >> 8); - bg_col32.ch.blue = (uint8_t)(((uint16_t)bg_col32.ch.blue * bg_opa) >> 8); - } - bg_col32.ch.alpha = bg_opa; - } - -#if LV_COLOR_DEPTH==16 - vgcol = bg_col32.full; -#else /*LV_COLOR_DEPTH==32*/ - vgcol = ((uint32_t)bg_col32.ch.alpha << 24) | ((uint32_t)bg_col32.ch.blue << 16) | - ((uint32_t)bg_col32.ch.green << 8) | (uint32_t)bg_col32.ch.red; -#endif - - /*Clean & invalidate cache*/ - lv_vglite_invalidate_cache(); - - /*** Draw rectangle ***/ - if(dsc->bg_grad.dir == (lv_grad_dir_t)LV_GRAD_DIR_NONE) { - err = vg_lite_draw(&vgbuf, &path, VG_LITE_FILL_EVEN_ODD, &matrix, VG_LITE_BLEND_SRC_OVER, vgcol); - } - else { - err = vg_lite_draw_gradient(&vgbuf, &path, VG_LITE_FILL_EVEN_ODD, &matrix, &gradient, VG_LITE_BLEND_SRC_OVER); - } - VG_LITE_ERR_RETURN_INV(err, "Draw gradient failed."); - - err = vg_lite_finish(); - VG_LITE_ERR_RETURN_INV(err, "Finish failed."); - - err = vg_lite_clear_path(&path); - VG_LITE_ERR_RETURN_INV(err, "Clear path failed."); - - if(dsc->bg_grad.dir != (lv_grad_dir_t)LV_GRAD_DIR_NONE) { - err = vg_lite_clear_grad(&gradient); - VG_LITE_ERR_RETURN_INV(err, "Clear gradient failed."); - } - - return LV_RES_OK; -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -#endif /*LV_USE_GPU_NXP_VG_LITE*/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_gpu_nxp_vglite.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_gpu_nxp_vglite.c deleted file mode 100644 index f65ec1d..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/nxp/vglite/lv_gpu_nxp_vglite.c +++ /dev/null @@ -1,153 +0,0 @@ -/** - * @file lv_gpu_nxp_vglite.c - * - */ - -/** - * MIT License - * - * Copyright 2020-2022 NXP - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next paragraph) - * shall be included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/********************* - * INCLUDES - *********************/ - -#include "lv_gpu_nxp_vglite.h" - -#if LV_USE_GPU_NXP_VG_LITE -#include "../../../core/lv_refr.h" -#if BLIT_DBG_AREAS - #include "lv_draw_vglite_blend.h" -#endif - -/********************* - * DEFINES - *********************/ - -#if LV_COLOR_DEPTH==16 - #define VG_LITE_PX_FMT VG_LITE_RGB565 -#elif LV_COLOR_DEPTH==32 - #define VG_LITE_PX_FMT VG_LITE_BGRA8888 -#else - #error Only 16bit and 32bit color depth are supported. Set LV_COLOR_DEPTH to 16 or 32. -#endif - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * STATIC PROTOTYPES - **********************/ - -/********************** - * STATIC VARIABLES - **********************/ - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -lv_res_t lv_vglite_init_buf(vg_lite_buffer_t * vgbuf, uint32_t width, uint32_t height, uint32_t stride, - const lv_color_t * ptr, bool source) -{ - /*Test for memory alignment*/ - if((((uintptr_t)ptr) % (uintptr_t)LV_ATTRIBUTE_MEM_ALIGN_SIZE) != (uintptr_t)0x0U) - VG_LITE_RETURN_INV("%s buffer (0x%x) not aligned to %d.", source ? "Src" : "Dest", - (size_t) ptr, LV_ATTRIBUTE_MEM_ALIGN_SIZE); - - /*Test for stride alignment*/ - if(source && (stride % (LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX * sizeof(lv_color_t))) != 0x0U) - VG_LITE_RETURN_INV("Src buffer stride (%d bytes) not aligned to %d bytes.", stride, - LV_GPU_NXP_VG_LITE_STRIDE_ALIGN_PX * sizeof(lv_color_t)); - - vgbuf->format = VG_LITE_PX_FMT; - vgbuf->tiled = VG_LITE_LINEAR; - vgbuf->image_mode = VG_LITE_NORMAL_IMAGE_MODE; - vgbuf->transparency_mode = VG_LITE_IMAGE_OPAQUE; - - vgbuf->width = (int32_t)width; - vgbuf->height = (int32_t)height; - vgbuf->stride = (int32_t)stride; - - lv_memset_00(&vgbuf->yuv, sizeof(vgbuf->yuv)); - - vgbuf->memory = (void *)ptr; - vgbuf->address = (uint32_t)vgbuf->memory; - vgbuf->handle = NULL; - - return LV_RES_OK; -} - -#if BLIT_DBG_AREAS -void lv_vglite_dbg_draw_rectangle(lv_color_t * dest_buf, lv_coord_t dest_width, lv_coord_t dest_height, - lv_area_t * fill_area, lv_color_t color) -{ - lv_area_t a; - - /* top line */ - a.x1 = fill_area->x1; - a.x2 = fill_area->x2; - a.y1 = fill_area->y1; - a.y2 = fill_area->y1; - lv_gpu_nxp_vglite_fill(dest_buf, dest_width, dest_height, &a, color, LV_OPA_COVER); - - - /* bottom line */ - a.x1 = fill_area->x1; - a.x2 = fill_area->x2; - a.y1 = fill_area->y2; - a.y2 = fill_area->y2; - lv_gpu_nxp_vglite_fill(dest_buf, dest_width, dest_height, &a, color, LV_OPA_COVER); - - /* left line */ - a.x1 = fill_area->x1; - a.x2 = fill_area->x1; - a.y1 = fill_area->y1; - a.y2 = fill_area->y2; - lv_gpu_nxp_vglite_fill(dest_buf, dest_width, dest_height, &a, color, LV_OPA_COVER); - - /* right line */ - a.x1 = fill_area->x2; - a.x2 = fill_area->x2; - a.y1 = fill_area->y1; - a.y2 = fill_area->y2; - lv_gpu_nxp_vglite_fill(dest_buf, dest_width, dest_height, &a, color, LV_OPA_COVER); -} -#endif /* BLIT_DBG_AREAS */ - -void lv_vglite_invalidate_cache(void) -{ - lv_disp_t * disp = _lv_refr_get_disp_refreshing(); - if(disp->driver->clean_dcache_cb) - disp->driver->clean_dcache_cb(disp->driver); -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -#endif /*LV_USE_GPU_NXP_VG_LITE*/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c deleted file mode 100644 index 4eb1940..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.c +++ /dev/null @@ -1,265 +0,0 @@ -/** - * @file lv_gpu_stm32_dma2d.c - * - */ - -/********************* - * INCLUDES - *********************/ -#include "lv_gpu_stm32_dma2d.h" -#include "../../core/lv_refr.h" - -#if LV_USE_GPU_STM32_DMA2D - -#include LV_GPU_DMA2D_CMSIS_INCLUDE - -/********************* - * DEFINES - *********************/ - -#if LV_COLOR_16_SWAP - // TODO: F7 has red blue swap bit in control register for all layers and output - #error "Can't use DMA2D with LV_COLOR_16_SWAP 1" -#endif - -#if LV_COLOR_DEPTH == 8 - #error "Can't use DMA2D with LV_COLOR_DEPTH == 8" -#endif - -#if LV_COLOR_DEPTH == 16 - #define LV_DMA2D_COLOR_FORMAT LV_DMA2D_RGB565 -#elif LV_COLOR_DEPTH == 32 - #define LV_DMA2D_COLOR_FORMAT LV_DMA2D_ARGB8888 -#else - /*Can't use GPU with other formats*/ -#endif - -/********************** - * TYPEDEFS - **********************/ - -/********************** - * STATIC PROTOTYPES - **********************/ - -static void lv_draw_stm32_dma2d_blend_fill(lv_color_t * dest_buf, lv_coord_t dest_stride, const lv_area_t * fill_area, - lv_color_t color); - - -static void lv_draw_stm32_dma2d_blend_map(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride, - const lv_color_t * src_buf, lv_coord_t src_stride, lv_opa_t opa); - -static void lv_draw_stm32_dma2d_img_decoded(lv_draw_ctx_t * draw, const lv_draw_img_dsc_t * dsc, - const lv_area_t * coords, const uint8_t * map_p, lv_img_cf_t color_format); - - -static void invalidate_cache(void); - -/********************** - * STATIC VARIABLES - **********************/ - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -/** - * Turn on the peripheral and set output color mode, this only needs to be done once - */ -void lv_draw_stm32_dma2d_init(void) -{ - /*Enable DMA2D clock*/ -#if defined(STM32F4) || defined(STM32F7) - RCC->AHB1ENR |= RCC_AHB1ENR_DMA2DEN; -#elif defined(STM32H7) - RCC->AHB3ENR |= RCC_AHB3ENR_DMA2DEN; -#else -# warning "LVGL can't enable the clock of DMA2D" -#endif - - /*Wait for hardware access to complete*/ - __asm volatile("DSB\n"); - - /*Delay after setting peripheral clock*/ - volatile uint32_t temp = RCC->AHB1ENR; - LV_UNUSED(temp); - - /*set output colour mode*/ - DMA2D->OPFCCR = LV_DMA2D_COLOR_FORMAT; -} - - -void lv_draw_stm32_dma2d_ctx_init(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx) -{ - - lv_draw_sw_init_ctx(drv, draw_ctx); - - lv_draw_stm32_dma2d_ctx_t * dma2d_draw_ctx = (lv_draw_sw_ctx_t *)draw_ctx; - - dma2d_draw_ctx->blend = lv_draw_stm32_dma2d_blend; - // dma2d_draw_ctx->base_draw.draw_img_decoded = lv_draw_stm32_dma2d_img_decoded; - dma2d_draw_ctx->base_draw.wait_for_finish = lv_gpu_stm32_dma2d_wait_cb; - dma2d_draw_ctx->base_draw.buffer_copy = lv_draw_stm32_dma2d_buffer_copy; - -} - -void lv_draw_stm32_dma2d_ctx_deinit(lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx) -{ - LV_UNUSED(drv); - LV_UNUSED(draw_ctx); -} - - -void lv_draw_stm32_dma2d_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc) -{ - lv_area_t blend_area; - if(!_lv_area_intersect(&blend_area, dsc->blend_area, draw_ctx->clip_area)) return; - - bool done = false; - - if(dsc->mask_buf == NULL && dsc->blend_mode == LV_BLEND_MODE_NORMAL && lv_area_get_size(&blend_area) > 100) { - lv_coord_t dest_stride = lv_area_get_width(draw_ctx->buf_area); - - lv_color_t * dest_buf = draw_ctx->buf; - dest_buf += dest_stride * (blend_area.y1 - draw_ctx->buf_area->y1) + (blend_area.x1 - draw_ctx->buf_area->x1); - - const lv_color_t * src_buf = dsc->src_buf; - if(src_buf) { - lv_draw_sw_blend_basic(draw_ctx, dsc); - lv_coord_t src_stride; - src_stride = lv_area_get_width(dsc->blend_area); - src_buf += src_stride * (blend_area.y1 - dsc->blend_area->y1) + (blend_area.x1 - dsc->blend_area->x1); - lv_area_move(&blend_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1); - lv_draw_stm32_dma2d_blend_map(dest_buf, &blend_area, dest_stride, src_buf, src_stride, dsc->opa); - done = true; - } - else if(dsc->opa >= LV_OPA_MAX) { - lv_area_move(&blend_area, -draw_ctx->buf_area->x1, -draw_ctx->buf_area->y1); - lv_draw_stm32_dma2d_blend_fill(dest_buf, dest_stride, &blend_area, dsc->color); - done = true; - } - } - - if(!done) lv_draw_sw_blend_basic(draw_ctx, dsc); -} - -void lv_draw_stm32_dma2d_buffer_copy(lv_draw_ctx_t * draw_ctx, - void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area, - void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area) -{ - LV_UNUSED(draw_ctx); - lv_draw_stm32_dma2d_blend_map(dest_buf, dest_area, dest_stride, src_buf, src_stride, LV_OPA_MAX); -} - - -static void lv_draw_stm32_dma2d_img_decoded(lv_draw_ctx_t * draw_ctx, const lv_draw_img_dsc_t * dsc, - const lv_area_t * coords, const uint8_t * map_p, lv_img_cf_t color_format) -{ - /*TODO basic ARGB8888 image can be handles here*/ - - lv_draw_sw_img_decoded(draw_ctx, dsc, coords, map_p, color_format); -} - -static void lv_draw_stm32_dma2d_blend_fill(lv_color_t * dest_buf, lv_coord_t dest_stride, const lv_area_t * fill_area, - lv_color_t color) -{ - /*Simply fill an area*/ - int32_t area_w = lv_area_get_width(fill_area); - int32_t area_h = lv_area_get_height(fill_area); - invalidate_cache(); - - DMA2D->CR = 0x30000; - DMA2D->OMAR = (uint32_t)dest_buf; - /*as input color mode is same as output we don't need to convert here do we?*/ - DMA2D->OCOLR = color.full; - DMA2D->OOR = dest_stride - area_w; - DMA2D->NLR = (area_w << DMA2D_NLR_PL_Pos) | (area_h << DMA2D_NLR_NL_Pos); - - /*start transfer*/ - DMA2D->CR |= DMA2D_CR_START_Msk; - -} - - -static void lv_draw_stm32_dma2d_blend_map(lv_color_t * dest_buf, const lv_area_t * dest_area, lv_coord_t dest_stride, - const lv_color_t * src_buf, lv_coord_t src_stride, lv_opa_t opa) -{ - - /*Simple copy*/ - int32_t dest_w = lv_area_get_width(dest_area); - int32_t dest_h = lv_area_get_height(dest_area); - - invalidate_cache(); - if(opa >= LV_OPA_MAX) { - DMA2D->CR = 0; - /*copy output colour mode, this register controls both input and output colour format*/ - DMA2D->FGPFCCR = LV_DMA2D_COLOR_FORMAT; - DMA2D->FGMAR = (uint32_t)src_buf; - DMA2D->FGOR = src_stride - dest_w; - DMA2D->OMAR = (uint32_t)dest_buf; - DMA2D->OOR = dest_stride - dest_w; - DMA2D->NLR = (dest_w << DMA2D_NLR_PL_Pos) | (dest_h << DMA2D_NLR_NL_Pos); - - /*start transfer*/ - DMA2D->CR |= DMA2D_CR_START_Msk; - } - else { - DMA2D->CR = 0x20000; - - DMA2D->BGPFCCR = LV_DMA2D_COLOR_FORMAT; - DMA2D->BGMAR = (uint32_t)dest_buf; - DMA2D->BGOR = dest_stride - dest_w; - - DMA2D->FGPFCCR = (uint32_t)LV_DMA2D_COLOR_FORMAT - /*alpha mode 2, replace with foreground * alpha value*/ - | (2 << DMA2D_FGPFCCR_AM_Pos) - /*alpha value*/ - | (opa << DMA2D_FGPFCCR_ALPHA_Pos); - DMA2D->FGMAR = (uint32_t)src_buf; - DMA2D->FGOR = src_stride - dest_w; - - DMA2D->OMAR = (uint32_t)dest_buf; - DMA2D->OOR = dest_stride - dest_w; - DMA2D->NLR = (dest_w << DMA2D_NLR_PL_Pos) | (dest_h << DMA2D_NLR_NL_Pos); - - /*start transfer*/ - DMA2D->CR |= DMA2D_CR_START_Msk; - } -} - -void lv_gpu_stm32_dma2d_wait_cb(lv_draw_ctx_t * draw_ctx) -{ - lv_disp_t * disp = _lv_refr_get_disp_refreshing(); - if(disp->driver && disp->driver->wait_cb) { - while(DMA2D->CR & DMA2D_CR_START_Msk) { - disp->driver->wait_cb(disp->driver); - } - } - else { - while(DMA2D->CR & DMA2D_CR_START_Msk); - } - lv_draw_sw_wait_for_finish(draw_ctx); - -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -static void invalidate_cache(void) -{ - lv_disp_t * disp = _lv_refr_get_disp_refreshing(); - if(disp->driver->clean_dcache_cb) disp->driver->clean_dcache_cb(disp->driver); - else { -#if __CORTEX_M >= 0x07 - if((SCB->CCR) & (uint32_t)SCB_CCR_DC_Msk) - SCB_CleanInvalidateDCache(); -#endif - } -} - -#endif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h deleted file mode 100644 index fa7070e..0000000 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/src/draw/stm32_dma2d/lv_gpu_stm32_dma2d.h +++ /dev/null @@ -1,70 +0,0 @@ -/** - * @file lv_gpu_stm32_dma2d.h - * - */ - -#ifndef LV_GPU_STM32_DMA2D_H -#define LV_GPU_STM32_DMA2D_H - -#ifdef __cplusplus -extern "C" { -#endif - -/********************* - * INCLUDES - *********************/ -#include "../../misc/lv_color.h" -#include "../../hal/lv_hal_disp.h" -#include "../sw/lv_draw_sw.h" - -#if LV_USE_GPU_STM32_DMA2D - -/********************* - * DEFINES - *********************/ - -#define LV_DMA2D_ARGB8888 0 -#define LV_DMA2D_RGB888 1 -#define LV_DMA2D_RGB565 2 -#define LV_DMA2D_ARGB1555 3 -#define LV_DMA2D_ARGB4444 4 - -/********************** - * TYPEDEFS - **********************/ -typedef lv_draw_sw_ctx_t lv_draw_stm32_dma2d_ctx_t; - -struct _lv_disp_drv_t; - -/********************** - * GLOBAL PROTOTYPES - **********************/ - -/** - * Turn on the peripheral and set output color mode, this only needs to be done once - */ -void lv_draw_stm32_dma2d_init(void); - -void lv_draw_stm32_dma2d_ctx_init(struct _lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx); - -void lv_draw_stm32_dma2d_ctx_deinit(struct _lv_disp_drv_t * drv, lv_draw_ctx_t * draw_ctx); - -void lv_draw_stm32_dma2d_blend(lv_draw_ctx_t * draw_ctx, const lv_draw_sw_blend_dsc_t * dsc); - -void lv_draw_stm32_dma2d_buffer_copy(lv_draw_ctx_t * draw_ctx, - void * dest_buf, lv_coord_t dest_stride, const lv_area_t * dest_area, - void * src_buf, lv_coord_t src_stride, const lv_area_t * src_area); - -void lv_gpu_stm32_dma2d_wait_cb(lv_draw_ctx_t * draw_ctx); - -/********************** - * MACROS - **********************/ - -#endif /*LV_USE_GPU_STM32_DMA2D*/ - -#ifdef __cplusplus -} /*extern "C"*/ -#endif - -#endif /*LV_GPU_STM32_DMA2D_H*/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/tests/ref_imgs/dropdown_1.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/tests/ref_imgs/dropdown_1.png deleted file mode 100644 index 30bf0bb75d32354ffeaa4919458518c951386279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12395 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 -#include -#include -#include -#include -#include "unity.h" -#define PNG_DEBUG 3 -#include - -/********************* - * DEFINES - *********************/ -//#define REF_IMGS_PATH "lvgl/tests/lv_test_ref_imgs/" -#define REF_IMGS_PATH "ref_imgs/" - -/********************** - * TYPEDEFS - **********************/ -typedef struct { - int width, height; - png_byte color_type; - png_byte bit_depth; - - png_structp png_ptr; - png_infop info_ptr; - int number_of_passes; - png_bytep * row_pointers; -}png_img_t; - -/********************** - * STATIC PROTOTYPES - **********************/ -static int read_png_file(png_img_t * p, const char* file_name); -static void png_release(png_img_t * p); - -/********************** - * STATIC VARIABLES - **********************/ - -/********************** - * MACROS - **********************/ - -/********************** - * GLOBAL FUNCTIONS - **********************/ - -bool lv_test_assert_img_eq(const char * fn_ref) -{ - char fn_ref_full[512]; - sprintf(fn_ref_full, "%s%s", REF_IMGS_PATH, fn_ref); - - png_img_t p; - int res = read_png_file(&p, fn_ref_full); - if(res < 0) return false; - uint8_t * screen_buf; - - lv_obj_invalidate(lv_scr_act()); - lv_refr_now(NULL); - - extern lv_color_t test_fb[]; - - screen_buf = (uint8_t *)test_fb; - - uint8_t * ptr_act = NULL; - const png_byte* ptr_ref = NULL; - - bool err = false; - int x, y, i_buf = 0; - for (y = 0; y < p.height; y++) { - png_byte* row = p.row_pointers[y]; - - for (x = 0; x < p.width; x++) { - ptr_ref = &(row[x*3]); - ptr_act = &(screen_buf[i_buf*4]); - - uint32_t ref_px = 0; - uint32_t act_px = 0; - memcpy(&ref_px, ptr_ref, 3); - memcpy(&act_px, ptr_act, 3); - //printf("0xFF%06x, ", act_px); - - uint8_t act_swap[3] = {ptr_act[2], ptr_act[1], ptr_act[0]}; - - if(memcmp(act_swap, ptr_ref, 3) != 0) { - err = true; - break; - } - i_buf++; - } - if(err) break; - } - - if(err) { - uint32_t ref_px = 0; - uint32_t act_px = 0; - memcpy(&ref_px, ptr_ref, 3); - memcpy(&act_px, ptr_act, 3); - - FILE * f = fopen("../test_screenshot_error.h", "w"); - - fprintf(f, "//Diff in %s at (%d;%d), %x instead of %x)\n\n", fn_ref, x, y, act_px, ref_px); - fprintf(f, "static const uint32_t test_screenshot_error_data[] = {\n"); - - i_buf = 0; - for (y = 0; y < 480; y++) { - fprintf(f, "\n"); - for (x = 0; x < 800; x++) { - ptr_act = &(screen_buf[i_buf * 4]); - act_px = 0; - memcpy(&act_px, ptr_act, 3); - fprintf(f, "0xFF%06X, ", act_px); - i_buf++; - } - } - fprintf(f, "};\n\n"); - - fprintf(f, "static lv_img_dsc_t test_screenshot_error_dsc = { \n" - " .header.w = 800,\n" - " .header.h = 480,\n" - " .header.always_zero = 0,\n" - " .header.cf = LV_IMG_CF_TRUE_COLOR,\n" - " .data_size = 800 * 480 * 4,\n" - " .data = test_screenshot_error_data};\n\n" - "static inline void test_screenshot_error_show(void)\n" - "{\n" - " lv_obj_t * img = lv_img_create(lv_scr_act());\n" - " lv_img_set_src(img, &test_screenshot_error_dsc);\n" - "}\n"); - - fclose(f); - - } - - - png_release(&p); - - return !err; - -} - -/********************** - * STATIC FUNCTIONS - **********************/ - -static int read_png_file(png_img_t * p, const char* file_name) -{ - char header[8]; // 8 is the maximum size that can be checked - - /*open file and test for it being a png*/ - FILE *fp = fopen(file_name, "rb"); - if (!fp) { - TEST_PRINTF("%s", "PNG file %s could not be opened for reading"); - return -1; - } - - size_t rcnt = fread(header, 1, 8, fp); - if (rcnt != 8 || png_sig_cmp((png_const_bytep)header, 0, 8)) { - TEST_PRINTF("%s is not recognized as a PNG file", file_name); - return -1; - } - - /*initialize stuff*/ - p->png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - - if (!p->png_ptr) { - TEST_PRINTF("%s", "png_create_read_struct failed"); - return -1; - } - - p->info_ptr = png_create_info_struct(p->png_ptr); - if (!p->info_ptr) { - TEST_PRINTF("%s", "png_create_info_struct failed"); - return -1; - } - if (setjmp(png_jmpbuf(p->png_ptr))) { - TEST_PRINTF("%s", "Error during init_io"); - return -1; - } - png_init_io(p->png_ptr, fp); - png_set_sig_bytes(p->png_ptr, 8); - - png_read_info(p->png_ptr, p->info_ptr); - - p->width = png_get_image_width(p->png_ptr, p->info_ptr); - p->height = png_get_image_height(p->png_ptr, p->info_ptr); - p->color_type = png_get_color_type(p->png_ptr, p->info_ptr); - p->bit_depth = png_get_bit_depth(p->png_ptr, p->info_ptr); - - p->number_of_passes = png_set_interlace_handling(p->png_ptr); - png_read_update_info(p->png_ptr, p->info_ptr); - - /*read file*/ - if (setjmp(png_jmpbuf(p->png_ptr))) { - TEST_PRINTF("%s", "Error during read_image"); - return -1; - } - p->row_pointers = (png_bytep*) malloc(sizeof(png_bytep) * p->height); - - int y; - for (y=0; yheight; y++) - p->row_pointers[y] = (png_byte*) malloc(png_get_rowbytes(p->png_ptr,p->info_ptr)); - - png_read_image(p->png_ptr, p->row_pointers); - - fclose(fp); - return 0; -} - -static void png_release(png_img_t * p) -{ - int y; - for (y=0; yheight; y++) free(p->row_pointers[y]); - - free(p->row_pointers); - - png_destroy_read_struct(&p->png_ptr, &p->info_ptr, NULL); -} - - -#endif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/.codecov.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.codecov.yml similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/.codecov.yml rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.codecov.yml diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/.editorconfig b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.editorconfig similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/.editorconfig rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.editorconfig diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/FUNDING.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/FUNDING.yml new file mode 100644 index 0000000..1353007 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/FUNDING.yml @@ -0,0 +1 @@ +open_collective: lvgl diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/bug-report.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000..5f32762 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,44 @@ +--- +name: Bug report +about: Create a bug report to help us improve +title: '' +labels: '' +assignees: '' + +--- + + + +### Perform all steps below and tick them with [x] +- [ ] Read the [FAQ](https://docs.lvgl.io/master/intro/index.html#faq) +- [ ] Check the related part of the [Documentation](https://docs.lvgl.io/) +- [ ] Update lvgl to the latest version +- [ ] Reproduce the issue in a [Simulator](https://docs.lvgl.io/latest/en/html/get-started/pc-simulator.html) + +### Describe the bug + + +### To Reproduce + + +### Expected behavior + + +### Screenshots or video + diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/config.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..2228ff1 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,14 @@ +blank_issues_enabled: false +contact_links: + - name: Documentation + url: https://docs.lvgl.io + about: Be sure to read to documentation first + - name: Forum + url: https://forum.lvgl.io + about: For topics like How-to, Getting started, Feature request + - name: CONTIBUTING.md + url: https://github.com/lvgl/lvgl/blob/master/docs/CONTRIBUTING.md#faq-about-contributing + about: The basic rules of contributing + - name: CODING_STYLE.md + url: https://github.com/lvgl/lvgl/blob/master/docs/CODING_STYLE.md + about: Quick summary of LVGL's code style diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/dev-discussion.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/dev-discussion.md new file mode 100644 index 0000000..7c9f6c0 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/ISSUE_TEMPLATE/dev-discussion.md @@ -0,0 +1,29 @@ +--- +name: Development discussion +about: Discussion strictly related to the development of the LVGL. +title: '' +labels: '' +assignees: '' + +--- + + +### Introduce the problem + + +### Examples and cases + + +### Suggested solution + diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/auto-comment.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/auto-comment.yml new file mode 100644 index 0000000..a141fb5 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/auto-comment.yml @@ -0,0 +1,12 @@ +# Comment to a new issue. +pullRequestOpened: | + Thank you for raising your pull request. + + To ensure that all licensing criteria is met all repositories of the LVGL project apply a process called DCO (Developer's Certificate of Origin). + + The text of DCO can be read here: https://developercertificate.org/ + For a more detailed description see the [Documentation](https://docs.lvgl.io/latest/en/html/contributing/index.html#developer-certification-of-origin-dco) site. + + By contributing to any repositories of the LVGL project you state that your contribution corresponds with the DCO. + + No further action is required if your contribution fulfills the DCO. If you are not sure about it feel free to ask us in a comment. diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/pull_request_template.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/pull_request_template.md new file mode 100644 index 0000000..7c598e6 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/pull_request_template.md @@ -0,0 +1,10 @@ +A clear and concise description of what the bug or new feature is. + +- Update the [Documentation](https://github.com/lvgl/lvgl/tree/master/docs) if needed. +- Add [Examples](https://github.com/lvgl/lvgl/tree/master/examples) if relevant. +- Add [Tests](https://github.com/lvgl/lvgl/blob/master/tests/README.md) if applicable. +- If you added new options to `lv_conf_template.h` run [lv_conf_internal_gen.py](https://github.com/lvgl/lvgl/blob/master/scripts/lv_conf_internal_gen.py) and update [Kconfig](https://github.com/lvgl/lvgl/blob/master/Kconfig). +- Run `scripts/code-format.py` (`astyle v3.4.12` needs to installed by running `cd scripts; ./install_astyle.sh`) and follow the [Code Conventions](https://docs.lvgl.io/master/CODING_STYLE.html). +- Mark the Pull request as [Draft](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request) while you are working on the first version, and mark is as _Ready_ when it's ready for review. +- When changes were requested, [re-request review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review) to notify the maintainers. +- Help us to review this Pull Request! Anyone can [approve or request changes](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews). diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/arduino.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/arduino.yml new file mode 100644 index 0000000..a6fbba1 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/arduino.yml @@ -0,0 +1,15 @@ +name: Arduino Lint +on: + push: + branches: [ master, release/v8.* ] + pull_request: + branches: [ master, release/v8.* ] +jobs: + lint: + if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: arduino/arduino-lint-action@v1 + with: + library-manager: update diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/build_micropython.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/build_micropython.yml new file mode 100644 index 0000000..a8bb912 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/build_micropython.yml @@ -0,0 +1,74 @@ +name: Micropython CI + +on: + push: + pull_request: + +jobs: + build: + if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }} + name: Build ${{ matrix.port }} port + runs-on: ubuntu-20.04 + continue-on-error: true + strategy: + matrix: + port: ['unix', 'esp32', 'stm32', 'rp2'] + steps: + - uses: ammaraskar/gcc-problem-matcher@master + - name: Install Dependencies + run: | + sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu `lsb_release -sc` main universe restricted multiverse" + sudo apt-get update -y -qq + sudo apt-get install libsdl2-dev parallel libfreetype-dev librlottie-dev + - name: Clone lv_micropython + run: | + git clone https://github.com/lvgl/lv_micropython.git . + git checkout release/v8 + - name: Initialize lv_bindings submodule + run: git submodule update --init --recursive lib/lv_bindings + - name: Update ${{ matrix.port }} port submodules + if: matrix.port != 'esp32' + # VARIANT needed for unix + run: make -C ports/${{ matrix.port }} VARIANT=dev DEBUG=1 USER_C_MODULES=../../lib/lv_bindings/bindings.cmake submodules + - name: Checkout LVGL submodule + working-directory: ./lib/lv_bindings/lvgl + run: | + git fetch --force ${{ github.event.repository.html_url }} "+refs/heads/*:refs/remotes/origin/*" + git fetch --force ${{ github.event.repository.html_url }} "+refs/pull/*:refs/remotes/origin/pr/*" + git checkout ${{ github.sha }} || git checkout ${{ github.event.pull_request.head.sha }} + git submodule update --init --recursive + - name: Build mpy-cross + run: make -j $(nproc) -C mpy-cross + + # ESP32 port + - name: Setup ESP-IDF + if: matrix.port == 'esp32' + run: | + source tools/ci.sh && ci_esp32_idf44_setup + - name: Build ESP32 port + if: matrix.port == 'esp32' + run: | + source tools/ci.sh && ci_esp32_build + + # STM32 & RPi Pico port + - name: arm-none-eabi-gcc + if: matrix.port == 'stm32' || matrix.port == 'rp2' + uses: carlosperate/arm-none-eabi-gcc-action@v1.3.0 + with: + release: '9-2019-q4' # The arm-none-eabi-gcc release to use. + - name: Build STM32 port + if: matrix.port == 'stm32' + run: make -j $(nproc) -C ports/stm32 BOARD=STM32F7DISC + - name: Build Raspberry Pi PICO port + if: matrix.port == 'rp2' + run: make -j $(nproc) -C ports/rp2 BOARD=PICO USER_C_MODULES=../../lib/lv_bindings/bindings.cmake + # Unix port + - name: Build Unix port + if: matrix.port == 'unix' + run: make -j $(nproc) -C ports/unix VARIANT=dev DEBUG=1 + - name: Run tests + if: success() && matrix.port == 'unix' + run: | + export XDG_RUNTIME_DIR=/tmp + lib/lv_bindings/tests/run.sh + diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/ccpp.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/ccpp.yml new file mode 100644 index 0000000..caf6788 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/ccpp.yml @@ -0,0 +1,109 @@ +name: C/C++ CI + +on: + push: + branches: [ master, release/v8.* ] + pull_request: + branches: [ master, release/v8.* ] + +jobs: + build: + if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }} + runs-on: ubuntu-latest + strategy: + matrix: + # A valid option parameter to the cmake file. + # See BUILD_OPTIONS in tests/CMakeLists.txt. + build_option: ['OPTIONS_MINIMAL_MONOCHROME', + 'OPTIONS_NORMAL_8BIT', + 'OPTIONS_16BIT', + 'OPTIONS_16BIT_SWAP', + 'OPTIONS_FULL_32BIT'] + name: Build ${{ matrix.build_option }} + steps: + - uses: actions/checkout@v2 + - uses: ammaraskar/gcc-problem-matcher@master + - name: Install prerequisites + run: scripts/install-prerequisites.sh + - name: Building ${{ matrix.build_option }} + run: python tests/main.py --build-option=${{ matrix.build_option }} build + + test-native: + runs-on: ubuntu-latest + name: amd64 Executable Tests + steps: + - uses: actions/checkout@v2 + - uses: ammaraskar/gcc-problem-matcher@master + - name: Install prerequisites + run: scripts/install-prerequisites.sh + - name: Fix kernel mmap rnd bits + # Asan in llvm 14 provided in ubuntu 22.04 is incompatible with + # high-entropy ASLR in much newer kernels that GitHub runners are + # using leading to random crashes: https://reviews.llvm.org/D148280 + run: sudo sysctl vm.mmap_rnd_bits=28 + - name: Run tests + run: python tests/main.py --report test + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v2 + if: github.event_name == 'push' + with: + fail_ci_if_error: true + verbose: true + test-cross: + # The host should always be linux + runs-on: ubuntu-latest + name: ${{ matrix.arch }} Executable Tests + + # Run steps on a matrix of 3 arch/distro combinations + strategy: + matrix: + arch: [ 'aarch64', 'armv6', 'armv7' ] + + steps: + - uses: actions/checkout@v2.1.0 + - uses: ammaraskar/gcc-problem-matcher@master + - name: Setup cache + uses: actions/cache@v2 + with: + path: | + ~/.ccache + key: lvgl_ci_cross_test_ccache_${{ matrix.arch }}_${{ github.sha }} + restore-keys: | + lvgl_ci_cross_test_ccache_${{ matrix.arch }} + - uses: uraimo/run-on-arch-action@v2.1.1 + name: Run tests + id: build + with: + arch: ${{ matrix.arch }} + distro: bullseye + + # Not required, but speeds up builds + githubToken: ${{ github.token }} + + # The shell to run commands with in the container + shell: /bin/bash + + # Create cached/volume directories on host + setup: | + mkdir -p ~/.ccache + + # Mount cached directories in the container for faster builds + dockerRunArgs: | + --volume "${HOME}/.ccache:/root/.ccache" + + install: | + apt-get update -y + apt-get install build-essential ccache python3 libpng-dev ruby-full gcovr cmake -q -y + /usr/sbin/update-ccache-symlinks + echo 'export PATH="/usr/lib/ccache:$PATH"' | tee -a ~/.bashrc + + run: | + if [[ "${{ matrix.distro }}" == "ubuntu22.04" ]]; then + # ASan in llvm 14 provided in ubuntu-22.04 is incompatible with + # high-entropy ASLR configured in much newer kernels that GitHub + # runners are using leading to random crashes: + # https://github.com/actions/runner-images/issues/9491 + # can remove this once the issue is fixed. + sysctl -w vm.mmap_rnd_bits=28 + fi + env PATH="/usr/lib/ccache:$PATH" ASAN_OPTIONS=detect_leaks=0 python3 tests/main.py test diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/check_conf.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/check_conf.yml new file mode 100644 index 0000000..4222370 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/check_conf.yml @@ -0,0 +1,24 @@ +name: Verify that lv_conf_internal.h matches repository state +on: + push: + pull_request: + +jobs: + verify-conf-internal: + if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + persist-credentials: false + fetch-depth: 0 + - name: Setup Python + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Generate lv_conf_internal.h + run: python lv_conf_internal_gen.py + working-directory: scripts + - name: Check that repository is clean + run: git diff --exit-code >/dev/null 2>&1 || (echo "Please regenerate lv_conf_internal.h using scripts/lv_conf_internal_gen.py"; false) diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/check_style.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/check_style.yml new file mode 100644 index 0000000..4a11bf0 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/check_style.yml @@ -0,0 +1,37 @@ +name: Verify code formatting +on: + push: + pull_request: + +jobs: + verify-formatting: + if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + persist-credentials: false + fetch-depth: 0 + - name: Checkout astyle + uses: actions/checkout@v4 + with: + repository: lvgl/astyle + path: astyle + - name: Install astyle + run: | + cd astyle/build/gcc/ + make + sudo make install + astyle --version + - name: Format code + run: python code-format.py + working-directory: scripts + - name: Check that repository is clean + shell: bash + run: | + set -o pipefail + if ! (git diff --exit-code --color=always | tee /tmp/lvgl_diff.patch); then + echo "Please apply the preceding diff to your code or run scripts/code-format.py" + exit 1 + fi diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/close_old_issues.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/close_old_issues.yml new file mode 100644 index 0000000..7c9d16e --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/close_old_issues.yml @@ -0,0 +1,29 @@ +name: 'Close stale issues and PRs' +on: + schedule: + - cron: '30 1 * * *' + workflow_dispatch: + +jobs: + stale: + if: github.repository == 'lvgl/lvgl' + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v5 + with: + repo-token: ${{ secrets.LVGL_BOT_TOKEN }} + stale-issue-message: 'This issue is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 7 days.' + stale-pr-message: | + We need some feedback on this issue. + + Now we mark this as "stale" because there was no activity here for 14 days. + + Remove the "stale" label or comment else this will be closed in 7 days. + close-issue-message: | + As there was no activity here for a while we close this issue. But don't worry, the conversation is still here and you can get back to it at any time. + + So feel free to comment if you have remarks or ideas on this topic. + days-before-stale: 14 + days-before-close: 7 + exempt-issue-labels: 'pinned' + exempt-pr-labels: 'pinned' diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/compile_docs.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/compile_docs.yml new file mode 100644 index 0000000..8e72188 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/compile_docs.yml @@ -0,0 +1,93 @@ +name: Build docs +on: + push: + branches: + - master + - 'release/*' +env: + EM_VERSION: 2.0.4 + EM_CACHE_FOLDER: 'emsdk-cache' +jobs: + build-and-deploy: + if: github.repository == 'lvgl/lvgl' + runs-on: ubuntu-latest + concurrency: docs-build-and-deploy + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + persist-credentials: false + fetch-depth: 0 + - name: Setup Python + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Cache Python packages + uses: actions/cache@v2 + with: + # Cache the Python package environment, excluding pip and setuptools installed by setup-python + path: | + ~/.cache/pip + ${{ env.pythonLocation }}/bin/* + ${{ env.pythonLocation }}/include + ${{ env.pythonLocation }}/lib/python*/site-packages/* + !${{ env.pythonLocation }}/bin/pip* + !${{ env.pythonLocation }}/lib/python*/site-packages/pip* + !${{ env.pythonLocation }}/lib/python*/site-packages/setuptools* + key: ${{ env.pythonLocation }}-${{ hashFiles('docs/requirements.txt') }} + - name: Install Doxygen and Latex dependencies + run: | + sudo apt-get update + sudo apt-get install doxygen texlive-xetex texlive-binaries texlive-lang-english latexmk fonts-freefont-otf + - name: Install requirements + run: | + pip install -r docs/requirements.txt + - name: Setup Emscripten cache + id: cache-system-libraries + uses: actions/cache@v2 + with: + path: ${{env.EM_CACHE_FOLDER}} + key: ${{env.EM_VERSION}}-${{ runner.os }} + - uses: mymindstorm/setup-emsdk@v9 + with: + version: ${{env.EM_VERSION}} + actions-cache-folder: ${{env.EM_CACHE_FOLDER}} + - name: ccache + uses: hendrikmuhs/ccache-action@v1 + - name: Build examples (with cache) + run: scripts/build_html_examples.sh + - name: Build docs + run: docs/build.py + - name: Remove .doctrees + run: rm -rf out_html/.doctrees + - name: Retrieve version + run: | + echo "::set-output name=VERSION_NAME::$(scripts/find_version.sh)" + id: version + - name: Deploy to subfolder + uses: JamesIves/github-pages-deploy-action@3.7.1 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ACCESS_TOKEN: ${{ secrets.LVGL_BOT_TOKEN }} + REPOSITORY_NAME: lvgl/docs + BRANCH: gh-pages # The branch the action should deploy to. + FOLDER: out_html # The folder the action should deploy. + TARGET_FOLDER: ${{ steps.version.outputs.VERSION_NAME }} + GIT_CONFIG_NAME: lvgl-bot + GIT_CONFIG_EMAIL: lvgl-bot@users.noreply.github.com + PRESERVE: true + SINGLE_COMMIT: true + - name: Deploy to master + if: github.ref == 'refs/heads/master' + uses: JamesIves/github-pages-deploy-action@3.7.1 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ACCESS_TOKEN: ${{ secrets.LVGL_BOT_TOKEN }} + REPOSITORY_NAME: lvgl/docs + BRANCH: gh-pages # The branch the action should deploy to. + FOLDER: out_html # The folder the action should deploy. + TARGET_FOLDER: master + GIT_CONFIG_NAME: lvgl-bot + GIT_CONFIG_EMAIL: lvgl-bot@users.noreply.github.com + PRESERVE: true + SINGLE_COMMIT: true diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/esp_upload_component.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/esp_upload_component.yml new file mode 100644 index 0000000..08edfe2 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/esp_upload_component.yml @@ -0,0 +1,23 @@ +name: Push LVGL release to Espressif Component Service + +# If the commit is tagged, it will be uploaded. Other scenario silently fail. +on: + push: + tags: + - v* + +jobs: + upload_components: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: "recursive" + + - name: Upload component to component registry + uses: espressif/upload-components-ci-action@v1 + with: + name: "lvgl" + version: ${{ github.ref_name }} + namespace: "lvgl" + api_token: ${{ secrets.ESP_IDF_COMPONENT_API_TOKEN }} diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/main.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/main.yml new file mode 100644 index 0000000..9c4fc30 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/main.yml @@ -0,0 +1,16 @@ +on: + issues: + types: [opened, edited] + +jobs: + auto_close_issues: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v1 + - name: Automatically close issues that don't follow the issue template + uses: lucasbento/auto-close-issues@v1.0.2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + issue-close-message: "@${issue.user.login}: hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template." # optional property + closed-issues-label: "not-template" diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/makefile.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/makefile.yml new file mode 100644 index 0000000..39a9a13 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/makefile.yml @@ -0,0 +1,21 @@ +name: Check Makefile + +on: + push: + branches: [ master, release/v8.* ] + pull_request: + branches: [ master, release/v8.* ] + +jobs: + build: + if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }} + runs-on: ubuntu-latest + name: Build using Makefile + steps: + - uses: actions/checkout@v2 + - uses: ammaraskar/gcc-problem-matcher@master + - name: Install prerequisites + run: scripts/install-prerequisites.sh + - name: Build + working-directory: tests/makefile + run: make test_file diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/release.yml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/release.yml new file mode 100644 index 0000000..cf1d69a --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.github/workflows/release.yml @@ -0,0 +1,27 @@ +on: + push: + # Sequence of patterns matched against refs/tags + tags: + - "v[0-9]+.[0-9]+.[0-9]+" # Push events to matching v*, i.e. v1.0, v20.15.10 + +name: Create Release + +jobs: + build: + name: Create Release + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + body: | + See the [CHANGELOG](https://github.com/lvgl/lvgl/blob/master/docs/CHANGELOG.md) + draft: false + prerelease: false diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/.gitignore b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.gitignore similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/.gitignore rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.gitignore diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/.pre-commit-config.yaml b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.pre-commit-config.yaml similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/.pre-commit-config.yaml rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/.pre-commit-config.yaml diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/CMakeLists.txt b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/CMakeLists.txt similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/CMakeLists.txt rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/CMakeLists.txt diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/Kconfig b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/Kconfig similarity index 97% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/Kconfig rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/Kconfig index 8940464..ccbbc7b 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/Kconfig +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/Kconfig @@ -1,4 +1,4 @@ -# Kconfig file for LVGL v8.0 +# Kconfig file for LVGL v8.4 menu "LVGL configuration" @@ -228,6 +228,16 @@ menu "LVGL configuration" Must be defined to include path of CMSIS header of target processor e.g. "stm32f769xx.h" or "stm32f429xx.h" + config LV_USE_GPU_RA6M3_G2D + bool "Enable RA6M3 G2D GPU." + config LV_GPU_RA6M3_G2D_INCLUDE + string "include path of target processor" + depends on LV_USE_GPU_RA6M3_G2D + default "hal_data.h" + help + Must be defined to include path of target processor + e.g. "hal_data.h" + config LV_USE_GPU_SWM341_DMA2D bool "Enable SWM341 DMA2D GPU." config LV_GPU_SWM341_DMA2D_INCLUDE @@ -911,7 +921,8 @@ menu "LVGL configuration" string "Set the working directory" depends on LV_USE_FS_STDIO config LV_FS_STDIO_CACHE_SIZE - string ">0 to cache this number of bytes in lv_fs_read()" + int ">0 to cache this number of bytes in lv_fs_read()" + default 0 depends on LV_USE_FS_STDIO config LV_USE_FS_POSIX @@ -953,6 +964,17 @@ menu "LVGL configuration" default 0 depends on LV_USE_FS_FATFS + config LV_USE_FS_LITTLEFS + bool "File system on top of LittleFS" + config LV_FS_LITTLEFS_LETTER + int "Set an upper cased letter on which the drive will accessible (e.g. 'A' i.e. 65)" + default 0 + depends on LV_USE_FS_LITTLEFS + config LV_FS_LITTLEFS_CACHE_SIZE + int ">0 to cache this number of bytes in lv_fs_read()" + default 0 + depends on LV_USE_FS_LITTLEFS + config LV_USE_PNG bool "PNG decoder library" @@ -989,6 +1011,13 @@ menu "LVGL configuration" endmenu endif + config LV_USE_TINY_TTF + bool "Tiny TTF library" + config LV_TINY_TTF_FILE_SUPPORT + bool "Load TTF data from files" + depends on LV_USE_TINY_TTF + default n + config LV_USE_RLOTTIE bool "Lottie library" diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/LICENCE.txt b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/LICENCE.txt similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/LICENCE.txt rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/LICENCE.txt diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/Makefile b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/Makefile similarity index 67% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/Makefile rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/Makefile index 49835d8..b1a4592 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/Makefile +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/Makefile @@ -2,8 +2,8 @@ TOP_DIR = ../.. sinclude $(TOP_DIR)/tools/w800/conf.mk ifndef PDIR -GEN_LIBS = liblvglv8_3$(LIB_EXT) -COMPONENTS_liblvglv8_3 = src/liblvglsrc$(LIB_EXT) \ +GEN_LIBS = liblvglv8_4$(LIB_EXT) +COMPONENTS_liblvglv8_4 = src/liblvglsrc$(LIB_EXT) \ demos/liblvgldemos$(LIB_EXT) endif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/README.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/README.md similarity index 99% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/README.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/README.md index aea07a8..256b964 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/README.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/README.md @@ -16,10 +16,8 @@ LVGL provides everything you need to create an embedded GUI with easy-to-use gra Interactive examples - **English** | [中文](./README_zh.md) | [Português do Brasil](./README_pt_BR.md) - --- #### Table of content diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/README_pt_BR.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/README_pt_BR.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/README_pt_BR.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/README_pt_BR.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/README_zh.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/README_zh.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/README_zh.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/README_zh.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/SConscript b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/SConscript similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/SConscript rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/SConscript diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/component.mk b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/component.mk similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/component.mk rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/component.mk diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/Makefile b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/Makefile similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/Makefile rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/Makefile diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/README.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/README.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/README.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/README.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/Makefile b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/Makefile similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/Makefile rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/Makefile diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/README.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/README.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/README.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/README.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/Makefile b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/Makefile similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/Makefile rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/Makefile diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_alpha16.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_alpha16.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_alpha16.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_alpha16.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_argb.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_argb.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_argb.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_argb.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_chroma_keyed.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_chroma_keyed.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_chroma_keyed.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_chroma_keyed.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_indexed16.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_indexed16.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_indexed16.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_indexed16.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_rgb.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_rgb.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_rgb.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_rgb.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_rgb565a8.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_rgb565a8.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_benchmark_cogwheel_rgb565a8.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_benchmark_cogwheel_rgb565a8.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_cogwheel_argb.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_cogwheel_argb.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_cogwheel_argb.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_cogwheel_argb.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_cogwheel_chroma_keyed.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_cogwheel_chroma_keyed.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_cogwheel_chroma_keyed.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_cogwheel_chroma_keyed.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_cogwheel_indexed16.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_cogwheel_indexed16.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_cogwheel_indexed16.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_cogwheel_indexed16.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_cogwheel_rgb.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_cogwheel_rgb.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/img_cogwheel_rgb.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/img_cogwheel_rgb.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/lv_font_bechmark_montserrat_12_compr_az.c.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/lv_font_bechmark_montserrat_12_compr_az.c.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/lv_font_bechmark_montserrat_12_compr_az.c.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/lv_font_bechmark_montserrat_12_compr_az.c.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/lv_font_bechmark_montserrat_16_compr_az.c.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/lv_font_bechmark_montserrat_16_compr_az.c.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/lv_font_bechmark_montserrat_16_compr_az.c.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/lv_font_bechmark_montserrat_16_compr_az.c.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/lv_font_bechmark_montserrat_28_compr_az.c.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/lv_font_bechmark_montserrat_28_compr_az.c.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/assets/lv_font_bechmark_montserrat_28_compr_az.c.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/assets/lv_font_bechmark_montserrat_28_compr_az.c.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/lv_demo_benchmark.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/lv_demo_benchmark.c similarity index 97% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/lv_demo_benchmark.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/lv_demo_benchmark.c index cb7d863..76047f3 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/lv_demo_benchmark.c +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/lv_demo_benchmark.c @@ -89,7 +89,7 @@ LV_FONT_DECLARE(lv_font_benchmark_montserrat_16_compr_az); LV_FONT_DECLARE(lv_font_benchmark_montserrat_28_compr_az); static void monitor_cb(lv_disp_drv_t * drv, uint32_t time, uint32_t px); -static void scene_next_task_cb(lv_timer_t * timer); +static void next_scene_timer_cb(lv_timer_t * timer); static void rect_create(lv_style_t * style); static void img_create(lv_style_t * style, const void * src, bool rotate, bool zoom, bool aa); static void txt_create(lv_style_t * style); @@ -226,7 +226,6 @@ static void shadow_small_ofs_cb(void) rect_create(&style_common); } - static void shadow_large_cb(void) { lv_style_reset(&style_common); @@ -250,7 +249,6 @@ static void shadow_large_ofs_cb(void) rect_create(&style_common); } - static void img_rgb_cb(void) { lv_style_reset(&style_common); @@ -293,7 +291,6 @@ static void img_alpha_cb(void) img_create(&style_common, &img_benchmark_cogwheel_alpha16, false, false, false); } - static void img_rgb_recolor_cb(void) { lv_style_reset(&style_common); @@ -382,7 +379,6 @@ static void img_rgb_zoom_aa_cb(void) lv_style_set_img_opa(&style_common, opa_mode ? LV_OPA_50 : LV_OPA_COVER); img_create(&style_common, &img_benchmark_cogwheel_rgb, false, true, true); - } static void img_argb_zoom_cb(void) @@ -396,7 +392,6 @@ static void img_argb_zoom_cb(void) #endif } - static void img_argb_zoom_aa_cb(void) { lv_style_reset(&style_common); @@ -462,7 +457,6 @@ static void txt_large_compr_cb(void) } - static void line_cb(void) { lv_style_reset(&style_common); @@ -490,7 +484,6 @@ static void arc_thick_cb(void) } - static void sub_rectangle_cb(void) { lv_style_reset(&style_common); @@ -563,8 +556,6 @@ static void sub_text_cb(void) txt_create(&style_common); } - - /********************** * STATIC VARIABLES **********************/ @@ -636,7 +627,7 @@ static lv_obj_t * scene_bg; static lv_obj_t * title; static lv_obj_t * subtitle; static uint32_t rnd_act; - +static lv_timer_t * next_scene_timer; static const uint32_t rnd_map[] = { 0xbd13204f, 0x67d8167f, 0x20211c99, 0xb0a7cc05, @@ -702,15 +693,26 @@ static void benchmark_init(void) lv_obj_update_layout(scr); } - void lv_demo_benchmark(void) { benchmark_init(); /*Manually start scenes*/ - scene_next_task_cb(NULL); + next_scene_timer_cb(NULL); } +void lv_demo_benchmark_close(void) +{ + if(next_scene_timer) lv_timer_del(next_scene_timer); + next_scene_timer = NULL; + + lv_anim_del(NULL, NULL); + + lv_style_reset(&style_common); + + lv_obj_clean(lv_scr_act()); + +} void lv_demo_benchmark_run_scene(int_fast16_t scene_no) { @@ -725,8 +727,8 @@ void lv_demo_benchmark_run_scene(int_fast16_t scene_no) scene_act = scene_no >> 1; if(scenes[scene_act].create_cb) { - lv_label_set_text_fmt(title, "%"LV_PRId32"/"LV_PRId32": %s%s", scene_act * 2 + (opa_mode ? 1 : 0), - (int)(dimof(scenes) * 2) - 2, + lv_label_set_text_fmt(title, "%"LV_PRId32"/%"LV_PRId32": %s%s", scene_act * 2 + (opa_mode ? 1 : 0), + (int32_t)(dimof(scenes) * 2) - 2, scenes[scene_act].name, opa_mode ? " + opa" : ""); lv_label_set_text(subtitle, ""); @@ -738,7 +740,6 @@ void lv_demo_benchmark_run_scene(int_fast16_t scene_no) } } - void lv_demo_benchmark_set_finished_cb(finished_cb_t * finished_cb) { benchmark_finished_cb = finished_cb; @@ -787,7 +788,6 @@ static void generate_report(void) weight_opa_sum += w; } - fps_sum = fps_normal_sum + fps_opa_sum; weight_sum = weight_normal_sum + weight_opa_sum; @@ -804,7 +804,6 @@ static void generate_report(void) lv_obj_clean(lv_scr_act()); scene_bg = NULL; - lv_obj_set_flex_flow(lv_scr_act(), LV_FLEX_FLOW_COLUMN); title = lv_label_create(lv_scr_act()); @@ -840,7 +839,6 @@ static void generate_report(void) // lv_obj_add_style(table, LV_TABLE_PART_CELL3, &style_cell_very_slow); // lv_obj_add_style(table, LV_TABLE_PART_CELL4, &style_cell_title); - uint16_t row = 0; lv_table_add_cell_ctrl(table, row, 0, LV_TABLE_CELL_CTRL_MERGE_RIGHT); lv_table_set_cell_value(table, row, 0, "Slow but common cases"); @@ -927,7 +925,6 @@ static void generate_report(void) lv_snprintf(buf, sizeof(buf), "%"LV_PRIu32, scenes[i].fps_opa); lv_table_set_cell_value(table, row, 1, buf); - if(scenes[i].fps_opa < 10) { // lv_table_set_cell_type(table, row, 0, 3); // lv_table_set_cell_type(table, row, 1, 3); @@ -973,11 +970,13 @@ static void report_cb(lv_timer_t * timer) } } -static void scene_next_task_cb(lv_timer_t * timer) +static void next_scene_timer_cb(lv_timer_t * timer) { LV_UNUSED(timer); lv_obj_clean(scene_bg); + next_scene_timer = NULL; + if(opa_mode) { if(scene_act >= 0) { if(scenes[scene_act].time_sum_opa == 0) scenes[scene_act].time_sum_opa = 1; @@ -996,8 +995,8 @@ static void scene_next_task_cb(lv_timer_t * timer) } if(scenes[scene_act].create_cb) { - lv_label_set_text_fmt(title, "%"LV_PRId32"/"LV_PRId32": %s%s", scene_act * 2 + (opa_mode ? 1 : 0), - (int)(dimof(scenes) * 2) - 2, scenes[scene_act].name, opa_mode ? " + opa" : ""); + lv_label_set_text_fmt(title, "%"LV_PRId32"/%"LV_PRId32": %s%s", scene_act * 2 + (opa_mode ? 1 : 0), + (int32_t)(dimof(scenes) * 2) - 2, scenes[scene_act].name, opa_mode ? " + opa" : ""); if(opa_mode) { lv_label_set_text_fmt(subtitle, "Result of \"%s\": %"LV_PRId32" FPS", scenes[scene_act].name, scenes[scene_act].fps_normal); @@ -1014,8 +1013,8 @@ static void scene_next_task_cb(lv_timer_t * timer) rnd_reset(); scenes[scene_act].create_cb(); - lv_timer_t * t = lv_timer_create(scene_next_task_cb, SCENE_TIME, NULL); - lv_timer_set_repeat_count(t, 1); + next_scene_timer = lv_timer_create(next_scene_timer_cb, SCENE_TIME, NULL); + lv_timer_set_repeat_count(next_scene_timer, 1); } /*Ready*/ @@ -1037,7 +1036,6 @@ static void scene_next_task_cb(lv_timer_t * timer) } } - static void rect_create(lv_style_t * style) { uint32_t i; @@ -1055,7 +1053,6 @@ static void rect_create(lv_style_t * style) } } - static void img_create(lv_style_t * style, const void * src, bool rotate, bool zoom, bool aa) { uint32_t i; @@ -1074,7 +1071,6 @@ static void img_create(lv_style_t * style, const void * src, bool rotate, bool z } } - static void txt_create(lv_style_t * style) { uint32_t i; @@ -1090,7 +1086,6 @@ static void txt_create(lv_style_t * style) } } - static void line_create(lv_style_t * style) { static lv_point_t points[OBJ_NUM][LINE_POINT_NUM]; @@ -1105,7 +1100,6 @@ static void line_create(lv_style_t * style) points[i][j].y = rnd_next(LINE_POINT_DIFF_MIN, LINE_POINT_DIFF_MAX); } - lv_obj_t * obj = lv_line_create(scene_bg); lv_obj_remove_style_all(obj); lv_obj_add_style(obj, style, 0); @@ -1118,7 +1112,6 @@ static void line_create(lv_style_t * style) } } - static void arc_anim_end_angle_cb(void * var, int32_t v) { lv_arc_set_end_angle(var, v); @@ -1152,7 +1145,6 @@ static void arc_create(lv_style_t * style) } } - static void fall_anim_y_cb(void * var, int32_t v) { lv_obj_set_y(var, v); diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/lv_demo_benchmark.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/lv_demo_benchmark.h similarity index 96% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/lv_demo_benchmark.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/lv_demo_benchmark.h index 6a0a4f6..693861e 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/lv_demo_benchmark.h +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/lv_demo_benchmark.h @@ -24,12 +24,13 @@ extern "C" { **********************/ typedef void finished_cb_t(void); - /********************** * GLOBAL PROTOTYPES **********************/ void lv_demo_benchmark(void); +void lv_demo_benchmark_close(void); + void lv_demo_benchmark_run_scene(int_fast16_t scene_no); void lv_demo_benchmark_set_finished_cb(finished_cb_t * finished_cb); diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/screenshot1.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/screenshot1.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/screenshot1.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/screenshot1.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/screenshot2.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/screenshot2.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/benchmark/screenshot2.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/benchmark/screenshot2.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/README.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/README.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/README.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/README.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/lv_demo_keypad_encoder.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/lv_demo_keypad_encoder.c similarity index 96% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/lv_demo_keypad_encoder.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/lv_demo_keypad_encoder.c index fdb9b94..0f4006e 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/lv_demo_keypad_encoder.c +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/lv_demo_keypad_encoder.c @@ -46,8 +46,11 @@ static lv_obj_t * t2; void lv_demo_keypad_encoder(void) { - g = lv_group_create(); - lv_group_set_default(g); + g = lv_group_get_default(); + if(g == NULL) { + g = lv_group_create(); + lv_group_set_default(g); + } lv_indev_t * cur_drv = NULL; for(;;) { @@ -76,6 +79,12 @@ void lv_demo_keypad_encoder(void) msgbox_create(); } +void lv_demo_keypad_encoder_close(void) +{ + lv_obj_clean(lv_scr_act()); + lv_obj_clean(lv_layer_top()); +} + /********************** * STATIC FUNCTIONS **********************/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/lv_demo_keypad_encoder.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/lv_demo_keypad_encoder.h similarity index 93% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/lv_demo_keypad_encoder.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/lv_demo_keypad_encoder.h index c509d66..1916670 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/lv_demo_keypad_encoder.h +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/lv_demo_keypad_encoder.h @@ -27,6 +27,7 @@ extern "C" { * GLOBAL PROTOTYPES **********************/ void lv_demo_keypad_encoder(void); +void lv_demo_keypad_encoder_close(void); /********************** * MACROS diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/screenshot1.gif b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/screenshot1.gif similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/screenshot1.gif rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/screenshot1.gif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/screenshot1.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/screenshot1.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/keypad_encoder/screenshot1.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/keypad_encoder/screenshot1.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/lv_demos.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/lv_demos.h similarity index 99% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/lv_demos.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/lv_demos.h index 46053e1..1a45ddc 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/lv_demos.h +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/lv_demos.h @@ -47,7 +47,6 @@ extern "C" { * GLOBAL PROTOTYPES **********************/ - /********************** * MACROS **********************/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/lv_demos.mk b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/lv_demos.mk similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/lv_demos.mk rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/lv_demos.mk diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/README.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/README.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/README.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/README.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_list_pause.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_list_pause.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc4dc7b47742d0493488d024bffc2d4bbe30b3b GIT binary patch literal 4884 zcmcIoc|4Ts-+sn2#uiaoiZiCop)vc6nM@c%B3nkZsAgr1F>?%|5Q(gW*_xC&R`RAR_=b7hzp1Ho)_qxB|>%Q;LXX2b4H>)b? zDggkXy2X~h4ZKsp%M1nuze)Z11n{OPw%s8C0Ady{YZ5FJgJ>|=JXp+R3%CJr7T1gKM@39l-bTRr94f+{;DB}zTXDVlwg>#Vt_K_$ z>;nQenS(Ij1UCz&fCNHr023Z8^!1Zaf~klvycBS}_!@*6djzwe0D6}aGgF~V*6f}`SAi=+V5MVZc4v(^pZu2b{ z_(Vl`2Ly;IC{$2TkVz2EMC9*HzwH!wg{lGq8xm=Y{+esDlG#i=QNb>Br`7 zp;Hl{C=))PL&0#E7&My2MY8aq1DG5<7io$$Wg>|@E*ri0j>F}A(FMlSMeM-EN-V~I zwJk@)204CIlR_Y~NkkTzgk+(4EF^&lvN1UX7Lto6aCu}j7LOxizOy;`^TCzF^!+RA zqACu^$icCR94rZsWZ{?uq$v?kLXvT8G?Ggs;IVijo`b;?5%7QIwG#P?{2fFbu(~(| zoWrK@ME*i1=pVk2>BU8f{k#_446=i>u;oj@)`fgqAFkYAzKwkO@GqvLFxiV;+^WuUVCknAR8Pwty^R+3c|Jkp9_4~VLEI~Ifc2n}L3^bfZ8Cj&2K0$AYR8isfIkHcSbHQAwIA(C$7Xnll}4a9I84 zW78VOF8YW;LVUK|AmL=Rh761j>+4rGcw%#3TT_fKpW_OzbyjXH*_d*xz0oRY zj?u|zX+GeBh)xb@uXgp6&dmii=ey?m#GQK`V%UG18u6L&*1Yv|>2w8T^xUCWPd&$j zU$iwSpz>c*D+}-qtL64NI=%VxWt8&tS>4m52Fc7wtK87d3(BUg(DRWv^G`Gj6wDi9 z>i?{Aw237%kbPTA=H00X3eaUiuMHz*mE|4o)d9vZvr54|&G!NRlHI_G{NVgIfL%WCz^(D<@2EC+S&)}3X)*FP?8N@z2II}|-HTvvHBRV7U$H#@Ol#m6drt%!+N^G$iO zmmX#FEK52SvSjw1H24^!;&EtUWy`s(f}~cJ?pM5@3RhNAF=_j=HWuq#ck5tyszr28 z=S{Y6`$d>Tzk|8h>k2c1IPG?E%aL_BZ+*U2+alS{`hN;tZ}v;BDmU!5a0m>HY`@BN98N0z6vVTi-M2v;2DOXAM~uGrnELfV+;&3Pf#92a zL!b2yq>wU>owtQRft~e);n-FlNnwA>gwN6HQx#h!berk}9n%NhL(*H8v>lf{K2Zb- zk-6a?TNHq~*soa^>ypmQxSgji2c4SDd9&0}h1f1BXl`i91=91ctGs|r8wocWo4tDj zU(nEb3U?qnta$&axa@kt&e|4OoSlX&4cOIb`wWXHeybY^k6(HZle`U%2;P=GkTNx* z{qp{M%o6=1_3PX2XnNqPW5fMJD^}^~Bpga==GPCF&QWz1s2HCpe6?U`$AZw1+A;gu z^Yp#goH;0n!7SB}wYV+n%N?0PADaqUNGQ zy`Ou0kN|;Jy52b7t|F=`HzFb8CZkMtAad>#dro8g5BTO7`H8AMtUFRneJ-!fI~ta4 z3K4F!wN9*&7YLQPg}!_(nN{J&4{FX@g-ae)ywL)9s{Bi=g5MR1>`E=K zfi%=Z1^4&8e#zb``c2KM8oia>cPbipWSI3@7{@PdFdB(=tY9-O%>UCRv3w7TR$89Q%9mKGEU7 z>fJx4s!=&HEq+H+l|Eg!lbM0(5X7;f>6NhDdcl*BFO$Z4QW+=6H_JJm&h7U{QB#-0We!x4Rq8#Toe|t*G;`jO~G>MMJJk^}WnWaS;F6HX2{G8412g*xB56~~2{^XfX-F;Q+ zB9Mzk$Xi~ALu8q$c^}^ls7xHnN<4L;DnZe>UMoT2vkj-E2l&eTm9@Yw+(6TgG zE+bd4qd}U#vv8vSE@wN*H9fG*OI`bjjXLw=I<+no{cuN)@WR@G@yCi~?$?Zg;ER_~ zKD&05)8Mf*Kr!7qGxc6*;jT>2Y!Bw3uA&pLYOQ0O;`08Cur7g=oO#kX0SZdga#<;R#{6lG02t9Yh>+Nwyfg@{@q-^^;qA}dmDv1MWI~%m`;yXKA z#Ef6KiP_6Y31RVO)zq)FT!}Pi!ZKa$n25q*sr{YY_xm)!GkJgYJBIZ*tEDH@BAd z#I`90fJLuRNwUhl32wtw{pn@(spzdLyE9nH4`l2xj5hrO!hBupiTJTgaP_sL8zmS= z9r-mmU2kLhu_--+r|Jh|&DD(_Eo8V&U5;2EEm?A=Zb-9&q6Ob&7KV~fBV=Ljb?H1( zislb!J+}yl`0c5bDc$(u7O;74_k3*w#>|Okx3J2H?$yc59M9W5emVIBttLe#x99lp zW~XC+fo76>p1sqYfsM}H+2LiS8knrD9{Yt-r3nIRm!@-Nq>TC@rk&mb`_mC^*viCCHJd4_qSFm`1WDAL5g0s! zOqT?f`}Ura3ak09n|J-JAu^7x8Q@3b8eVRQT(|sCY$&VgOj`?NKY8`atcv?dMv$Mp zlmFCZy=d)I?=E+%;nzLfZ>JVI_7%w%=PgZAx4A6(J(tVO z!G{tqw9o%Oc?J;a9ox2X`3ZlfpslQW-ABEHYtc{5)-CU`@jBMYV5$-uetl?@z#w(2 z?Fcal&tCP~vNo==_kFqg<|UhBJRg~tz~j2cw|UL>i*!?U+`EWl*r94~ug|{Q6WTi) z^HiTee_f#Me7IhUs@7gFFKZc9JQ)p!#>5FPM>#OWeoN`_oJ@G#-a~E;=Ym$dau+nk zknyU*%u&3wGXtsZd5ZncGO}uP)UB#lYx>Qpo9~3BP9IJv8XsQw^0JpqyC6|-A-Sfh zd6`!^jcz(`7qPlUAvP@o+jt^Tmez;vB0r~0cP~q8qpb{FTcrFr!+Uba=*OmeQYGPU zZg>5l+tt_W%-@STg6s}^7T~2=eOB`*t?Kj6*w@EdY+Ss7&im-PaDV`~S@{6GR!5#z zBoBCobe*&d935YXS0tXg(a*a5#$`j1^ci)A`l2gIe|zB>kNszAUJS~dSG&8^`5Jaz zi(v+JY2WG9OLw|8m*D{mv=gk};NsL3$OE}QW%#_YQl%EfcAivDFu@ypJ{CD*J!=6U z(Fg1m$5q!?_ZxOmnm*TW&^~&pZqFJciU7btM#HpMaum`nL^Fmt)pvXkm#5Io7{j^C zUiUo3KG(9p=~5tBkwd95_~-z*(q7+|d#T6Da6I>i#hhEOV1>hRffKUgk4HL}`8PIH zU#lG*4@`wW9%j|Xt{}ZV4w!3g*{!Fj>mno2)`p68Ae%6(+SH|qiWkMFQa4-6n9#$` z8BwLzZuUUaX0BIH9QOe%4k|lFm0rL^DUWCF+LL%iYsN4l?7r7n(}oDiJ8VsAmV;Bb zDrfUK`#@nmKF1`B=geHvv59mkGHrakY^dzkM8mUwl#&LvXucyHmA|Ycl1IdjZp|Xw z=)tMih0mZqQPNjk{YnE8{SNtTEvdB3M@G6Yfo4s$Rdx1id&D{W_Smu1t{Z7A)T6Cu z9%Xu_qMXBC)ItT<+!LS$Zl#8kK7u1yizmYguY|OXcbs7wsT=Q{h;$HnLT-n=X}s<* zZjdlkr%M^G*J%oKtX(oUB=;28DpNER-y`24|0F|Ah=~g9uI#cr*r3EMbUi;qna$f+ z;&{zl#*Oufye(2I+Pq`*|`rCewp{msG=AzL@1!N1Y69_T2 z*!!&grbuCtK$bYXSDs{1S@d%B9dcpfZL<7@e9~T@yz8HkDI=2?H>NX(51L#K<$X2- kOcmHA;rSmo-1xAvT%l&7KWMjJDv>1DHoMC%4!Kl9oi%Q|bI#tK{yFpety$k%^Ssade9!xS-}jrnzTU3d znueMP1VY>0jqV5EY4Bw?YbN|n=`0|@Hw}?numpjat*^XP5Sd38AP_STaRY*+K@2Y% zDCAoMEFlxJmh(k08V+757Xe@dBt43D8(_jKVBn6OiK2IQ_$?Z|&yfk>Me2qaN$05=Pdz7OxAu@>Ji*y!> zAtcF~j0SN;8zhBljUyAW1hN$pkHt|jSQ`wEfX3ozSTc=7K~8>9a5gcEP4lC#p3DV5 z*`qj8sfdQb$Ye5W8Npg84#(iARG0&g!Q;^|0xgLVNC7!oATgO@phFT+%oRzwLIG0A z2rz|FQhOAvbYcp8(KM|o^kU(lOl}yADN`(@R@NcwD|NL(XS>SX+QIwcBZVwB@Ks<;Kb4y?> zZd{*;<}8K)sZbms6!NAD<$+uQODL0AC>2cxKy*L~*`x4SJQj_^p|Ruu z9F|5R(r}a&%JN|+pbWSVSb!AxHn5PzWygFAl)<363nWrN07C9`dlW3nn#*O;C`=n1 zh{NI0L?WArW@CvsG?k45(M%=*4?-j=mO=!_b;0p;AsD4}LK#2Nwk#nCb4|E zq+coi1WY1iOJ#r2kQ$6DdceApZl1Uq!fbeNU9HyFyLZQ1j;#{1F6fy~ibD=ol@XpRux--?u z#f9udz)j@jasNA#3bDvU7Q9+*Yyb)xViE~xfIwoSnFK1l1+#64csBlv=yB~65-?xa zI*$BeW1X5fyjv@W)5iq-Fn!QK0@x%me2lpMp&pDtsN1{K9RoPqdNMa15^l0Z>Q?3-ctaCf3y#lX;a z!@l%cOLg+ktW(je$W7t&BbMq>m$_&0J41NAJ)vxQQ{|t96yMy34zwvLm!hwSTa6@1po99v#+s zyU*gp{9jcTA`xeImCXO-RyiEtYn&7-rp^t zeM($1V_8YB|NKBNh3Q_Ixv@b}kQy2DiJW!HVZ|TM3b$M#st#)n^E5s0M2#hH^Joia zpM1~|dN>~#^RqUHcd0C>Vl3N6=wU4zs)O_miflBKXB@e4CGO5+<2NhHMykn!oz2Hu z2Vyxn7CwP;SxI66wIgk|sv>E_eU;Pa_=+=02j#by&U2r4dTxHGh%-<%V{DjMmEbM) zGD+5Y=ljaN>u~tBp29mzW8x|?oO6vKe_$_p-WGSgn#Va*EdK4Jt?SI?gSmT(9kYHn ztKU@|A$jr&nX%+JF(=KZN=!yLm+r`y-{vE}w+t~gTGULdccno&mv0>TXHuhKh(?I( z$H+@BlGv<|8?D4OXJGk9au$x_Djxf!Xbm0^^RnG?E(b?zn56jKd~q_&v}>!nxfkXq zUMb`20&EN2*>C}1+6X$%=_MKXHQ?4Z#v6ux$fjeQLwut2cC1n;*4@Mp{ z%ItnqbbO;&ysNTy(QoA)qqwcMpWf$XMY42uwDU9xHVVwzlf{@CAr=@`h4ySw(A`|bT81z*&%BNrS*~a4Hv1gD}T#|=F1u;Y1puvcS^k@ z`_KA!8!CQI-73ax8LL>_VyIe)iKRP$Sv1D=k4y{x{^V^6#Sw8&nb-O`e! z_%zIDmk+7M&FyA?zM+1hr8`$m$MZZo>HKMO)$>+0UxZ%Ic70ugqE}?&WT#iI$cCEo z-2SnIj?XX5!iH-i=WJ%qwUxEWE_>nj%(F66^Clv(j)c>U9k~w8qrZEn>*?Opo0p!q zZfLN9x3l)2Td2-zu$N@ShcFyYhdhErR~$WK1Z?r(>GOqXWYrj#CnnSt;YlI zkW{gNOMR|hcSPU3zU^6iPs@jNi!tj{mSHEmCNc)6?H(TeAPc`?}p%22}4ibrdKdQrgf}V<%Qc`_6M{sq^3>-$NP4 ze~QS+5Du|I>9iHLD@z~7E@^#Odt9|^v%GqDg3-%D)CoFv=9zdz)ce%8g|YK#=H{C` zo_ls0cs8`fbQQiVOnJ7q7}Q@4v^*_;xm`B!?&<9AMOzcvQoEhh2K6>KmwfNB1DV{n zeO89mFS?44;eN+X#u*>`?jy?~uDH|M?%+i<&$F(t@(p?J&%^bnLu#8B{CKh47Zv0I zBm>u)6RwV^dKHFu8qB|XFU+f8vtdHbl}lBn$Bz{a2YL84N7yP$8!)7P@jem{=ltZ@3(5$LPtJtF7tjQ%X)i$;ilr@qDvNLHqir>WhFb8 z=MSqKzM2~Bww2M|GvePWWm02rY94LK@*6%PzrDDjl}asrTOg8(*^VO{qWMPEB|5h4 zRkzKz-x^t)r)F0FaaMf(+wD3%g&S&qzfNdqyWLhBtjD(OIgc_QLUbA!pU7C_=)-Rs zT(hKFV`X@VW{qD^edtEh{VBVa4ZB6$bOW7Ywr%>D@Ad9@88aw#PW+YE=0kznjdtvX zf;Be4U9AVbRT?W3>t!aV_8d^RT#&K4Mlq|qOH3WXKOP)3aK8WIpBWC?zQfh4LV`=v zIT5}^Wrts!l=ywP?(T0{O0M|)=zY$q00-5hxQ84U)%JeA(ipBOgoJx3ZyR2y1s{AwO M?&3{9=d>~LU(GGX&Hw-a literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_loop.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_loop.png new file mode 100644 index 0000000000000000000000000000000000000000..7e011d517fa1755af8d9108fcbe1b4f8d4420a3f GIT binary patch literal 2385 zcmcImc}x^n93B@>42IMy-W><4*g8AM-WylhOQB^ESX78dot{7QZf57ro9}(U?|r}D zdv7Z<(kI5n4vK{!C@wX{l?Cnt)T?KA@Y@=;Jp{L2p_E)1f_nE=uP)Ha)d10bDW9FA z4Pn%>tri*9O76utV4jx-*1q4A>q2R(`K#;A4Hl&T$3fgKnhQMtQWws5ms{!F0PX_E1 zB^EYljVMj%&9KR$C5(DpXB-2QIAOtXGe+o8oUr0XtHA_EJ_v{=F`PBaH6aoUJlT*u zMG09kEF2DN!#b@f`7y#`0URVok|;o+a*?1=g{UAWMj2eJOiO%7;Y9&f87ZHbuh_E$ky8uLq=zSrvoLv-Ru`E^=^Cg;f z7qEho7!4N66BSX;6aPh9$Lqf+Way57p?oROW)DMSY=8{{ZW&;SHhm$hQ(`Gal(I!J z5KUA@G$Kp_9GoEcC~nLqaI2oMl7=_c^x^GL52yo% zQmD>>MTX~!Is^51tf_*mPy)@Sx@-s#rR90XN-+k~Lg+Y@)EhX|#ON)k*{q{c&`FX$ z&csr*u1yyh?-J>J)d_Wcd)YD~4LCa7v=TUHG?*9`Wf|Is8c02XssT_PMUtEj$2o)E z7iF6y@nGdpf#+FORSaPC;S~6?Bx)orCe%Rd8PvxZ8PsGTID#<{1kD){_*q=17!W0o z$N+bNT86fAq7*Jw;{Be zWR^i9-TVvO>zvMZ+Hf8VNMDltc9<-3N|=&ZyB|3HpT&j!n|PTjc)9e>CH{Yu9eg|3AaOUGJ?u+ zn;Zn`bXr_ai^J_UI&?&P%mDw-krtLQ>KU+F&1TAkvOc{IrF3AK_;ePq1#@OS$&t^E zZqwc_0eiXDHso^~YjomZw^o}S#{_ujIA~Y_m?VK?L>{~0D+tnnWo*w*soYsTBgIP% zII`fAYv&(x2YMkg${XWD%;4sFfaKEZuReYEAm>fx7z(@{irU^R)5!-L-ccwjpJ+hErY4 zt#@jFPl#EbY^aM%NbabtE%KoA2#`W+ePU?{X)!!U?ICkz+`__rQGuV+C%lfS7{c8P#W6A`q zHKzK<16kfZ70J!wHEm1-S?c5lZkjzME4yKcJM--IIr7*_N~D#UZL(0 zUhl~ZyDr5wJ>0eE>2#=KLs|8ilZQ_^nl>jSeb6iW*4ebA!X++W{Ny#sJ@;?emvEtR z@Ie8)da!wv))=l6_Ij)LX`bAA5YFwIJpajw1%VGkt5eKW!H@G(Y`3Fa7$_x|Rzc6=jsg*YY>J?M|zeDw0<<#I&q!e&?y(^s6we>+X`$ z@2Y0DCY&3Rbv^k>Kl29DfQpN7hO_uRu9B#?|MvPSDDQfcw)O6quP;OATXv2F&qrnr z4D}!IjpL7DpE?J}9o$|Ln0ReObNA`pzJR86dH0-2)8Ke~X@?{C#s%vqLUFI!Z VB|iRkNuBzqC)J(q+Ul6K@K0hVMlS#W literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_next.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_next.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8871ee867d87b9e9acb7363d13601069f09d66 GIT binary patch literal 3684 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 O{{tCx51Ps`AogGA9OLi+ literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_pause.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_pause.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6862b0eac64c6d62ebd057ff0665c6953d02c5 GIT binary patch literal 4779 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_play.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_play.png new file mode 100644 index 0000000000000000000000000000000000000000..d2ae553648d925dbf14b9ffe3aab81f15df0bc27 GIT binary patch literal 4833 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_rnd.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/btn_rnd.png new file mode 100644 index 0000000000000000000000000000000000000000..5fbeb9264b9e92e7d8bab29d90d2475936cf7802 GIT binary patch literal 2416 zcmcImc~BEq98POR1?{xsIcjxX@piLE?kxeyAy5rc#Q_~1y4ii3Y)P^)yO;nTQ!Q1g z;&^MlkJgLvtU4Vl7IjctXDU@3tD@FQrBD?V)K+Ty7810F)_q%pzZJNJ!*@L3L2076UGvG?^d=g;Nv;5tx+glbI0alln&(Y(QcIf?pOyAEGcaPBBL|qflwf z6ukacTAviQ2^xln7(Y&`31vzVpu_QEsMp(ymSp=>m?fj<(jH|Dup%TNCZnVjK)Zr zc%CPlb-{R>$mS?cDDf?A%ZV)HXmyi@F@%$1c#JgZ2#hDSJm%D}ENomO&=V}nv#cS) zHYOmzmBVa>vOX}@y%_yrB z8E|O$weTr98z+t`lfjiOrllzO-|O|X-jSY3gx#!EQwrN)VO*_-#7CORV6fQ}NxMaB(CbLj zZm^J))oQX?O%}UdZ_$t~IX%KZBTazQYdN@DjYh_R0jE}jF&drH(D`jrF!+l6kB3?^1K5VvfRr- zkEpt9TQ_yNS1PkLA0QLYBskXCHq46JUNG~kZMNQBV^8Q^1%s;m(^f8@)o$N*P2Gro z_JZn#o3EsGBlR9yc%7c>nCpzU{~R->5kLhWbSEFDF8tp&es~ZJYjTy=B_0@j?`M)RZvy zFx??S%P<6;D*`N^~Zng?oE^1^zC>OX&bDY z@q_K&-ox_^*#Hyr>lb1+)cjnIj4B5u)Pm={Vjp<^m586BT-q{_yJ2TEq zvYUu#3flTp5fN>zw4qfWL`(5O1SvlBp;)va`r;pA(U*euMG*QR-r2vVHHo3%!tC6= zbMAM(bIy0>?2D5VWBu#yU6)Fw`itZFDR#dzxz^ssz8|^x>K=BxBN%@)N~P9sPOiSx z+wW{irEdS$E$@x@mL9UOUr!_A+ce#*2h2K^8Xjo|2=AvcXVZ%7W%w(fea>?($?$vB zl2{6IwCaw}g>?7aL>bTR$0p%Nc5uT@iviSWjJRgK=0#RB!?$oPwobMMo@<%J`!oD# z;*i^0n&fhRNI5mF0Spy`)6F#06j9c;bCL*6K{Ny?0})!HW~n;Y`S8qJNE~Y_zq8|u z{mSswI1Vg9Xfzt>hMe}piU3WMVMu}`0cHWBSuaLS;6;O7gglLK=mxRtdt8EuY=1h= z@Qi6YgnH0}^`cIiSi*!R3Iv!IlaRWGrP9i#^?J`biVHK$ONZ~0z)^WNpu!Z5{OJ(W z!VLA|!LGBQ>c@Um^_St+dwd;3f_n~w>9E#H55WSh(K^G9m@RDa3#?p7QS66h->-EG zHQDvZNz9HL+T(h}Z$u9yj5-Hs9>p}nOQIwK2!W)Qp<*elYTCA>d}7a-*t&^oDS+s@q{upp9JQll zXuCp}bq=a6Mom}|hDcOMB#0?6kfQ=yQ#4>ZwgyCp%92f}YG^jkUGtmsYkpYr3Cpg$ zc)ys-O@_YX*4Tq+YAnkY3pov%ng*ma3yWaO@xwY|LUZe=LWRJqB(i5T7{PHjVl|%a zG}3PRRA*Ilxt2ODgp;Po@HkNeC46VwT_Vk^3#bj-s8R;Hf=b$Ek?+I}6w=WOE6IPV zP*{$9gl1NzZW^{tBq{?*Gew~23IRwV7|2vKWC|UqA*UPq|3bZ!R$N71g|auSz~6i@ ztCRbZb@+D!-b@{q4n{~`tZjt}H;V6?%DbI1%6d4FX4I)^7FBxH-LZ6IQWXM`|%Y!H8N%hro*h@U9tN6W_Hk1pQ7VZLw6`CkqmuD-AktrHuT+_kN^DMf!Cjz zS1-5=?`}H1<^AUu4)sqQIeGQ>p>Jw`ZXMZoV&KfVd+z@6_`%`3HvjOF{z>wOqga^8 JpU&<(@DJNp)TjUe literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/corner_2.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/corner_2.png new file mode 100644 index 0000000000000000000000000000000000000000..60ead9fc45986b88b3e6dadca840684b6eafbdb8 GIT binary patch literal 2271 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 SyHh;?0000CGd8UT=% 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 f@XBBG>(~B2cH5+7 z1d1R9ac|z~JA$br4^>&pyJm5K4zaGy4_wJbWCV1pVN@uAM)U&^SWkH)80V1bC z_Lghq?n#`Wgp9nX_#|UI6ai=m8dnsL@Is}e!9FP{5kX zS{s$7*G~2dwUq)ZB1MJpxHtz0LXyVA@lY_Va&aq?;N`$r|BNAU0-{w~5u2V6E_Y9b z?MhUFO-3^+5Htf@SR-MkamqXvCUJtra0VkN6el>`%$Y23>W6@AQPIzN9OF~Dz?&7R z(6k7LVX;`u7^93zG=LE-3phxOBvF7s)ta!z$I-AlEY0AMR3R!yG+7D5IwS8>sx&JC zlqRPTiezZRYRV>H7#8Ov7-7WqDW!pK_rsx~PzJ4P&T5b)rT2lvs<$R0VIE0Us-lAA ztd_#suynFWg`z2Hh4L@jGJpR?p(tb$MyjI0ggv5wNkJ(DxK)5968a*XJu2~<67?!d zFkPsr>5MQ5aPX)yIV>tMb+oQ16(BiyO|l{+PU0v*pt#vf;2gzp1Up7AAD)D|K_7^` z#y=WZ5oLePqd?tm&J|WQJ}gKshZO;$jIu0pw8_s1EX$yRSuz7jv<2lEpAR+rS)BAU z7Q!Ub30)xGp$JvF6MB5IZAC=@92qw`h9XH`5CoJk(L5^nX&hx}hDKS2qH)?s(xQb- zvrUQ0VCC?^`&o5WB4A`F+~*ev9Hl65lW6$g#Jh6F6_jcOFw=|c}E?+f|$I83TOxVA&uV7ex zutr&PWXtn&&UI}JHLq^jT(gnAbZ)_=Q?G`q`}1X8cV8|()c!_c+|Y|Tmt)NOE|)3n zU$gZ4s&9Aixl`R%yzE+@Jn-o9P2V)lT}&R%x$1nf<(*2V@!k5CAymgfmpJg~u=+V$ zcQll)y72Vw?Mns?-RVQKdY-*}XK19yt-*)(Us-Urb0s__zq#UTWgAqu44@nd`mE=S9W~;h2y!Sd^7S7a0PV@w>yS*L%a44AMpY4!-f-0 zlosA&rb$dUYmi6ZEtzE9BrLQb1 zxX7LyH*?{{5r&Gzr(Sx!zV~I}v3)Q6YV_qneU?W%Pb$T;)Vb?Ed9R~;O<9kkzSH~6 zz6G^sZ)rVHx#`A+)*i>_EIaw^@So}zx(e1!>1=_ar)nKj`nRob9J}X7X=2ke#etE> zI!-j5DBkGldwtoy_AmPxvKMUi5J$}G%|F+BKPxaS>}<4M%Rc>tp^!g+q-|*D(bjp_ zbIs$mzEt`C#j#_9V#fUWIiJ4x_WK>}-hCr(9UfN~ud}{oyM1@$UA6A~koJ#!G37VV P0}$kLPIl}nnYZLmC&du` literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_chat.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_chat.png new file mode 100644 index 0000000000000000000000000000000000000000..e0cad5b940a370392bdc7cf5b4ffb825b9ffbdd3 GIT binary patch literal 2608 zcmcIm4R8}x9*7V4Nd+y)IAdlu z`}Xbc{rDp!gY#nFsKUcabC zG_@iwA@@QQ)yHOx#mZG()ymcDXzO`>jY3)KF&L|ehg0E^B^rfM1aoT`3sU-GqBD-5 zuEzbU8qOrjm$68&7)OjRRid(*&?Xp)(hHCa>c~N|49idePz>(}jK~QhXPsoEkLiYb za2?1{hu4Au@B@rtMXUW9uqrFT%A0|DJYsQF(_vIX#V!YlMVS>v76FF>HpBsng91x2 z0ZV{_7W~KrAO~4wwFfN0lrFs9rAie>B#ialWh<)^=IDv0XoEo(a8`~A2tc9&oQ0(z z5@ZT;yc`6KB_P;ghHYA0!JPxcSF;+bWXvcFk_;dhz%jA~DG6E_N?;*R2~Yrl~#9#YETK|7g|YS0a5IB@<8BuiZuh0kR>sw#v>3Hni7E_ zM8~2bqwKK^>~4{w;T%_{8)*jmQ+gCuh*WioP%@grK}tq7Ael^0E4_sI<{av#O_U={ zdV?zIhG}Y0Prx|J58;&jY8BGg6R*LAHQ& zQJPvhrv)(7likUg7P8q~?tI`bu-JGj0B&0WV4Y6Eq6&W z*xK^g`4gMRJ#4nOpX(a=-SGu)T@Y#;&os6uhp)^Xx^v9ncOwlumkggE_pPu+o80!7 zM}67ecVo=gQ9W^4{>ZMczgaJYCNyjmt6q<7XxkXRf780H?K$;LrN{P->o>OH&Xtd@ zbDX}k`Z9g+^RmVzb>E%p)Ao;lP0Xs;bM&6J+P1G=o%a5@WdFIXOMX~WSa{o-SsS)& zTC{rPxJ%D%UYt8-?Sp?V-1)}xGg)Uxhwr^@*u<=XpLk2V)Ip;<*k^oCbJ;EKIl~V< zTHkym`%?YqHKX3nHaD)TdpvY_$eHGjf!+_vGWwb7vR!=#)JCZNIUk>D8FBK7(9G?h zmd-fP`uZbTe}7?~Z%~_m^xD0<2cO*DFsAgKW&6(Wsynpx_(!g--rG0qu4vriKIol2 zXT9%#cbw)YRlZ!~m>R8JeC&t3TmRTZ-Q84kv`^)Km=k4yAJ&CaiolVXgV>{m=I1*=FZAS6?)D`u{rhgO$M?^9RGi;Gc*4UwO_u zbkn>!%}qzw)z!2QsekXk-s%&1@1E+nc*XFyo{-kJofS?Do3q3+65T5e{vg2LJ#7 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_download.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_download.png new file mode 100644 index 0000000000000000000000000000000000000000..6eeb1dafd2dc1fd32d11dca37235455167fb674b GIT binary patch literal 2346 zcmcImeNYr-96lRR)EEVm()?H#&Cg}O?sMfpxI5y|GsH_Vr)+Qcy<_3-_PkxVgUL}D zHO(@*`ptG_`l(4z0}mr<>W^clVz6`91IR zd-mO1k~#U+=w1VRsZ^?HYq~iLo?lXqsP6FlLcrJtPd$CDlONzh^(sn#PpLjtK)6SQ_5LJ_0^C-gW;V+6?%T1KNoLLU@X^Ycz7%bXUf1+R=~ zjx75a91jEn2?07m^t*7Hs zE3?lA7J0#0_$*MHjj?(qne}qOYBr)!RDvMz3{9~dOX-}Lj?=T4-l=9WR;_bjPCy$d zEe#yB*4d#8&Nqu(zT$*3zcaSH$U%-SHyKK;rCAM7V;m107{RM~jHNjpMo|U>AhkSC zYBgcD*Zcx}a#;7{tcofgGO7u}$&%0}9q({rPKTPnSV~V}ItmVXKspIhha!*annbtg zw~0J-mqrnuW1OPj!@~Rs9@YhLpVy_N8M4Dwqze*kU18|?mrubMnMr|ZR=O#LY)EBYU4|ru!=%%hEh(fWRjt!% zNYbK9B`K51U^W?2Ef#GmO?K9F3;&#H0K8Vs!x-xItPTSXH4WpeabgbI0JmVLUQIcv z$7XkE@05T)U26yOv5hsnaJXA5!>-o^yy$w-053Gj4__nM-%eSlQazVsHK*9qmt6lo zdFkuZUx>WboOILnU_)PXJ$hgiMz_S2PNl3{Ui+FoZD$CZxh zn;w%@pZ1DrcuvKH*vzpbbI+fNyL>)yxv6k1$8K`#8}Hp{a&6w(aQ@DogOfz+@XMBm zc+~p)$7=VE+z@F+Yc%!V0j~Qqw`TlOwXVWEbNlgY)|!WH$EOuz%TK5l=|`=hvAK>p z2lr3BySuUKt@baL32WyM>>Z3QPTDlB=;+*?d1z_Yu5;D##epkPD@SA1<-1J9P4xg> z7=5bkgnfIiwEtfBrAzD5j+BVAgOdog;d))owlPh^hnCNv_h&p`wsX~jbGhEdKj81A zG{%=)Xc!T3sba^b(_BX5iVrm-;)dNTj~pTP+{Mf*%V?j8HM9AvEJMp0?19U<&DW+C zXl_@f=Cvo6AG=;O{P!KV9yka8G~|!Q%GSyr1Dbn(#BDy(-t*lL+G^_`RF|J_?Ge8R z8+x{qbyN*Ky0@gRXigs7Z`^HU&=t`fSaW;iuMyW48VZ*cAcv1vE?Duob@kXb+cz7(ZkThRYU8rH zjH~lB_wK$oG4sd9-G@w(Q<6Xa>`+To^M$~82Cq#T;99u$qU&7WHp}Tgmg@Nv$469( o-8K8{EqCiyKYZ9at3R&lw*0FF85b)J%D)+_WwLoo>f6PC0*~}YJ^%m! literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_heart.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/272_png/icn_heart.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0a7704c02c1a7182e6be4061ee5b25af8075ae GIT binary patch literal 2357 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_list_pause.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_list_pause.png new file mode 100644 index 0000000000000000000000000000000000000000..550723c09baec58e71d21db9899355ffd666c733 GIT binary patch literal 8199 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 D<8n~% literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_list_play.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_list_play.png new file mode 100644 index 0000000000000000000000000000000000000000..736adf65d2933ca819e09cf1d142a7134426d90a GIT binary patch literal 5593 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 Mxd&Hl?s5FT00KpPEdT%j literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_loop.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_loop.png new file mode 100644 index 0000000000000000000000000000000000000000..55fc201a5efc150826ce4b30287d2fb5bd9d79c7 GIT binary patch literal 2896 zcmcImd0Z1`8Xn{j5CKIk#e*>j<#0%5a*rfJ5(LC>8I>wjCNq-|NHQS_ghLcmwhOLQ z#Zp8>Rw@PA1$Mo)D8IT}uXVj`QOltSEmcZarL|t2aMj&yUH{qqev|oT@_f(xywCf7 z-FUd{jjOpc0_CD3d^3@S;rMlWJ~cl;y+)DR-Z3a*?bH%Q4; zO=PZ-T$&rBz;n}aA;DNE21Bw@nm|XIF)&-F)tk_45o4GarN`FSOa?d%F{g_dVb*|P zqC5_iQbrQw1+yTW#o~c{VKB_&@Hm3`Ai_dmCJSc52n2IcE`lOLaP-5VqZtVmnjl*= z8jF4sF;dND1IlDtES6vkJD4)6nXphOWU>$@f|L`HV5hNE2?<7|a?< z4_X;9C6#FwF=(YDDd-I2w0hI1O|)UmY|OxfgIU&;#(;A9>!CW`IND?m&!VG@>itz> zlOo4JG80G>m1)Gu@GMeq_8ALiNTtk_DV6#SZR0=xn?eE~4`|3VYKQG1a3-lGbu_n$ z#=^t;45-vdVrI&ypeXHFq2k6Of(R0ffc`5qdV;c;0<4NgCy+ACOo|xRszEF^1oIUz z3q|-Smlec^F+LoYjnq%Bel*8t-IXu1! z!c}ZKM*#=!}&ZepUWR(i#2NKm4j(tWwojzXht@R&E+Ziv>*;2hWJ)# z0xrgf5GBb)IJk;0x#C6%N}UsL=Mn2A!E zEtruEQ`1iW&*ozOmUt7E^?K=VR`~y;^if;!R7|fX>5Y@guqMN_ZZRW8Vg6^meyR6Z z&xFz4Y^|ng)CLKr9ydfh)=Yf9EIbSjmvHF*gW+(#1V*G%p-d{2gopDaYfD&&>f!`eqAFki2A82QS^I+i%STU&?Y z#{~T_e$bG5+9V@=j7&$4*8+eY5hV*#Bo_U>B7ey;a@OgE?{6r8k0iAfTNE3+S~njy zbo+i19Y%2f9IZR3YH~nc`Y$fISJC=xZmF?XqD$YyYwWHnUAfL3obmalZR^iKt5bb^ zTN>lqYVJJfxaHlKbmYr>)uxS&oey4Q?0)z(f8B1=P*q>Z#n=|@{LtD7g$LWbQiLro zj<)7Dcb21hf-Y1vXv?bGTX6DsUwYO!X20t&IB(apJkK)|4xO)AZIf5 zwtvK}s;i83?VWd5^*Z(2r+9-uI-c>h(Ui8<+Z}WfnB5AJrf#XO$l&>hIXEAU2n{X* z3*{n5OZ`W2*+FaSuN(7Iyw160Tg10L%I-Y5-!<{m%Jj>XKUHr!ZU3Q72)Y8S{bowm zKwwIS!Yvnte_VVqWn=klnxiQHmv6&YXl;;}| zut*l)^L1Zm%KpcAOspy|W6pZ;!u7T`pd&E1sI3Ob&C`FMyv!&6@XG}J~Me7Eu8?uj+6&-Yah>eq#SFA``L$Yc`%_Fwe_$@m{(jh$=1nrEf7B~LojPe%+0^t zQol&LE0y{jIQU*~+Y9HLE18X0v)zdqJ*L$&;u`(VpFZc1mh9bgwZ3AN_{Opt*E)-n zYfaCI?#RHcLe>3{4{SF7U>~t>RrgPKUGLc)s!_tb)RWI=?y9ZWpI>Z>G9z|(nWPwZbTUzg_IP~_pZrsSI4)je~C%=d=gRxG}BW!cfvYnuZk zX^;wNhwn&;@EBQ>BxU{2x#l*| literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_next.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_next.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf5af6035db65c5a1c62fa9cbecf364f3dd52fe GIT binary patch literal 5563 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 Bp>hBK literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_pause.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_pause.png new file mode 100644 index 0000000000000000000000000000000000000000..937a0ee308773f8de411972b1c322057b7d20318 GIT binary patch literal 8357 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_play.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_play.png new file mode 100644 index 0000000000000000000000000000000000000000..d26e1edff899f23011db722d014e83728281cc02 GIT binary patch literal 8476 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_rnd.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/btn_rnd.png new file mode 100644 index 0000000000000000000000000000000000000000..a533225823ffbd4cee6c500e5b151a4143d64b11 GIT binary patch literal 3003 zcmcImYgiLk8jgUGyHo{{Vu?|FTI(b;lj}sH0fOZgpdlgxMJAI81d>ch0tB`QC?FN@ zx77+2@dhf^c3rBlf+)KMrCw1~MDT{lTB;ybQE?~S>h89#e>TrEnKP63yx;r1-*?W* zS79NaIoP_{QYaLM0DrNRynB+@ENd$H?RcthA9=IU`7be0D0Y+0*Eq`8MXnSIb)!la zX^fNv3ot^%Kox`>XP7iP5>26aEima&ED1N#=(^dVjWIX1s$(rH5wW0H{WZ4O9_ zl!VcI2|Z5ZGC%+WK`xDlFd#0Q%jVCe!5|DVL5K;#0K^e+U;&KKMm}^hnqHw4NW}|B zVv$cmdV)m>|rAVSq#chIFkFH33?~%uxn0Zou>^ol!+- zX=X-LPNW!xbW-VX3L4!Qt=2GN6KNRJgzA_O12m^J3Y19R4b^DI&<3MlDj8)&@9z>D zWa&DbDa8#$iXOxLQgN+u=4dco0%0T!3B(_08~gd+6e_T>fVvdDddMCH#>CaQhU7Mo zSZGL}PT;G@Q6r(35rlfQP+_AHX)w%yX&*0EX%$48;S;l>kqNjMHR3|LxoQB&0wA6Y z0tGNn0C7GAApr;uLnUM%C{QE%eqchOQl`HTR3Z@sXbnbGi{SxcA)OS(P^lCG9!t(c zQG^GuaV`kJ5Ss(Y5xyMclOC}k9>7zw zVF1NB2*6QrKsF!Z!g2(n(|(KVOQ;FGgiw&~vgkAgCQuT34NCTpN`uDZOr18~+|49A znT5Z~K$b3jWPOC=$s;4RiZ;}A0u(d%x{!{Ui;OGiBd=Az5RF8YdlTQE7=3@SlcmtaHZt3q=`2VBy5nHhYR2z?z8z+-)PKIgTVup*t{Lgy* zR`1cC@g}?3TusA>4L)f6m?85=n~BF0`*}ltK5QPB13`W~9|-pKMZ~^{kDnjchXoDC zRIC1bCW0%tYy}Jgd_Kwpa5p2vP)%gIiw=6R6#5Ps1Y_V(p&L!)ct(4(gQI`F| z2;YYj#|MT_Eq#s3UWmw4?vZZCKqNqwMNAp@Bf-=Q|_=<9C&j$;VMUG)}mtP%sU-ZLf+TL6@Ku5XV zLOij&7vz>4Q{A<@m?7ipCS0RhHRh&Ey-UweznB&nwj<}D=qVfhMs~ETdI_UBqQoWL z5VE$pw6& z?>I;q$hOY9(!OkQ{zBHEJ$rCq-h`x(KUJ(*Q>bX^S$E-|oNGTjHYYk$)_JsEKQh04 zY4CzLnT1VGHswZC^|USzc}bRa_9A4Ox~=j_xd4;7zWns3u70W2+ecOBAa^u@}jbwoEg1+zd{1R!gJlhcO;P2`10~Hc(S|K%Dx3` zedVBSUT0ckL-6hs6+1#xWw-Um_gwq&fOO-Z4~vWX^=xk9-EUhp_Kr~xySw+Qe@Q)h zBa9K7(E0p3J4${1LfFge)Pw5UtypGe6!YdeN4w(bE^DW^uZWm>rm@NcN!wRvs2zOD z4DVfJF*7{x(nB94wbZ_XvH9};Wt~xHJ=7*_&4a;#7JWloO~B!w3*3$bkM}?5u6Uxe;bcTy4&j8CQ_cC*?46HYW+t0rITq~FXF~Wi^JER2|y_;kR9lny-ig-|u`k;Scex59^0IP}hp*wvxmC~ss>obA%|eT+P| zwZ8Dyxy=5PKQ_(ZX4f#eZ+2sg&2hKqPC9b6eev{JRb6jOP?=wsZ~s8~_EkMI-DQcH z&Q{%3uc%%Vn`y7A9yTxr=DK8N1_ov&y6(!`WbH0aSl)QiGC8KSi{+k>T_lO+`SA8R z?fUC63)8q=Z%Tam%hpjMa;eufxm!c+;x=tK{brLortZV$zw^z1uLJx-#D{(2mj4SR C*>fcT literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/corner_1.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/corner_1.png new file mode 100644 index 0000000000000000000000000000000000000000..46f8427b7d5251a0cd950a10b5f06dd653132719 GIT binary patch literal 2554 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/cover_1.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/cover_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b964685adde98378c9bae9c9cc04897a4ed6406b GIT binary patch literal 154494 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 z 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%0D@Rk4q~Ap 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 VfkPumG}QnA002ovPDHLkV1f?W3A+FQ literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/cover_2.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/cover_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a0092d0821f70f3f5a00ee599b4e3f6ac8a3ed3d GIT binary patch literal 169807 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%0Ashy7L#D|!#oH+`Au(qnyyMrpI**R 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ξ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�M2j1T}Yp=m4q-@wgT5PV-Ahm z4I6lF{|qkureq>dXBead{{t2q|7B$^EuI3tMeg9+xOQ^2aB^MSO;qo+n#o3;C{SF- zRMCBP&}IDhxc+!iYDEs8%sSrMA(a6d9xM0ok;4|QSX+JHXE(|o^|beq582u3I9gK~ z8X8K8TlsMkeAH*fj_utaqE@_<6x40@0K)bPKVA0I9BaVI`|X`i zhgm9cdGEW6Gbx_~sVPUF7sBf2zeI}Px z!Jt72fy+0@`QfvxcAqXlp5c1w*f4&S7em0|pkVr_7-fzR!Drx69ka?X*<$Zfl@ko7 z&#$HDVSNl8Im_d}J*B zjm^mxaqzu0m}5?>y+qHNq^0q~cIL<`y1^IDjg5_{8ke65_dFZRISMA?k3txNLpb~{ z|9$UQyZ%n-x@fo>4Y}TPh$MPAc>LNxJj7&;t}wE4hT)a;GPvBFUMDlM@VKTs(p;{_ z9X!Z-XsJSuQQoWzFySO8NnMdkJ&dPkzpX??L34}c%qT5EXHS}pjF0!Z)1Y~PWW}>- z4w24|PtML yF|!~8tfFip1ai;)V^CmS|-xEsX}o?0a4MpnTi?qK{!_cZm>o`1EfUTUtn2k@hM_E04B{cbk-jWj$Vy`)P5o;hee*^wQj)bEBc3kghZhfJ z+Pxjt)o{7^m!Hkm3#z?_0nK=82YEts1%h^w9ifXS7wR^4Y&)-tOp$c+^GCJu3qroR zXP`UWtz-Sb(>c6xA?uMiytW-O*W_kx;xZxcI4z6Cp8Nx)d7w+LR_?9^+R2!Pi_%nN z@&^;Ak2GUM zj2n9o4m=e)gEo%=0?qmP`P`0o`BcZJ&ZteyFjPTZP0hvp*CtxPI0^REyJ6BDorbqS zygQ;o1x5x&?)QB+*c|nR!wT^ef47$??OrclOZ zXWz&uF^9|HS{dVIlG2#s5GRdypSSPXF2~!NTXx_ht_;yT+1SQel@?V82?>d)#Z-sv zCs$vu$FDzdek7De^s;#s*ET)OphY54_~%+p7)h;!*Kl$TZAp-xJYL>9{pZO5JBfb= zyT>r!ZY_#p&mQvMbLitw!Jn7WpHkz|+BCOj%0AVQQzuWek#UGK7}%A-OC~nGHh%|} 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 +### opa_layered +First draw the object on the layer, then scale down layer opacity factor. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 255, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc means semi transparency. +
    +
  • Default `LV_OPA_COVER`
  • +
  • Inherited Yes
  • +
  • Layout No
  • +
  • Ext. draw No
  • +
+ ### color_filter_dsc Mix a color to all colors of the object.
    @@ -772,7 +781,7 @@ Describes how to blend the colors to the background. The possible values are `LV
### layout -Set the layout if the object. The children will be repositioned and resized according to the policies set for the layout. For the possible values see the documentation of the layouts. +Set the layout of the object. The children will be repositioned and resized according to the policies set for the layout. For the possible values see the documentation of the layouts.

?(8mPfs_+b;xY)c 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'O2o2BXQMozglP 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/icn_chat.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/icn_chat.png new file mode 100644 index 0000000000000000000000000000000000000000..c1311bfa9207dec4db56d3a414e8cb2585ba460d GIT binary patch literal 3038 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/icn_download.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/icn_download.png new file mode 100644 index 0000000000000000000000000000000000000000..1f4bcfdeb9de6112f7ffa00294c8f0b04135add1 GIT binary patch literal 2904 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/list_border.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/list_border.png new file mode 100644 index 0000000000000000000000000000000000000000..655257c8a7e90ec88931770068f24e4c003eeac7 GIT binary patch literal 2108 zcmcIlONbmr814=6kx0PD#pKj--2l3$FJ&$bG?79dJ^i*~ASKt5D|ET|+ zwM#2!PMn5NE--s+GI}%!_4RQ%gv`QPq|UgX-1xnp&5sP@Rf_ zm|-}o>sPR2IhOaFN(_Q^1M8R|YzH<8h_6n68dytt7_2v*pW1@As@Bi*B+&KIXjB=Q z6`A&Q?EAiM5SWFCl1DOD3r5Pv!pDrhd#j+BF0pw?yWWX`^X5gA#i{UOo408+l*rLe8CPTgz+P2MXKXk>6?WHt=%Ate(tc5BLj8ueJ z_%uY=V=l5h3n)wuGinjjwuDJMM^o?Gt;>N-+meHKLG9i3R=vKK$}k$hhirYNrnZ`O z2m6kLNCj&uXF({_A%#SXhO{U2B<>Yy4>I7mt5F6q-kuiHW%2rSHi*2h=*Hy`gn6WUQ<0O=7~GJ$0>%ttg8%RLCmzhdr4Gm7IKg?Y(mR|9W8e6V!=`%`=0eD(PCqQAGAmm0gZ*WUUYrW2LC literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/wave_bottom.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/wave_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b40934f09214af46d47baa9827c57c9617539ca5 GIT binary patch literal 9476 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 bLQl{50+NkaBvA6d{->m>q^VdUk9_t&n}Hd_ literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/wave_top.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/480_png/wave_top.png new file mode 100644 index 0000000000000000000000000000000000000000..1f93cea9a39e4cb5832b7c125f704be331b52d8a GIT binary patch literal 9599 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 literal 0 HcmV?d00001 diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_corner_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_corner_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_corner_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_corner_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_list_pause.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_list_pause.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_list_pause.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_list_pause.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_list_pause_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_list_pause_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_list_pause_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_list_pause_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_list_play.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_list_play.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_list_play.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_list_play.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_list_play_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_list_play_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_list_play_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_list_play_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_loop.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_loop.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_loop.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_loop.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_loop_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_loop_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_loop_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_loop_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_next.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_next.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_next.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_next.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_next_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_next_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_next_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_next_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_pause.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_pause.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_pause.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_pause.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_pause_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_pause_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_pause_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_pause_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_play.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_play.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_play.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_play.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_play_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_play_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_play_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_play_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_prev.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_prev.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_prev.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_prev.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_prev_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_prev_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_prev_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_prev_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_rnd.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_rnd.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_rnd.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_rnd.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_rnd_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_rnd_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_btn_rnd_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_btn_rnd_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_corner_left.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_corner_left.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_corner_left.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_corner_left.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_corner_left_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_corner_left_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_corner_left_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_corner_left_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_corner_right.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_corner_right.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_corner_right.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_corner_right.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_corner_right_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_corner_right_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_corner_right_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_corner_right_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_1.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_1.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_1.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_1.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_1_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_1_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_1_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_1_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_2.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_2.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_2.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_2.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_2_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_2_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_2_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_2_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_3.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_3.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_3.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_3.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_3_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_3_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_cover_3_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_cover_3_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_1.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_1.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_1.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_1.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_1_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_1_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_1_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_1_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_2.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_2.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_2.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_2.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_2_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_2_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_2_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_2_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_3.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_3.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_3.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_3.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_3_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_3_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_3_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_3_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_4.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_4.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_4.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_4.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_4_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_4_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_icon_4_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_icon_4_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_list_border.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_list_border.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_list_border.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_list_border.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_list_border_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_list_border_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_list_border_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_list_border_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_logo.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_logo.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_logo.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_logo.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_slider_knob.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_slider_knob.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_slider_knob.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_slider_knob.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_slider_knob_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_slider_knob_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_slider_knob_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_slider_knob_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_wave_bottom.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_wave_bottom.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_wave_bottom.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_wave_bottom.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_wave_bottom_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_wave_bottom_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_wave_bottom_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_wave_bottom_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_wave_top.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_wave_top.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_wave_top.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_wave_top.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_wave_top_large.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_wave_top_large.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/img_lv_demo_music_wave_top_large.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/img_lv_demo_music_wave_top_large.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/spectrum.py b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/spectrum.py old mode 100644 new mode 100755 similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/spectrum.py rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/spectrum.py diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/spectrum_1.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/spectrum_1.h similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/spectrum_1.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/spectrum_1.h diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/spectrum_2.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/spectrum_2.h similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/spectrum_2.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/spectrum_2.h diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/spectrum_3.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/spectrum_3.h similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/assets/spectrum_3.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/assets/spectrum_3.h diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music.c similarity index 91% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music.c index cb72ed1..7393dfd 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music.c +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music.c @@ -103,6 +103,12 @@ static const uint32_t time_list[] = { 2 * 60 + 19, }; +#if LV_DEMO_MUSIC_AUTO_PLAY + static lv_timer_t * auto_step_timer; +#endif + +static lv_color_t original_screen_bg_color; + /********************** * MACROS **********************/ @@ -113,16 +119,33 @@ static const uint32_t time_list[] = { void lv_demo_music(void) { + original_screen_bg_color = lv_obj_get_style_bg_color(lv_scr_act(), 0); lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x343247), 0); list = _lv_demo_music_list_create(lv_scr_act()); ctrl = _lv_demo_music_main_create(lv_scr_act()); #if LV_DEMO_MUSIC_AUTO_PLAY - lv_timer_create(auto_step_cb, 1000, NULL); + auto_step_timer = lv_timer_create(auto_step_cb, 1000, NULL); #endif } +void lv_demo_music_close(void) +{ + /*Delete all aniamtions*/ + lv_anim_del(NULL, NULL); + +#if LV_DEMO_MUSIC_AUTO_PLAY + lv_timer_del(auto_step_timer); +#endif + _lv_demo_music_list_close(); + _lv_demo_music_main_close(); + + lv_obj_clean(lv_scr_act()); + + lv_obj_set_style_bg_color(lv_scr_act(), original_screen_bg_color, 0); +} + const char * _lv_demo_music_get_title(uint32_t track_id) { if(track_id >= sizeof(title_list) / sizeof(title_list[0])) return NULL; diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music.h similarity index 96% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music.h index 82917fb..3c393d6 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music.h +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music.h @@ -36,6 +36,8 @@ extern "C" { **********************/ void lv_demo_music(void); +void lv_demo_music_close(void); + const char * _lv_demo_music_get_title(uint32_t track_id); const char * _lv_demo_music_get_artist(uint32_t track_id); const char * _lv_demo_music_get_genre(uint32_t track_id); diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_list.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_list.c similarity index 95% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_list.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_list.c index 88e79ec..52b9491 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_list.c +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_list.c @@ -130,6 +130,18 @@ lv_obj_t * _lv_demo_music_list_create(lv_obj_t * parent) return list; } +void _lv_demo_music_list_close(void) +{ + lv_style_reset(&style_scrollbar); + lv_style_reset(&style_btn); + lv_style_reset(&style_btn_pr); + lv_style_reset(&style_btn_chk); + lv_style_reset(&style_btn_dis); + lv_style_reset(&style_title); + lv_style_reset(&style_artist); + lv_style_reset(&style_time); +} + void _lv_demo_music_list_btn_check(uint32_t track_id, bool state) { lv_obj_t * btn = lv_obj_get_child(list, track_id); @@ -205,7 +217,6 @@ static lv_obj_t * add_list_btn(lv_obj_t * parent, uint32_t track_id) return btn; } - static void btn_click_event_cb(lv_event_t * e) { lv_obj_t * btn = lv_event_get_target(e); @@ -215,4 +226,3 @@ static void btn_click_event_cb(lv_event_t * e) _lv_demo_music_play(idx); } #endif /*LV_USE_DEMO_MUSIC*/ - diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_list.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_list.h similarity index 95% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_list.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_list.h index 48e6e17..d03c6d1 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_list.h +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_list.h @@ -28,6 +28,8 @@ extern "C" { * GLOBAL PROTOTYPES **********************/ lv_obj_t * _lv_demo_music_list_create(lv_obj_t * parent); +void _lv_demo_music_list_close(void); + void _lv_demo_music_list_btn_check(uint32_t track_id, bool state); /********************** diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_main.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_main.c similarity index 98% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_main.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_main.c index f7bc4b8..45a8054 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_main.c +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_main.c @@ -60,7 +60,7 @@ static void prev_click_event_cb(lv_event_t * e); static void next_click_event_cb(lv_event_t * e); static void timer_cb(lv_timer_t * t); static void track_load(uint32_t id); -static void stop_start_anim(lv_timer_t * t); +static void stop_start_anim_timer_cb(lv_timer_t * t); static void spectrum_end_cb(lv_anim_t * a); static void album_fade_anim_cb(void * var, int32_t v); static int32_t get_cos(int32_t deg, int32_t a); @@ -84,6 +84,7 @@ static uint32_t spectrum_lane_ofs_start = 0; static uint32_t bar_rot = 0; static uint32_t time_act; static lv_timer_t * sec_counter_timer; +static lv_timer_t * stop_start_anim_timer; static const lv_font_t * font_small; static const lv_font_t * font_large; static uint32_t track_id; @@ -232,8 +233,8 @@ lv_obj_t * _lv_demo_music_main_create(lv_obj_t * parent) start_anim = true; - lv_timer_t * timer = lv_timer_create(stop_start_anim, INTRO_TIME + 6000, NULL); - lv_timer_set_repeat_count(timer, 1); + stop_start_anim_timer = lv_timer_create(stop_start_anim_timer_cb, INTRO_TIME + 6000, NULL); + lv_timer_set_repeat_count(stop_start_anim_timer, 1); lv_anim_init(&a); lv_anim_set_path_cb(&a, lv_anim_path_bounce); @@ -292,6 +293,12 @@ lv_obj_t * _lv_demo_music_main_create(lv_obj_t * parent) return main_cont; } +void _lv_demo_music_main_close(void) +{ + if(stop_start_anim_timer) lv_timer_del(stop_start_anim_timer); + lv_timer_del(sec_counter_timer); +} + void _lv_demo_music_album_next(bool next) { uint32_t id = track_id; @@ -762,7 +769,7 @@ static void spectrum_draw_event_cb(lv_event_t * e) lv_obj_t * obj = lv_event_get_target(e); lv_draw_ctx_t * draw_ctx = lv_event_get_draw_ctx(e); - lv_opa_t opa = lv_obj_get_style_opa(obj, LV_PART_MAIN); + lv_opa_t opa = lv_obj_get_style_opa_recursive(obj, LV_PART_MAIN); if(opa < LV_OPA_MIN) return; lv_point_t poly[4]; @@ -974,7 +981,6 @@ static void next_click_event_cb(lv_event_t * e) } } - static void timer_cb(lv_timer_t * t) { LV_UNUSED(t); @@ -989,11 +995,11 @@ static void spectrum_end_cb(lv_anim_t * a) _lv_demo_music_album_next(true); } - -static void stop_start_anim(lv_timer_t * t) +static void stop_start_anim_timer_cb(lv_timer_t * t) { LV_UNUSED(t); start_anim = false; + stop_start_anim_timer = NULL; lv_obj_refresh_ext_draw_size(spectrum_obj); } @@ -1002,4 +1008,3 @@ static void album_fade_anim_cb(void * var, int32_t v) lv_obj_set_style_img_opa(var, v, 0); } #endif /*LV_USE_DEMO_MUSIC*/ - diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_main.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_main.h similarity index 95% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_main.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_main.h index a2cf939..a190f00 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/lv_demo_music_main.h +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/lv_demo_music_main.h @@ -28,6 +28,8 @@ extern "C" { * GLOBAL PROTOTYPES **********************/ lv_obj_t * _lv_demo_music_main_create(lv_obj_t * parent); +void _lv_demo_music_main_close(void); + void _lv_demo_music_play(uint32_t id); void _lv_demo_music_resume(void); void _lv_demo_music_pause(void); @@ -38,7 +40,6 @@ void _lv_demo_music_album_next(bool next); **********************/ #endif /*LV_USE_DEMO_MUSIC*/ - #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/screenshot1.gif b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/screenshot1.gif similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/music/screenshot1.gif rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/music/screenshot1.gif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/Makefile b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/Makefile similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/Makefile rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/Makefile diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/README.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/README.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/README.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/README.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/lv_demo_stress.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/lv_demo_stress.c similarity index 96% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/lv_demo_stress.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/lv_demo_stress.c index b247443..2b59707 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/lv_demo_stress.c +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/lv_demo_stress.c @@ -25,7 +25,7 @@ static void msgbox_del(lv_timer_t * tmr); static void set_y_anim(void * obj, int32_t v); static void set_width_anim(void * obj, int32_t v); static void arc_set_end_angle_anim(void * obj, int32_t v); -static void obj_test_task_cb(lv_timer_t * tmr); +static void obj_test_timer_cb(lv_timer_t * tmr); /********************** * STATIC VARIABLES @@ -34,6 +34,10 @@ static lv_obj_t * main_page; static lv_obj_t * ta; static const char * mbox_btns[] = {"Ok", "Cancel", ""}; static uint32_t mem_free_start = 0; +static lv_timer_t * obj_test_timer; +static int16_t state; +static lv_timer_t * msgbox_tmr; + /********************** * MACROS **********************/ @@ -45,23 +49,34 @@ static uint32_t mem_free_start = 0; void lv_demo_stress(void) { LV_LOG_USER("Starting stress test. (< 100 bytes permanent memory leak is normal due to fragmentation)"); - lv_timer_create(obj_test_task_cb, LV_DEMO_STRESS_TIME_STEP, NULL); + obj_test_timer = lv_timer_create(obj_test_timer_cb, LV_DEMO_STRESS_TIME_STEP, NULL); + state = -1; +} + +void lv_demo_stress_close(void) +{ + lv_timer_del(obj_test_timer); + obj_test_timer = NULL; + if(msgbox_tmr) { + lv_timer_del(msgbox_tmr); + msgbox_tmr = NULL; + } + + lv_obj_clean(lv_scr_act()); + lv_obj_clean(lv_layer_top()); } /********************** * STATIC FUNCTIONS **********************/ -static void obj_test_task_cb(lv_timer_t * tmr) +static void obj_test_timer_cb(lv_timer_t * tmr) { (void) tmr; /*Unused*/ - static int16_t state = -1; lv_anim_t a; lv_obj_t * obj; - // printf("step start: %d\n", state); - switch(state) { case -1: { lv_res_t res = lv_mem_test(); @@ -83,7 +98,6 @@ static void obj_test_task_cb(lv_timer_t * tmr) lv_obj_set_size(main_page, LV_HOR_RES / 2, LV_VER_RES); lv_obj_set_flex_flow(main_page, LV_FLEX_FLOW_COLUMN); - obj = lv_btn_create(main_page); lv_obj_set_size(obj, 100, 70); obj = lv_label_create(obj); @@ -246,8 +260,7 @@ static void obj_test_task_cb(lv_timer_t * tmr) case 14: obj = lv_msgbox_create(NULL, "Title", "Some text on the message box with average length", mbox_btns, true); - - lv_timer_t * msgbox_tmr = lv_timer_create(msgbox_del, LV_DEMO_STRESS_TIME_STEP * 5 + 30, obj); + msgbox_tmr = lv_timer_create(msgbox_del, LV_DEMO_STRESS_TIME_STEP * 5 + 30, obj); lv_timer_set_repeat_count(msgbox_tmr, 1); lv_obj_align(obj, LV_ALIGN_RIGHT_MID, -10, 0); break; @@ -439,6 +452,7 @@ static void auto_del(lv_obj_t * obj, uint32_t delay) static void msgbox_del(lv_timer_t * tmr) { + msgbox_tmr = NULL; lv_msgbox_close(tmr->user_data); } diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/lv_demo_stress.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/lv_demo_stress.h similarity index 94% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/lv_demo_stress.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/lv_demo_stress.h index f718366..aacc9e1 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/lv_demo_stress.h +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/lv_demo_stress.h @@ -30,6 +30,8 @@ extern "C" { **********************/ void lv_demo_stress(void); +void lv_demo_stress_close(void); + /********************** * MACROS **********************/ diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/screenshot1.gif b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/screenshot1.gif similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/screenshot1.gif rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/screenshot1.gif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/screenshot1.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/screenshot1.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/stress/screenshot1.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/stress/screenshot1.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/Makefile b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/Makefile similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/Makefile rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/Makefile diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/Makefile b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/Makefile similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/Makefile rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/Makefile diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/avatar.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/avatar.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/avatar.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/avatar.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/clothes.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/clothes.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/clothes.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/clothes.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/img_clothes.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/img_clothes.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/img_clothes.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/img_clothes.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/img_demo_widgets_avatar.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/img_demo_widgets_avatar.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/img_demo_widgets_avatar.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/img_demo_widgets_avatar.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/img_lvgl_logo.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/img_lvgl_logo.c similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/img_lvgl_logo.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/img_lvgl_logo.c diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/lvgl_logo.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/lvgl_logo.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/assets/lvgl_logo.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/assets/lvgl_logo.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/lv_demo_widgets.c b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/lv_demo_widgets.c similarity index 99% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/lv_demo_widgets.c rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/lv_demo_widgets.c index 839b999..dad25c3 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/lv_demo_widgets.c +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/lv_demo_widgets.c @@ -86,6 +86,8 @@ static uint32_t session_desktop = 1000; static uint32_t session_tablet = 1000; static uint32_t session_mobile = 1000; +static lv_timer_t * meter2_timer; + /********************** * MACROS **********************/ @@ -196,6 +198,22 @@ void lv_demo_widgets(void) color_changer_create(tv); } +void lv_demo_widgets_close(void) +{ + /*Delete all animation*/ + lv_anim_del(NULL, NULL); + + lv_timer_del(meter2_timer); + meter2_timer = NULL; + + lv_obj_clean(lv_scr_act()); + + lv_style_reset(&style_text_muted); + lv_style_reset(&style_title); + lv_style_reset(&style_icon); + lv_style_reset(&style_bullet); +} + /********************** * STATIC FUNCTIONS **********************/ @@ -340,7 +358,6 @@ static void profile_create(lv_obj_t * parent) LV_GRID_TEMPLATE_LAST }; - lv_obj_set_grid_dsc_array(parent, grid_main_col_dsc, grid_main_row_dsc); lv_obj_set_grid_cell(panel1, LV_GRID_ALIGN_STRETCH, 0, 2, LV_GRID_ALIGN_CENTER, 0, 1); @@ -368,7 +385,6 @@ static void profile_create(lv_obj_t * parent) lv_obj_set_grid_cell(gender, LV_GRID_ALIGN_STRETCH, 0, 1, LV_GRID_ALIGN_CENTER, 6, 1); lv_obj_set_grid_cell(gender_label, LV_GRID_ALIGN_START, 0, 1, LV_GRID_ALIGN_START, 5, 1); - lv_obj_set_grid_cell(panel3, LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_STRETCH, 1, 1); lv_obj_set_grid_dsc_array(panel3, grid_2_col_dsc, grid_2_row_dsc); lv_obj_set_grid_cell(panel3_title, LV_GRID_ALIGN_START, 0, 2, LV_GRID_ALIGN_CENTER, 0, 1); @@ -383,7 +399,6 @@ static void profile_create(lv_obj_t * parent) static lv_coord_t grid_main_col_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST}; static lv_coord_t grid_main_row_dsc[] = {LV_GRID_CONTENT, LV_GRID_CONTENT, LV_GRID_TEMPLATE_LAST}; - /*Create the top panel*/ static lv_coord_t grid_1_col_dsc[] = {LV_GRID_CONTENT, 1, LV_GRID_CONTENT, LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST}; static lv_coord_t grid_1_row_dsc[] = { @@ -411,7 +426,6 @@ static void profile_create(lv_obj_t * parent) LV_GRID_TEMPLATE_LAST }; - lv_obj_set_grid_dsc_array(parent, grid_main_col_dsc, grid_main_row_dsc); lv_obj_set_grid_cell(panel1, LV_GRID_ALIGN_STRETCH, 0, 2, LV_GRID_ALIGN_CENTER, 0, 1); @@ -456,7 +470,6 @@ static void profile_create(lv_obj_t * parent) static lv_coord_t grid_main_row_dsc[] = {LV_GRID_CONTENT, LV_GRID_CONTENT, LV_GRID_CONTENT, LV_GRID_TEMPLATE_LAST}; lv_obj_set_grid_dsc_array(parent, grid_main_col_dsc, grid_main_row_dsc); - /*Create the top panel*/ static lv_coord_t grid_1_col_dsc[] = {LV_GRID_CONTENT, LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST}; static lv_coord_t grid_1_row_dsc[] = {LV_GRID_CONTENT, /*Avatar*/ @@ -471,7 +484,6 @@ static void profile_create(lv_obj_t * parent) lv_obj_set_grid_dsc_array(panel1, grid_1_col_dsc, grid_1_row_dsc); - static lv_coord_t grid_2_col_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST}; static lv_coord_t grid_2_row_dsc[] = { LV_GRID_CONTENT, /*Title*/ @@ -526,7 +538,6 @@ static void profile_create(lv_obj_t * parent) } } - static void analytics_create(lv_obj_t * parent) { lv_obj_set_flex_flow(parent, LV_FLEX_FLOW_ROW_WRAP); @@ -698,7 +709,7 @@ static void analytics_create(lv_obj_t * parent) lv_meter_set_indicator_start_value(meter2, meter2_indic[2], 70); lv_meter_set_indicator_end_value(meter2, meter2_indic[2], 99); - lv_timer_create(meter2_timer_cb, 100, meter2_indic); + meter2_timer = lv_timer_create(meter2_timer_cb, 100, meter2_indic); meter3 = create_meter_box(parent, "Network Speed", "Low speed", "Normal Speed", "High Speed"); if(disp_size < DISP_LARGE) lv_obj_add_flag(lv_obj_get_parent(meter3), LV_OBJ_FLAG_FLEX_IN_NEW_TRACK); @@ -840,7 +851,6 @@ void shop_create(lv_obj_t * parent) lv_obj_set_size(chart3, lv_pct(100), lv_pct(100)); lv_obj_set_style_pad_column(chart3, LV_DPX(30), 0); - lv_obj_set_grid_dsc_array(panel1, grid1_col_dsc, grid1_row_dsc); lv_obj_set_grid_cell(title, LV_GRID_ALIGN_START, 0, 1, LV_GRID_ALIGN_START, 0, 1); lv_obj_set_grid_cell(date, LV_GRID_ALIGN_START, 0, 1, LV_GRID_ALIGN_START, 1, 1); @@ -956,7 +966,6 @@ void shop_create(lv_obj_t * parent) cb = lv_checkbox_create(notifications); lv_checkbox_set_text(cb, "Out of stock"); - } static void color_changer_create(lv_obj_t * parent) @@ -1162,7 +1171,6 @@ static lv_obj_t * create_meter_box(lv_obj_t * parent, const char * title, const lv_obj_set_grid_cell(label3, LV_GRID_ALIGN_STRETCH, 1, 1, LV_GRID_ALIGN_START, 4, 1); } - return meter; } @@ -1380,7 +1388,6 @@ static void chart_event_cb(lv_event_t * e) } #endif - const lv_chart_series_t * ser = dsc->sub_part_ptr; if(lv_chart_get_pressed_point(obj) == dsc->id) { @@ -1446,7 +1453,6 @@ static void chart_event_cb(lv_event_t * e) } } - static void shop_chart_event_cb(lv_event_t * e) { lv_event_code_t code = lv_event_get_code(e); @@ -1498,7 +1504,6 @@ static void shop_chart_event_cb(lv_event_t * e) } } - static void meter1_indic1_anim_cb(void * var, int32_t v) { lv_meter_set_indicator_end_value(meter1, var, v); @@ -1535,7 +1540,6 @@ static void meter2_timer_cb(lv_timer_t * timer) static bool down2 = false; static bool down3 = false; - if(down1) { session_desktop -= 137; if(session_desktop < 1400) down1 = false; diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/lv_demo_widgets.h b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/lv_demo_widgets.h similarity index 94% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/lv_demo_widgets.h rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/lv_demo_widgets.h index 66dddaf..8d70df1 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/lv_demo_widgets.h +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/lv_demo_widgets.h @@ -27,6 +27,7 @@ extern "C" { * GLOBAL PROTOTYPES **********************/ void lv_demo_widgets(void); +void lv_demo_widgets_close(void); /********************** * MACROS diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/lv_demo_widgets.py b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/lv_demo_widgets.py old mode 100644 new mode 100755 similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/lv_demo_widgets.py rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/lv_demo_widgets.py diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/screenshot1.gif b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/screenshot1.gif similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/screenshot1.gif rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/screenshot1.gif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/screenshot1.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/screenshot1.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/demos/widgets/screenshot1.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/demos/widgets/screenshot1.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CHANGELOG.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CHANGELOG.md new file mode 100644 index 0000000..1851afb --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CHANGELOG.md @@ -0,0 +1,43 @@ +# Changelog + +## [v8.4.0](https://github.com/lvgl/lvgl/compare/v8.3.11...v8.4.0) 19 March 2024 + +### Breaking Changes + +### Architectural + +### New Features + +- feat(pxp): add zephyr support [`5838`](https://github.com/lvgl/lvgl/pull/5838) +- feat(calendar): set a custom year list for calendar header [`5275`](https://github.com/lvgl/lvgl/pull/5275) +- feat(build): add pkgconfig file (#4744) [`5067`](https://github.com/lvgl/lvgl/pull/5067) + +### Performance + +### Fixes + +- fix(canvas): lv_canvas_transform negative offset_y parameter [`5846`](https://github.com/lvgl/lvgl/pull/5846) +- fix(st-dma2d): remove unused functions [`5561`](https://github.com/lvgl/lvgl/pull/5561) +- fix(gpu-arm2d): fix a blending issue in blend-normal-with-mask-and-opa [`5163`](https://github.com/lvgl/lvgl/pull/5163) +- fix(screen): fix crash when starting two screen loads with animations [`5062`](https://github.com/lvgl/lvgl/pull/5062) +- fix(chart): fix memory leak in lv_chart_remove_series [`5001`](https://github.com/lvgl/lvgl/pull/5001) +- fix(snapshot): set data_size on returned dsc [`4972`](https://github.com/lvgl/lvgl/pull/4972) +- docs(meter): change LV_PART_TICK -> LV_PART_TICKS [`e277114`](https://github.com/lvgl/lvgl/commit/e277114631da2caf6cebcf020ab19fdce6c068c0) + + +### Docs + +- docs: fixed some typos [`5502`](https://github.com/lvgl/lvgl/pull/5502) +- docs(sjpg): color depth no longer limited to 16 bits [`4971`](https://github.com/lvgl/lvgl/pull/4971) + +- docs: add banner [`b7a20df`](https://github.com/lvgl/lvgl/commit/b7a20df38f76958f3613f9ccf4b82cfab33f72e0) + +- docs(meter): change LV_PART_TICK -> LV_PART_TICKS [`e277114`](https://github.com/lvgl/lvgl/commit/e277114631da2caf6cebcf020ab19fdce6c068c0) + + +### Others + +- chore(group):avoid null pointer access [`5864`](https://github.com/lvgl/lvgl/pull/5864) +- doc(font): update Bidirectional support [`5416`](https://github.com/lvgl/lvgl/pull/5416) +- chore: code formatting [`8588762`](https://github.com/lvgl/lvgl/commit/8588762572804e068d001c0d208d49250862c76e) + diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CODE_OF_CONDUCT.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CODE_OF_CONDUCT.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CODE_OF_CONDUCT.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CODE_OF_CONDUCT.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CODING_STYLE.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CODING_STYLE.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CODING_STYLE.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CODING_STYLE.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CONTRIBUTING.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CONTRIBUTING.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/CONTRIBUTING.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/CONTRIBUTING.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/ROADMAP.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/ROADMAP.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/ROADMAP.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/ROADMAP.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_ext/lv_example.py b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_ext/lv_example.py similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_ext/lv_example.py rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_ext/lv_example.py diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/css/custom.css b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/css/custom.css similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/css/custom.css rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/css/custom.css diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/css/fontawesome.min.css b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/css/fontawesome.min.css similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/css/fontawesome.min.css rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/css/fontawesome.min.css diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_1.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_1.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_1.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_1.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_2.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_2.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_2.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_2.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_3.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_3.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_3.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_3.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_4.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_4.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_4.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_4.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_5.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_5.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_5.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_5.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_6.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_6.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_6.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_6.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_banner.jpg b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_banner.jpg similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_static/img/home_banner.jpg rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/img/home_banner.jpg diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/js/custom.js b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/js/custom.js new file mode 100644 index 0000000..fa1327d --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_static/js/custom.js @@ -0,0 +1,57 @@ +/* API collapsing */ +document.addEventListener('DOMContentLoaded', (event) => { + document.querySelectorAll("dl.cpp").forEach(cppListing => { + const dt = cppListing.querySelector("dt"); + let shouldBeExpanded = false; + if(dt.id == document.location.hash.substring(1)) + shouldBeExpanded = true; + cppListing.classList.add(shouldBeExpanded ? "expanded" : "unexpanded"); + const button = document.createElement("span"); + button.classList.add("lv-api-expansion-button"); + button.addEventListener("click", () => { + cppListing.classList.toggle("unexpanded"); + cppListing.classList.toggle("expanded"); + }); + + dt.insertBefore(button, dt.firstChild); + }); + + fetch('https://lvgl.io/home-banner.txt') // Replace with your URL + .then(response => { + // Check if the request was successful + if (!response.ok) { + throw new Error(`HTTP error! Status: ${response.status}`); + } + // Read the response as text + return response.text(); + }) + .then(data => { + + const section = document.querySelector('.wy-nav-content-wrap'); + + //Add a div + const newDiv = document.createElement('div'); + newDiv.style="background-image: linear-gradient(45deg, black, #5e5e5e); color: white; border-bottom: 4px solid #e10010; padding-inline:3em" + section.insertBefore(newDiv, section.firstChild); + + + //Add a p to the div + const newP = document.createElement('p'); + newP.style="padding-block:12px; margin-block:0px;align-content: center;align-items: center;" + newP.innerHTML = data + newDiv.insertBefore(newP, newDiv.firstChild); + + const children = newDiv.querySelectorAll('*'); + + // Iterate over each child + children.forEach(child => { + // Check if the child has an id + if (child.id) { + // Prepend 'docs-' to the id + child.id = 'docs-' + child.id; + } + }) + }) .catch(error => { + console.error('Fetch error: ' + error.message); + }); +}) diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_templates/layout.html b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_templates/layout.html similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_templates/layout.html rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_templates/layout.html diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_templates/page.html b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_templates/page.html similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/_templates/page.html rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/_templates/page.html diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/build.py b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/build.py old mode 100644 new mode 100755 similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/build.py rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/build.py diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/conf.py b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/conf.py similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/conf.py rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/conf.py diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/example_list.py b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/example_list.py old mode 100644 new mode 100755 similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/example_list.py rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/example_list.py diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/favicon.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/favicon.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/favicon.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/favicon.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/bindings/cpp.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/bindings/cpp.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/bindings/cpp.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/bindings/cpp.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/bindings/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/bindings/index.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/bindings/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/bindings/index.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/bindings/micropython.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/bindings/micropython.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/bindings/micropython.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/bindings/micropython.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/index.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/index.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/freertos.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/freertos.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/freertos.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/freertos.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/index.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/index.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/nuttx.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/nuttx.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/nuttx.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/nuttx.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/rt-thread.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/rt-thread.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/rt-thread.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/rt-thread.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/zephyr.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/zephyr.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/os/zephyr.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/os/zephyr.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/arduino.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/arduino.md similarity index 93% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/arduino.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/arduino.md index e9ca2e4..2571cac 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/arduino.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/arduino.md @@ -52,9 +52,14 @@ In the INO file you can see how to register a display and a touchpad for LVGL an Note that, there is no dedicated INO file for every example. Instead, you can load an example by calling an `lv_example_...` function. For example `lv_example_btn_1()`. -**IMPORTANT** +**IMPORTANT NOTE 1** Due to some the limitations of Arduino's build system you need to copy `lvgl/examples` to `lvgl/src/examples`. Similarly for the demos `lvgl/demos` to `lvgl/src/demos`. + +**IMPORTANT NOTE 2** +Note that the `lv_examples` library is for LVGL v7 and you shouldn't install it for this version (since LVGL v8) +as the examples and demos are now part of the main LVGL library. + ## Debugging and logging LVGL can display debug information in case of trouble. diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/cmake.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/cmake.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/cmake.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/cmake.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/espressif.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/espressif.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/espressif.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/espressif.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/index.md similarity index 92% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/index.md index 7ed6a01..7fba951 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/index.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/index.md @@ -9,6 +9,7 @@ nxp stm32 espressif + renesas arduino tasmota-berry cmake diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/nxp.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/nxp.md new file mode 100644 index 0000000..48e25d2 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/nxp.md @@ -0,0 +1,182 @@ +# NXP +NXP has integrated LVGL into the MCUXpresso SDK packages for general purpose and crossover microcontrollers, allowing +easy evaluation and migration into your product design. +[Download an SDK for a supported board](https://www.nxp.com/design/software/embedded-software/littlevgl-open-source-graphics-library:LITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY?&tid=vanLITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY) +today and get started with your next GUI application. + +## Creating new project with LVGL +Downloading the MCU SDK example project is recommended as a starting point. It comes fully configured with LVGL (and +with PXP/VGLite support if the modules are present), no additional integration work is required. + +## HW acceleration for NXP iMX RT platforms +Depending on the RT platform used, the acceleration can be done by NXP PXP (PiXel Pipeline) and/or the Verisilicon GPU +through an API named VGLite. Each accelerator has its own context that allows them to be used individually as well +simultaneously (in LVGL multithreading mode). + +### PXP accelerator +Several drawing features in LVGL can be offloaded to the PXP engine. The CPU is available for other operations while the +PXP is running. RTOS is required to block the LVGL drawing thread and switch to another task or suspend the CPU for +power savings. + +Supported draw callbacks are available in "src/draw/nxp/pxp/lv_draw_pxp.c": +```c + pxp_draw_ctx->base_draw.draw_img_decoded = lv_draw_pxp_img_decoded; + pxp_draw_ctx->blend = lv_draw_pxp_blend; + pxp_draw_ctx->base_draw.wait_for_finish = lv_draw_pxp_wait_for_finish; + pxp_draw_ctx->base_draw.buffer_copy = lv_draw_pxp_buffer_copy; +``` + +#### Features supported: + All operations can be used in conjunction with optional transparency. + + - RGB565 and ARGB8888 color formats + - Area fill with color + - BLIT (BLock Image Transfer) + - Screen Rotation (90, 180, 270 degree) + - Color keying + - Recoloring (color tint) + - Image Rotation (90, 180, 270 degree) + - Buffer copy + - RTOS integration layer + - Default FreeRTOS and bare metal code provided + + - Combination of recolor and/or rotation + color key/alpha blend/transparency is supported. + That is achieved by PXP in two steps: + - First step is to recolor/rotate the image to a temporary buffer (statically allocated) + - Second step is required to handle color keying, alpha channel or to apply transparency + +#### Known limitations: + - Rotation is not supported for images unaligned to blocks of 16x16 pixels. +PXP is set to process 16x16 blocks to optimize the system for memory bandwidth and image processing time. +The output engine essentially truncates any output pixels after the desired number of pixels has been written. +When rotating a source image and the output is not divisible by the block size, the incorrect pixels could be truncated +and the final output image can look shifted. + +#### Basic configuration: + - Select NXP PXP engine in lv_conf.h: Set `LV_USE_GPU_NXP_PXP` to 1 + - Enable default implementation for interrupt handling, PXP start function and automatic initialization: + Set `LV_USE_GPU_NXP_PXP_AUTO_INIT` to 1 + - If `SDK_OS_FREE_RTOS` symbol is defined, FreeRTOS implementation will be used, otherwise bare metal code will be + included + +#### Basic initialization: + - If `LV_USE_GPU_NXP_PXP_AUTO_INIT` is enabled, no user code is required; PXP is initialized automatically in + `lv_init()` + - For manual PXP initialization, default configuration structure for callbacks can be used. Initialize PXP before + calling `lv_init()` +```c + #if LV_USE_GPU_NXP_PXP + #include "src/draw/nxp/pxp/lv_gpu_nxp_pxp.h" + #endif + . . . + #if LV_USE_GPU_NXP_PXP + PXP_COND_STOP(!lv_gpu_nxp_pxp_init(), "PXP init failed."); + #endif +``` + +#### Project setup: + - Add PXP related files to project: + - src/draw/nxp/pxp/lv_draw_pxp.c[.h]: draw context callbacks + - src/draw/nxp/pxp/lv_draw_pxp_blend.c[.h]: fill and blit (with optional transformation) + - src/draw/nxp/pxp/lv_gpu_nxp_pxp.c[.h]: init, uninit, run/wait PXP device + - src/draw/nxp/pxp/lv_gpu_nxp_pxp_osa.c[.h]: OS abstraction (FreeRTOS or bare metal) + - optional, required only if `LV_USE_GPU_NXP_PXP_AUTO_INIT` is set to 1 + - PXP related code depends on two drivers provided by MCU SDK. These drivers need to be added to project: + - fsl_pxp.c[.h]: PXP driver + - fsl_cache.c[.h]: CPU cache handling functions + +#### Logging: + - By default, `LV_GPU_NXP_PXP_LOG_ERRORS` is enabled so that any PXP error will be seen on SDK debug console + - By default, `LV_GPU_NXP_PXP_LOG_TRACES` is disabled. Enable it for tracing logs (like PXP limitations) + +#### Advanced configuration: + - Implementation depends on multiple OS-specific functions. The struct `lv_nxp_pxp_cfg_t` with callback pointers is + used as a parameter for the `lv_gpu_nxp_pxp_init()` function. Default implementation for FreeRTOS and bare metal is + provided in lv_gpu_nxp_pxp_osa.c + - `pxp_interrupt_init()`: Initialize PXP interrupt (HW setup, OS setup) + - `pxp_interrupt_deinit()`: Deinitialize PXP interrupt (HW setup, OS setup) + - `pxp_run()`: Start PXP job. Use OS-specific mechanism to block drawing thread. PXP must finish drawing before + leaving this function. + - Area threshold (size limit) is configurable and used to decide whether the area will be processed by PXP or not. + Areas smaller than the defined value will be processed by CPU and those bigger than the threshold will be processed by + PXP. The threshold is defined as a macro in lv_draw_pxp.c + - `LV_GPU_NXP_PXP_SIZE_LIMIT`: size threshold for fill/blit (with optional transformation) + +### VGLite accelerator +Extra drawing features in LVGL can be handled by the VGLite engine. The CPU is available for other operations while the +VGLite is running. An RTOS is required to block the LVGL drawing thread and switch to another task or suspend the CPU +for power savings. + +Supported draw callbacks are available in "src/draw/nxp/vglite/lv_draw_vglite.c": +```c + vglite_draw_ctx->base_draw.init_buf = lv_draw_vglite_init_buf; + vglite_draw_ctx->base_draw.draw_line = lv_draw_vglite_line; + vglite_draw_ctx->base_draw.draw_arc = lv_draw_vglite_arc; + vglite_draw_ctx->base_draw.draw_rect = lv_draw_vglite_rect; + vglite_draw_ctx->base_draw.draw_img_decoded = lv_draw_vglite_img_decoded; + vglite_draw_ctx->blend = lv_draw_vglite_blend; + vglite_draw_ctx->base_draw.wait_for_finish = lv_draw_vglite_wait_for_finish; + vglite_draw_ctx->base_draw.buffer_copy = lv_draw_vglite_buffer_copy; +``` + +#### Features supported: + All operations can be used in conjunction with optional transparency. + + - RGB565 and ARGB8888 color formats + - Area fill with color + - BLIT (BLock Image Transfer) + - Image Rotation (any degree with decimal) + - Image Scale + - Draw rectangle background with optional radius or gradient + - Blit rectangle background image + - Draw rectangle border/outline with optional rounded corners + - Draw arc with optional rounded ending + - Draw line or dashed line with optional rounded ending + - Buffer copy + +#### Known limitations: + - Source image alignment: + The byte alignment requirement for a pixel depends on the specific pixel format. Both buffer address and buffer stride + must be aligned. As general rule, the alignment is set to 16 pixels. This makes the buffer address alignment to be + 32 bytes for RGB565 and 64 bytes for ARGB8888. + - For pixel engine (PE) destination, the alignment should be 64 bytes for all tiled (4x4) buffer layouts. + The pixel engine has no additional alignment requirement for linear buffer layouts (`VG_LITE_LINEAR`). + +#### Basic configuration: + - Select NXP VGLite engine in lv_conf.h: Set `LV_USE_GPU_NXP_VG_LITE` to 1 + - `SDK_OS_FREE_RTOS` symbol needs to be defined so that the FreeRTOS implementation will be used + +#### Basic initialization: + - Initialize VGLite before calling `lv_init()` by specifying the width/height of tessellation window. Value should be + a multiple of 16; minimum value is 16 pixels, maximum cannot be greater than the frame width. If less than or equal + to 0, then no tessellation buffer is created, in which case VGLite is initialized only for blitting. +```c + #if LV_USE_GPU_NXP_VG_LITE + #include "vg_lite.h" + #endif + . . . + #if LV_USE_GPU_NXP_VG_LITE + VG_LITE_COND_STOP(vg_lite_init(64, 64) != VG_LITE_SUCCESS, "VGLite init failed."); + #endif +``` + +#### Project setup: + - Add VGLite related files to project: + - src/draw/nxp/vglite/lv_draw_vglite.c[.h]: draw context callbacks + - src/draw/nxp/vglite/lv_draw_vglite_blend.c[.h]: fill and blit (with optional transformation) + - src/draw/nxp/vglite/lv_draw_vglite_rect.c[.h]: draw rectangle + - src/draw/nxp/vglite/lv_draw_vglite_arc.c[.h]: draw arc + - src/draw/nxp/vglite/lv_draw_vglite_line.c[.h]: draw line + - src/draw/nxp/vglite/lv_vglite_buf.c[.h]: init/get vglite buffer + - src/draw/nxp/vglite/lv_vglite_utils.c[.h]: function helpers + +#### Logging: + - By default, `LV_GPU_NXP_VG_LITE_LOG_ERRORS` is enabled so that any VGLite error will be seen on SDK debug console + - By default, `LV_GPU_NXP_VG_LITE_LOG_TRACES` is disabled. Enable it for tracing logs (like blit split workaround or + VGLite fallback to CPU due to any error on the driver) + +#### Advanced configuration: + - Area threshold (size limit) is configurable and used to decide whether the area will be processed by VGLite or not. + Areas smaller than the defined value will be processed by CPU and those bigger than the threshold will be processed by + VGLite. The threshold is defined as a macro in lv_draw_vglite.c + - `LV_GPU_NXP_VG_LITE_SIZE_LIMIT`: size threshold for fill/blit (with optional transformation) diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/pc-simulator.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/pc-simulator.md similarity index 98% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/pc-simulator.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/pc-simulator.md index 3bdc495..95c35ff 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/pc-simulator.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/pc-simulator.md @@ -15,7 +15,7 @@ The simulator is ported to various IDEs (Integrated Development Environments). C - [Eclipse with SDL driver](https://github.com/lvgl/lv_sim_eclipse_sdl): Recommended on Linux and Mac - [CodeBlocks](https://github.com/lvgl/lv_sim_codeblocks_win): Recommended on Windows -- [VisualStudio with SDL driver](https://github.com/lvgl/lv_sim_visual_studio_sdl): For Windows +- [VisualStudio](https://github.com/lvgl/lv_sim_visual_studio_sdl): For Windows - [VSCode with SDL driver](https://github.com/lvgl/lv_sim_vscode_sdl): Recommended on Linux and Mac - [PlatformIO with SDL driver](https://github.com/lvgl/lv_platformio): Recommended on Linux and Mac - [MDK with FastModel](https://github.com/lvgl/lv_port_an547_cm55_sim): For Windows diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/renesas.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/renesas.md new file mode 100644 index 0000000..b33095f --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/renesas.md @@ -0,0 +1,129 @@ +# Renesas +The [HMI-Board](https://bit.ly/3I9nfUo) development board SDK now comes with LVGL integration for quick evaluation. Simply download the [SDK](https://github.com/RT-Thread-Studio/sdk-bsp-ra6m3-hmi-board/tree/main/projects/hmi-board-lvgl) for the supported motherboard and you’ll be on your way to creating your next GUI application in no time. For more information, check out the [Software design description](https://github.com/RT-Thread-Studio/sdk-bsp-ra6m3-hmi-board/blob/main/projects/hmi-board-lvgl/README.md). + +## Creating new project with LVGL +It is recommended to start your project by downloading the HMI-Board SDK example project. It comes fully equipped with LVGL and dave-2d support (if the modules are present), so you won’t need to do any additional integration work. + +## HW acceleration for Renesas RA6M3 platforms +For RA6M3 platforms, hardware acceleration can be achieved using the dave-2d GPU, depending on the platform used. Each accelerator has its own context, allowing them to be used individually or simultaneously in LVGL’s multithreading mode. + +### Dave-2d accelerator +LVGL can offload several drawing features to the dave-2d engine, freeing up the CPU for other operations while dave-2d runs. An RTOS is required to block the LVGL drawing thread and switch to another task or suspend the CPU for power savings. Supported draw callbacks can be found in “src/draw/renesas/lv_gpu_d2_ra6m3.c”. + +LVGL can offload several drawing features to the dave-2d engine, freeing up the CPU for other operations while dave-2d runs. An RTOS is required to block the LVGL drawing thread and switch to another task or suspend the CPU for power savings. Supported draw callbacks can be found in “src/draw/renesas/lv_gpu_d2_ra6m3.c”. + +```c + ra_2d_draw_ctx->blend = lv_draw_ra6m3_2d_blend; + ra_2d_draw_ctx->base_draw.draw_img_decoded = lv_port_gpu_img_decoded; + ra_2d_draw_ctx->base_draw.wait_for_finish = lv_port_gpu_wait; + ra_2d_draw_ctx->base_draw.draw_letter = lv_draw_gpu_letter; +``` + +### Features supported: + All operations can be used in conjunction with optional transparency. + + - RGB565 and ARGB8888 color formats + - Area fill with color + - BLIT (BLock Image Transfer) + - Color conversion + - Rotate and scale + - Alpha blending + - Bilinear filtering + - RTOS integration layer + - Default RT-Thread code provided + - Subpixel exact placement + +### Basic configuration: + - Select Renesas dave-2d engine in lv_conf.h: Set `LV_USE_GPU_RA6M3_G2D` to 1 + - Set referenced header file in lv_conf.h: `#define LV_GPU_RA6M3_G2D_INCLUDE "hal_data.h"` + +### RT-Thread Example: + +```c +#define COLOR_BUFFER (LV_HOR_RES_MAX * LV_VER_RES_MAX) + +static lv_disp_drv_t disp_drv; + +/*A static or global variable to store the buffers*/ +static lv_color_t buf_1[COLOR_BUFFER]; +``` + +- After initializing your peripherals (such as SPI, GPIOs, and LCD) in the `lv_port_disp_init()` function, you can initialize LVGL using [`lv_init()`.](https://docs.lvgl.io/master/API/core/lv_obj.html#_CPPv47lv_initv) Next, register the frame buffers using `lv_disp_draw_buf_init()` and create a new display driver using `lv_disp_drv_init()`. + +```c +/*Initialize `disp_buf` with the buffer(s). With only one buffer use NULL instead buf_2 */ +lv_disp_draw_buf_init(&disp_buf, buf_1, RT_NULL, COLOR_BUFFER); +lv_disp_drv_init(&disp_drv); /*Basic initialization*/ + +/*Set the resolution of the display*/ +disp_drv.hor_res = LV_HOR_RES_MAX; +disp_drv.ver_res = LV_VER_RES_MAX; + +/*Set a display buffer*/ +disp_drv.draw_buf = &disp_buf; + +/*Used to copy the buffer's content to the display*/ +disp_drv.flush_cb = disp_flush; + +/* Initialize GPU module */ +lv_port_gpu_hw_init(); + +/*Finally register the driver*/ +lv_disp_drv_register(&disp_drv); +``` + +* To run LVGL, you’ll need to create a thread. You can find examples of how to do this using RT-Thread in the `env_support/rt-thread/lv_rt_thread_port.c` file. + +```c +static void lvgl_thread_entry(void *parameter) +{ +#if LV_USE_LOG + lv_log_register_print_cb(lv_rt_log); +#endif /* LV_USE_LOG */ + lv_init(); + lv_port_disp_init(); + lv_port_indev_init(); + lv_user_gui_init(); + + /* handle the tasks of LVGL */ + while(1) + { + lv_task_handler(); + rt_thread_mdelay(LV_DISP_DEF_REFR_PERIOD); + } +} + +static int lvgl_thread_init(void) +{ + rt_err_t err; + + /* create lvgl thread */ + err = rt_thread_init(&lvgl_thread, "LVGL", lvgl_thread_entry, RT_NULL, + &lvgl_thread_stack[0], sizeof(lvgl_thread_stack), PKG_LVGL_THREAD_PRIO, 10); + if(err != RT_EOK) + { + LOG_E("Failed to create LVGL thread"); + return -1; + } + rt_thread_startup(&lvgl_thread); + + return 0; +} +INIT_ENV_EXPORT(lvgl_thread_init); +``` + +- The last step is to create a function to output the frame buffer to your LCD. The specifics of this function will depend on the features of your MCU. Here’s an example for a typical MCU interface: `my_flush_cb`. + +```c +static void my_flush_cb(lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_color_t *color_p) +{ +#ifdef PKG_USING_ILI9341 + lcd_fill_array_spi(area->x1, area->y1, area->x2, area->y2, color_p); +#elif LV_USE_GPU_RA6M3_G2D + lv_port_gpu_blit(area->x1, area->y1, color_p, area); +#else + ...... +#endif + lv_disp_flush_ready(disp_drv); +} +``` diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/stm32.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/stm32.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/stm32.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/stm32.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/tasmota-berry.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/tasmota-berry.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/platforms/tasmota-berry.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/platforms/tasmota-berry.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/quick-overview.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/quick-overview.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/get-started/quick-overview.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/get-started/quick-overview.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/index.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/index.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/intro/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/intro/index.md similarity index 99% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/intro/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/intro/index.md index 0d20b28..62508d1 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/intro/index.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/intro/index.md @@ -132,7 +132,7 @@ LVGL needs just one simple driver function to copy an array of pixels into a giv If you can do this with your display then you can use it with LVGL. Some examples of the supported display types: -- TFTs with 16 or 24 bit color depth +- TFTs with 16 or 32 bit color depth - Monitors with an HDMI port - Small monochrome displays - Gray-scale displays diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/layouts/flex.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/layouts/flex.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/layouts/flex.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/layouts/flex.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/layouts/grid.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/layouts/grid.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/layouts/grid.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/layouts/grid.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/layouts/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/layouts/index.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/layouts/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/layouts/index.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/bmp.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/bmp.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/bmp.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/bmp.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/ffmpeg.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/ffmpeg.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/ffmpeg.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/ffmpeg.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/freetype.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/freetype.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/freetype.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/freetype.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/fsdrv.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/fsdrv.md new file mode 100644 index 0000000..8f828d9 --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/fsdrv.md @@ -0,0 +1,45 @@ + +# File System Interfaces + +LVGL has a [File system](https://docs.lvgl.io/master/overview/file-system.html) module to provide an abstraction layer for various file system drivers. +You still need to provide the drivers and libraries, this extension provides only the bridge between FATFS, LittleFS, STDIO, POSIX, WIN32 and LVGL. + +## Built in wrappers + +### FATFS + +Bridge for [FatFS](http://elm-chan.org/fsw/ff/00index_e.html). FatFS itself is not part of LVGL, but can be added and initialized externally. + + +### LittleFS + +Though `lv_fs_littlefs` uses [LittleFS]((https://github.com/littlefs-project/littlefs)) API, the LittleFS library needs other external libraries that handle the mounting of partitions and low-level accesses, according to the given architecture. The functions for the latter are given to the lfs_t structure as pointers by an external low-level library. + +There's a convenience function called `lv_fs_littlefs_set_driver(LV_FS_LITTLEFS_LETTER, my_lfs)`, specific to `lv_fs_littlefs`, to attach a `lfs_t` object's pointer to a registered driver-letter. See its comments for more info. + + +[esp_littlefs](https://components.espressif.com/components/joltwallet/littlefs) is a wrapper for LittleFS to be used in Espressif ESP-devices. It handles the mounting and has the low-level `littlefs_api` functions to read/write/erase blocks that LittleFS library needs. On mounting by `esp_littlefs` the `lfs_t` structures are created. You need to get a handle to these to use ESP with `lv_fs_littlefs`, as all functions use that `lfs_t` in LittleFS to identify the mounted partition. + + +In case you don't find a special function in the `lv_fs_littlefs` wrapper, you can look for it in the `esp_littlefs` API and use it directly, as `lv_fs_littlefs` and the `esp_littlefs` APIs can be used side-by-side. + +### STDIO + +Bride to C standard functions on Linux and Windows. For example `fopen`, `fread`, etc. + +### POSIX + +Bride to POSIX functions on Linux and Windows. For example `open`, `read`, etc. + +### WIN32 + +Bride to Win32 API function. For example `CreateFileA`, `ReadFile`, etc. + +## Usage + +In `lv_conf.h` enable `LV_USE_FS_...` and assign an upper cased letter to `LV_FS_..._LETTER` (e.g. `'S'`). +After that you can access files using that driver letter. E.g. `"S:path/to/file.txt"`. + +The work directory can be set with `LV_FS_..._PATH`. E.g. `"/home/joe/projects/"` The actual file/directory paths will be appended to it. + +Cached reading is also supported if `LV_FS_..._CACHE_SIZE` is set to not `0` value. `lv_fs_read` caches this size of data to lower the number of actual reads from the storage. diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/gif.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/gif.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/gif.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/gif.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/index.md similarity index 92% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/index.md index 8217e91..f0eb900 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/index.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/index.md @@ -12,6 +12,7 @@ png gif freetype + tiny_ttf qrcode rlottie ffmpeg diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/png.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/png.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/png.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/png.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/qrcode.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/qrcode.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/qrcode.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/qrcode.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/rlottie.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/rlottie.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/rlottie.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/rlottie.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/sjpg.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/sjpg.md similarity index 97% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/sjpg.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/sjpg.md index 3ee7858..1c0735e 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/libs/sjpg.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/sjpg.md @@ -12,7 +12,6 @@ Allow the use of JPG images in LVGL. Besides that it also allows the use of a cu - File read from file and c-array are implemented. - SJPEG frame fragment cache enables fast fetching of lines if available in cache. - By default the sjpg image cache will be image width * 2 * 16 bytes (can be modified) - - Currently only 16 bit image format is supported (TODO) - Only the required partion of the JPG and SJPG images are decoded, therefore they can't be zoomed or rotated. ## Usage diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/tiny_ttf.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/tiny_ttf.md new file mode 100644 index 0000000..fd795ae --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/libs/tiny_ttf.md @@ -0,0 +1,35 @@ +# Tiny TTF font engine + +## Usage + +Use https://github.com/nothings/stb to render TrueType fonts in LVGL. + +When enabled in `lv_conf.h` with `LV_USE_TINY_TTF` +`lv_tiny_ttf_create_data(data, data_size, font_size)` can be used to +create a TTF font instance at the specified font size. You can then +use that font anywhere `lv_font_t` is accepted. + +By default, the TTF or OTF file must be embedded as an array, either in +a header, or loaded into RAM in order to function. + +However, if `LV_TINY_TTF_FILE_SUPPORT` is enabled, +`lv_tiny_ttf_create_file(path, font_size)` will also be available, +allowing tiny_ttf to stream from a file. The file must remain open the +entire time the font is being used, and streaming on demand may be +considerably slower. + +After a font is created, you can change the font size in pixels by using +`lv_tiny_ttf_set_size(font, font_size)`. + +By default, a font will use up to 4KB of cache to speed up rendering +glyphs. This maximum can be changed by using +`lv_tiny_ttf_create_data_ex(data, data_size, font_size, cache_size)` +or `lv_tiny_ttf_create_file_ex(path, font_size, cache_size)` (when +available). The cache size is indicated in bytes. + +## API + +```eval_rst +.. doxygenfile:: lv_tiny_ttf.h + :project: lvgl +``` diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/logo_lvgl.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/logo_lvgl.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/logo_lvgl.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/logo_lvgl.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/align.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/align.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/align.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/align.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/anim-timeline.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/anim-timeline.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/anim-timeline.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/anim-timeline.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/bidi.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/bidi.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/bidi.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/bidi.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/boxmodel.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/boxmodel.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/boxmodel.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/boxmodel.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/btn_example.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/btn_example.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/btn_example.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/btn_example.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/button_style_example.gif b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/button_style_example.gif similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/button_style_example.gif rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/button_style_example.gif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/button_style_example.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/button_style_example.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/button_style_example.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/button_style_example.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/codeblocks.jpg b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/codeblocks.jpg similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/codeblocks.jpg rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/codeblocks.jpg diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/eclipse.jpg b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/eclipse.jpg similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/eclipse.jpg rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/eclipse.jpg diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/layers.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/layers.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/layers.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/layers.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/par_child1.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/par_child1.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/par_child1.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/par_child1.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/par_child2.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/par_child2.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/par_child2.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/par_child2.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/par_child3.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/par_child3.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/par_child3.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/par_child3.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/platformio.jpg b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/platformio.jpg similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/platformio.jpg rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/platformio.jpg diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/qtcreator.jpg b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/qtcreator.jpg similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/qtcreator.jpg rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/qtcreator.jpg diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/simple_button_example.gif b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/simple_button_example.gif similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/simple_button_example.gif rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/simple_button_example.gif diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/simple_button_example.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/simple_button_example.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/simple_button_example.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/simple_button_example.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/symbols.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/symbols.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/symbols.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/symbols.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/sys.png b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/sys.png similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/sys.png rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/sys.png diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/visualstudio.jpg b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/visualstudio.jpg similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/misc/visualstudio.jpg rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/misc/visualstudio.jpg diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/fragment.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/fragment.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/fragment.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/fragment.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/gridnav.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/gridnav.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/gridnav.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/gridnav.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/ime_pinyin.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/ime_pinyin.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/ime_pinyin.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/ime_pinyin.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/imgfont.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/imgfont.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/imgfont.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/imgfont.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/index.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/index.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/monkey.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/monkey.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/monkey.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/monkey.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/msg.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/msg.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/msg.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/msg.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/snapshot.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/snapshot.md similarity index 96% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/snapshot.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/snapshot.md index fc54ca3..65383d0 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/others/snapshot.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/others/snapshot.md @@ -37,7 +37,7 @@ void update_snapshot(lv_obj_t * obj, lv_obj_t * img_snapshot) ``` ### Use Existing Buffer -If the snapshot needs update now and then, or simply caller provides memory, use API `lv_res_t lv_snapshot_take_to_buf(lv_obj_t * obj, lv_img_cf_t cf, lv_img_dsc_t * dsc, void * buf, uint32_t buff_size);` for this case. It's caller's responsibility to alloc/free the memory. +If the snapshot needs update now and then, or simply caller provides memory, use API `lv_res_t lv_snapshot_take_to_buf(lv_obj_t * obj, lv_img_cf_t cf, lv_img_dsc_t * dsc, void * buf, uint32_t buf_size);` for this case. It's caller's responsibility to alloc/free the memory. If snapshot is generated successfully, the image descriptor is updated and image data will be stored to provided `buf`. diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/animation.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/animation.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/animation.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/animation.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/color.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/color.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/color.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/color.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/coords.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/coords.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/coords.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/coords.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/display.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/display.md similarity index 98% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/display.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/display.md index b756b77..4626a56 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/display.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/display.md @@ -67,7 +67,7 @@ The Alpha channel of 32-bit colors will be 0 where there are no objects and 255 In summary, to enable transparent screens and displays for OSD menu-like UIs: - Enable `LV_COLOR_SCREEN_TRANSP` in `lv_conf.h` -- Set the screen's opacity to `LV_OPA_TRANSP` e.g. with `lv_obj_set_style_local_bg_opa(lv_scr_act(), LV_OBJMASK_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP)` +- Set the screen's opacity to `LV_OPA_TRANSP` e.g. with `lv_obj_set_style_bg_opa(lv_scr_act(), LV_OPA_TRANSP, LV_PART_MAIN)` - Set the display opacity to `LV_OPA_TRANSP` with `lv_disp_set_bg_opa(NULL, LV_OPA_TRANSP);` ## Features of displays diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/drawing.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/drawing.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/drawing.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/drawing.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/event.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/event.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/event.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/event.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/file-system.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/file-system.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/file-system.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/file-system.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/font.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/font.md similarity index 97% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/font.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/font.md index 9e1265c..ea6dea0 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/font.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/font.md @@ -99,11 +99,12 @@ This means it's enough to set the base direction of a screen and every object wi The default base direction for screens can be set by `LV_BIDI_BASE_DIR_DEF` in *lv_conf.h* and other objects inherit the base direction from their parent. -To set an object's base direction use `lv_obj_set_base_dir(obj, base_dir)`. The possible base directions are: -- `LV_BIDI_DIR_LTR`: Left to Right base direction -- `LV_BIDI_DIR_RTL`: Right to Left base direction -- `LV_BIDI_DIR_AUTO`: Auto detect base direction -- `LV_BIDI_DIR_INHERIT`: Inherit base direction from the parent (or a default value for non-screen objects) +To set an object's base direction use `lv_obj_set_style_base_dir(obj, base_dir,selector)`. The possible base directions are: +- `LV_BASE_DIR_LTR`: Left to Right base direction +- `LV_BASE_DIR_RTL`: Right to Left base direction +- `LV_BASE_DIR_AUTO`: Auto detect base direction +- `LV_BASE_DIR_NEUTRAL` +- `LV_BASE_DIR_WEAK` This list summarizes the effect of RTL base direction on objects: - Create objects by default on the right @@ -112,6 +113,7 @@ This list summarizes the effect of RTL base direction on objects: - `lv_btnmatrix`: Shows buttons from right to left - `lv_list`: Shows icons on the right - `lv_dropdown`: Aligns options to the right +- `lv_bar`: Shows progress from right to left - The texts in `lv_table`, `lv_btnmatrix`, `lv_keyboard`, `lv_tabview`, `lv_dropdown`, `lv_roller` are "BiDi processed" to be displayed correctly ### Arabic and Persian support diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/image.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/image.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/image.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/image.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/indev.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/indev.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/indev.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/indev.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/index.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/index.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/layer.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/layer.md similarity index 90% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/layer.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/layer.md index 8cb4645..dd4301b 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/layer.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/layer.md @@ -34,11 +34,11 @@ lv_label_set_text(label2, "Button 2"); /*Set the text of the label*/ lv_obj_del(label2); ``` -## Bring to the foreground +## Change order There are four explicit ways to bring an object to the foreground: - Use `lv_obj_move_foreground(obj)` to bring an object to the foreground. Similarly, use `lv_obj_move_background(obj)` to move it to the background. -- Use `lv_obj_move_up(obj)` to move an object one position up in the hierarchy, Similarly, use `lv_obj_move_down(obj)` to move an object one position down in the hierarchy. +- Use `lv_obj_move_to_index(obj, idx)` to move an object to a given index in the order of children. (0: backgroud, child_num - 1: foreground, <0: count from the top, to move forward (up): `lv_obj_move_to_index(obj, lv_obj_get_index(obj) - 1)`) - Use `lv_obj_swap(obj1, obj2)` to swap the relative layer position of two objects. - When `lv_obj_set_parent(obj, new_parent)` is used, `obj` will be on the foreground of the `new_parent`. diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/new_widget.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/new_widget.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/new_widget.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/new_widget.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/object.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/object.md similarity index 99% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/object.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/object.md index a2849dc..d019c35 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/object.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/object.md @@ -173,7 +173,7 @@ All inputs are disabled during the screen animation. Screens are created on the currently selected *default display*. The *default display* is the last registered display with `lv_disp_drv_register`. You can also explicitly select a new default display using `lv_disp_set_default(disp)`. -`lv_scr_act()`, `lv_scr_load()` and `lv_scr_load_anim()` operate on the default screen. +`lv_scr_act()`, `lv_scr_load()` and `lv_scr_load_anim()` operate on the default display. Visit [Multi-display support](/overview/display) to learn more. diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/arm-2d.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/arm-2d.md new file mode 100644 index 0000000..85a4dbc --- /dev/null +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/arm-2d.md @@ -0,0 +1,32 @@ +# Arm-2D GPU + +Arm-2D is not a GPU but **an abstraction layer for 2D GPUs dedicated to Microcontrollers**. It supports all Cortex-M processors ranging from Cortex-M0 to the latest Cortex-M85. + +Arm-2D is an open-source project on Github. For more, please refer to: https://github.com/ARM-software/Arm-2D. + + + +## How to Use + +In general, you can set the macro `LV_USE_GPU_ARM2D` to `1`in `lv_conf.h` to enable Arm-2D acceleration for LVGL. + +If you are using **[CMSIS-Pack](https://github.com/lvgl/lvgl/tree/master/env_support/cmsis-pack)** to deploy the LVGL. You don't have to define the macro `LV_USE_GPU_ARM2D` manually, instead, please select the component `GPU Arm-2D` in the **RTE** dialog. This step will define the macro for us. + + + +## Design Considerations + +As mentioned before, Arm-2D is an abstraction layer for 2D GPU; hence if there is no accelerator or dedicated instruction set (such as Helium or ACI) available for Arm-2D, it provides negligible performance boost for LVGL (sometimes worse) for regular Cortex-M processors. + +**We highly recommend you enable Arm-2D acceleration for LVGL** when: + +- The target processors are **Cortex-M55** and/or **Cortex-M85** +- The target processors support **[Helium](https://developer.arm.com/documentation/102102/0103/?lang=en)**. +- The device vendor provides an arm-2d compliant driver for their propriotory 2D accelerators and/or customized instruction set. +- The target device contains [DMA-350](https://community.arm.com/arm-community-blogs/b/internet-of-things-blog/posts/arm-corelink-dma-350-next-generation-direct-memory-access-for-endpoint-ai) + + + +## Examples + +- [A Cortex-M55 (supports Helium) based MDK Project, PC emulation is available.](https://github.com/lvgl/lv_port_an547_cm55_sim) diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/dma2d.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/dma2d.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/dma2d.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/dma2d.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/index.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/index.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/index.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/index.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/pxp-vglite.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/pxp-vglite.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/pxp-vglite.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/pxp-vglite.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/sdl.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/sdl.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/sdl.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/sdl.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/sw.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/sw.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/renderers/sw.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/renderers/sw.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/scroll.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/scroll.md similarity index 100% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/scroll.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/scroll.md diff --git a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/style-props.md b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/style-props.md similarity index 98% rename from src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/style-props.md rename to src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/style-props.md index 74a0cd5..ab08df9 100644 --- a/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.3/docs/overview/style-props.md +++ b/src/W800_SDK_v1.00.10/lvgl/lvgl_v8.4/docs/overview/style-props.md @@ -355,7 +355,7 @@ Set the opacity of the border. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means full ### border_width -Set hte width of the border. Only pixel values can be used. +Set the width of the border. Only pixel values can be used.