Compare commits
86 Commits
release/v9
...
kisvegabor
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7f1efd4f16 | ||
|
|
76fb298090 | ||
|
|
bbab604278 | ||
|
|
76df54db5a | ||
|
|
516825ffe0 | ||
|
|
d1306d3ec5 | ||
|
|
970781fb83 | ||
|
|
7e7590a0a3 | ||
|
|
4f68cd6367 | ||
|
|
b9c41e2666 | ||
|
|
8cbec5922e | ||
|
|
af642572aa | ||
|
|
bcc3059c19 | ||
|
|
a28ddae80f | ||
|
|
5826cd377c | ||
|
|
8d4397b864 | ||
|
|
f78a5761cc | ||
|
|
067bb2fc3a | ||
|
|
eb62ddf4ea | ||
|
|
47ec2784d8 | ||
|
|
0143320f1f | ||
|
|
1f37da22db | ||
|
|
5e4fa47b20 | ||
|
|
500e16e968 | ||
|
|
4d0c029827 | ||
|
|
c96706da7e | ||
|
|
5f755cf47a | ||
|
|
b49638accd | ||
|
|
466e29a1be | ||
|
|
b74d34407f | ||
|
|
3e21769fa6 | ||
|
|
c9a6b25885 | ||
|
|
a3d20a78dd | ||
|
|
33867f6127 | ||
|
|
a3e9b11cda | ||
|
|
c9922d5701 | ||
|
|
29662d1c35 | ||
|
|
4fcf70828d | ||
|
|
f7b860ffde | ||
|
|
03498a2f83 | ||
|
|
83b66d5374 | ||
|
|
c6c2c1e961 | ||
|
|
436172e582 | ||
|
|
db84c4ee29 | ||
|
|
dee1d27e0d | ||
|
|
650b57cd2c | ||
|
|
00c83eb2d2 | ||
|
|
4cce3b5cd9 | ||
|
|
30d1a5cf9b | ||
|
|
ab6ee94aee | ||
|
|
dc0210b9c6 | ||
|
|
fea8a97f5f | ||
|
|
9b3e8eec6d | ||
|
|
ed5d528de8 | ||
|
|
000699827f | ||
|
|
03b5f583bc | ||
|
|
45e4aa9fc3 | ||
|
|
b426209f0c | ||
|
|
6e3f6866cb | ||
|
|
150d1a1d37 | ||
|
|
ac576a2bf4 | ||
|
|
bcb8dbb736 | ||
|
|
667f401db6 | ||
|
|
e33bc08e54 | ||
|
|
b339e67581 | ||
|
|
7722f0f5ce | ||
|
|
9dec22dfaa | ||
|
|
ba42133458 | ||
|
|
0cdad0299d | ||
|
|
48416d7dae | ||
|
|
213cb5971e | ||
|
|
9fe9cf6368 | ||
|
|
21dd110e63 | ||
|
|
f37aebf332 | ||
|
|
1b97f0f2c0 | ||
|
|
910257fa8a | ||
|
|
49053e9d96 | ||
|
|
3116dc469e | ||
|
|
4b41590cf1 | ||
|
|
905de3d7c8 | ||
|
|
f4226cd7de | ||
|
|
8691574c5b | ||
|
|
4d4bb340c0 | ||
|
|
3c2a1935c8 | ||
|
|
352420cd54 | ||
|
|
393c24c6e9 |
@@ -40,7 +40,7 @@ static void memory_monitor(lv_timer_t * param);
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
static lv_disp_t * disp1;
|
||||
static lv_display_t * disp1;
|
||||
|
||||
int monitor_hor_res, monitor_ver_res;
|
||||
|
||||
@@ -77,9 +77,9 @@ int main(int argc, char ** argv)
|
||||
|
||||
void do_loop(void *arg)
|
||||
{
|
||||
/* Periodically call the lv_task handler.
|
||||
/* Periodically call the lv_timer handler.
|
||||
* It could be done in a timer interrupt or an OS task too.*/
|
||||
lv_task_handler();
|
||||
lv_timer_handler();
|
||||
}
|
||||
|
||||
/**********************
|
||||
@@ -92,7 +92,7 @@ void do_loop(void *arg)
|
||||
*/
|
||||
static void hal_init(void)
|
||||
{
|
||||
lv_disp_t * disp = lv_sdl_window_create(monitor_hor_res, monitor_ver_res);
|
||||
lv_display_t * disp = lv_sdl_window_create(monitor_hor_res, monitor_ver_res);
|
||||
|
||||
lv_group_t * g = lv_group_create();
|
||||
lv_group_set_default(g);
|
||||
|
||||
2
.github/pull_request_template.md
vendored
2
.github/pull_request_template.md
vendored
@@ -7,7 +7,7 @@ A clear and concise description of what the bug or new feature is.
|
||||
- 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](http://astyle.sourceforge.net/install.html) version [v3.4.10](https://github.com/szepeviktor/astyle/releases/tag/v3.4.10) needs to be installed) and follow the [Code Conventions](https://docs.lvgl.io/master/CODING_STYLE.html).
|
||||
- Run `scripts/code-format.py` ([astyle](http://astyle.sourceforge.net/install.html) version [v3.4.12](https://github.com/szepeviktor/astyle/releases/tag/v3.4.12) needs to be installed) 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).
|
||||
|
||||
2
.github/workflows/arduino.yml
vendored
2
.github/workflows/arduino.yml
vendored
@@ -7,7 +7,7 @@ on:
|
||||
jobs:
|
||||
lint:
|
||||
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: arduino/arduino-lint-action@v1
|
||||
|
||||
2
.github/workflows/build_micropython.yml
vendored
2
.github/workflows/build_micropython.yml
vendored
@@ -8,7 +8,7 @@ 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
|
||||
runs-on: ubuntu-22.04
|
||||
continue-on-error: true
|
||||
strategy:
|
||||
matrix:
|
||||
|
||||
2
.github/workflows/ccpp.yml
vendored
2
.github/workflows/ccpp.yml
vendored
@@ -9,7 +9,7 @@ on:
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
# A valid option parameter to the cmake file.
|
||||
|
||||
2
.github/workflows/check_conf.yml
vendored
2
.github/workflows/check_conf.yml
vendored
@@ -6,7 +6,7 @@ on:
|
||||
jobs:
|
||||
verify-conf-internal:
|
||||
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
2
.github/workflows/check_style.yml
vendored
2
.github/workflows/check_style.yml
vendored
@@ -6,7 +6,7 @@ on:
|
||||
jobs:
|
||||
verify-formatting:
|
||||
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
18
.github/workflows/close_old_issues.yml
vendored
18
.github/workflows/close_old_issues.yml
vendored
@@ -7,28 +7,28 @@ on:
|
||||
jobs:
|
||||
stale:
|
||||
if: github.repository == 'lvgl/lvgl'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/stale@v9
|
||||
with:
|
||||
repo-token: ${{ secrets.LVGL_BOT_TOKEN }}
|
||||
stale-issue-message: |
|
||||
We need some feedback on this issue.
|
||||
|
||||
Now we mark this as "stale" because there was no activity here for 14 days.
|
||||
|
||||
|
||||
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.
|
||||
stale-pr-message: |
|
||||
We need some feedback on this pull request.
|
||||
|
||||
Now we mark this as "stale" because there was no activity here for 14 days.
|
||||
|
||||
|
||||
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, next major, next minor'
|
||||
exempt-issue-labels: 'pinned, next major, next minor, shaping, ready for development'
|
||||
exempt-pr-labels: 'pinned, next major, next minor'
|
||||
|
||||
2
.github/workflows/compile_docs.yml
vendored
2
.github/workflows/compile_docs.yml
vendored
@@ -10,7 +10,7 @@ env:
|
||||
jobs:
|
||||
build-and-deploy:
|
||||
if: github.repository == 'lvgl/lvgl'
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
concurrency: docs-build-and-deploy
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
||||
2
.github/workflows/esp_upload_component.yml
vendored
2
.github/workflows/esp_upload_component.yml
vendored
@@ -8,7 +8,7 @@ on:
|
||||
|
||||
jobs:
|
||||
upload_components:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
|
||||
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@@ -4,7 +4,7 @@ on:
|
||||
|
||||
jobs:
|
||||
auto_close_issues:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
2
.github/workflows/makefile.yml
vendored
2
.github/workflows/makefile.yml
vendored
@@ -9,7 +9,7 @@ on:
|
||||
jobs:
|
||||
build:
|
||||
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
name: Build using Makefile
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
4
.github/workflows/platformio_publish.yaml
vendored
4
.github/workflows/platformio_publish.yaml
vendored
@@ -6,7 +6,7 @@ on:
|
||||
name: PlatformIO Publish
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
@@ -19,4 +19,4 @@ jobs:
|
||||
- name: Switch to the development version
|
||||
run: pio upgrade --dev
|
||||
- name: Publish
|
||||
run: pio pkg publish --owner lvgl .
|
||||
run: pio pkg publish --no-interactive --owner lvgl .
|
||||
|
||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -9,7 +9,7 @@ name: Create Release
|
||||
jobs:
|
||||
build:
|
||||
name: Create Release
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
77
Kconfig
77
Kconfig
@@ -183,6 +183,13 @@ menu "LVGL configuration"
|
||||
it is buffered into a "simple" layer before rendering. The widget can be buffered in smaller chunks.
|
||||
"Transformed layers" (if `transform_angle/zoom` are set) use larger buffers and can't be drawn in chunks.
|
||||
|
||||
config LV_DRAW_THREAD_STACK_SIZE
|
||||
int "Stack size of draw thread in bytes"
|
||||
default 8192
|
||||
depends on LV_USE_OS > 0
|
||||
help
|
||||
If FreeType or ThorVG is enabled, it is recommended to set it to 32KB or more.
|
||||
|
||||
config LV_USE_DRAW_SW
|
||||
bool "Enable software rendering"
|
||||
default y
|
||||
@@ -206,7 +213,7 @@ menu "LVGL configuration"
|
||||
|
||||
config LV_USE_NATIVE_HELIUM_ASM
|
||||
bool "Enable native helium assembly"
|
||||
default y
|
||||
default n
|
||||
depends on LV_USE_DRAW_SW
|
||||
help
|
||||
Disabling this allows arm2d to work on its own (for testing only)
|
||||
@@ -335,6 +342,20 @@ menu "LVGL configuration"
|
||||
which usually improves performance,
|
||||
but does not guarantee the same rendering quality as the software.
|
||||
|
||||
config LV_VG_LITE_LINEAR_GRAD_CACHE_CNT
|
||||
int "VG-Lite linear gradient image maximum cache number."
|
||||
default 32
|
||||
depends on LV_USE_DRAW_VG_LITE
|
||||
help
|
||||
The memory usage of a single gradient image is 4K bytes.
|
||||
|
||||
config LV_VG_LITE_RADIAL_GRAD_CACHE_CNT
|
||||
int "VG-Lite radial gradient image maximum cache number."
|
||||
default 32
|
||||
depends on LV_USE_DRAW_VG_LITE
|
||||
help
|
||||
The memory usage of a single gradient image is radial grad radius * 4 bytes.
|
||||
|
||||
config LV_USE_VECTOR_GRAPHIC
|
||||
bool "Use Vector Graphic APIs"
|
||||
default n
|
||||
@@ -652,6 +673,8 @@ menu "LVGL configuration"
|
||||
bool "Enable Montserrat 28 compressed"
|
||||
config LV_FONT_DEJAVU_16_PERSIAN_HEBREW
|
||||
bool "Enable Dejavu 16 Persian, Hebrew, Arabic letters"
|
||||
config LV_FONT_SIMSUN_14_CJK
|
||||
bool "Enable Simsun 14 CJK"
|
||||
config LV_FONT_SIMSUN_16_CJK
|
||||
bool "Enable Simsun 16 CJK"
|
||||
|
||||
@@ -672,6 +695,9 @@ menu "LVGL configuration"
|
||||
config LV_FONT_DEFAULT_MONTSERRAT_8
|
||||
bool "Montserrat 8"
|
||||
select LV_FONT_MONTSERRAT_8
|
||||
config LV_FONT_DEFAULT_MONTSERRAT_10
|
||||
bool "Montserrat 10"
|
||||
select LV_FONT_MONTSERRAT_10
|
||||
config LV_FONT_DEFAULT_MONTSERRAT_12
|
||||
bool "Montserrat 12"
|
||||
select LV_FONT_MONTSERRAT_12
|
||||
@@ -735,6 +761,9 @@ menu "LVGL configuration"
|
||||
config LV_FONT_DEFAULT_DEJAVU_16_PERSIAN_HEBREW
|
||||
bool "Dejavu 16 Persian, Hebrew, Arabic letters"
|
||||
select LV_FONT_DEJAVU_16_PERSIAN_HEBREW
|
||||
config LV_FONT_DEFAULT_SIMSUN_14_CJK
|
||||
bool "Simsun 14 CJK"
|
||||
select LV_FONT_SIMSUN_14_CJK
|
||||
config LV_FONT_DEFAULT_SIMSUN_16_CJK
|
||||
bool "Simsun 16 CJK"
|
||||
select LV_FONT_SIMSUN_16_CJK
|
||||
@@ -860,6 +889,9 @@ menu "LVGL configuration"
|
||||
bool "Use calendar header dropdown"
|
||||
depends on LV_USE_CALENDAR
|
||||
default y
|
||||
config LV_USE_CALENDAR_CHINESE
|
||||
bool "Use chinese calendar"
|
||||
depends on LV_USE_CALENDAR
|
||||
config LV_USE_CANVAS
|
||||
bool "Canvas. Requires: lv_image"
|
||||
imply LV_USE_IMAGE
|
||||
@@ -914,9 +946,6 @@ menu "LVGL configuration"
|
||||
config LV_USE_MSGBOX
|
||||
bool "Msgbox"
|
||||
default y if !LV_CONF_MINIMAL
|
||||
config LV_USE_OBSERVER
|
||||
bool "Observer"
|
||||
default n
|
||||
config LV_USE_ROLLER
|
||||
bool "Roller. Requires: lv_label"
|
||||
imply LV_USE_LABEL
|
||||
@@ -1066,6 +1095,13 @@ menu "LVGL configuration"
|
||||
default 0
|
||||
depends on LV_USE_FS_LITTLEFS
|
||||
|
||||
config LV_USE_FS_ARDUINO_ESP_LITTLEFS
|
||||
bool "File system on top of Arduino ESP littlefs API"
|
||||
config LV_FS_ARDUINO_ESP_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_ARDUINO_ESP_LITTLEFS
|
||||
|
||||
config LV_USE_LODEPNG
|
||||
bool "PNG decoder library"
|
||||
|
||||
@@ -1122,6 +1158,7 @@ menu "LVGL configuration"
|
||||
|
||||
config LV_USE_RLOTTIE
|
||||
bool "Lottie library"
|
||||
|
||||
config LV_USE_THORVG
|
||||
bool "ThorVG library"
|
||||
choice
|
||||
@@ -1227,10 +1264,6 @@ menu "LVGL configuration"
|
||||
bool "Center"
|
||||
endchoice
|
||||
|
||||
config LV_USE_MONKEY
|
||||
bool "Enable Monkey test"
|
||||
default n
|
||||
|
||||
config LV_USE_PROFILER
|
||||
bool "Runtime performance profiler"
|
||||
config LV_USE_PROFILER_BUILTIN
|
||||
@@ -1246,6 +1279,10 @@ menu "LVGL configuration"
|
||||
depends on LV_USE_PROFILER
|
||||
default "lvgl/src/misc/lv_profiler_builtin.h"
|
||||
|
||||
config LV_USE_MONKEY
|
||||
bool "Enable Monkey test"
|
||||
default n
|
||||
|
||||
config LV_USE_GRIDNAV
|
||||
bool "Enable grid navigation"
|
||||
default n
|
||||
@@ -1255,9 +1292,13 @@ menu "LVGL configuration"
|
||||
default n
|
||||
|
||||
config LV_USE_IMGFONT
|
||||
bool "draw image in label or span obj"
|
||||
bool "Support using images as font in label or span widgets"
|
||||
default n
|
||||
|
||||
config LV_USE_OBSERVER
|
||||
bool "Observer"
|
||||
default y
|
||||
|
||||
config LV_USE_IME_PINYIN
|
||||
bool "Enable Pinyin input method"
|
||||
default n
|
||||
@@ -1357,6 +1398,24 @@ menu "LVGL configuration"
|
||||
depends on LV_USE_SDL
|
||||
default y
|
||||
|
||||
choice
|
||||
prompt "SDL mousewheel mode"
|
||||
depends on LV_USE_SDL
|
||||
default LV_SDL_MOUSEWHEEL_MODE_ENCODER
|
||||
|
||||
config LV_SDL_MOUSEWHEEL_MODE_ENCODER
|
||||
bool "The mousewheel emulates an encoder input device"
|
||||
|
||||
config LV_SDL_MOUSEWHEEL_MODE_CROWN
|
||||
bool "The mousewheel emulates a smart watch crown"
|
||||
endchoice
|
||||
|
||||
config LV_SDL_MOUSEWHEEL_MODE
|
||||
int
|
||||
depends on LV_USE_SDL
|
||||
default 0 if LV_SDL_MOUSEWHEEL_MODE_ENCODER
|
||||
default 1 if LV_SDL_MOUSEWHEEL_MODE_CROWN
|
||||
|
||||
config LV_USE_X11
|
||||
bool "Use X11 window manager to open window on Linux PC and handle mouse and keyboard"
|
||||
default n
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
## Configure Demos Entry
|
||||
|
||||
"demos/lv_demos.c" provides `lv_demos_create` and `lv_demos_usage` to simplify the creation of demos.
|
||||
"demos/lv_demos.c" provides `lv_demos_create` and `lv_demos_show_help` to simplify the creation of demos.
|
||||
|
||||
If you build your main program named `lv_demos`, then you can run the widgets demo by running `lv_demos widgets` and the benchmark demo by running `lv_demos benchmark 1`.
|
||||
|
||||
@@ -71,9 +71,9 @@ For example:
|
||||
#include "demos/lv_demos.h"
|
||||
|
||||
...
|
||||
static lv_disp_t* hal_init(void)
|
||||
static lv_display_t* hal_init(void)
|
||||
{
|
||||
lv_disp_t* disp = NULL;
|
||||
lv_display_t* disp = NULL;
|
||||
|
||||
...
|
||||
/* TODO: init display and indev */
|
||||
@@ -86,14 +86,14 @@ int main(int argc, char ** argv)
|
||||
{
|
||||
lv_init();
|
||||
|
||||
lv_disp_t* disp = hal_init();
|
||||
lv_display_t* disp = hal_init();
|
||||
if (disp == NULL) {
|
||||
LV_LOG_ERROR("lv_demos initialization failure!");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!lv_demos_create(&argv[1], argc - 1)) {
|
||||
lv_demos_usage();
|
||||
lv_demos_show_help();
|
||||
goto demo_end;
|
||||
}
|
||||
|
||||
|
||||
@@ -77,9 +77,9 @@ static void empty_screen_cb(void)
|
||||
static void moving_wallpaper_cb(void)
|
||||
{
|
||||
lv_obj_set_style_pad_all(lv_screen_active(), 0, 0);
|
||||
LV_IMG_DECLARE(img_benchmark_cogwheel_rgb);
|
||||
LV_IMAGE_DECLARE(img_benchmark_cogwheel_rgb);
|
||||
|
||||
lv_obj_t * img = lv_img_create(lv_screen_active());
|
||||
lv_obj_t * img = lv_image_create(lv_screen_active());
|
||||
lv_obj_set_size(img, lv_pct(150), lv_pct(150));
|
||||
lv_image_set_src(img, &img_benchmark_cogwheel_rgb);
|
||||
lv_image_set_inner_align(img, LV_IMAGE_ALIGN_TILE);
|
||||
@@ -120,7 +120,7 @@ static void multiple_rgb_images_cb(void)
|
||||
lv_obj_set_flex_align(lv_screen_active(), LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
|
||||
lv_obj_set_style_pad_row(lv_screen_active(), 20, 0);
|
||||
|
||||
LV_IMG_DECLARE(img_benchmark_cogwheel_rgb);
|
||||
LV_IMAGE_DECLARE(img_benchmark_cogwheel_rgb);
|
||||
int32_t hor_cnt = ((int32_t)lv_display_get_horizontal_resolution(NULL) - 16) / 116;
|
||||
int32_t ver_cnt = ((int32_t)lv_display_get_vertical_resolution(NULL) - 116) / 116;
|
||||
|
||||
@@ -131,7 +131,7 @@ static void multiple_rgb_images_cb(void)
|
||||
for(y = 0; y < ver_cnt; y++) {
|
||||
int32_t x;
|
||||
for(x = 0; x < hor_cnt; x++) {
|
||||
lv_obj_t * obj = lv_img_create(lv_screen_active());
|
||||
lv_obj_t * obj = lv_image_create(lv_screen_active());
|
||||
lv_image_set_src(obj, &img_benchmark_cogwheel_rgb);
|
||||
if(x == 0) lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK);
|
||||
|
||||
@@ -146,7 +146,7 @@ static void multiple_argb_images_cb(void)
|
||||
lv_obj_set_flex_align(lv_screen_active(), LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
|
||||
lv_obj_set_style_pad_row(lv_screen_active(), 20, 0);
|
||||
|
||||
LV_IMG_DECLARE(img_benchmark_cogwheel_argb);
|
||||
LV_IMAGE_DECLARE(img_benchmark_cogwheel_argb);
|
||||
int32_t hor_cnt = ((int32_t)lv_display_get_horizontal_resolution(NULL) - 16) / 116;
|
||||
int32_t ver_cnt = ((int32_t)lv_display_get_vertical_resolution(NULL) - 116) / 116;
|
||||
|
||||
@@ -157,7 +157,7 @@ static void multiple_argb_images_cb(void)
|
||||
for(y = 0; y < ver_cnt; y++) {
|
||||
int32_t x;
|
||||
for(x = 0; x < hor_cnt; x++) {
|
||||
lv_obj_t * obj = lv_img_create(lv_screen_active());
|
||||
lv_obj_t * obj = lv_image_create(lv_screen_active());
|
||||
lv_image_set_src(obj, &img_benchmark_cogwheel_argb);
|
||||
if(x == 0) lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK);
|
||||
|
||||
@@ -172,7 +172,7 @@ static void rotated_argb_image_cb(void)
|
||||
lv_obj_set_flex_align(lv_screen_active(), LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
|
||||
lv_obj_set_style_pad_row(lv_screen_active(), 20, 0);
|
||||
|
||||
LV_IMG_DECLARE(img_benchmark_cogwheel_argb);
|
||||
LV_IMAGE_DECLARE(img_benchmark_cogwheel_argb);
|
||||
int32_t hor_cnt = ((int32_t)lv_display_get_horizontal_resolution(NULL) - 16) / 116;
|
||||
int32_t ver_cnt = ((int32_t)lv_display_get_vertical_resolution(NULL) - 116) / 116;
|
||||
|
||||
@@ -183,7 +183,7 @@ static void rotated_argb_image_cb(void)
|
||||
for(y = 0; y < ver_cnt; y++) {
|
||||
int32_t x;
|
||||
for(x = 0; x < hor_cnt; x++) {
|
||||
lv_obj_t * obj = lv_img_create(lv_screen_active());
|
||||
lv_obj_t * obj = lv_image_create(lv_screen_active());
|
||||
lv_image_set_src(obj, &img_benchmark_cogwheel_argb);
|
||||
if(x == 0) lv_obj_add_flag(obj, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK);
|
||||
|
||||
@@ -241,7 +241,7 @@ static void multiple_arcs_cb(void)
|
||||
lv_obj_set_flex_flow(lv_screen_active(), LV_FLEX_FLOW_ROW_WRAP);
|
||||
lv_obj_set_flex_align(lv_screen_active(), LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
|
||||
|
||||
LV_IMG_DECLARE(img_benchmark_cogwheel_argb);
|
||||
LV_IMAGE_DECLARE(img_benchmark_cogwheel_argb);
|
||||
int32_t hor_cnt = (lv_display_get_horizontal_resolution(NULL) - 16) / lv_dpx(160);
|
||||
int32_t ver_cnt = (lv_display_get_vertical_resolution(NULL) - 16) / lv_dpx(160);
|
||||
|
||||
@@ -761,7 +761,7 @@ static lv_obj_t * card_create(void)
|
||||
lv_obj_set_size(panel, 270, 120);
|
||||
lv_obj_set_style_pad_all(panel, 8, 0);
|
||||
|
||||
LV_IMG_DECLARE(img_transform_avatar_15);
|
||||
LV_IMAGE_DECLARE(img_transform_avatar_15);
|
||||
lv_obj_t * child = lv_image_create(panel);
|
||||
lv_obj_align(child, LV_ALIGN_LEFT_MID, 0, 0);
|
||||
lv_image_set_src(child, &img_transform_avatar_15);
|
||||
|
||||
@@ -20,7 +20,9 @@ extern "C" {
|
||||
* DEFINES
|
||||
*********************/
|
||||
|
||||
#ifndef ARRAY_SIZE
|
||||
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
|
||||
#endif
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
|
||||
@@ -203,7 +203,7 @@ static void ta_event_cb(lv_event_t * e)
|
||||
lv_keyboard_set_textarea(kb, ta);
|
||||
lv_obj_remove_flag(kb, LV_OBJ_FLAG_HIDDEN);
|
||||
lv_group_focus_obj(kb);
|
||||
lv_group_set_editing(lv_obj_get_group(kb), kb);
|
||||
lv_group_set_editing(lv_obj_get_group(kb), kb != NULL);
|
||||
lv_obj_set_height(tv, LV_VER_RES / 2);
|
||||
lv_obj_align(kb, LV_ALIGN_BOTTOM_MID, 0, 0);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
|
||||
#if LV_USE_DEMO_MULTILANG
|
||||
#if defined(LV_USE_DEMO_MULTILANG) || defined(LV_USE_DEMO_TRANSFORM)
|
||||
|
||||
#ifndef LV_ATTRIBUTE_MEM_ALIGN
|
||||
#define LV_ATTRIBUTE_MEM_ALIGN
|
||||
|
||||
@@ -184,7 +184,7 @@ const LV_ATTRIBUTE_MEM_ALIGN uint8_t img_lv_demo_music_cover_1_map[] = {
|
||||
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,
|
||||
};
|
||||
|
||||
lv_img_dsc_t img_lv_demo_music_cover_1 = {
|
||||
const lv_image_dsc_t img_lv_demo_music_cover_1 = {
|
||||
.header.w = 176,
|
||||
.header.h = 175,
|
||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
||||
|
||||
@@ -445,7 +445,7 @@ img_lv_demo_music_cover_1_map[] = {
|
||||
|
||||
};
|
||||
|
||||
const lv_img_dsc_t img_lv_demo_music_cover_1 = {
|
||||
const lv_image_dsc_t img_lv_demo_music_cover_1 = {
|
||||
.header.w = 428,
|
||||
.header.h = 428,
|
||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
||||
|
||||
@@ -185,7 +185,7 @@ const LV_ATTRIBUTE_MEM_ALIGN uint8_t img_lv_demo_music_cover_2_map[] = {
|
||||
|
||||
};
|
||||
|
||||
lv_img_dsc_t img_lv_demo_music_cover_2 = {
|
||||
const lv_image_dsc_t img_lv_demo_music_cover_2 = {
|
||||
.header.w = 176,
|
||||
.header.h = 175,
|
||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
||||
|
||||
@@ -445,7 +445,7 @@ img_lv_demo_music_cover_2_map[] = {
|
||||
|
||||
};
|
||||
|
||||
const lv_img_dsc_t img_lv_demo_music_cover_2 = {
|
||||
const lv_image_dsc_t img_lv_demo_music_cover_2 = {
|
||||
.header.w = 428,
|
||||
.header.h = 428,
|
||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
||||
|
||||
@@ -185,7 +185,7 @@ const LV_ATTRIBUTE_MEM_ALIGN uint8_t img_lv_demo_music_cover_3_map[] = {
|
||||
|
||||
};
|
||||
|
||||
lv_img_dsc_t img_lv_demo_music_cover_3 = {
|
||||
const lv_image_dsc_t img_lv_demo_music_cover_3 = {
|
||||
.header.w = 176,
|
||||
.header.h = 175,
|
||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
||||
|
||||
@@ -444,7 +444,7 @@ img_lv_demo_music_cover_3_map[] = {
|
||||
|
||||
};
|
||||
|
||||
const lv_img_dsc_t img_lv_demo_music_cover_3 = {
|
||||
const lv_image_dsc_t img_lv_demo_music_cover_3 = {
|
||||
.header.w = 428,
|
||||
.header.h = 428,
|
||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
||||
|
||||
@@ -55,7 +55,7 @@ img_render_lvgl_logo_argb8888_map[] = {
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0xd7, 0x33, 0x01, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd9, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd6, 0x33, 0x00, 0x01, 0xd7, 0x33, 0x01, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd6, 0x33, 0x00, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd7, 0x33, 0x00, 0x00, 0xd9, 0x28, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x22, 0x1c, 0x1c, 0x25, 0x23, 0x1e, 0x1e, 0x33, 0x22, 0x1e, 0x1e, 0x33, 0x23, 0x1e, 0x1e, 0x33, 0x23, 0x1e, 0x1e, 0x33, 0x23, 0x1e, 0x1e, 0x33, 0x20, 0x20, 0x20, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
const lv_img_dsc_t img_render_lvgl_logo_argb8888 = {
|
||||
const lv_image_dsc_t img_render_lvgl_logo_argb8888 = {
|
||||
.header.cf = LV_COLOR_FORMAT_ARGB8888,
|
||||
.header.w = 30,
|
||||
.header.h = 30,
|
||||
|
||||
@@ -56,7 +56,7 @@ img_render_lvgl_logo_rgb565_map[] = {
|
||||
0xff, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x5d, 0xff, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0xf7, 0x5d, 0xef, 0x5d, 0xef, 0x5d, 0xef, 0x5d, 0xef, 0x5d, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
};
|
||||
|
||||
const lv_img_dsc_t img_render_lvgl_logo_rgb565 = {
|
||||
const lv_image_dsc_t img_render_lvgl_logo_rgb565 = {
|
||||
.header.cf = LV_COLOR_FORMAT_RGB565,
|
||||
.header.w = 30,
|
||||
.header.h = 30,
|
||||
|
||||
@@ -195,7 +195,7 @@ img_render_lvgl_logo_rgb888_map[] = {
|
||||
0xe7, 0xe6, 0xe6, 0xfb, 0xfa, 0xfa, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
|
||||
};
|
||||
|
||||
const lv_img_dsc_t img_render_lvgl_logo_rgb888 = {
|
||||
const lv_image_dsc_t img_render_lvgl_logo_rgb888 = {
|
||||
.header.cf = LV_COLOR_FORMAT_RGB888,
|
||||
.header.w = 30,
|
||||
.header.h = 30,
|
||||
|
||||
@@ -55,7 +55,7 @@ img_render_lvgl_logo_xrgb8888_map[] = {
|
||||
0xff, 0xff, 0xff, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe6, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe6, 0xf8, 0xff, 0xed, 0xed, 0xf9, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xe7, 0xe7, 0xf8, 0xff, 0xed, 0xed, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xee, 0xee, 0xef, 0xff, 0xe8, 0xe7, 0xe7, 0xff, 0xe8, 0xe7, 0xe7, 0xff, 0xe8, 0xe7, 0xe7, 0xff, 0xe8, 0xe7, 0xe7, 0xff, 0xe8, 0xe7, 0xe7, 0xff, 0xfc, 0xfb, 0xfb, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
};
|
||||
|
||||
const lv_img_dsc_t img_render_lvgl_logo_xrgb8888 = {
|
||||
const lv_image_dsc_t img_render_lvgl_logo_xrgb8888 = {
|
||||
.header.cf = LV_COLOR_FORMAT_XRGB8888,
|
||||
.header.w = 30,
|
||||
.header.h = 30,
|
||||
|
||||
@@ -331,10 +331,10 @@ static lv_obj_t * image_obj_create(lv_obj_t * parent, int32_t col, int32_t row,
|
||||
|
||||
static void image_core_cb(lv_obj_t * parent, bool recolor)
|
||||
{
|
||||
LV_IMG_DECLARE(img_render_lvgl_logo_xrgb8888);
|
||||
LV_IMG_DECLARE(img_render_lvgl_logo_rgb888);
|
||||
LV_IMG_DECLARE(img_render_lvgl_logo_rgb565);
|
||||
LV_IMG_DECLARE(img_render_lvgl_logo_argb8888);
|
||||
LV_IMAGE_DECLARE(img_render_lvgl_logo_xrgb8888);
|
||||
LV_IMAGE_DECLARE(img_render_lvgl_logo_rgb888);
|
||||
LV_IMAGE_DECLARE(img_render_lvgl_logo_rgb565);
|
||||
LV_IMAGE_DECLARE(img_render_lvgl_logo_argb8888);
|
||||
const void * srcs[] = {
|
||||
&img_render_lvgl_logo_argb8888,
|
||||
&img_render_lvgl_logo_xrgb8888,
|
||||
|
||||
@@ -146,7 +146,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
obj = lv_button_create(main_page);
|
||||
lv_obj_set_size(obj, 100, 70);
|
||||
lv_obj_set_style_bg_image_src(obj, LV_SYMBOL_DUMMY"Text from\nstyle", 0);
|
||||
lv_obj_delete_async(obj); /*Delete on next call of `lv_task_handler` (so not now)*/
|
||||
lv_obj_delete_async(obj); /*Delete on next call of `lv_timer_handler` (so not now)*/
|
||||
break;
|
||||
|
||||
case 5:
|
||||
@@ -299,7 +299,7 @@ static void obj_test_task_cb(lv_timer_t * tmr)
|
||||
obj = lv_table_create(main_page);
|
||||
lv_table_set_cell_value(obj, 0, 0, "0,0");
|
||||
lv_table_set_cell_value_fmt(obj, 3, 0, "%d,%d", 5, 0);
|
||||
lv_table_set_row_cnt(obj, 5);
|
||||
lv_table_set_row_count(obj, 5);
|
||||
lv_table_set_cell_value_fmt(obj, 1, 0, "%s", "1,0");
|
||||
lv_table_set_cell_value(obj, 1, 3, "1,3");
|
||||
break;
|
||||
|
||||
@@ -266,7 +266,7 @@ void lv_demo_vector_graphic(void)
|
||||
lv_draw_buf_t * draw_buf = lv_draw_buf_create(WIDTH, HEIGHT, LV_COLOR_FORMAT_ARGB8888, LV_STRIDE_AUTO);
|
||||
lv_draw_buf_clear(draw_buf, NULL);
|
||||
|
||||
lv_obj_t * canvas = lv_canvas_create(lv_scr_act());
|
||||
lv_obj_t * canvas = lv_canvas_create(lv_screen_active());
|
||||
lv_canvas_set_draw_buf(canvas, draw_buf);
|
||||
lv_obj_add_event_cb(canvas, delete_event_cb, LV_EVENT_DELETE, NULL);
|
||||
|
||||
|
||||
@@ -841,7 +841,7 @@ static void analytics_create(lv_obj_t * parent)
|
||||
lv_scale_section_set_style(section, LV_PART_INDICATOR, &scale3_section3_indicator_style);
|
||||
lv_scale_section_set_style(section, LV_PART_ITEMS, &scale3_section3_tick_style);
|
||||
|
||||
LV_IMG_DECLARE(img_demo_widgets_needle);
|
||||
LV_IMAGE_DECLARE(img_demo_widgets_needle);
|
||||
lv_obj_t * needle = lv_image_create(scale3);
|
||||
lv_image_set_src(needle, &img_demo_widgets_needle);
|
||||
lv_image_set_pivot(needle, 3, 4);
|
||||
|
||||
@@ -3,150 +3,319 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
v9.0.0
|
||||
~~~~~~
|
||||
`v9.1.0 <https://github.com/lvgl/lvgl/compare/v9.0.0...v9.1.0>`__ 20 March 2024
|
||||
----------------------------------------------------------------------------------------------
|
||||
|
||||
Migration guide
|
||||
^^^^^^^^^^^^^^^
|
||||
New Features
|
||||
~~~~~~~~~~~~
|
||||
|
||||
As v9 is a major version it contains API breaking changes too. Most of the conceptual changes in v9 were internal, however the API was affected some widgets reword and refactoring as well.
|
||||
- **feat(indev) Add crown support to pointer input device** `5057 <https://github.com/lvgl/lvgl/pull/5057>`__
|
||||
- **feat(test): test bin image loaded to RAM or not** `5895 <https://github.com/lvgl/lvgl/pull/5895>`__
|
||||
- **feat(script): change trace_filter default trace log file to log_file.systrace** `5900 <https://github.com/lvgl/lvgl/pull/5900>`__
|
||||
- **feat(vg_lite): automatically select path type based on opa** `5896 <https://github.com/lvgl/lvgl/pull/5896>`__
|
||||
- **feat(freertos): support Espressif's FreeRTOS flavor** `5862 <https://github.com/lvgl/lvgl/pull/5862>`__
|
||||
- **feat(tests): add freetype font stress tests** `5828 <https://github.com/lvgl/lvgl/pull/5828>`__
|
||||
- **feat(vg_lite): add stroke path support** `5831 <https://github.com/lvgl/lvgl/pull/5831>`__
|
||||
- **feat(docs): add Chinese translation (jump link)** `5839 <https://github.com/lvgl/lvgl/pull/5839>`__
|
||||
- **feat(ci): update distro to ubuntu 22.02 to fix freetype build problem** `5834 <https://github.com/lvgl/lvgl/pull/5834>`__
|
||||
- **feat(image_cache): add resize function to image cache** `5829 <https://github.com/lvgl/lvgl/pull/5829>`__
|
||||
- **feat(nuttx): add cpu idle getter** `5814 <https://github.com/lvgl/lvgl/pull/5814>`__
|
||||
- **feat(test): add multiple color formats to stride adjust test** `5690 <https://github.com/lvgl/lvgl/pull/5690>`__
|
||||
- **feat(libjpeg_turbo): add JPEG image EXIF data parsing** `5263 <https://github.com/lvgl/lvgl/pull/5263>`__
|
||||
- **feat(freetype): change the tilt of freetype fonts in italics** `5812 <https://github.com/lvgl/lvgl/pull/5812>`__
|
||||
- **feat(vg_lite): add matrix assert** `5766 <https://github.com/lvgl/lvgl/pull/5766>`__
|
||||
- **feat(vg_lite): add grad cache size config and auto release cache** `5731 <https://github.com/lvgl/lvgl/pull/5731>`__
|
||||
- **feat(draw_buf): support indexed image in draw_buf_copy** `5686 <https://github.com/lvgl/lvgl/pull/5686>`__
|
||||
- **feat(nuttx): update display driver** `5752 <https://github.com/lvgl/lvgl/pull/5752>`__
|
||||
- **feat(fs): implement littlefs lfs.h driver support** `5562 <https://github.com/lvgl/lvgl/pull/5562>`__
|
||||
- **feat(test_keyboard): add keyboard test** `5739 <https://github.com/lvgl/lvgl/pull/5739>`__
|
||||
- **feat(x11): add LV_KEYs** `5704 <https://github.com/lvgl/lvgl/pull/5704>`__
|
||||
- **feat(display): add save screenshot to file support** `5481 <https://github.com/lvgl/lvgl/pull/5481>`__
|
||||
- **feat(decoder): do not even try cache if 'no_cache' is set** `5688 <https://github.com/lvgl/lvgl/pull/5688>`__
|
||||
- **feat(event): return event dsc for later to remove** `5630 <https://github.com/lvgl/lvgl/pull/5630>`__
|
||||
- **feat(keyboard) add Home and End keys mapping** `5675 <https://github.com/lvgl/lvgl/pull/5675>`__
|
||||
- **feat(draw_buf): distinguish between lv_image_dsc_t and lv_draw_buf_t** `5496 <https://github.com/lvgl/lvgl/pull/5496>`__
|
||||
- **feat(indev): remove the PRESSED state on scroll** `5660 <https://github.com/lvgl/lvgl/pull/5660>`__
|
||||
- **feat(sysmon): show max memory usage** `5661 <https://github.com/lvgl/lvgl/pull/5661>`__
|
||||
- **feat(image_decoder): add stride warning** `5471 <https://github.com/lvgl/lvgl/pull/5471>`__
|
||||
- **feat(image, layer): add bitmap mask feature** `5545 <https://github.com/lvgl/lvgl/pull/5545>`__
|
||||
- **feat(draw-sw): add simple Helium acceleration** `5596 <https://github.com/lvgl/lvgl/pull/5596>`__
|
||||
- **feat(cache): use unified cache entry free callback** `5612 <https://github.com/lvgl/lvgl/pull/5612>`__
|
||||
- **feat(draw_buf): use draw_buf as parameter of invalidate_cache API** `5602 <https://github.com/lvgl/lvgl/pull/5602>`__
|
||||
- **feat(script): add ARGB8565 format support** `5593 <https://github.com/lvgl/lvgl/pull/5593>`__
|
||||
- **feat(vg_lite): add ARGB8565 support** `5592 <https://github.com/lvgl/lvgl/pull/5592>`__
|
||||
- **feat(vg_lite): add gpu idle flush** `5571 <https://github.com/lvgl/lvgl/pull/5571>`__
|
||||
- **feat(vg_lite_tvg): add buffer address alignment config** `5576 <https://github.com/lvgl/lvgl/pull/5576>`__
|
||||
- **feat(vg_lite/vector): add compatible processing for non-scissor support** `5572 <https://github.com/lvgl/lvgl/pull/5572>`__
|
||||
- **feat(vg_lite): remove support for RGB565A8** `5574 <https://github.com/lvgl/lvgl/pull/5574>`__
|
||||
- **feat(vg_lite_label): upgrade path quality to HIGH** `5556 <https://github.com/lvgl/lvgl/pull/5556>`__
|
||||
- **feat(font_glyph_format): refactor draw and font format into `lv_font_glyph_format_t`** `5540 <https://github.com/lvgl/lvgl/pull/5540>`__
|
||||
- **feat(vg_lite): add index format decode support** `5476 <https://github.com/lvgl/lvgl/pull/5476>`__
|
||||
- **feat(vector): add API to append arc** `5510 <https://github.com/lvgl/lvgl/pull/5510>`__
|
||||
- **feat(nuttx_image_cache): add independent image cache heap support** `5528 <https://github.com/lvgl/lvgl/pull/5528>`__
|
||||
- **feat(cache): refactor cache framework and add new APIs** `5501 <https://github.com/lvgl/lvgl/pull/5501>`__
|
||||
- **feat(drivers): add libinput/xkb driver** `5486 <https://github.com/lvgl/lvgl/pull/5486>`__
|
||||
- **feat(draw_buf): misc update** `5498 <https://github.com/lvgl/lvgl/pull/5498>`__
|
||||
- **feat(draw): add convenience methods for safely getting correct draw descriptor** `5505 <https://github.com/lvgl/lvgl/pull/5505>`__
|
||||
- **feat(profiler): add multithreading support and testcase** `5490 <https://github.com/lvgl/lvgl/pull/5490>`__
|
||||
- **feat(doc): Update display-related documentation to new API** `5489 <https://github.com/lvgl/lvgl/pull/5489>`__
|
||||
- **feat(image_cache): add image header cache drop** `5472 <https://github.com/lvgl/lvgl/pull/5472>`__
|
||||
- **feat(fbdev): add docs and allow forcing refresh** `5444 <https://github.com/lvgl/lvgl/pull/5444>`__
|
||||
- **feat(script): add tool to view bin image** `5451 <https://github.com/lvgl/lvgl/pull/5451>`__
|
||||
- **feat(vg_lite): add profiler instrumentation** `5434 <https://github.com/lvgl/lvgl/pull/5434>`__
|
||||
- **feat(draw_letter): adapt `lv_font_glyph_format_t` for draw_letter process** `3c1a765 <https://github.com/lvgl/lvgl/commit/3c1a76506e8d948d5c8e029f3467139bdddf7e16>`__
|
||||
- **feat(color): add color format ARGB8565** `86016a8 <https://github.com/lvgl/lvgl/commit/86016a819a134b2d71777406cfacb3a25d7685cc>`__
|
||||
|
||||
Performance
|
||||
~~~~~~~~~~~
|
||||
|
||||
IMPORTANT
|
||||
---------
|
||||
- **perf(draw): minor optimization on rgb565 color blending** `5603 <https://github.com/lvgl/lvgl/pull/5603>`__
|
||||
- **perf(draw): use the simpler layer clear method** `5470 <https://github.com/lvgl/lvgl/pull/5470>`__
|
||||
- **perf(vg_lite): add asynchronous rendering support** `5398 <https://github.com/lvgl/lvgl/pull/5398>`__
|
||||
|
||||
If you are updating a v8 project to v9, special care must be taken as some parts
|
||||
Fixes
|
||||
~~~~~
|
||||
|
||||
- will not result in compiler error, but LVGL might not work due to related issues
|
||||
- will result in hard to understand compiler errors
|
||||
- **fix(obj_tree): fix unintended click triggers on object deletion** `5907 <https://github.com/lvgl/lvgl/pull/5907>`__
|
||||
- **fix(monkey): add missing include** `5903 <https://github.com/lvgl/lvgl/pull/5903>`__
|
||||
- **fix(demo/vector_graphic): add missing buffer clear** `5898 <https://github.com/lvgl/lvgl/pull/5898>`__
|
||||
- **fix(image): fix the image decoder if LV_BIN_DECODER_RAM_LOAD == 0** `5892 <https://github.com/lvgl/lvgl/pull/5892>`__
|
||||
- **fix(indev): Fix scroll obj cannot be cleared when waiting until release** `5833 <https://github.com/lvgl/lvgl/pull/5833>`__
|
||||
- **fix(vglite): update NXP's VGLite implementation** `5887 <https://github.com/lvgl/lvgl/pull/5887>`__
|
||||
- **fix(imagebutton): clipped area of mid part** `5849 <https://github.com/lvgl/lvgl/pull/5849>`__
|
||||
- **fix(drm): default to XRGB8888 framebuffer** `5851 <https://github.com/lvgl/lvgl/pull/5851>`__
|
||||
- **fix(vg_lite): fix stroke path memory leak** `5883 <https://github.com/lvgl/lvgl/pull/5883>`__
|
||||
- **fix(ci): workaround ASAN error in CI with Ubuntu 22.04 image** `5867 <https://github.com/lvgl/lvgl/pull/5867>`__
|
||||
- **fix(conf): fix typo cause thorvg not enabled** `5837 <https://github.com/lvgl/lvgl/pull/5837>`__
|
||||
- **fix(indev): always save the last key** `5795 <https://github.com/lvgl/lvgl/pull/5795>`__
|
||||
- **fix(fsdrv/fatfs): fix does not detect the end of entries in fs_dir_read** `5826 <https://github.com/lvgl/lvgl/pull/5826>`__
|
||||
- **fix(layer): update the cached layer type on state change** `5801 <https://github.com/lvgl/lvgl/pull/5801>`__
|
||||
- **fix(file_explorer): fix quick access compiler error** `5783 <https://github.com/lvgl/lvgl/pull/5783>`__
|
||||
- **fix(msgbox): return the footer in lv_msgbox_get_footer** `5804 <https://github.com/lvgl/lvgl/pull/5804>`__
|
||||
- **fix(x11): fix assert on delete** `5799 <https://github.com/lvgl/lvgl/pull/5799>`__
|
||||
- **fix(demo_music): fix the previous button in the music demo is not clickable** `5808 <https://github.com/lvgl/lvgl/pull/5808>`__
|
||||
- **fix(draw): fix non antialiased rgb565a8 transformation** `5782 <https://github.com/lvgl/lvgl/pull/5782>`__
|
||||
- **fix(freetpye): fix the problem of incomplete font drawing when setting with italic** `5807 <https://github.com/lvgl/lvgl/pull/5807>`__
|
||||
- **fix(fsdrv): add missing lv_fs_littlefs_init function declaration** `5778 <https://github.com/lvgl/lvgl/pull/5778>`__
|
||||
- **fix(vg_lite):fix bug for wrong rendering in vertical or horizontal dir** `5789 <https://github.com/lvgl/lvgl/pull/5789>`__
|
||||
- **fix(env): added *.cpp glob in ESP configuration** `5761 <https://github.com/lvgl/lvgl/pull/5761>`__
|
||||
- **fix(draw): fix the invalidation of scaled areas** `5548 <https://github.com/lvgl/lvgl/pull/5548>`__
|
||||
- **fix(warning): variable set but unused.** `5757 <https://github.com/lvgl/lvgl/pull/5757>`__
|
||||
- **fix(draw): fix rgb565 with LV_BLEND_MODE_MULTIPLY** `5749 <https://github.com/lvgl/lvgl/pull/5749>`__
|
||||
- **fix(api_map_v8): add some missing functions** `5710 <https://github.com/lvgl/lvgl/pull/5710>`__
|
||||
- **fix(refr): fix ARGB8888 buffer clearing in DIRECT mode (#5741)** `5758 <https://github.com/lvgl/lvgl/pull/5758>`__
|
||||
- **fix(draw_buf): init struct member in order** `5753 <https://github.com/lvgl/lvgl/pull/5753>`__
|
||||
- **fix(refr): fix clearing the partial buffers in case of ARGB8888 format** `5741 <https://github.com/lvgl/lvgl/pull/5741>`__
|
||||
- **fix(x11): fix typo** `5742 <https://github.com/lvgl/lvgl/pull/5742>`__
|
||||
- **fix(draw_vector): check the point length of path in lv_vector_path_get_bounding** `5734 <https://github.com/lvgl/lvgl/pull/5734>`__
|
||||
- **fix(vg_lite): fix draw layer drawing is incomplete** `5729 <https://github.com/lvgl/lvgl/pull/5729>`__
|
||||
- **fix(test_span): fix an issue where img has span_1.png, but it is not in the code** `5736 <https://github.com/lvgl/lvgl/pull/5736>`__
|
||||
- **fix(vg_lite): fix drawing command accumulation** `5730 <https://github.com/lvgl/lvgl/pull/5730>`__
|
||||
- **fix(vg_lite): fix vector rendering fill dsc matrix not taking effect** `5728 <https://github.com/lvgl/lvgl/pull/5728>`__
|
||||
- **fix(stdlib): fix issues when using LVGL TLSF memory pool to manage more than 4 GiB of memory** `5720 <https://github.com/lvgl/lvgl/pull/5720>`__
|
||||
- **fix(vg_lite): remove redundant MOVE_TO operations** `5713 <https://github.com/lvgl/lvgl/pull/5713>`__
|
||||
- **fix(nuttx): fix compile warning** `5701 <https://github.com/lvgl/lvgl/pull/5701>`__
|
||||
- **fix(draw_vector): remove redundant MOVE_TO operations** `5715 <https://github.com/lvgl/lvgl/pull/5715>`__
|
||||
- **fix(draw_buf): use height as loop condition instead of checking data pointers** `5687 <https://github.com/lvgl/lvgl/pull/5687>`__
|
||||
- **fix(vg_lite): fix the loss of display accuracy of rounded rectangles** `5714 <https://github.com/lvgl/lvgl/pull/5714>`__
|
||||
- **fix(test): check compiler flag should not contain '_'** `5706 <https://github.com/lvgl/lvgl/pull/5706>`__
|
||||
- **fix(imagebutton): fix the example** `5719 <https://github.com/lvgl/lvgl/pull/5719>`__
|
||||
- **fix(drm): eliminate use of non-existent lv_api_map.h and enable smoke tests** `5694 <https://github.com/lvgl/lvgl/pull/5694>`__
|
||||
- **fix(test): enable -Wpedantic** `5676 <https://github.com/lvgl/lvgl/pull/5676>`__
|
||||
- **fix(pxp): fix issues in pxp cache management callback** `5685 <https://github.com/lvgl/lvgl/pull/5685>`__
|
||||
- **fix(windows): improve graphic performance via using high resolution tick count and timer delay implementation** `5711 <https://github.com/lvgl/lvgl/pull/5711>`__
|
||||
- **fix(windows): improve the document** `5699 <https://github.com/lvgl/lvgl/pull/5699>`__
|
||||
- **fix(example): fix lv_example_obj_2** `5697 <https://github.com/lvgl/lvgl/pull/5697>`__
|
||||
- **fix(draw): fix compiler error when LV_DRAW_SW_COMPLEX is disabled** `5695 <https://github.com/lvgl/lvgl/pull/5695>`__
|
||||
- **fix(test): allow to run test locally on mac** `5672 <https://github.com/lvgl/lvgl/pull/5672>`__
|
||||
- **fix(sdl): fix buf memleak on lv_display_delete** `5692 <https://github.com/lvgl/lvgl/pull/5692>`__
|
||||
- **fix(decoder): decoded image should always have same w,h as original image** `5689 <https://github.com/lvgl/lvgl/pull/5689>`__
|
||||
- **fix(cache): fix warnings** `5671 <https://github.com/lvgl/lvgl/pull/5671>`__
|
||||
- **fix(dave2d): follow lvgl changes** `5659 <https://github.com/lvgl/lvgl/pull/5659>`__
|
||||
- **fix(vg_lite): fix typo in decoder_close** `5683 <https://github.com/lvgl/lvgl/pull/5683>`__
|
||||
- **fix(vg_lite): use float instead of int to avoid type conversion** `5682 <https://github.com/lvgl/lvgl/pull/5682>`__
|
||||
- **fix(formatting): fix code formatting** `5673 <https://github.com/lvgl/lvgl/pull/5673>`__
|
||||
- **fix(freetype): fix build break when disable LV_USE_FS_MEMFS** `5651 <https://github.com/lvgl/lvgl/pull/5651>`__
|
||||
- **fix(array): use memmove instead of memcopy** `5656 <https://github.com/lvgl/lvgl/pull/5656>`__
|
||||
- **fix(image): fix wrong log level statement** `5655 <https://github.com/lvgl/lvgl/pull/5655>`__
|
||||
- **fix(tests): fix test_img_emoji_F617.c error include path** `5652 <https://github.com/lvgl/lvgl/pull/5652>`__
|
||||
- **fix(FreeRTOS): Stacksize calculation** `5647 <https://github.com/lvgl/lvgl/pull/5647>`__
|
||||
- **fix(benchmark): fix FPS calculation** `5646 <https://github.com/lvgl/lvgl/pull/5646>`__
|
||||
- **fix(label): consider max-width** `5644 <https://github.com/lvgl/lvgl/pull/5644>`__
|
||||
- **fix(demo): fix memory leak in vector demo** `5643 <https://github.com/lvgl/lvgl/pull/5643>`__
|
||||
- **fix(calendar): fix crash when no default is set** `5621 <https://github.com/lvgl/lvgl/pull/5621>`__
|
||||
- **fix(freetype): fix using memfs to create a FT font** `5627 <https://github.com/lvgl/lvgl/pull/5627>`__
|
||||
- **fix(indev): fix variable name in preprocessor warning** `5637 <https://github.com/lvgl/lvgl/pull/5637>`__
|
||||
- **fix(rle): avoid buffer overflow when compressed data is not in pixel unit** `5619 <https://github.com/lvgl/lvgl/pull/5619>`__
|
||||
- **fix(LVGLImage): use lv_image_dsc_t instead of lv_img_dsc_t** `5629 <https://github.com/lvgl/lvgl/pull/5629>`__
|
||||
- **fix(vg_lite): fix linear image use after free** `5618 <https://github.com/lvgl/lvgl/pull/5618>`__
|
||||
- **fix(kconfig): skip lv_conf.h by default** `5617 <https://github.com/lvgl/lvgl/pull/5617>`__
|
||||
- **fix(image): add data_size filed to all c-array images** `5608 <https://github.com/lvgl/lvgl/pull/5608>`__
|
||||
- **fix(doc): wrong code for Displays transparency** `5607 <https://github.com/lvgl/lvgl/pull/5607>`__
|
||||
- **fix(refr): take stride into consideration in partial update mode** `5583 <https://github.com/lvgl/lvgl/pull/5583>`__
|
||||
- **fix(test): fix typo related to #5559** `5594 <https://github.com/lvgl/lvgl/pull/5594>`__
|
||||
- **fix(sysmon): fix build error when LV_USE_PERF_MONITOR_LOG_MODE is enabled** `5597 <https://github.com/lvgl/lvgl/pull/5597>`__
|
||||
- **fix(sdl): use the new draw buffer structure in the layers** `5578 <https://github.com/lvgl/lvgl/pull/5578>`__
|
||||
- **fix(benchmark): improve the benchmark** `5558 <https://github.com/lvgl/lvgl/pull/5558>`__
|
||||
- **fix(ffmpeg): add missing stride setting to ffmpeg image** `5580 <https://github.com/lvgl/lvgl/pull/5580>`__
|
||||
- **fix(sysmon): fix build break** `5585 <https://github.com/lvgl/lvgl/pull/5585>`__
|
||||
- **fix(tileview): on size change auto. update the pos. of the tiles** `5577 <https://github.com/lvgl/lvgl/pull/5577>`__
|
||||
- **fix(sdl): fix keyboard handling** `5575 <https://github.com/lvgl/lvgl/pull/5575>`__
|
||||
- **fix(lv_conf): minor typo fixes in lv_conf_template.h** `5570 <https://github.com/lvgl/lvgl/pull/5570>`__
|
||||
- **fix(vg_lite): fix arc img not move to arc center** `5554 <https://github.com/lvgl/lvgl/pull/5554>`__
|
||||
- **fix(vg_lite): add grad image buffer check** `5552 <https://github.com/lvgl/lvgl/pull/5552>`__
|
||||
- **fix(obj): fix cover change with semi transparent gradients** `5531 <https://github.com/lvgl/lvgl/pull/5531>`__
|
||||
- **fix(vg_lite): path matrix should use main vector matrix** `5538 <https://github.com/lvgl/lvgl/pull/5538>`__
|
||||
- **fix(vg_lite): fix LV_RADIUS_CIRCLE not round** `5543 <https://github.com/lvgl/lvgl/pull/5543>`__
|
||||
- **fix(vg_lite): add config to disable draw shadow** `5534 <https://github.com/lvgl/lvgl/pull/5534>`__
|
||||
- **fix(neon): update stride from px to bytes** `5526 <https://github.com/lvgl/lvgl/pull/5526>`__
|
||||
- **fix(script): Remove TRUECOLOR for LVGLImage.py** `5523 <https://github.com/lvgl/lvgl/pull/5523>`__
|
||||
- **fix(sysmon): support starting LVGL without having a display** `5518 <https://github.com/lvgl/lvgl/pull/5518>`__
|
||||
- **fix(chart): set the series id correctly** `5482 <https://github.com/lvgl/lvgl/pull/5482>`__
|
||||
- **fix(vg_lite): fix clip corner image display error** `5517 <https://github.com/lvgl/lvgl/pull/5517>`__
|
||||
- **fix(arduino): update example LVGL_Arduino.ino for v9** `5499 <https://github.com/lvgl/lvgl/pull/5499>`__
|
||||
- **fix(fb): set DPI to correctly** `5508 <https://github.com/lvgl/lvgl/pull/5508>`__
|
||||
- **fix(layer): Update calculation for overlay used memory** `5504 <https://github.com/lvgl/lvgl/pull/5504>`__
|
||||
- **fix(bin_decoder): fix potential free garbage address** `5509 <https://github.com/lvgl/lvgl/pull/5509>`__
|
||||
- **fix(decoder): treat ALLOCATED c-array image as draw buffer** `5483 <https://github.com/lvgl/lvgl/pull/5483>`__
|
||||
- **fix(vg_lite_tvg): fix use after free when change target canvas** `5497 <https://github.com/lvgl/lvgl/pull/5497>`__
|
||||
- **fix(keyboard): in the example set Arabic font if enabled** `5457 <https://github.com/lvgl/lvgl/pull/5457>`__
|
||||
- **fix(codespaces): fix the issue where lv_conf.h in codespaces is not enable** `5484 <https://github.com/lvgl/lvgl/pull/5484>`__
|
||||
- **fix(textarea): fix accepted chars issue on big endian systems** `5479 <https://github.com/lvgl/lvgl/pull/5479>`__
|
||||
- **fix(draw_line): fix the issue where dash_dap equals 1 and cannot display properly when the line is a horizontal line** `5473 <https://github.com/lvgl/lvgl/pull/5473>`__
|
||||
- **fix: removed LV_ATTRIBUTE_FAST_MEM function attribute from prototypes** `5467 <https://github.com/lvgl/lvgl/pull/5467>`__
|
||||
- **fix(arm2d): apply a temporary patch to arm-2d acceleration** `5466 <https://github.com/lvgl/lvgl/pull/5466>`__
|
||||
- **fix(snapshot): update the layout of the component before the screenshot** `5475 <https://github.com/lvgl/lvgl/pull/5475>`__
|
||||
- **fix(vg_lite): add missing 24bit color support check** `5469 <https://github.com/lvgl/lvgl/pull/5469>`__
|
||||
- **fix(display): set last_activity_time to the current time in lv_display** `5463 <https://github.com/lvgl/lvgl/pull/5463>`__
|
||||
- **fix(observer): fixed lv_subject_remove_all_obj** `5464 <https://github.com/lvgl/lvgl/pull/5464>`__
|
||||
- **fix(image_decoder): fix decoder not close** `5437 <https://github.com/lvgl/lvgl/pull/5437>`__
|
||||
- **fix(nuttx): fix build break** `5440 <https://github.com/lvgl/lvgl/pull/5440>`__
|
||||
- **fix: fix warnings with -flto on GCC 11** `5433 <https://github.com/lvgl/lvgl/pull/5433>`__
|
||||
- **fix(assert): add new macro to format assert message** `5453 <https://github.com/lvgl/lvgl/pull/5453>`__
|
||||
- **fix(decoder): if draw unit supports indexed image, don't add to cache** `5438 <https://github.com/lvgl/lvgl/pull/5438>`__
|
||||
- **fix(bar): mask the background to fix it on value adjustment** `5426 <https://github.com/lvgl/lvgl/pull/5426>`__
|
||||
- **fix(lvgl.mk): fix vg_lite_tvg.cpp not compiling** `5435 <https://github.com/lvgl/lvgl/pull/5435>`__
|
||||
- **fix(ci): use the dev branch of PlatformIO** `5432 <https://github.com/lvgl/lvgl/pull/5432>`__
|
||||
- **fix(vector) : add path bounding and matrix transform functions.** `5389 <https://github.com/lvgl/lvgl/pull/5389>`__
|
||||
- **fix(warning): fix shadown variable warning** `47750f1 <https://github.com/lvgl/lvgl/commit/47750f1b866e5ea0617035fd208c727878bebc44>`__
|
||||
- **fix(thorvg): link lvgl_thorvgl with lvgl** `9b09182 <https://github.com/lvgl/lvgl/commit/9b09182fc76032ef0bc8a2d930fa1cf4fd081431>`__
|
||||
- **fix(warning): error: no newline at end of file** `9a6a194 <https://github.com/lvgl/lvgl/commit/9a6a194680db9ea12f59e94eab6e812cb28d504f>`__
|
||||
- **fix(color): treat RGB565A8 bpp same as RGB565** `52426ec <https://github.com/lvgl/lvgl/commit/52426ec1919274e282889129f00e00a9a2a9ce60>`__
|
||||
- **fix(warning): error: a function declaration without a prototype is deprecated in all versions of C** `c81f654 <https://github.com/lvgl/lvgl/commit/c81f654026501ba37d8df2d8ec02c58bd14eb1c3>`__
|
||||
|
||||
So pay extra attention to these:
|
||||
Examples
|
||||
~~~~~~~~
|
||||
|
||||
- :cpp:func:`lv_display_set_buffers(display, buf1, buf2, buf_size_byte, mode)` is more or less the equivalent of ``lv_disp_draw_buf_init(&draw_buf_dsc, buf1, buf2, buf_size_px)`` from v8, however in **v9 the buffer size is set in bytes**.
|
||||
- In v9 ``lv_color_t`` is always RGB888 regardless of ``LV_COLOR_DEPTH``.
|
||||
- ``lv_conf.h`` has been changed a lot, so don't forget to update it from ``lv_conf_template.h``
|
||||
- Be sure ``<stdint.h>`` is **not** included in ``lv_conf.h``. In v9 we have some assembly parts for even better performance and a random include there would mess up the assembly part.
|
||||
- The online image converter in not updated yet. Until that use `LVGLImage.py <https://github.com/lvgl/lvgl/blob/master/scripts/LVGLImage.py>`__ .
|
||||
- Run time dithering is rendering due its complexity and lack of GPU support. Smaller dithered and tiled images can be used as background images as a replacement.
|
||||
- STM32's DMA2D (Chrom-ART) support is removed for now. It will be added again when an official partnership starts with ST too.
|
||||
- SJPG was removed as the original TJPGD support decoding tile-by-tile. (typically a tile is 8x8 pixels)
|
||||
- ``LV_COLOR_DEPTH 8`` is not supported yet. In v8 it meant RGB332, in v9 it will be used for L8.
|
||||
Docs
|
||||
~~~~
|
||||
|
||||
Main new features
|
||||
-----------------
|
||||
- **docs: update README** `5841 <https://github.com/lvgl/lvgl/pull/5841>`__
|
||||
- **docs: make it easy to add more other translations** `5874 <https://github.com/lvgl/lvgl/pull/5874>`__
|
||||
- **docs: ignore the READMEs when building the docs** `5840 <https://github.com/lvgl/lvgl/pull/5840>`__
|
||||
- **docs(st7789): updated the docs + added code example and step-by-step guide for STM32** `5511 <https://github.com/lvgl/lvgl/pull/5511>`__
|
||||
- **docs(arduino): update tick setup** `5832 <https://github.com/lvgl/lvgl/pull/5832>`__
|
||||
- **docs(display): use lv_display_delete_refr_timer to delete display timer** `5835 <https://github.com/lvgl/lvgl/pull/5835>`__
|
||||
- **docs(lv_conf): show how to include something in lv_conf.h** `5740 <https://github.com/lvgl/lvgl/pull/5740>`__
|
||||
- **docs(tick): simplify and promote lv_tick_set_cb** `5781 <https://github.com/lvgl/lvgl/pull/5781>`__
|
||||
- **docs(style): output the style properties to style-props.rst** `5802 <https://github.com/lvgl/lvgl/pull/5802>`__
|
||||
- **docs(changelog): mention that LV_COLOR_DEPTH 8 is not supported yet** `5796 <https://github.com/lvgl/lvgl/pull/5796>`__
|
||||
- **docs(image): update align to inner_align** `5721 <https://github.com/lvgl/lvgl/pull/5721>`__
|
||||
- **docs(README_Zh): remove mentions of SquareLine Studio** `5640 <https://github.com/lvgl/lvgl/pull/5640>`__
|
||||
- **docs(profiler): fix my_get_cpu_cb implementation** `5641 <https://github.com/lvgl/lvgl/pull/5641>`__
|
||||
- **docs(demos): remove inconsistent READMEs** `5626 <https://github.com/lvgl/lvgl/pull/5626>`__
|
||||
- **docs(README): remove mentions of SquareLine Studio** `5638 <https://github.com/lvgl/lvgl/pull/5638>`__
|
||||
- **docs(changelog): mention more features removed in v9** `5632 <https://github.com/lvgl/lvgl/pull/5632>`__
|
||||
- **docs(micropython): update MicroPython examples in documentation** `5622 <https://github.com/lvgl/lvgl/pull/5622>`__
|
||||
- **docs(contributing): fix links** `5615 <https://github.com/lvgl/lvgl/pull/5615>`__
|
||||
- **docs(porting): add missing colon in porting docs** `5613 <https://github.com/lvgl/lvgl/pull/5613>`__
|
||||
- **docs(contributing): update the feature development workflow** `5601 <https://github.com/lvgl/lvgl/pull/5601>`__
|
||||
- **docs(tabview): fix tabview doc** `5588 <https://github.com/lvgl/lvgl/pull/5588>`__
|
||||
- **docs(indev): Document the relation between LV_INDEV_MODE_EVENT and data->continue_reading** `5586 <https://github.com/lvgl/lvgl/pull/5586>`__
|
||||
- **docs(pc-simulator): Document how to set up SDL manually, without IDE** `5563 <https://github.com/lvgl/lvgl/pull/5563>`__
|
||||
- **docs(disp): document lv_refr_now** `5480 <https://github.com/lvgl/lvgl/pull/5480>`__
|
||||
- **docs(disp): Fix pointer cast in flush_cb example** `5439 <https://github.com/lvgl/lvgl/pull/5439>`__
|
||||
- **docs(font): about "base dir"** `5429 <https://github.com/lvgl/lvgl/pull/5429>`__
|
||||
|
||||
- Run time display color format adjustment with RGB888 support
|
||||
- Built-in support ``pthread``, ``FreeRTOS`` and other (RT)OSes which are used during rendering
|
||||
- Built-in support LVGL's, C library, and other ``stdlib``s
|
||||
- Better parallel rendering architecture. See the details :ref:`here <porting_draw>`
|
||||
- Built in display and touch driver: SDL, Linux Frame buffer, NuttX LCD and touch drivers, ST7789 and ILI9341 driver are available and more will come soon
|
||||
- :ref:`observer` allows to bind data to UI elements and create a uniform and easy to maintain API
|
||||
- GitHub CodeSpace integration makes possible to run LVGL in an Online VSCode editor with 3 click. See more `here <https://blog.lvgl.io/2023-04-13/monthly-newsletter>`__
|
||||
- Add vector graphics support via ThorVG. It can be used to draw vector graphics to a `Canvas <https://github.com/lvgl/lvgl/blob/master/examples/widgets/canvas/lv_example_canvas_8.c>`__
|
||||
- :ref:`lv_image` supports aligning, stretching or tiling the image source if the widget is larger or smaller.
|
||||
CI and tests
|
||||
~~~~~~~~~~~~
|
||||
|
||||
General API changes
|
||||
-------------------
|
||||
|
||||
|
||||
Although `lv_api_map.h <https://github.com/lvgl/lvgl/blob/master/src/lv_api_map.h>`__ address most of the refactoring we encourage you to use the latest API directly.
|
||||
|
||||
- ``lv_disp_...`` is renamed to ``lv_display_...``
|
||||
- ``btn_...`` is renamed to ``button_...``
|
||||
- ``btnmatrix_...`` is renamed to ``buttonmatrix_...``
|
||||
- ``img_...`` is renamed to ``image_...``
|
||||
- ``zoom`` is renamed to ``scale``
|
||||
- ``angle`` is renamed to ``rotation``
|
||||
- ``scr`` is renamed to ``screen``
|
||||
- ``act`` is renamed to ``active``
|
||||
- ``del`` is renamed to ``delete``
|
||||
- ``col`` is renamed to ``column``
|
||||
- ``lv_obj_clear_flag`` is renamed to ``lv_obj_remove_flag``
|
||||
- ``lv_obj_clear_state`` is renamed to ``lv_obj_remove_state``
|
||||
- ``lv_coord_t`` was removed and replaced by ``int32_t``
|
||||
|
||||
New color format management
|
||||
---------------------------
|
||||
|
||||
- ``LV_IMG_CF_...`` was replaced by ``LV_COLOR_FORMAT_...``
|
||||
- ``LV_COLOR_DEPTH 24`` is supported for RGB888 rendering
|
||||
- ``lv_color_t`` always means RGB888
|
||||
|
||||
Display API
|
||||
-----------
|
||||
|
||||
- ``lv_disp_drv_t`` and ``lv_disp_draw_buf_t`` was removed
|
||||
- To create a display and set it up:
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_display_t * disp = lv_display_create(hor_res, ver_res)
|
||||
lv_display_set_flush_cb(disp, flush_cb);
|
||||
lv_display_set_buffers(disp, buf1, buf2, buf_size_in_bytes, mode);
|
||||
|
||||
- Note that now **buf size is in bytes and not pixels**
|
||||
- ``mode`` can be:
|
||||
|
||||
- ``LV_DISPLAY_RENDER_MODE_PARTIAL`` This way the buffers can be
|
||||
smaller then the display to save RAM. At least 1/10 screen sized
|
||||
buffer(s) are recommended.
|
||||
- ``LV_DISPLAY_RENDER_MODE_DIRECT`` The buffer(s) has to be screen
|
||||
sized and LVGL will render into the correct location of the
|
||||
buffer. This way the buffer always contain the whole image. With 2
|
||||
buffers the buffers’ content are kept in sync automatically. (Old
|
||||
v7 behavior)
|
||||
- ``LV_DISPLAY_RENDER_MODE_FULL`` Just always redraw the whole
|
||||
screen. With 2 buffers is a standard double buffering.
|
||||
|
||||
- Similarly to the widgets, now you can attach events to the display
|
||||
too, using ``lv_display_add_event()``
|
||||
- ``monitor_cb`` is removed and ``LV_EVENT_RENDER_READY`` event is
|
||||
fired instead
|
||||
- Instead of having display background color and image,
|
||||
``lv_layer_bottom()`` is added where any color can be set or any
|
||||
widget can be created.
|
||||
- The target color format can be adjusted in the display in runtime by calling
|
||||
``lv_display_set_color_format(disp, LV_COLOR_FORMAT_...)``
|
||||
- ``LV_COLOR_16_SWAP`` is removed and ``lv_draw_sw_rgb565_swap()`` can be called manually
|
||||
in the ``flush_cb`` if needed to swap the in-place.
|
||||
- ``disp_drv.scr_transp`` was removed and
|
||||
``lv_display_set_color_format(disp, LV_COLOR_FORMAT_NATIVE_ALPHA)``
|
||||
can be used instead
|
||||
- ``set_px_cb`` is removed. You can can convert the rendered image in the ``flush_cb``.
|
||||
- For more details check out the docs
|
||||
`here /porting/display>`__ and
|
||||
`here /overview/display>`__.
|
||||
|
||||
Indev API
|
||||
---------
|
||||
|
||||
- Similarly to the display ``lv_indev_drv_t`` was removed and an input
|
||||
device can be created like this:
|
||||
- Similarly to the widgets, now you can attach events to the indevs
|
||||
too, using ``lv_indev_add_event()``
|
||||
- The ``feedback_cb`` was removed, instead ``LV_EVENT_PRESSED/CLICKED/etc``
|
||||
events are sent to the input device
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_indev_t * indev = lv_indev_create();
|
||||
lv_indev_set_type(indev, LV_INDEV_TYPE_...);
|
||||
lv_indev_set_read_cb(indev, read_cb);
|
||||
- **test(conf): update conf and remove deprecated configs** `5881 <https://github.com/lvgl/lvgl/pull/5881>`__
|
||||
- **tests(freetype): refactor code structure** `5871 <https://github.com/lvgl/lvgl/pull/5871>`__
|
||||
- **ci(micropython): catch event failure in the test** `5787 <https://github.com/lvgl/lvgl/pull/5787>`__
|
||||
- **ci(ref_imgs): automatically generate the missing reference image folders** `5696 <https://github.com/lvgl/lvgl/pull/5696>`__
|
||||
- **ci(assets): add LV_BUILD_TEST guard** `5616 <https://github.com/lvgl/lvgl/pull/5616>`__
|
||||
- **ci(codecov): disable CodeCov** `5623 <https://github.com/lvgl/lvgl/pull/5623>`__
|
||||
- **test(asset): add guard to test_img_emoji_F617** `5559 <https://github.com/lvgl/lvgl/pull/5559>`__
|
||||
- **ci(micropython): use the master branch** `5460 <https://github.com/lvgl/lvgl/pull/5460>`__
|
||||
- **test(snapshot): add testcase for #5475** `5478 <https://github.com/lvgl/lvgl/pull/5478>`__
|
||||
|
||||
Others
|
||||
~~~~~~
|
||||
|
||||
- ``lv_msg`` is removed and replaced by
|
||||
`lv_observer <https://docs.lvgl.io/master/others/observer.html>`__
|
||||
- ``lv_chart`` ticks support was removed,
|
||||
`lv_scale <https://docs.lvgl.io/master/widgets/scale.html>`__ can be
|
||||
used instead
|
||||
- ``lv_msgbox`` is update to be more flexible. It uses normal button instead of button matrix
|
||||
- ``lv_tabview`` was updated to user real button instead of a button matrix
|
||||
- **chore(cmsis-pack): prepare for v9.1.0** `5917 <https://github.com/lvgl/lvgl/pull/5917>`__
|
||||
- **chore: fix header files include recursion** `5844 <https://github.com/lvgl/lvgl/pull/5844>`__
|
||||
- **chore(group): avoid null pointer access** `5863 <https://github.com/lvgl/lvgl/pull/5863>`__
|
||||
- **refactor(conf): rename LV_DRAW_SW_LAYER_SIMPLE_BUF_SIZE to LV_DRAW_LAYER_SIMPLE_BUF_SIZE** `5798 <https://github.com/lvgl/lvgl/pull/5798>`__
|
||||
- **chore(freetype): remove unused codes** `5885 <https://github.com/lvgl/lvgl/pull/5885>`__
|
||||
- **chore: fix compile time warnings** `5872 <https://github.com/lvgl/lvgl/pull/5872>`__
|
||||
- **adds `extern "C"` to the header files that were missing it.** `5857 <https://github.com/lvgl/lvgl/pull/5857>`__
|
||||
- **chore(stdlib): remove duplicate function declaration** `5845 <https://github.com/lvgl/lvgl/pull/5845>`__
|
||||
- **chore(benchmark): add warning for probably low memory** `5797 <https://github.com/lvgl/lvgl/pull/5797>`__
|
||||
- **chore(group): add assertion to avoid null pointer access** `5769 <https://github.com/lvgl/lvgl/pull/5769>`__
|
||||
- **refact(Kconfig): update as per lv_conf_template.h** `5780 <https://github.com/lvgl/lvgl/pull/5780>`__
|
||||
- **Fix the compilation error problem of lvgl9.x on rtthread** `5794 <https://github.com/lvgl/lvgl/pull/5794>`__
|
||||
- **refact(vg_lite): abstract common pending release logic** `5756 <https://github.com/lvgl/lvgl/pull/5756>`__
|
||||
- **doc(stm32): fix typo** `5772 <https://github.com/lvgl/lvgl/pull/5772>`__
|
||||
- **doc(cache): add doc strings for cache APIs** `5718 <https://github.com/lvgl/lvgl/pull/5718>`__
|
||||
- **chore(docs): fix typo** `5738 <https://github.com/lvgl/lvgl/pull/5738>`__
|
||||
- **chore(font): remove unused defines** `5716 <https://github.com/lvgl/lvgl/pull/5716>`__
|
||||
- **chore: add stride information in the image resource file** `5653 <https://github.com/lvgl/lvgl/pull/5653>`__
|
||||
- **chore(draw_buf): remove unnecessary info logs** `5634 <https://github.com/lvgl/lvgl/pull/5634>`__
|
||||
- **chore(cmsis-pack): catchup update** `5611 <https://github.com/lvgl/lvgl/pull/5611>`__
|
||||
- **More chore work in indev files** `5604 <https://github.com/lvgl/lvgl/pull/5604>`__
|
||||
- **Stride adjust in place** `5423 <https://github.com/lvgl/lvgl/pull/5423>`__
|
||||
- **chore(conf): use EXTERNAL and INTERNAL macro to config libs** `5046 <https://github.com/lvgl/lvgl/pull/5046>`__
|
||||
- **chore(vg_lite): use pointer to access matrix element** `5591 <https://github.com/lvgl/lvgl/pull/5591>`__
|
||||
- **refactor(image): rename align to inner_align** `5560 <https://github.com/lvgl/lvgl/pull/5560>`__
|
||||
- **chore(deps): bump codecov/codecov-action from 3 to 4** `5567 <https://github.com/lvgl/lvgl/pull/5567>`__
|
||||
- **chore(deps): bump carlosperate/arm-none-eabi-gcc-action from 1.8.0 to 1.8.1** `5565 <https://github.com/lvgl/lvgl/pull/5565>`__
|
||||
- **chore(deps): bump mymindstorm/setup-emsdk from 13 to 14** `5566 <https://github.com/lvgl/lvgl/pull/5566>`__
|
||||
- **chore(deps): bump actions/cache from 3 to 4** `5568 <https://github.com/lvgl/lvgl/pull/5568>`__
|
||||
- **chore(deps): bump uraimo/run-on-arch-action from 2.6.0 to 2.7.1** `5569 <https://github.com/lvgl/lvgl/pull/5569>`__
|
||||
- **optionally install demos and libs as well** `5387 <https://github.com/lvgl/lvgl/pull/5387>`__
|
||||
- **chore(arc): fix typo** `5553 <https://github.com/lvgl/lvgl/pull/5553>`__
|
||||
- **Revert "feat(font_glyph_format): refactor draw and font format into `lv_font_glyph_format_t`"** `5550 <https://github.com/lvgl/lvgl/pull/5550>`__
|
||||
- **chore(thorvg): fix warning** `5535 <https://github.com/lvgl/lvgl/pull/5535>`__
|
||||
- **refactor(snapshot): use draw buffer interface** `5487 <https://github.com/lvgl/lvgl/pull/5487>`__
|
||||
- **chore(vg_lite): fix typo** `5525 <https://github.com/lvgl/lvgl/pull/5525>`__
|
||||
- **demo(music): add png assets** `5520 <https://github.com/lvgl/lvgl/pull/5520>`__
|
||||
- **chore(indev): Cleanup before working in double and triple click support** `5512 <https://github.com/lvgl/lvgl/pull/5512>`__
|
||||
- **chore(demos): Remove unused definitions** `5506 <https://github.com/lvgl/lvgl/pull/5506>`__
|
||||
- **chore(obj_draw): remove duplicate invalidate** `5503 <https://github.com/lvgl/lvgl/pull/5503>`__
|
||||
- **chore(widgets): add parentheses to MY_CLASS definition** `5485 <https://github.com/lvgl/lvgl/pull/5485>`__
|
||||
- **chore(draw-sw-transform): remove duplicated code** `5488 <https://github.com/lvgl/lvgl/pull/5488>`__
|
||||
- **chore(README): Fixed #5491 Typo** `5492 <https://github.com/lvgl/lvgl/pull/5492>`__
|
||||
- **chore(vg_lite): remove 64-bytes alignment requirement** `5477 <https://github.com/lvgl/lvgl/pull/5477>`__
|
||||
- **chore(refr): fix typo** `5474 <https://github.com/lvgl/lvgl/pull/5474>`__
|
||||
- **chore(array): use array_front and use it like an array** `5448 <https://github.com/lvgl/lvgl/pull/5448>`__
|
||||
- **chore(cache): only cache header info for file type of image** `5455 <https://github.com/lvgl/lvgl/pull/5455>`__
|
||||
- **refactor(indev_scroll): refactor code** `5456 <https://github.com/lvgl/lvgl/pull/5456>`__
|
||||
- **chore(draw_buf): add header magic to draw buff** `5449 <https://github.com/lvgl/lvgl/pull/5449>`__
|
||||
- **chore(Kconfig): add missing profiler trace buffer size config** `5436 <https://github.com/lvgl/lvgl/pull/5436>`__
|
||||
- **chore(libpng): fix warning** `5431 <https://github.com/lvgl/lvgl/pull/5431>`__
|
||||
|
||||
Others
|
||||
~~~~~~
|
||||
|
||||
|
||||
v8.3
|
||||
~~~~
|
||||
- **refactor(freetype): refactor freetype params** `0c84cc0 <https://github.com/lvgl/lvgl/commit/0c84cc0b3b9b1ea37bd6aa5300e91eee0f2feb98>`__
|
||||
- **refactor(freetype): refactor glyph_index acquire method** `0b3016c <https://github.com/lvgl/lvgl/commit/0b3016c0e5b5d57141220c030c0aadd9d9c3387e>`__
|
||||
- **chore(README): Fixed #5491 Typo (#5492)** `9c025d3 <https://github.com/lvgl/lvgl/commit/9c025d357f358c281db441a96a27ce2a01434a8d>`__
|
||||
|
||||
For Other v8.3.x releases visit the `Changelog in the release/v8.3 branch <https://github.com/lvgl/lvgl/blob/release/v8.3/docs/CHANGELOG.md>`__ .
|
||||
|
||||
v9.0
|
||||
----
|
||||
|
||||
For Other v9.0.x releases visit the `Changelog in the release/v9.0 branch <https://github.com/lvgl/lvgl/blob/release/v9.0/docs/CHANGELOG.rst>`__ .
|
||||
|
||||
|
||||
@@ -190,7 +190,7 @@ C code
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * btn = lv_btn_create(lv_scr_act()); /*Add a button to the current screen*/
|
||||
lv_obj_t * btn = lv_button_create(lv_screen_active()); /*Add a button to the current screen*/
|
||||
lv_obj_center(btn); /*Set its position*/
|
||||
lv_obj_set_size(btn, 100, 50); /*Set its size*/
|
||||
lv_obj_add_event(btn, btn_event_cb, LV_EVENT_CLICKED, NULL); /*Assign a callback to the button*/
|
||||
@@ -267,25 +267,25 @@ C code
|
||||
.. code:: c
|
||||
|
||||
|
||||
lv_obj_set_flex_flow(lv_scr_act(), LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_flex_align(lv_scr_act(), LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER);
|
||||
lv_obj_set_flex_flow(lv_screen_active(), LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_flex_align(lv_screen_active(), LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER);
|
||||
|
||||
lv_obj_t * cb;
|
||||
cb = lv_checkbox_create(lv_scr_act());
|
||||
cb = lv_checkbox_create(lv_screen_active());
|
||||
lv_checkbox_set_text(cb, "Apple");
|
||||
lv_obj_add_event(cb, event_handler, LV_EVENT_ALL, NULL);
|
||||
|
||||
cb = lv_checkbox_create(lv_scr_act());
|
||||
cb = lv_checkbox_create(lv_screen_active());
|
||||
lv_checkbox_set_text(cb, "Banana");
|
||||
lv_obj_add_state(cb, LV_STATE_CHECKED);
|
||||
lv_obj_add_event(cb, event_handler, LV_EVENT_ALL, NULL);
|
||||
|
||||
cb = lv_checkbox_create(lv_scr_act());
|
||||
cb = lv_checkbox_create(lv_screen_active());
|
||||
lv_checkbox_set_text(cb, "Lemon");
|
||||
lv_obj_add_state(cb, LV_STATE_DISABLED);
|
||||
lv_obj_add_event(cb, event_handler, LV_EVENT_ALL, NULL);
|
||||
|
||||
cb = lv_checkbox_create(lv_scr_act());
|
||||
cb = lv_checkbox_create(lv_screen_active());
|
||||
lv_obj_add_state(cb, LV_STATE_CHECKED | LV_STATE_DISABLED);
|
||||
lv_checkbox_set_text(cb, "Melon\nand a new line");
|
||||
lv_obj_add_event(cb, event_handler, LV_EVENT_ALL, NULL);
|
||||
@@ -372,7 +372,7 @@ C code
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * slider = lv_slider_create(lv_scr_act());
|
||||
lv_obj_t * slider = lv_slider_create(lv_screen_active());
|
||||
lv_slider_set_value(slider, 70, LV_ANIM_OFF);
|
||||
lv_obj_set_size(slider, 300, 20);
|
||||
lv_obj_center(slider);
|
||||
@@ -486,20 +486,20 @@ C code
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * ltr_label = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * ltr_label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(ltr_label, "In modern terminology, a microcontroller is similar to a system on a chip (SoC).");
|
||||
lv_obj_set_style_text_font(ltr_label, &lv_font_montserrat_16, 0);
|
||||
lv_obj_set_width(ltr_label, 310);
|
||||
lv_obj_align(ltr_label, LV_ALIGN_TOP_LEFT, 5, 5);
|
||||
|
||||
lv_obj_t * rtl_label = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * rtl_label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(rtl_label,"מעבד, או בשמו המלא יחידת עיבוד מרכזית (באנגלית: CPU - Central Processing Unit).");
|
||||
lv_obj_set_style_base_dir(rtl_label, LV_BASE_DIR_RTL, 0);
|
||||
lv_obj_set_style_text_font(rtl_label, &lv_font_dejavu_16_persian_hebrew, 0);
|
||||
lv_obj_set_width(rtl_label, 310);
|
||||
lv_obj_align(rtl_label, LV_ALIGN_LEFT_MID, 5, 0);
|
||||
|
||||
lv_obj_t * cz_label = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * cz_label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(cz_label,
|
||||
"嵌入式系统(Embedded System),\n是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。");
|
||||
lv_obj_set_style_text_font(cz_label, &lv_font_simsun_16_cjk, 0);
|
||||
|
||||
@@ -239,7 +239,7 @@ Código C
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * btn = lv_btn_create(lv_scr_act()); /* Adiciona o botão a tela atual */
|
||||
lv_obj_t * btn = lv_button_create(lv_screen_active()); /* Adiciona o botão a tela atual */
|
||||
lv_obj_center(btn); /* Define a posição do botão */
|
||||
lv_obj_set_size(btn, 100, 50); /* Define o tamanho do botão */
|
||||
lv_obj_add_event(btn, btn_event_cb, LV_EVENT_CLICKED, NULL); /* Atribui um retorno de chamada (callback) ao botão */
|
||||
@@ -316,25 +316,25 @@ Código em C
|
||||
.. code:: c
|
||||
|
||||
|
||||
lv_obj_set_flex_flow(lv_scr_act(), LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_flex_align(lv_scr_act(), LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER);
|
||||
lv_obj_set_flex_flow(lv_screen_active(), LV_FLEX_FLOW_COLUMN);
|
||||
lv_obj_set_flex_align(lv_screen_active(), LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER);
|
||||
|
||||
lv_obj_t * cb;
|
||||
cb = lv_checkbox_create(lv_scr_act());
|
||||
cb = lv_checkbox_create(lv_screen_active());
|
||||
lv_checkbox_set_text(cb, "Maça");
|
||||
lv_obj_add_event(cb, event_handler, LV_EVENT_ALL, NULL);
|
||||
|
||||
cb = lv_checkbox_create(lv_scr_act());
|
||||
cb = lv_checkbox_create(lv_screen_active());
|
||||
lv_checkbox_set_text(cb, "Banana");
|
||||
lv_obj_add_state(cb, LV_STATE_CHECKED);
|
||||
lv_obj_add_event(cb, event_handler, LV_EVENT_ALL, NULL);
|
||||
|
||||
cb = lv_checkbox_create(lv_scr_act());
|
||||
cb = lv_checkbox_create(lv_screen_active());
|
||||
lv_checkbox_set_text(cb, "Limão");
|
||||
lv_obj_add_state(cb, LV_STATE_DISABLED);
|
||||
lv_obj_add_event(cb, event_handler, LV_EVENT_ALL, NULL);
|
||||
|
||||
cb = lv_checkbox_create(lv_scr_act());
|
||||
cb = lv_checkbox_create(lv_screen_active());
|
||||
lv_obj_add_state(cb, LV_STATE_CHECKED | LV_STATE_DISABLED);
|
||||
lv_checkbox_set_text(cb, "Melão\ne uma nova linha");
|
||||
lv_obj_add_event(cb, event_handler, LV_EVENT_ALL, NULL);
|
||||
@@ -421,7 +421,7 @@ Código C
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * slider = lv_slider_create(lv_scr_act());
|
||||
lv_obj_t * slider = lv_slider_create(lv_screen_active());
|
||||
lv_slider_set_value(slider, 70, LV_ANIM_OFF);
|
||||
lv_obj_set_size(slider, 300, 20);
|
||||
lv_obj_center(slider);
|
||||
@@ -535,20 +535,20 @@ Código C
|
||||
|
||||
.. code:: c
|
||||
|
||||
lv_obj_t * ltr_label = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * ltr_label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(ltr_label, "In modern terminology, a microcontroller is similar to a system on a chip (SoC).");
|
||||
lv_obj_set_style_text_font(ltr_label, &lv_font_montserrat_16, 0);
|
||||
lv_obj_set_width(ltr_label, 310);
|
||||
lv_obj_align(ltr_label, LV_ALIGN_TOP_LEFT, 5, 5);
|
||||
|
||||
lv_obj_t * rtl_label = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * rtl_label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(rtl_label,"מעבד, או בשמו המלא יחידת עיבוד מרכזית (באנגלית: CPU - Central Processing Unit).");
|
||||
lv_obj_set_style_base_dir(rtl_label, LV_BASE_DIR_RTL, 0);
|
||||
lv_obj_set_style_text_font(rtl_label, &lv_font_dejavu_16_persian_hebrew, 0);
|
||||
lv_obj_set_width(rtl_label, 310);
|
||||
lv_obj_align(rtl_label, LV_ALIGN_LEFT_MID, 5, 0);
|
||||
|
||||
lv_obj_t * cz_label = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * cz_label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(cz_label,
|
||||
"嵌入式系统(Embedded System),\n是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。");
|
||||
lv_obj_set_style_text_font(cz_label, &lv_font_simsun_16_cjk, 0);
|
||||
|
||||
@@ -5,6 +5,7 @@ Chip vendors
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
nxp
|
||||
stm32
|
||||
espressif
|
||||
nxp
|
||||
renesas
|
||||
stm32
|
||||
|
||||
84
docs/integration/chip/renesas.rst
Normal file
84
docs/integration/chip/renesas.rst
Normal file
@@ -0,0 +1,84 @@
|
||||
=======
|
||||
Renesas
|
||||
=======
|
||||
|
||||
`Renesas <https://renesas.com/>`__ is an official partner of LVGL.
|
||||
Therefore, LVGL contains built-in support for `Dave2D <https://lpccs-docs.renesas.com/DA1470x/UM-B-157_DA1470x-GPU-API-Manual/files/doc/overview-txt.html>`__ (the GPU of Renesas)
|
||||
and LVGL also hosts ready-to-use Renesas projects.
|
||||
|
||||
Dave2D
|
||||
------
|
||||
|
||||
Dave2D is capable of accelerating most of the drawing operations of LVGL:
|
||||
|
||||
- Rectangle drawing, even with gradients
|
||||
- Image drawing, scaling, and rotation
|
||||
- Letter drawing
|
||||
- Triangle drawing
|
||||
- Line drawing
|
||||
|
||||
As Dave2D works in the background, the CPU is free for other tasks. In practice, during rendering, Dave2D can reduce the CPU usage by half or to one-third, depending on the application.
|
||||
|
||||
Certified boards
|
||||
----------------
|
||||
|
||||
LVGL has `certified <https://lvgl.io/certificate>`__ one Renesas board so far (more will come soon).
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/LHPIqBV_MGA?si=mtW3g-av56bCdR4k" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||
|
||||
Get started with the Renesas ecosystem
|
||||
--------------------------------------
|
||||
|
||||
The official IDE of Renesas is called `e² studio <https://www.renesas.com/us/en/software-tool/e-studio?gad_source=1&gclid=CjwKCAjw5ImwBhBtEiwAFHDZx2V3lumaenbyJnc5Ctrclr_lEQM3G22iZgB-4F92OVLCI7xmzp1YQRoCcRgQAvD_BwE>`__. As it's Eclipse-based, it runs on Windows, Linux, and Mac as well.
|
||||
|
||||
To get started, just download and install e² studio.
|
||||
|
||||
Getting started with LVGL
|
||||
-------------------------
|
||||
|
||||
LVGL provides a ready-to-use project for the `EK-RA8D1 <https://www.renesas.com/us/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra8d1-evaluation-kit-ra8d1-mcu-group>`__ development board. Its main features from the HMI's point of view are:
|
||||
|
||||
- 480MHz, Arm Cortex®-M85 core
|
||||
- 2MB Code Flash, 1MB SRAM
|
||||
- MIPI DSI & Parallel Graphics Expansion Ports
|
||||
- 4.5 Inch backlit TFT display, 16.7M display colors
|
||||
- 480x854 pixels resolution
|
||||
|
||||
To get a ready-to-use project, clone the [lv_renesas](https://github.com/lvgl/lv_renesas.git) repository:
|
||||
|
||||
.. code:: shell
|
||||
git clone https://github.com/lvgl/lv_renesas.git --recurse-submodules
|
||||
|
||||
After that, *Import* ``lv_ek_ra8d1`` into e² studio, build the project, and flash it.
|
||||
|
||||
Note that on the ``SW1`` DIP switch (middle of the board) 7 should be ON, all others are OFF.
|
||||
|
||||
Modify the project
|
||||
------------------
|
||||
|
||||
Open a demo
|
||||
~~~~~~~~~~~
|
||||
|
||||
In `LVGL_thread_entry <https://github.com/lvgl/lv_renesas/blob/master/lv_ek_ra8d1/src/LVGL_thread_entry.c>`__, the demos are automatically enabled based on the settings in `lv_conf.h <https://github.com/lvgl/lv_renesas/blob/master/lv_ek_ra8d1/src/lv_conf.h>`__.
|
||||
|
||||
You can disable all demos (or just comment them out) and call some ``lv_example_...()`` functions, or add your custom code.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
``lv_conf.h`` contains the most important settings for LVGL. Namely:
|
||||
|
||||
- ``LV_COLOR_DEPTH`` to set LVGL's default color depth
|
||||
- ``LV_MEM_SIZE to`` set the maximum RAM available for LVGL
|
||||
- ``LV_USE_DAVE2D`` to enable the GPU
|
||||
|
||||
|
||||
``configuration.xml`` contains the settings for the board and the MCU. By opening this file, all the hardware and software components can be customized in a visual way.
|
||||
|
||||
|
||||
Support
|
||||
-------
|
||||
|
||||
In case of an problems or questions open an issue in the `lv_renesas <https://github.com/lvgl/lv_renesas/issues>`__ repository.
|
||||
@@ -77,8 +77,8 @@ Usage
|
||||
{
|
||||
...
|
||||
|
||||
/* Periodically call the lv_task handler */
|
||||
lv_task_handler();
|
||||
/* Periodically call the lv_timer handler */
|
||||
lv_timer_handler();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ Usage
|
||||
lv_display_add_event_cb(disp, on_close_cb, LV_EVENT_DELETE, disp);
|
||||
|
||||
/* initialize X11 input drivers (for keyboard, mouse & mousewheel) */
|
||||
LV_IMG_DECLARE(my_mouse_cursor_icon);
|
||||
LV_IMAGE_DECLARE(my_mouse_cursor_icon);
|
||||
lv_x11_inputs_create(disp, &my_mouse_cursor_icon);
|
||||
|
||||
#if !LV_X11_DIRECT_EXIT
|
||||
@@ -121,7 +121,7 @@ Usage
|
||||
{
|
||||
...
|
||||
|
||||
/* Periodically call the lv_task handler */
|
||||
lv_task_handler();
|
||||
/* Periodically call the lv_timer handler */
|
||||
lv_timer_handler();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ Step-by-step instructions
|
||||
/* DCX high (data) */
|
||||
HAL_GPIO_WritePin(LCD_DCX_GPIO_Port, LCD_DCX_Pin, GPIO_PIN_SET);
|
||||
/* for color data use DMA transfer */
|
||||
/* Set the SPI in 16-bit mode to match endianess */
|
||||
/* Set the SPI in 16-bit mode to match endianness */
|
||||
hspi1.Init.DataSize = SPI_DATASIZE_16BIT;
|
||||
HAL_SPI_Init(&hspi1);
|
||||
lcd_bus_busy = 1;
|
||||
|
||||
22
docs/libs/arduino-littlefs.rst
Normal file
22
docs/libs/arduino-littlefs.rst
Normal file
@@ -0,0 +1,22 @@
|
||||
.. _arduino_esp_littlefs:
|
||||
|
||||
====================
|
||||
Arduino ESP littlefs
|
||||
====================
|
||||
|
||||
LittleFS is a little fail-safe filesystem designed for microcontrollers and integrated in the Arduino framework
|
||||
when used with ESP32 and ESP8266.
|
||||
|
||||
Detailed introduction:
|
||||
- https://github.com/esp8266/Arduino
|
||||
- https://github.com/espressif/arduino-esp32
|
||||
|
||||
|
||||
Usage
|
||||
-----
|
||||
|
||||
Enable :c:macro:`LV_USE_FS_ARDUINO_ESP_LITTLEFS` and define a :c:macro`LV_FS_ARDUINO_ESP_LITTLEFS_LETTER` in ``lv_conf.h``.
|
||||
|
||||
|
||||
API
|
||||
---
|
||||
@@ -15,6 +15,7 @@ LVG has built in support for:
|
||||
- WIN32 (Windows using Win32 API function .e.g ``CreateFileA``, ``ReadFile``)
|
||||
- MEMFS (read a file from a memory buffer)
|
||||
- LITTLEFS (a little fail-safe filesystem designed for microcontrollers)
|
||||
- Arduino ESP LITTLEFS (a little fail-safe filesystem designed for Arduino ESP)
|
||||
|
||||
You still need to provide the drivers and libraries, this extension
|
||||
provides only the bridge between FATFS, STDIO, POSIX, WIN32 and LVGL.
|
||||
|
||||
@@ -22,4 +22,5 @@
|
||||
rlottie
|
||||
ffmpeg
|
||||
rle
|
||||
arduino_esp_littlefs
|
||||
lfs
|
||||
|
||||
@@ -272,14 +272,11 @@ Set an object state if an integer subject's value is not equal to a reference va
|
||||
|
||||
observer = lv_obj_bind_state_if_not_eq(obj, &subject, LV_STATE_*, ref_value);
|
||||
|
||||
Button
|
||||
------
|
||||
|
||||
Set an integer subject to 1 when a button is checked and set it 0 when unchecked.
|
||||
Set an integer subject to 1 when an object is checked and set it 0 when unchecked.
|
||||
|
||||
.. code:: c
|
||||
|
||||
observer = lv_button_bind_checked(obj, &subject);
|
||||
observer = lv_obj_bind_checked(obj, &subject);
|
||||
|
||||
Label
|
||||
-----
|
||||
|
||||
@@ -159,7 +159,7 @@ adjusted with :cpp:expr:`lv_obj_set_style_bg_color(obj, color)`;
|
||||
|
||||
The display background image is a path to a file or a pointer to an
|
||||
:cpp:struct:`lv_image_dsc_t` variable (converted image data) to be used as
|
||||
wallpaper. It can be set with :cpp:expr:`lv_obj_set_style_bg_img_src(obj, &my_img)`;
|
||||
wallpaper. It can be set with :cpp:expr:`lv_obj_set_style_bg_image_src(obj, &my_img)`;
|
||||
If a background image is configured the background won't be filled with
|
||||
``bg_color``.
|
||||
|
||||
|
||||
@@ -244,6 +244,7 @@ open/close the PNG files. It should look like this:
|
||||
lv_image_decoder_t * dec = lv_image_decoder_create();
|
||||
lv_image_decoder_set_info_cb(dec, decoder_info);
|
||||
lv_image_decoder_set_open_cb(dec, decoder_open);
|
||||
lv_image_decoder_set_get_area_cb(dec, decoder_get_area);
|
||||
lv_image_decoder_set_close_cb(dec, decoder_close);
|
||||
|
||||
|
||||
@@ -280,7 +281,7 @@ open/close the PNG files. It should look like this:
|
||||
/*Check whether the type `src` is known by the decoder*/
|
||||
if(is_png(dsc->src) == false) return LV_RESULT_INVALID;
|
||||
|
||||
/*Decode and store the image. If `dsc->decoded` is `NULL`, the `read_line` function will be called to get the image data line-by-line*/
|
||||
/*Decode and store the image. If `dsc->decoded` is `NULL`, the `decoder_get_area` function will be called to get the image data line-by-line*/
|
||||
dsc->decoded = my_png_decoder(dsc->src);
|
||||
|
||||
/*Change the color format if decoded image format is different than original format. For PNG it's usually decoded to ARGB8888 format*/
|
||||
@@ -296,13 +297,58 @@ open/close the PNG files. It should look like this:
|
||||
* Decode an area of image
|
||||
* @param decoder pointer to the decoder where this function belongs
|
||||
* @param dsc image decoder descriptor
|
||||
* @param full_area full image area information
|
||||
* @param decoded_area area information to decode (x1, y1, x2, y2)
|
||||
* @return LV_RESULT_OK: no error; LV_RESULT_INVALID: can't decode image area
|
||||
* @param full_area input parameter. the full area to decode after enough subsequent calls
|
||||
* @param decoded_area input+output parameter. set the values to `LV_COORD_MIN` for the first call and to reset decoding.
|
||||
* the decoded area is stored here after each call.
|
||||
* @return LV_RESULT_OK: ok; LV_RESULT_INVALID: failed or there is nothing left to decode
|
||||
*/
|
||||
static lv_result_t decoder_get_area(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc,
|
||||
const lv_area_t * full_area, lv_area_t * decoded_area)
|
||||
{
|
||||
/**
|
||||
* If `dsc->decoded` is always set in `decoder_open` then `decoder_get_area` does not need to be implemented.
|
||||
* If `dsc->decoded` is only sometimes set or never set in `decoder_open` then `decoder_get_area` is used to
|
||||
* incrementally decode the image by calling it repeatedly until it returns `LV_RESULT_INVALID`.
|
||||
* In the example below the image is decoded line-by-line but the decoded area can have any shape and size
|
||||
* depending on the requirements and capabilities of the image decoder.
|
||||
*/
|
||||
|
||||
my_decoder_data_t * my_decoder_data = dsc->user_data;
|
||||
|
||||
/* if `decoded_area` has a field set to `LV_COORD_MIN` then reset decoding */
|
||||
if(decoded_area->y1 == LV_COORD_MIN) {
|
||||
decoded_area->x1 = full_area->x1;
|
||||
decoded_area->x2 = full_area->x2;
|
||||
decoded_area->y1 = full_area->y1;
|
||||
decoded_area->y2 = decoded_area->y1; /* decode line-by-line, starting with the first line */
|
||||
|
||||
/* create a draw buf the size of one line */
|
||||
bool reshape_success = NULL != lv_draw_buf_reshape(my_decoder_data->partial,
|
||||
dsc->decoded.header.cf,
|
||||
lv_area_get_width(full_area),
|
||||
1,
|
||||
LV_STRIDE_AUTO);
|
||||
if(!reshape_success) {
|
||||
lv_draw_buf_destroy(my_decoder_data->partial);
|
||||
my_decoder_data->partial = lv_draw_buf_create(lv_area_get_width(full_area),
|
||||
1,
|
||||
dsc->decoded.header.cf,
|
||||
LV_STRIDE_AUTO);
|
||||
|
||||
my_png_decode_line_reset(full_area);
|
||||
}
|
||||
}
|
||||
/* otherwise decoding is already in progress. decode the next line */
|
||||
else {
|
||||
/* all lines have already been decoded. indicate completion by returning `LV_RESULT_INVALID` */
|
||||
if (decoded_area->y1 >= full_area->y2) return LV_RESULT_INVALID;
|
||||
decoded_area->y1++;
|
||||
decoded_area->y2++;
|
||||
}
|
||||
|
||||
my_png_decode_line(my_decoder_data->partial);
|
||||
|
||||
return LV_RESULT_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -314,8 +360,12 @@ open/close the PNG files. It should look like this:
|
||||
static void decoder_close(lv_image_decoder_t * decoder, lv_image_decoder_dsc_t * dsc)
|
||||
{
|
||||
/*Free all allocated data*/
|
||||
my_png_cleanup();
|
||||
|
||||
/*Call the built-in close function if the built-in open/read_line was used*/
|
||||
my_decoder_data_t * my_decoder_data = dsc->user_data;
|
||||
lv_draw_buf_destroy(my_decoder_data->partial);
|
||||
|
||||
/*Call the built-in close function if the built-in open/get_area was used*/
|
||||
lv_bin_decoder_close(decoder, dsc);
|
||||
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ Pointer input devices (like a mouse) can have a cursor.
|
||||
...
|
||||
lv_indev_t * mouse_indev = lv_indev_create();
|
||||
...
|
||||
LV_IMG_DECLARE(mouse_cursor_icon); /*Declare the image source.*/
|
||||
LV_IMAGE_DECLARE(mouse_cursor_icon); /*Declare the image source.*/
|
||||
lv_obj_t * cursor_obj = lv_image_create(lv_screen_active()); /*Create an image object for the cursor */
|
||||
lv_image_set_src(cursor_obj, &mouse_cursor_icon); /*Set the image source*/
|
||||
lv_indev_set_cursor(mouse_indev, cursor_obj); /*Connect the image object to the driver*/
|
||||
|
||||
@@ -154,7 +154,7 @@ the object and all of its children.
|
||||
|
||||
void lv_obj_delete(lv_obj_t * obj);
|
||||
|
||||
:cpp:func:`lv_obj_del` will delete the object immediately. If for any reason you
|
||||
:cpp:func:`lv_obj_delete` will delete the object immediately. If for any reason you
|
||||
can't delete the object immediately you can use
|
||||
:cpp:expr:`lv_obj_delete_async(obj)` which will perform the deletion on the next
|
||||
call of :cpp:func:`lv_timer_handler`. This is useful e.g. if you want to
|
||||
|
||||
@@ -134,7 +134,7 @@ You will obtain a processed text file named `trace.systrace`, which roughly cont
|
||||
# tracer: nop
|
||||
#
|
||||
LVGL-1 [0] 2892.002993: tracing_mark_write: B|1|lv_timer_handler
|
||||
LVGL-1 [0] 2892.002993: tracing_mark_write: B|1|_lv_disp_refr_timer
|
||||
LVGL-1 [0] 2892.002993: tracing_mark_write: B|1|_lv_display_refr_timer
|
||||
LVGL-1 [0] 2892.003459: tracing_mark_write: B|1|refr_invalid_areas
|
||||
LVGL-1 [0] 2892.003461: tracing_mark_write: B|1|lv_draw_rect
|
||||
LVGL-1 [0] 2892.003550: tracing_mark_write: E|1|lv_draw_rect
|
||||
|
||||
@@ -20,8 +20,9 @@ How to Use
|
||||
**********
|
||||
|
||||
In general:
|
||||
- you can set the macro :c:macro:`LV_USE_DRAW_ARM2D_SYNC` to ``1`` in
|
||||
``lv_conf.h`` to enable Arm-2D synchronous acceleration for LVGL.
|
||||
- you can set the macro :c:macro:`LV_USE_DRAW_ARM2D_SYNC` to ``1`` and
|
||||
:c:macro:`LV_DRAW_SW_ASM` to ``LV_DRAW_SW_ASM_HELIUM`` in ``lv_conf.h`` to
|
||||
enable Arm-2D synchronous acceleration for LVGL.
|
||||
- You can set
|
||||
the macro :c:macro:`LV_USE_DRAW_ARM2D_ASYNC` to ``1`` in ``lv_conf.h`` to enable
|
||||
Arm-2D Asynchronous acceleration for LVGL.
|
||||
|
||||
@@ -219,8 +219,8 @@ To get a property's value from a style:
|
||||
.. code:: c
|
||||
|
||||
lv_style_value_t v;
|
||||
lv_res_t res = lv_style_get_prop(&style, LV_STYLE_BG_COLOR, &v);
|
||||
if(res == LV_RES_OK) { /*Found*/
|
||||
lv_result_t res = lv_style_get_prop(&style, LV_STYLE_BG_COLOR, &v);
|
||||
if(res == LV_RESULT_OK) { /*Found*/
|
||||
do_something(v.color);
|
||||
}
|
||||
|
||||
|
||||
@@ -152,6 +152,17 @@ reconfiguring the hardware. In lack of hardware display rotation support
|
||||
:cpp:expr:`lv_draw_sw_rotate` can be used to rotate the buffer in the
|
||||
``flush_cb``.
|
||||
|
||||
:cpp:expr:`lv_display_rotate_area(display, &area)` rotates the rendered area
|
||||
according to the current rotation settings of the display.
|
||||
|
||||
Note that in :cpp:enumerator:`LV_DISPLAY_RENDER_MODE_DIRECT` the small changed areas
|
||||
are rendered directly in the frame buffer so they cannot be
|
||||
rotated later. Therefore in direct mode only the whole frame buffer can be rotated.
|
||||
The same is true for :cpp:enumerator:`LV_DISPLAY_RENDER_MODE_FULL`.
|
||||
|
||||
In the case of :cpp:enumerator:`LV_DISPLAY_RENDER_MODE_PARTIAL`the small rendered areas
|
||||
can be rotated on their own before flushing to the frame buffer.
|
||||
|
||||
Color format
|
||||
------------
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ Here is some pseudocode to illustrate the concept:
|
||||
while(1) {
|
||||
uint32_t time_till_next;
|
||||
mutex_lock(&lvgl_mutex);
|
||||
time_till_next = lv_task_handler();
|
||||
time_till_next = lv_timer_handler();
|
||||
mutex_unlock(&lvgl_mutex);
|
||||
thread_sleep(time_till_next); /* sleep for a while */
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ main ``while(1)`` should look like this:
|
||||
while(1) {
|
||||
/*Normal operation (no sleep) in < 1 sec inactivity*/
|
||||
if(lv_display_get_inactive_time(NULL) < 1000) {
|
||||
lv_task_handler();
|
||||
lv_timer_handler();
|
||||
}
|
||||
/*Sleep after 1 sec inactivity*/
|
||||
else {
|
||||
@@ -27,7 +27,7 @@ function to signal a wake-up (press, touch or click etc.) has happened:
|
||||
|
||||
lv_tick_inc(LV_DEF_REFR_PERIOD); /*Force task execution on wake-up*/
|
||||
timer_start(); /*Restart the timer where lv_tick_inc() is called*/
|
||||
lv_task_handler(); /*Call `lv_task_handler()` manually to process the wake-up event*/
|
||||
lv_timer_handler(); /*Call `lv_timer_handler()` manually to process the wake-up event*/
|
||||
|
||||
In addition to :cpp:func:`lv_display_get_inactive_time` you can check
|
||||
:cpp:func:`lv_anim_count_running` to see if all animations have finished.
|
||||
|
||||
@@ -12,7 +12,7 @@ There are two ways to provide the tick to LVGL:
|
||||
1. Call ``lv_tick_set_cb(my_get_milliseconds_function);``: `my_get_milliseconds_function` needs to tell how many milliseconds have elapsed since start up. Most of the platforms have built-in functions that can be used as they are. For example
|
||||
|
||||
- SDL: ``lv_tick_set_cb(SDL_GetTicks);``
|
||||
- Arduino: ``lv_tick_set_cb(millis);``
|
||||
- Arduino: ``lv_tick_set_cb(my_tick_get_cb);``, where ``my_tick_get_cb`` is: ``static uint32_t my_tick_get_cb(void) { return millis(); }``
|
||||
- FreeRTOS: ``lv_tick_set_cb(xTaskGetTickCount);``
|
||||
- STM32: ``lv_tick_set_cb(HAL_GetTick);``
|
||||
- ESP32: ``lv_tick_set_cb(my_tick_get_cb);``, where ``my_tick_get_cb`` is a wrapper for ``esp_timer_get_time() / 1000;``
|
||||
|
||||
@@ -82,6 +82,21 @@ where ``years_list`` is a pointer to the custom years list. It can be a constant
|
||||
like ``static const char * years = "2023\n2022\n2021\n2020\n2019";``,
|
||||
or can be generated dynamically into a buffer as well.
|
||||
|
||||
Chinese calendar
|
||||
----------------
|
||||
|
||||
The Chinese calendar is a traditional cultural tool that integrates elements
|
||||
such as the lunar calendar, solar terms, and traditional festivals. It is
|
||||
widely used in Chinese social life, helping people understand the dates of
|
||||
the lunar calendar, arrange festival activities, and inherit the excellent
|
||||
traditional culture of the Chinese nation. Whether in families, businesses,
|
||||
or education, the Chinese calendar plays an irreplaceable role, enabling
|
||||
people to better understand and appreciate the charm of Chinese traditional
|
||||
culture.
|
||||
|
||||
If you want to use the Chinese calendar, please
|
||||
use :cpp:expr:`lv_calendar_set_chinese_mode(calendar, true)` to enable it.
|
||||
|
||||
.. _lv_calendar_events:
|
||||
|
||||
Events
|
||||
@@ -89,8 +104,8 @@ Events
|
||||
|
||||
- :cpp:enumerator:`LV_EVENT_VALUE_CHANGED` Sent if a date is clicked.
|
||||
:cpp:expr:`lv_calendar_get_pressed_date(calendar, &date)` set ``date`` to the
|
||||
date currently being pressed. Returns :cpp:enumerator:`LV_RES_OK` if there is a
|
||||
valid pressed date, else :cpp:enumerator:`LV_RES_INVALID`.
|
||||
date currently being pressed. Returns :cpp:enumerator:`LV_RESULT_OK` if there is a
|
||||
valid pressed date, else :cpp:enumerator:`LV_RESULT_INVALID`.
|
||||
|
||||
Learn more about :ref:`events`.
|
||||
|
||||
|
||||
@@ -51,6 +51,8 @@ if(NOT LV_CONF_BUILD_DISABLE_THORVG_INTERNAL)
|
||||
target_link_libraries(lvgl_thorvg PUBLIC lvgl)
|
||||
endif()
|
||||
|
||||
set_source_files_properties(${LVGL_ROOT_DIR}/src/others/vg_lite_tvg/vg_lite_tvg.cpp PROPERTIES COMPILE_FLAGS -Wunused-parameter)
|
||||
|
||||
# Build LVGL example library
|
||||
if(NOT LV_CONF_BUILD_DISABLE_EXAMPLES)
|
||||
add_library(lvgl_examples ${EXAMPLE_SOURCES})
|
||||
|
||||
Binary file not shown.
@@ -36,6 +36,9 @@
|
||||
<repository type="git">https://github.com/lvgl/lvgl.git</repository>
|
||||
|
||||
<releases>
|
||||
<release date="2024-03-24" version="9.1.1-dev1" url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/LVGL.lvgl.9.1.1-dev1.pack">
|
||||
- LVGL 9.1.1-dev
|
||||
</release>
|
||||
<release date="2024-03-19" version="9.1.0" url="https://github.com/lvgl/lvgl/raw/v9.1.0/env_support/cmsis-pack/LVGL.lvgl.9.1.0.pack">
|
||||
- LVGL 9.1.0
|
||||
- See Change Log
|
||||
@@ -1295,6 +1298,21 @@
|
||||
|
||||
</component>
|
||||
|
||||
<component Cgroup="Libraries and Others" Csub="Lib Filesystem" Cvariant="Arduino LittleFs" condition="LVGL-Essential">
|
||||
<description>Add API for file access via Arduino LittleFs</description>
|
||||
<files>
|
||||
<!-- src/libs/fsdrv -->
|
||||
<file category="sourceCpp" name="src/libs/fsdrv/lv_fs_arduino_esp_littlefs.cpp" />
|
||||
</files>
|
||||
|
||||
<RTE_Components_h>
|
||||
|
||||
/*! \brief enable Arduino LittleFs file access */
|
||||
#define LV_USE_FS_ARDUINO_ESP_LITTLEFS 1
|
||||
</RTE_Components_h>
|
||||
|
||||
</component>
|
||||
|
||||
<!--
|
||||
<component Cgroup="Libraries and Others" Csub="Lib Filesystem" Cvariant="WIN32" condition="LVGL-Essential">
|
||||
<description>Add API for file access via STDIO</description>
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<index schemaVersion="1.0.0" xs:noNamespaceSchemaLocation="PackIndex.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<vendor>LVGL</vendor>
|
||||
<url>https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/</url>
|
||||
<timestamp>2024-03-19</timestamp>
|
||||
<timestamp>2024-03-24</timestamp>
|
||||
<pindex>
|
||||
<pdsc url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/" vendor="LVGL" name="lvgl" version="9.1.0"/>
|
||||
<pdsc url="https://raw.githubusercontent.com/lvgl/lvgl/master/env_support/cmsis-pack/" vendor="LVGL" name="lvgl" version="9.1.1-dev1"/>
|
||||
</pindex>
|
||||
</index>
|
||||
|
||||
@@ -126,6 +126,7 @@ Make sure `LV_MEM_SIZE` is no less than `(128*1024U)`.
|
||||
- \#define LV_USE_FS_WIN32 0
|
||||
- \#define LV_USE_FS_FATFS 0
|
||||
- #define LV_USE_FS_LITTLEFS 0
|
||||
- #define LV_USE_FS_ARDUINO_ESP_LITTLEFS 0
|
||||
- #define LV_USE_FS_MEMFS 0
|
||||
- \#define LV_USE_LODEPNG 0
|
||||
- #define LV_USE_LIBPNG 0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file lv_conf.h
|
||||
* Configuration file for v9.1.0
|
||||
* Configuration file for v9.1.1-dev
|
||||
*/
|
||||
|
||||
/* clang-format off */
|
||||
@@ -148,6 +148,9 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Set stack size of drawing thread. Unit is byte. If Thorvg is enabled, 128kB is required tested on simulator.*/
|
||||
#define LV_DRAW_THREAD_STACKSIZE 32768
|
||||
|
||||
#if LV_USE_DRAW_VGLITE
|
||||
/* Enable blit quality degradation workaround recommended for screen's dimension > 352 pixels. */
|
||||
#define LV_USE_VGLITE_BLIT_SPLIT 0
|
||||
@@ -184,10 +187,15 @@
|
||||
* but does not guarantee the same rendering quality as the software. */
|
||||
#define LV_VG_LITE_USE_BOX_SHADOW 0
|
||||
|
||||
/* VG-Lite gradient image maximum cache number.
|
||||
/* VG-Lite linear gradient image maximum cache number.
|
||||
* NOTE: The memory usage of a single gradient image is 4K bytes.
|
||||
*/
|
||||
#define LV_VG_LITE_GRAD_CACHE_SIZE 32
|
||||
#define LV_VG_LITE_LINEAR_GRAD_CACHE_CNT 32
|
||||
|
||||
/* VG-Lite radial gradient image maximum cache size.
|
||||
* NOTE: The memory usage of a single gradient image is radial grad radius * 4 bytes.
|
||||
*/
|
||||
#define LV_VG_LITE_RADIAL_GRAD_CACHE_CNT 32
|
||||
|
||||
#endif
|
||||
|
||||
@@ -643,6 +651,11 @@
|
||||
#define LV_FS_LITTLEFS_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
|
||||
#endif
|
||||
|
||||
/*API for Arduino LittleFs. */
|
||||
#if LV_USE_FS_ARDUINO_ESP_LITTLEFS
|
||||
#define LV_FS_ARDUINO_ESP_LITTLEFS_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
|
||||
#endif
|
||||
|
||||
/*GIF decoder library*/
|
||||
#if LV_USE_GIF
|
||||
/*GIF decoder accelerate*/
|
||||
|
||||
@@ -65,7 +65,7 @@ static void lvgl_thread_entry(void *parameter)
|
||||
/* handle the tasks of LVGL */
|
||||
while(1)
|
||||
{
|
||||
lv_task_handler();
|
||||
lv_timer_handler();
|
||||
rt_thread_mdelay(PKG_LVGL_DISP_REFR_PERIOD);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*Using LVGL with Arduino requires some extra steps:
|
||||
*Be sure to read the docs here: https://docs.lvgl.io/master/get-started/platforms/arduino.html */
|
||||
*Be sure to read the docs here: https://docs.lvgl.io/master/integration/framework/arduino.html */
|
||||
|
||||
#include <lvgl.h>
|
||||
|
||||
@@ -15,9 +15,10 @@
|
||||
//#include <examples/lv_examples.h>
|
||||
//#include <demos/lv_demos.h>
|
||||
|
||||
/*Set to your screen resolution*/
|
||||
/*Set to your screen resolution and rotation*/
|
||||
#define TFT_HOR_RES 320
|
||||
#define TFT_VER_RES 240
|
||||
#define TFT_ROTATION LV_DISPLAY_ROTATION_0
|
||||
|
||||
/*LVGL draw into this buffer, 1/10 screen size usually works well. The size is in bytes*/
|
||||
#define DRAW_BUF_SIZE (TFT_HOR_RES * TFT_VER_RES / 10 * (LV_COLOR_DEPTH / 8))
|
||||
@@ -46,7 +47,7 @@ void my_disp_flush( lv_display_t *disp, const lv_area_t *area, uint8_t * px_map)
|
||||
*/
|
||||
|
||||
/*Call it to tell LVGL you are ready*/
|
||||
lv_disp_flush_ready(disp);
|
||||
lv_display_flush_ready(disp);
|
||||
}
|
||||
|
||||
/*Read the touchpad*/
|
||||
@@ -67,6 +68,12 @@ void my_touchpad_read( lv_indev_t * indev, lv_indev_data_t * data )
|
||||
*/
|
||||
}
|
||||
|
||||
/*use Arduinos millis() as tick source*/
|
||||
static uint32_t my_tick(void)
|
||||
{
|
||||
return millis();
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
String LVGL_Arduino = "Hello Arduino! ";
|
||||
@@ -78,7 +85,7 @@ void setup()
|
||||
lv_init();
|
||||
|
||||
/*Set a tick source so that LVGL will know how much time elapsed. */
|
||||
lv_tick_set_cb(millis);
|
||||
lv_tick_set_cb(my_tick);
|
||||
|
||||
/* register print function for debugging */
|
||||
#if LV_USE_LOG != 0
|
||||
@@ -89,6 +96,8 @@ void setup()
|
||||
#if LV_USE_TFT_ESPI
|
||||
/*TFT_eSPI can be enabled lv_conf.h to initialize the display in a simple way*/
|
||||
disp = lv_tft_espi_create(TFT_HOR_RES, TFT_VER_RES, draw_buf, sizeof(draw_buf));
|
||||
lv_display_set_rotation(disp, TFT_ROTATION);
|
||||
|
||||
#else
|
||||
/*Else create a display yourself*/
|
||||
disp = lv_display_create(TFT_HOR_RES, TFT_VER_RES);
|
||||
@@ -103,7 +112,7 @@ void setup()
|
||||
|
||||
/* Create a simple label
|
||||
* ---------------------
|
||||
lv_obj_t *label = lv_label_create( lv_scr_act() );
|
||||
lv_obj_t *label = lv_label_create( lv_screen_active() );
|
||||
lv_label_set_text( label, "Hello Arduino, I'm LVGL!" );
|
||||
lv_obj_align( label, LV_ALIGN_CENTER, 0, 0 );
|
||||
|
||||
@@ -120,7 +129,7 @@ void setup()
|
||||
lv_demo_widgets();
|
||||
*/
|
||||
|
||||
lv_obj_t *label = lv_label_create( lv_scr_act() );
|
||||
lv_obj_t *label = lv_label_create( lv_screen_active() );
|
||||
lv_label_set_text( label, "Hello Arduino, I'm LVGL!" );
|
||||
lv_obj_align( label, LV_ALIGN_CENTER, 0, 0 );
|
||||
|
||||
@@ -129,6 +138,6 @@ void setup()
|
||||
|
||||
void loop()
|
||||
{
|
||||
lv_task_handler(); /* let the GUI do its work */
|
||||
lv_timer_handler(); /* let the GUI do its work */
|
||||
delay(5); /* let this time pass */
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ void lv_example_barcode_1(void)
|
||||
|
||||
/*Add a border with bg_color*/
|
||||
lv_obj_set_style_border_color(barcode, bg_color, 0);
|
||||
lv_obj_set_style_border_width(barcode, 5, 0);
|
||||
|
||||
/*Set data*/
|
||||
lv_barcode_update(barcode, "https://lvgl.io");
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "../../lv_examples.h"
|
||||
#if LV_USE_QRCODE && LV_BUILD_EXAMPLES
|
||||
#include <string.h>
|
||||
|
||||
/**
|
||||
* Create a QR Code
|
||||
|
||||
@@ -14,18 +14,7 @@ static void file_explorer_event_handler(lv_event_t * e)
|
||||
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||
const char * cur_path = lv_file_explorer_get_current_path(obj);
|
||||
const char * sel_fn = lv_file_explorer_get_selected_file_name(obj);
|
||||
uint16_t path_len = strlen(cur_path);
|
||||
uint16_t fn_len = strlen(sel_fn);
|
||||
|
||||
if((path_len + fn_len) <= LV_FILE_EXPLORER_PATH_MAX_LEN) {
|
||||
char file_info[LV_FILE_EXPLORER_PATH_MAX_LEN];
|
||||
|
||||
strcpy(file_info, cur_path);
|
||||
strcat(file_info, sel_fn);
|
||||
|
||||
LV_LOG_USER("%s", file_info);
|
||||
}
|
||||
else LV_LOG_USER("%s%s", cur_path, sel_fn);
|
||||
LV_LOG_USER("%s%s", cur_path, sel_fn);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,18 +14,8 @@ static void file_explorer_event_handler(lv_event_t * e)
|
||||
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||
const char * cur_path = lv_file_explorer_get_current_path(obj);
|
||||
const char * sel_fn = lv_file_explorer_get_selected_file_name(obj);
|
||||
uint16_t path_len = strlen(cur_path);
|
||||
uint16_t fn_len = strlen(sel_fn);
|
||||
|
||||
if((path_len + fn_len) <= LV_FILE_EXPLORER_PATH_MAX_LEN) {
|
||||
char file_info[LV_FILE_EXPLORER_PATH_MAX_LEN];
|
||||
|
||||
strcpy(file_info, cur_path);
|
||||
strcat(file_info, sel_fn);
|
||||
|
||||
LV_LOG_USER("%s", file_info);
|
||||
}
|
||||
else LV_LOG_USER("%s%s", cur_path, sel_fn);
|
||||
LV_LOG_USER("%s%s", cur_path, sel_fn);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,18 +50,8 @@ static void file_explorer_event_handler(lv_event_t * e)
|
||||
if(code == LV_EVENT_VALUE_CHANGED) {
|
||||
const char * cur_path = lv_file_explorer_get_current_path(obj);
|
||||
const char * sel_fn = lv_file_explorer_get_selected_file_name(obj);
|
||||
uint16_t path_len = strlen(cur_path);
|
||||
uint16_t fn_len = strlen(sel_fn);
|
||||
|
||||
if((path_len + fn_len) <= LV_FILE_EXPLORER_PATH_MAX_LEN) {
|
||||
char file_info[LV_FILE_EXPLORER_PATH_MAX_LEN];
|
||||
|
||||
strcpy(file_info, cur_path);
|
||||
strcat(file_info, sel_fn);
|
||||
|
||||
LV_LOG_USER("%s", file_info);
|
||||
}
|
||||
else LV_LOG_USER("%s%s", cur_path, sel_fn);
|
||||
LV_LOG_USER("%s%s", cur_path, sel_fn);
|
||||
}
|
||||
else if(code == LV_EVENT_READY) {
|
||||
lv_obj_t * tb = lv_file_explorer_get_file_table(obj);
|
||||
|
||||
@@ -59,7 +59,7 @@ static lv_subject_t auth_state_subject;
|
||||
static void textarea_event_cb(lv_event_t * e)
|
||||
{
|
||||
lv_obj_t * ta = lv_event_get_target(e);
|
||||
if(strcmp(lv_textarea_get_text(ta), "hello") == 0) {
|
||||
if(lv_strcmp(lv_textarea_get_text(ta), "hello") == 0) {
|
||||
lv_subject_set_int(&auth_state_subject, LOGGED_IN);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -33,7 +33,7 @@ void lv_example_observer_5(void)
|
||||
lv_subject_add_observer(&fw_update_status_subject, fw_upload_manager_observer_cb, NULL);
|
||||
|
||||
/*Create start FW update button*/
|
||||
lv_obj_t * btn = lv_btn_create(lv_screen_active());
|
||||
lv_obj_t * btn = lv_button_create(lv_screen_active());
|
||||
lv_obj_add_event_cb(btn, fw_update_btn_clicked_event_cb, LV_EVENT_CLICKED, NULL);
|
||||
lv_obj_center(btn);
|
||||
lv_obj_t * label = lv_label_create(btn);
|
||||
|
||||
@@ -175,7 +175,7 @@ static lv_obj_t * my_button_create(lv_obj_t * parent, const char * text, lv_even
|
||||
lv_subject_add_observer_with_target(&theme_subject, my_button_style_observer_cb, &styles, NULL);
|
||||
}
|
||||
|
||||
lv_obj_t * btn = lv_btn_create(parent);
|
||||
lv_obj_t * btn = lv_button_create(parent);
|
||||
lv_obj_remove_style_all(btn);
|
||||
lv_obj_add_style(btn, &styles.style_main, 0);
|
||||
lv_obj_add_style(btn, &styles.style_pressed, LV_STATE_PRESSED);
|
||||
|
||||
@@ -186,10 +186,10 @@ static void touchpad_read(lv_indev_t * indev_drv, lv_indev_data_t * data)
|
||||
/*Save the pressed coordinates and the state*/
|
||||
if(touchpad_is_pressed()) {
|
||||
touchpad_get_xy(&last_x, &last_y);
|
||||
data->state = LV_INDEV_STATE_PR;
|
||||
data->state = LV_INDEV_STATE_PRESSED;
|
||||
}
|
||||
else {
|
||||
data->state = LV_INDEV_STATE_REL;
|
||||
data->state = LV_INDEV_STATE_RELEASED;
|
||||
}
|
||||
|
||||
/*Set the last pressed coordinates*/
|
||||
@@ -232,10 +232,10 @@ static void mouse_read(lv_indev_t * indev_drv, lv_indev_data_t * data)
|
||||
|
||||
/*Get whether the mouse button is pressed or released*/
|
||||
if(mouse_is_pressed()) {
|
||||
data->state = LV_INDEV_STATE_PR;
|
||||
data->state = LV_INDEV_STATE_PRESSED;
|
||||
}
|
||||
else {
|
||||
data->state = LV_INDEV_STATE_REL;
|
||||
data->state = LV_INDEV_STATE_RELEASED;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,7 +277,7 @@ static void keypad_read(lv_indev_t * indev_drv, lv_indev_data_t * data)
|
||||
/*Get whether the a key is pressed and save the pressed key*/
|
||||
uint32_t act_key = keypad_get_key();
|
||||
if(act_key != 0) {
|
||||
data->state = LV_INDEV_STATE_PR;
|
||||
data->state = LV_INDEV_STATE_PRESSED;
|
||||
|
||||
/*Translate the keys to LVGL control characters according to your key definitions*/
|
||||
switch(act_key) {
|
||||
@@ -301,7 +301,7 @@ static void keypad_read(lv_indev_t * indev_drv, lv_indev_data_t * data)
|
||||
last_key = act_key;
|
||||
}
|
||||
else {
|
||||
data->state = LV_INDEV_STATE_REL;
|
||||
data->state = LV_INDEV_STATE_RELEASED;
|
||||
}
|
||||
|
||||
data->key = last_key;
|
||||
@@ -339,7 +339,7 @@ static void encoder_handler(void)
|
||||
/*Your code comes here*/
|
||||
|
||||
encoder_diff += 0;
|
||||
encoder_state = LV_INDEV_STATE_REL;
|
||||
encoder_state = LV_INDEV_STATE_RELEASED;
|
||||
}
|
||||
|
||||
/*------------------
|
||||
@@ -362,11 +362,11 @@ static void button_read(lv_indev_t * indev_drv, lv_indev_data_t * data)
|
||||
int8_t btn_act = button_get_pressed_id();
|
||||
|
||||
if(btn_act >= 0) {
|
||||
data->state = LV_INDEV_STATE_PR;
|
||||
data->state = LV_INDEV_STATE_PRESSED;
|
||||
last_btn = btn_act;
|
||||
}
|
||||
else {
|
||||
data->state = LV_INDEV_STATE_REL;
|
||||
data->state = LV_INDEV_STATE_RELEASED;
|
||||
}
|
||||
|
||||
/*Save the last pressed button's ID*/
|
||||
|
||||
@@ -167,7 +167,7 @@ static void lcd_send_color(lv_display_t * disp, const uint8_t * cmd, size_t cmd_
|
||||
/* DCX high (data) */
|
||||
HAL_GPIO_WritePin(LCD_DCX_GPIO_Port, LCD_DCX_Pin, GPIO_PIN_SET);
|
||||
/* for color data use DMA transfer */
|
||||
/* Set the SPI in 16-bit mode to match endianess */
|
||||
/* Set the SPI in 16-bit mode to match endianness */
|
||||
hspi1.Init.DataSize = SPI_DATASIZE_16BIT;
|
||||
HAL_SPI_Init(&hspi1);
|
||||
lcd_bus_busy = 1;
|
||||
|
||||
@@ -5,3 +5,8 @@ Calendar with header
|
||||
.. lv_example:: widgets/calendar/lv_example_calendar_1
|
||||
:language: c
|
||||
|
||||
Chinese calendar
|
||||
-------------------------------------
|
||||
|
||||
.. lv_example:: widgets/calendar/lv_example_calendar_2
|
||||
:language: c
|
||||
|
||||
32
examples/widgets/calendar/lv_example_calendar_2.c
Normal file
32
examples/widgets/calendar/lv_example_calendar_2.c
Normal file
@@ -0,0 +1,32 @@
|
||||
#include "../../lv_examples.h"
|
||||
#if LV_USE_CALENDAR && LV_USE_CALENDAR_CHINESE && LV_BUILD_EXAMPLES
|
||||
|
||||
void lv_example_calendar_2(void)
|
||||
{
|
||||
lv_obj_t * calendar = lv_calendar_create(lv_screen_active());
|
||||
lv_obj_set_size(calendar, 300, 300);
|
||||
lv_obj_align(calendar, LV_ALIGN_TOP_MID, 0, 0);
|
||||
|
||||
lv_calendar_set_today_date(calendar, 2024, 03, 22);
|
||||
lv_calendar_set_showed_date(calendar, 2024, 03);
|
||||
|
||||
#if LV_USE_CALENDAR_HEADER_DROPDOWN
|
||||
lv_calendar_header_dropdown_create(calendar);
|
||||
#elif LV_USE_CALENDAR_HEADER_ARROW
|
||||
lv_calendar_header_arrow_create(calendar);
|
||||
#endif
|
||||
|
||||
lv_calendar_set_chinese_mode(calendar, true);
|
||||
lv_obj_set_style_text_font(calendar, &lv_font_simsun_14_cjk, LV_PART_MAIN);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void lv_example_calendar_2(void)
|
||||
{
|
||||
lv_obj_t * label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(label, "chinese calendar is not enabled");
|
||||
lv_obj_center(label);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -47,6 +47,7 @@ void lv_example_buttonmatrix_2(void);
|
||||
void lv_example_buttonmatrix_3(void);
|
||||
|
||||
void lv_example_calendar_1(void);
|
||||
void lv_example_calendar_2(void);
|
||||
|
||||
void lv_example_canvas_1(void);
|
||||
void lv_example_canvas_2(void);
|
||||
@@ -116,6 +117,7 @@ void lv_example_scale_2(void);
|
||||
void lv_example_scale_3(void);
|
||||
void lv_example_scale_4(void);
|
||||
void lv_example_scale_5(void);
|
||||
void lv_example_scale_6(void);
|
||||
|
||||
void lv_example_slider_1(void);
|
||||
void lv_example_slider_2(void);
|
||||
|
||||
@@ -28,3 +28,9 @@ An scale with section and custom styling
|
||||
.. lv_example:: widgets/scale/lv_example_scale_5
|
||||
:language: c
|
||||
|
||||
A round scale with multiple needles, resembling a clock
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
.. lv_example:: widgets/scale/lv_example_scale_6
|
||||
:language: c
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ void lv_example_scale_3(void)
|
||||
lv_scale_set_rotation(scale_img, 135);
|
||||
|
||||
/* image must point to the right. E.g. -O------>*/
|
||||
needle_img = lv_img_create(scale_img);
|
||||
needle_img = lv_image_create(scale_img);
|
||||
lv_image_set_src(needle_img, &img_hand);
|
||||
lv_obj_align(needle_img, LV_ALIGN_CENTER, 47, -2);
|
||||
lv_image_set_pivot(needle_img, 3, 4);
|
||||
|
||||
126
examples/widgets/scale/lv_example_scale_6.c
Normal file
126
examples/widgets/scale/lv_example_scale_6.c
Normal file
@@ -0,0 +1,126 @@
|
||||
#include "../../lv_examples.h"
|
||||
#if LV_USE_SCALE && LV_BUILD_EXAMPLES
|
||||
|
||||
#if LV_USE_FLOAT
|
||||
#define my_PRIprecise "f"
|
||||
#else
|
||||
#define my_PRIprecise LV_PRId32
|
||||
#endif
|
||||
|
||||
static lv_obj_t * scale;
|
||||
static lv_obj_t * minute_hand;
|
||||
static lv_obj_t * hour_hand;
|
||||
static lv_point_precise_t minute_hand_points[2];
|
||||
static int32_t hour;
|
||||
static int32_t minute;
|
||||
|
||||
static void timer_cb(lv_timer_t * timer)
|
||||
{
|
||||
LV_UNUSED(timer);
|
||||
|
||||
minute++;
|
||||
if(minute > 59) {
|
||||
minute = 0;
|
||||
hour++;
|
||||
if(hour > 11) {
|
||||
hour = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* the scale will store the needle line points in the existing
|
||||
* point array if one was set with `lv_line_set_points_mutable`.
|
||||
* Otherwise, it will allocate the needle line points.
|
||||
*/
|
||||
|
||||
/* the scale will store the minute hand line points in `minute_hand_points` */
|
||||
lv_scale_set_line_needle_value(scale, minute_hand, 60, minute);
|
||||
/* log the points that were stored in the array */
|
||||
LV_LOG_USER(
|
||||
"minute hand points - "
|
||||
"0: (%" my_PRIprecise ", %" my_PRIprecise "), "
|
||||
"1: (%" my_PRIprecise ", %" my_PRIprecise ")",
|
||||
minute_hand_points[0].x, minute_hand_points[0].y,
|
||||
minute_hand_points[1].x, minute_hand_points[1].y
|
||||
);
|
||||
|
||||
/* the scale will allocate the hour hand line points */
|
||||
lv_scale_set_line_needle_value(scale, hour_hand, 40, hour * 5 + (minute / 12));
|
||||
}
|
||||
|
||||
/**
|
||||
* A round scale with multiple needles, resembing a clock
|
||||
*/
|
||||
void lv_example_scale_6(void)
|
||||
{
|
||||
scale = lv_scale_create(lv_screen_active());
|
||||
|
||||
lv_obj_set_size(scale, 150, 150);
|
||||
lv_scale_set_mode(scale, LV_SCALE_MODE_ROUND_INNER);
|
||||
lv_obj_set_style_bg_opa(scale, LV_OPA_60, 0);
|
||||
lv_obj_set_style_bg_color(scale, lv_color_black(), 0);
|
||||
lv_obj_set_style_radius(scale, LV_RADIUS_CIRCLE, 0);
|
||||
lv_obj_set_style_clip_corner(scale, true, 0);
|
||||
lv_obj_center(scale);
|
||||
|
||||
lv_scale_set_label_show(scale, true);
|
||||
|
||||
lv_scale_set_total_tick_count(scale, 61);
|
||||
lv_scale_set_major_tick_every(scale, 5);
|
||||
|
||||
static const char * hour_ticks[] = {"12", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", NULL};
|
||||
lv_scale_set_text_src(scale, hour_ticks);
|
||||
|
||||
static lv_style_t indicator_style;
|
||||
lv_style_init(&indicator_style);
|
||||
|
||||
/* Label style properties */
|
||||
lv_style_set_text_font(&indicator_style, LV_FONT_DEFAULT);
|
||||
lv_style_set_text_color(&indicator_style, lv_palette_main(LV_PALETTE_YELLOW));
|
||||
|
||||
/* Major tick properties */
|
||||
lv_style_set_line_color(&indicator_style, lv_palette_main(LV_PALETTE_YELLOW));
|
||||
lv_style_set_length(&indicator_style, 8); /* tick length */
|
||||
lv_style_set_line_width(&indicator_style, 2); /* tick width */
|
||||
lv_obj_add_style(scale, &indicator_style, LV_PART_INDICATOR);
|
||||
|
||||
/* Minor tick properties */
|
||||
static lv_style_t minor_ticks_style;
|
||||
lv_style_init(&minor_ticks_style);
|
||||
lv_style_set_line_color(&minor_ticks_style, lv_palette_main(LV_PALETTE_YELLOW));
|
||||
lv_style_set_length(&minor_ticks_style, 6); /* tick length */
|
||||
lv_style_set_line_width(&minor_ticks_style, 2); /* tick width */
|
||||
lv_obj_add_style(scale, &minor_ticks_style, LV_PART_ITEMS);
|
||||
|
||||
/* Main line properties */
|
||||
static lv_style_t main_line_style;
|
||||
lv_style_init(&main_line_style);
|
||||
lv_style_set_arc_color(&main_line_style, lv_color_black());
|
||||
lv_style_set_arc_width(&main_line_style, 5);
|
||||
lv_obj_add_style(scale, &main_line_style, LV_PART_MAIN);
|
||||
|
||||
lv_scale_set_range(scale, 0, 60);
|
||||
|
||||
lv_scale_set_angle_range(scale, 360);
|
||||
lv_scale_set_rotation(scale, 270);
|
||||
|
||||
minute_hand = lv_line_create(scale);
|
||||
lv_line_set_points_mutable(minute_hand, minute_hand_points, 2);
|
||||
|
||||
lv_obj_set_style_line_width(minute_hand, 3, 0);
|
||||
lv_obj_set_style_line_rounded(minute_hand, true, 0);
|
||||
lv_obj_set_style_line_color(minute_hand, lv_color_white(), 0);
|
||||
|
||||
hour_hand = lv_line_create(scale);
|
||||
|
||||
lv_obj_set_style_line_width(hour_hand, 5, 0);
|
||||
lv_obj_set_style_line_rounded(hour_hand, true, 0);
|
||||
lv_obj_set_style_line_color(hour_hand, lv_palette_main(LV_PALETTE_RED), 0);
|
||||
|
||||
hour = 11;
|
||||
minute = 5;
|
||||
lv_timer_t * timer = lv_timer_create(timer_cb, 250, NULL);
|
||||
lv_timer_ready(timer);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -14,8 +14,8 @@ static void btnm_event_handler(lv_event_t * e)
|
||||
lv_obj_t * ta = lv_event_get_user_data(e);
|
||||
const char * txt = lv_buttonmatrix_get_button_text(obj, lv_buttonmatrix_get_selected_button(obj));
|
||||
|
||||
if(strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) lv_textarea_delete_char(ta);
|
||||
else if(strcmp(txt, LV_SYMBOL_NEW_LINE) == 0) lv_obj_send_event(ta, LV_EVENT_READY, NULL);
|
||||
if(lv_strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) lv_textarea_delete_char(ta);
|
||||
else if(lv_strcmp(txt, LV_SYMBOL_NEW_LINE) == 0) lv_obj_send_event(ta, LV_EVENT_READY, NULL);
|
||||
else lv_textarea_add_text(ta, txt);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/**
|
||||
* @file lv_conf.h
|
||||
* Configuration file for v9.1.0
|
||||
* Configuration file for v9.1.1-dev
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -44,6 +44,12 @@
|
||||
#define LV_USE_STDLIB_STRING LV_STDLIB_BUILTIN
|
||||
#define LV_USE_STDLIB_SPRINTF LV_STDLIB_BUILTIN
|
||||
|
||||
#define LV_STDINT_INCLUDE <stdint.h>
|
||||
#define LV_STDDEF_INCLUDE <stddef.h>
|
||||
#define LV_STDBOOL_INCLUDE <stdbool.h>
|
||||
#define LV_INTTYPES_INCLUDE <inttypes.h>
|
||||
#define LV_LIMITS_INCLUDE <limits.h>
|
||||
#define LV_STDARG_INCLUDE <stdarg.h>
|
||||
|
||||
#if LV_USE_STDLIB_MALLOC == LV_STDLIB_BUILTIN
|
||||
/*Size of the memory available for `lv_malloc()` in bytes (>= 2kB)*/
|
||||
@@ -107,6 +113,11 @@
|
||||
/*The target buffer size for simple layer chunks.*/
|
||||
#define LV_DRAW_LAYER_SIMPLE_BUF_SIZE (24 * 1024) /*[bytes]*/
|
||||
|
||||
/* The stack size of the drawing thread.
|
||||
* NOTE: If FreeType or ThorVG is enabled, it is recommended to set it to 32KB or more.
|
||||
*/
|
||||
#define LV_DRAW_THREAD_STACK_SIZE (8 * 1024) /*[bytes]*/
|
||||
|
||||
#define LV_USE_DRAW_SW 1
|
||||
#if LV_USE_DRAW_SW == 1
|
||||
/* Set the number of draw unit.
|
||||
@@ -192,10 +203,15 @@
|
||||
* but does not guarantee the same rendering quality as the software. */
|
||||
#define LV_VG_LITE_USE_BOX_SHADOW 0
|
||||
|
||||
/* VG-Lite gradient image maximum cache number.
|
||||
/* VG-Lite linear gradient image maximum cache number.
|
||||
* NOTE: The memory usage of a single gradient image is 4K bytes.
|
||||
*/
|
||||
#define LV_VG_LITE_GRAD_CACHE_SIZE 32
|
||||
#define LV_VG_LITE_LINEAR_GRAD_CACHE_CNT 32
|
||||
|
||||
/* VG-Lite radial gradient image maximum cache size.
|
||||
* NOTE: The memory usage of a single gradient image is radial grad radius * 4 bytes.
|
||||
*/
|
||||
#define LV_VG_LITE_RADIAL_GRAD_CACHE_CNT 32
|
||||
|
||||
#endif
|
||||
|
||||
@@ -412,6 +428,7 @@
|
||||
/*Demonstrate special features*/
|
||||
#define LV_FONT_MONTSERRAT_28_COMPRESSED 0 /*bpp = 3*/
|
||||
#define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0 /*Hebrew, Arabic, Persian letters and all their forms*/
|
||||
#define LV_FONT_SIMSUN_14_CJK 0 /*1000 most common CJK radicals*/
|
||||
#define LV_FONT_SIMSUN_16_CJK 0 /*1000 most common CJK radicals*/
|
||||
|
||||
/*Pixel perfect monospace fonts*/
|
||||
@@ -510,6 +527,7 @@
|
||||
#define LV_CALENDAR_DEFAULT_MONTH_NAMES {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
|
||||
#define LV_USE_CALENDAR_HEADER_ARROW 1
|
||||
#define LV_USE_CALENDAR_HEADER_DROPDOWN 1
|
||||
#define LV_USE_CALENDAR_CHINESE 0
|
||||
#endif /*LV_USE_CALENDAR*/
|
||||
|
||||
#define LV_USE_CANVAS 1
|
||||
@@ -657,6 +675,12 @@
|
||||
#define LV_FS_LITTLEFS_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
|
||||
#endif
|
||||
|
||||
/*API for Arduino LittleFs. */
|
||||
#define LV_USE_FS_ARDUINO_ESP_LITTLEFS 0
|
||||
#if LV_USE_FS_ARDUINO_ESP_LITTLEFS
|
||||
#define LV_FS_ARDUINO_ESP_LITTLEFS_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
|
||||
#endif
|
||||
|
||||
/*LODEPNG decoder library*/
|
||||
#define LV_USE_LODEPNG 0
|
||||
|
||||
|
||||
4
lvgl.h
4
lvgl.h
@@ -15,8 +15,8 @@ extern "C" {
|
||||
***************************/
|
||||
#define LVGL_VERSION_MAJOR 9
|
||||
#define LVGL_VERSION_MINOR 1
|
||||
#define LVGL_VERSION_PATCH 0
|
||||
#define LVGL_VERSION_INFO ""
|
||||
#define LVGL_VERSION_PATCH 1
|
||||
#define LVGL_VERSION_INFO "dev"
|
||||
|
||||
/*********************
|
||||
* INCLUDES
|
||||
|
||||
@@ -74,8 +74,11 @@ os.system("./built_in_font_gen.py --size 28 -o lv_font_montserrat_28_compressed.
|
||||
print("\nGenerating 16 px Hebrew, Persian")
|
||||
os.system("./built_in_font_gen.py --size 16 -o lv_font_dejavu_16_persian_hebrew.c --bpp 4 --font DejaVuSans.ttf -r 0x20-0x7f,0x5d0-0x5ea,0x600-0x6FF,0xFB50-0xFDFF,0xFE70-0xFEFF")
|
||||
|
||||
print("\nGenerating 14 px CJK")
|
||||
os.system(u"./built_in_font_gen.py --size 14 -o lv_font_simsun_14_cjk.c --bpp 4 --font SimSun.woff -r 0x20-0x7f --symbols (),盗提陽帯鼻画輕ッ冊ェル写父ぁフ結想正四O夫源庭場天續鳥れ講猿苦階給了製守8祝己妳薄泣塩帰ぺ吃変輪那着仍嗯爭熱創味保字宿捨準查達肯ァ薬得査障該降察ね網加昼料等図邪秋コ態品屬久原殊候路願楽確針上被怕悲風份重歡っ附ぷ既4黨價娘朝凍僅際洋止右航よ专角應酸師個比則響健昇豐筆歷適修據細忙跟管長令家ザ期般花越ミ域泳通些油乏ラ。營ス返調農叫樹刊愛間包知把ヤ貧橋拡普聞前ジ建当繰ネ送習渇用補ィ覺體法遊宙ョ酔余利壊語くつ払皆時辺追奇そ們只胸械勝住全沈力光ん深溝二類北面社值試9和五勵ゃ貿幾逐打課ゲて領3鼓辦発評1渉詳暇込计駄供嘛郵頃腦反構絵お容規借身妻国慮剛急乗静必議置克土オ乎荷更肉還混古渡授合主離條値決季晴東大尚央州が嗎験流先医亦林田星晩拿60旅婦量為痛テ孫う環友況玩務其ぼち揺坐一肩腰犯タょ希即果ぶ物練待み高九找やヶ都グ去」サ、气仮雑酒許終企笑録形リ銀切ギ快問滿役単黄集森毎實研喜蘇司鉛洲川条媽ノ才兩話言雖媒出客づ卻現異故り誌逮同訊已視本題ぞを横開音第席費持眾怎選元退限ー賽処喝就残無いガ多ケ沒義遠歌隣錢某雪析嬉採自透き側員予ゼ白婚电へ顯呀始均畫似懸格車騒度わ親店週維億締慣免帳電甚來園浴ゅ愈京と杯各海怒ぜ排敗挙老買7極模実紀ヒ携隻告シ並屋這孩讓質ワブ富賃争康由辞マ火於短樣削弟材注節另室ダ招擁ぃ若套底波行勤關著泊背疲狭作念推ぐ民貸祖介說ビ代温契你我レ入描變再札ソ派頭智遅私聽舉灣山伸放直安ト誕煙付符幅ふ絡她届耳飲忘参革團仕様載ど歩獲嫌息の汚交興魚指資雙與館初学年幸史位柱族走括び考青也共腕Lで販擔理病イ今逃當寺猫邊菓係ム秘示解池影ド文例斷曾事茶寫明科桃藝売便え導禁財飛替而亡到し具空寝辛業ウ府セ國何基菜厳市努張缺雲根外だ断万砂ゴ超使台实ぽ礼最慧算軟界段律像夕丈窓助刻月夏政呼ぴざ擇趣除動従涼方勉名線対存請子氏將5少否諸論美感或西者定食御表は參歳緑命進易性錯房も捕皿判中觀戦ニ緩町ピ番ず金千ろ?不た象治関ャ每看徒卒統じ手範訪押座步号ベ旁以母すほ密減成往歲件緒読歯效院种七謂凝濃嵌震喉繼クュ拭死円2積水欲如ポにさ寒道區精啦姐ア聯能足及停思壓2春且メ裏株官答概黒過氷柿戻厚ぱ党祭織引計け委暗複誘港バ失下村較続神ぇ尤強秀膝兒来績十書済化服破新廠1紹您情半式產系好教暑早め樂地休協良な哪常要揮周かエ麗境働避護ンツ香夜太見設非改広聲他検求危清彼經未在起葉控靴所差內造寄南望尺換向展備眠點完約ぎ裡分説申童優伝島机須塊日立拉,鉄軽單気信很転識支布数紙此迎受心輸坊モ處「訳三曇兄野顔戰增ナ伊列又髪両有取左毛至困吧昔赤狀相夠整別士経頼然簡ホ会發隨営需脱ヨば接永居冬迫圍甘醫誰部充消連弱宇會咲覚姉麼的増首统帶糖朋術商担移景功育庫曲總劃牛程駅犬報ロ學責因パ嚴八世後平負公げ曜陸專午之閉ぬ談ご災昨冷職悪謝對它近射敢意運船臉局難什産頗!球真記ま但蔵究制機案湖臺ひ害券男留内木驗雨施種特復句末濟キ色訴依せ百型る石牠討呢时任執飯歐宅組傳配小活ゆべ暖ズ漸站素らボ束価チ浅回女片独妹英目從認生違策僕楚ペ米こ掛む爸六状落漢プ投カ校做啊洗声探あ割体項履触々訓技ハ低工映是標速善点人デ口次可廿节宵植树端阳旦腊妇费愚劳动儿军师庆圣诞闰".encode('utf-8'))
|
||||
|
||||
print("\nGenerating 16 px CJK")
|
||||
os.system(u"./built_in_font_gen.py --size 16 -o lv_font_simsun_16_cjk.c --bpp 4 --font SimSun.woff -r 0x20-0x7f --symbols (),盗提陽帯鼻画輕ッ冊ェル写父ぁフ結想正四O夫源庭場天續鳥れ講猿苦階給了製守8祝己妳薄泣塩帰ぺ吃変輪那着仍嗯爭熱創味保字宿捨準查達肯ァ薬得査障該降察ね網加昼料等図邪秋コ態品屬久原殊候路願楽確針上被怕悲風份重歡っ附ぷ既4黨價娘朝凍僅際洋止右航よ专角應酸師個比則響健昇豐筆歷適修據細忙跟管長令家ザ期般花越ミ域泳通些油乏ラ。營ス返調農叫樹刊愛間包知把ヤ貧橋拡普聞前ジ建当繰ネ送習渇用補ィ覺體法遊宙ョ酔余利壊語くつ払皆時辺追奇そ們只胸械勝住全沈力光ん深溝二類北面社值試9和五勵ゃ貿幾逐打課ゲて領3鼓辦発評1渉詳暇込计駄供嘛郵頃腦反構絵お容規借身妻国慮剛急乗静必議置克土オ乎荷更肉還混古渡授合主離條値決季晴東大尚央州が嗎験流先医亦林田星晩拿60旅婦量為痛テ孫う環友況玩務其ぼち揺坐一肩腰犯タょ希即果ぶ物練待み高九找やヶ都グ去」サ、气仮雑酒許終企笑録形リ銀切ギ快問滿役単黄集森毎實研喜蘇司鉛洲川条媽ノ才兩話言雖媒出客づ卻現異故り誌逮同訊已視本題ぞを横開音第席費持眾怎選元退限ー賽処喝就残無いガ多ケ沒義遠歌隣錢某雪析嬉採自透き側員予ゼ白婚电へ顯呀始均畫似懸格車騒度わ親店週維億締慣免帳電甚來園浴ゅ愈京と杯各海怒ぜ排敗挙老買7極模実紀ヒ携隻告シ並屋這孩讓質ワブ富賃争康由辞マ火於短樣削弟材注節另室ダ招擁ぃ若套底波行勤關著泊背疲狭作念推ぐ民貸祖介說ビ代温契你我レ入描變再札ソ派頭智遅私聽舉灣山伸放直安ト誕煙付符幅ふ絡她届耳飲忘参革團仕様載ど歩獲嫌息の汚交興魚指資雙與館初学年幸史位柱族走括び考青也共腕Lで販擔理病イ今逃當寺猫邊菓係ム秘示解池影ド文例斷曾事茶寫明科桃藝売便え導禁財飛替而亡到し具空寝辛業ウ府セ國何基菜厳市努張缺雲根外だ断万砂ゴ超使台实ぽ礼最慧算軟界段律像夕丈窓助刻月夏政呼ぴざ擇趣除動従涼方勉名線対存請子氏將5少否諸論美感或西者定食御表は參歳緑命進易性錯房も捕皿判中觀戦ニ緩町ピ番ず金千ろ?不た象治関ャ每看徒卒統じ手範訪押座步号ベ旁以母すほ密減成往歲件緒読歯效院种七謂凝濃嵌震喉繼クュ拭死円2積水欲如ポにさ寒道區精啦姐ア聯能足及停思壓2春且メ裏株官答概黒過氷柿戻厚ぱ党祭織引計け委暗複誘港バ失下村較続神ぇ尤強秀膝兒来績十書済化服破新廠1紹您情半式產系好教暑早め樂地休協良な哪常要揮周かエ麗境働避護ンツ香夜太見設非改広聲他検求危清彼經未在起葉控靴所差內造寄南望尺換向展備眠點完約ぎ裡分説申童優伝島机須塊日立拉,鉄軽單気信很転識支布数紙此迎受心輸坊モ處「訳三曇兄野顔戰增ナ伊列又髪両有取左毛至困吧昔赤狀相夠整別士経頼然簡ホ会發隨営需脱ヨば接永居冬迫圍甘醫誰部充消連弱宇會咲覚姉麼的増首统帶糖朋術商担移景功育庫曲總劃牛程駅犬報ロ學責因パ嚴八世後平負公げ曜陸專午之閉ぬ談ご災昨冷職悪謝對它近射敢意運船臉局難什産頗!球真記ま但蔵究制機案湖臺ひ害券男留内木驗雨施種特復句末濟キ色訴依せ百型る石牠討呢时任執飯歐宅組傳配小活ゆべ暖ズ漸站素らボ束価チ浅回女片独妹英目從認生違策僕楚ペ米こ掛む爸六状落漢プ投カ校做啊洗声探あ割体項履触々訓技ハ低工映是標速善点人デ口次可".encode('utf-8'))
|
||||
os.system(u"./built_in_font_gen.py --size 16 -o lv_font_simsun_16_cjk.c --bpp 4 --font SimSun.woff -r 0x20-0x7f --symbols (),盗提陽帯鼻画輕ッ冊ェル写父ぁフ結想正四O夫源庭場天續鳥れ講猿苦階給了製守8祝己妳薄泣塩帰ぺ吃変輪那着仍嗯爭熱創味保字宿捨準查達肯ァ薬得査障該降察ね網加昼料等図邪秋コ態品屬久原殊候路願楽確針上被怕悲風份重歡っ附ぷ既4黨價娘朝凍僅際洋止右航よ专角應酸師個比則響健昇豐筆歷適修據細忙跟管長令家ザ期般花越ミ域泳通些油乏ラ。營ス返調農叫樹刊愛間包知把ヤ貧橋拡普聞前ジ建当繰ネ送習渇用補ィ覺體法遊宙ョ酔余利壊語くつ払皆時辺追奇そ們只胸械勝住全沈力光ん深溝二類北面社值試9和五勵ゃ貿幾逐打課ゲて領3鼓辦発評1渉詳暇込计駄供嘛郵頃腦反構絵お容規借身妻国慮剛急乗静必議置克土オ乎荷更肉還混古渡授合主離條値決季晴東大尚央州が嗎験流先医亦林田星晩拿60旅婦量為痛テ孫う環友況玩務其ぼち揺坐一肩腰犯タょ希即果ぶ物練待み高九找やヶ都グ去」サ、气仮雑酒許終企笑録形リ銀切ギ快問滿役単黄集森毎實研喜蘇司鉛洲川条媽ノ才兩話言雖媒出客づ卻現異故り誌逮同訊已視本題ぞを横開音第席費持眾怎選元退限ー賽処喝就残無いガ多ケ沒義遠歌隣錢某雪析嬉採自透き側員予ゼ白婚电へ顯呀始均畫似懸格車騒度わ親店週維億締慣免帳電甚來園浴ゅ愈京と杯各海怒ぜ排敗挙老買7極模実紀ヒ携隻告シ並屋這孩讓質ワブ富賃争康由辞マ火於短樣削弟材注節另室ダ招擁ぃ若套底波行勤關著泊背疲狭作念推ぐ民貸祖介說ビ代温契你我レ入描變再札ソ派頭智遅私聽舉灣山伸放直安ト誕煙付符幅ふ絡她届耳飲忘参革團仕様載ど歩獲嫌息の汚交興魚指資雙與館初学年幸史位柱族走括び考青也共腕Lで販擔理病イ今逃當寺猫邊菓係ム秘示解池影ド文例斷曾事茶寫明科桃藝売便え導禁財飛替而亡到し具空寝辛業ウ府セ國何基菜厳市努張缺雲根外だ断万砂ゴ超使台实ぽ礼最慧算軟界段律像夕丈窓助刻月夏政呼ぴざ擇趣除動従涼方勉名線対存請子氏將5少否諸論美感或西者定食御表は參歳緑命進易性錯房も捕皿判中觀戦ニ緩町ピ番ず金千ろ?不た象治関ャ每看徒卒統じ手範訪押座步号ベ旁以母すほ密減成往歲件緒読歯效院种七謂凝濃嵌震喉繼クュ拭死円2積水欲如ポにさ寒道區精啦姐ア聯能足及停思壓2春且メ裏株官答概黒過氷柿戻厚ぱ党祭織引計け委暗複誘港バ失下村較続神ぇ尤強秀膝兒来績十書済化服破新廠1紹您情半式產系好教暑早め樂地休協良な哪常要揮周かエ麗境働避護ンツ香夜太見設非改広聲他検求危清彼經未在起葉控靴所差內造寄南望尺換向展備眠點完約ぎ裡分説申童優伝島机須塊日立拉,鉄軽單気信很転識支布数紙此迎受心輸坊モ處「訳三曇兄野顔戰增ナ伊列又髪両有取左毛至困吧昔赤狀相夠整別士経頼然簡ホ会發隨営需脱ヨば接永居冬迫圍甘醫誰部充消連弱宇會咲覚姉麼的増首统帶糖朋術商担移景功育庫曲總劃牛程駅犬報ロ學責因パ嚴八世後平負公げ曜陸專午之閉ぬ談ご災昨冷職悪謝對它近射敢意運船臉局難什産頗!球真記ま但蔵究制機案湖臺ひ害券男留内木驗雨施種特復句末濟キ色訴依せ百型る石牠討呢时任執飯歐宅組傳配小活ゆべ暖ズ漸站素らボ束価チ浅回女片独妹英目從認生違策僕楚ペ米こ掛む爸六状落漢プ投カ校做啊洗声探あ割体項履触々訓技ハ低工映是標速善点人デ口次可廿节宵植树端阳旦腊妇费愚劳动儿军师庆圣诞闰".encode('utf-8'))
|
||||
|
||||
print("\nGenerating 8 px unscii")
|
||||
os.system("lv_font_conv --no-compress --no-prefilter --bpp 1 --size 8 --font unscii-8.ttf -r 0x20-0x7F --format lvgl -o lv_font_unscii_8.c --force-fast-kern-format")
|
||||
|
||||
@@ -6,144 +6,117 @@
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
{{#commit-list merges heading='' message='BREAKING CHANGE'}}
|
||||
- .. warning: {{message}}
|
||||
`{{id}} <{{href}}>`__
|
||||
- .. warning: {{message}} `{{id}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list commits heading='' message='BREAKING CHANGE'}}
|
||||
- .. warning: {{subject}}
|
||||
`{{shorthash}} <{{href}}>`__
|
||||
- .. warning: {{subject}} `{{shorthash}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list fixes heading='' message='BREAKING CHANGE'}}
|
||||
- **{{commit.subject}}**
|
||||
`{{commit.shorthash}} <{{commit.href}}>`__
|
||||
- **{{commit.subject}}** `{{commit.shorthash}} <{{commit.href}}>`__
|
||||
{{/commit-list}}
|
||||
|
||||
Architectural
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
{{#commit-list merges heading='' message='^arch' exclude='BREAKING CHANGE'}}
|
||||
- **{{message}}**
|
||||
`{{id}} <{{href}}>`__
|
||||
- **{{message}}** `{{id}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list commits heading='' message='^arch' exclude='BREAKING CHANGE'}}
|
||||
- **{{subject}}**
|
||||
`{{shorthash}} <{{href}}>`__
|
||||
- **{{subject}}** `{{shorthash}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list fixes heading='' message='^arch' exclude='BREAKING CHANGE'}}
|
||||
- **{{commit.subject}}**
|
||||
`{{commit.shorthash}} <{{commit.href}}>`__
|
||||
- **{{commit.subject}}** `{{commit.shorthash}} <{{commit.href}}>`__
|
||||
{{/commit-list}}
|
||||
|
||||
New Features
|
||||
~~~~~~~~~~~~
|
||||
|
||||
{{#commit-list merges heading='' message='^feat' exclude='BREAKING CHANGE'}}
|
||||
- **{{message}}**
|
||||
`{{id}} <{{href}}>`__
|
||||
- **{{message}}** `{{id}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list commits heading='' message='^feat' exclude='BREAKING CHANGE'}}
|
||||
- **{{subject}}**
|
||||
`{{shorthash}} <{{href}}>`__
|
||||
- **{{subject}}** `{{shorthash}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list fixes heading='' message='^feat' exclude='BREAKING CHANGE'}}
|
||||
- **{{commit.subject}}**
|
||||
`{{commit.shorthash}} <{{commit.href}}>`__
|
||||
- **{{commit.subject}}** `{{commit.shorthash}} <{{commit.href}}>`__
|
||||
{{/commit-list}}
|
||||
|
||||
Performance
|
||||
~~~~~~~~~~~
|
||||
|
||||
{{#commit-list merges heading='' message='^perf' exclude='BREAKING CHANGE'}}
|
||||
- **{{message}}**
|
||||
`{{id}} <{{href}}>`__
|
||||
- **{{message}}** `{{id}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list commits heading='' message='^perf' exclude='BREAKING CHANGE'}}
|
||||
- **{{subject}}**
|
||||
`{{shorthash}} <{{href}}>`__
|
||||
- **{{subject}}** `{{shorthash}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list fixes heading='' message='^perf' exclude='BREAKING CHANGE'}}
|
||||
- **{{commit.subject}}**
|
||||
`{{commit.shorthash}} <{{commit.href}}>`__
|
||||
- **{{commit.subject}}** `{{commit.shorthash}} <{{commit.href}}>`__
|
||||
{{/commit-list}}
|
||||
|
||||
Fixes
|
||||
~~~~~
|
||||
|
||||
{{#commit-list merges heading='' message='^fix' exclude='(^fix conflict|^fix warning|BREAKING CHANGE)'}}
|
||||
- **{{message}}**
|
||||
`{{id}} <{{href}}>`__
|
||||
- **{{message}}** `{{id}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list commits heading='' message='^fix' exclude='(^fix conflict|^fix warning|BREAKING CHANGE)'}}
|
||||
- **{{subject}}**
|
||||
`{{shorthash}} <{{href}}>`__
|
||||
- **{{subject}}** `{{shorthash}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list fixes heading='' message='^fix' exclude='(^fix conflict|^fix warning|BREAKING CHANGE)'}}
|
||||
- **{{commit.subject}}**
|
||||
`{{commit.shorthash}} <{{commit.href}}>`__
|
||||
- **{{commit.subject}}** `{{commit.shorthash}} <{{commit.href}}>`__
|
||||
{{/commit-list}}
|
||||
|
||||
Examples
|
||||
~~~~~~~~
|
||||
|
||||
{{#commit-list merges heading='' message='^example'}}
|
||||
- **{{message}}**
|
||||
`{{id}} <({{href}})>`__
|
||||
- **{{message}}** `{{id}} <({{href}})>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list commits heading='' message='^example'}}
|
||||
- **{{subject}}**
|
||||
`{{shorthash}} <{{href}}>`__
|
||||
- **{{subject}}** `{{shorthash}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list fixes heading='' message='^example'}}
|
||||
- **{{commit.subject}}**
|
||||
`{{commit.shorthash}} <{{commit.href}}>`__
|
||||
- **{{commit.subject}}** `{{commit.shorthash}} <{{commit.href}}>`__
|
||||
{{/commit-list}}
|
||||
|
||||
Docs
|
||||
~~~~
|
||||
|
||||
{{#commit-list merges heading='' message='^docs'}}
|
||||
- **{{message}}**
|
||||
`{{id}} <{{href}}>`__
|
||||
- **{{message}}** `{{id}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list commits heading='' message='^docs'}}
|
||||
- **{{subject}}**
|
||||
`{{shorthash}} <{{href}}>`__
|
||||
- **{{subject}}** `{{shorthash}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list fixes heading='' message='^docs'}}
|
||||
- **{{commit.subject}}**
|
||||
`{{commit.shorthash}} <{{commit.href}}>`__
|
||||
- **{{commit.subject}}** `{{commit.shorthash}} <{{commit.href}}>`__
|
||||
{{/commit-list}}
|
||||
|
||||
CI and tests
|
||||
~~~~~~~~~~~~
|
||||
|
||||
{{#commit-list merges heading='' message='(^ci|^test)'}}
|
||||
- **{{message}}**
|
||||
`{{id}} <{{href}}>`__
|
||||
- **{{message}}** `{{id}} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list commits heading='' message='(^ci|^test)'}}
|
||||
- **{{subject}}**
|
||||
`{{shorthash }} <{{href}}>`__
|
||||
- **{{subject}}** `{{shorthash }} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list fixes heading='' message='(^ci|^test)'}}
|
||||
- **{{commit.subject}}**
|
||||
`{{commit.shorthash}} <{{commit.href}}>`__
|
||||
- **{{commit.subject}}** `{{commit.shorthash}} <{{commit.href}}>`__
|
||||
{{/commit-list}}
|
||||
|
||||
Others
|
||||
~~~~~~
|
||||
|
||||
{{#commit-list merges heading='' exclude='(^fix|^feat|^perf|^docs|^example|^ci|^test)'}}
|
||||
- **{{message}}**
|
||||
`{{id }} <{{href}}>`__
|
||||
- **{{message}}** `{{id }} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list commits heading='' exclude='(^fix|^feat|^perf|^docs|^example|^ci|^test)'}}
|
||||
- **{{subject}}**
|
||||
`{{shorthash }} <{{href}}>`__
|
||||
- **{{subject}}** `{{shorthash }} <{{href}}>`__
|
||||
{{/commit-list}}
|
||||
{{#commit-list fixes heading='' exclude='(^fix|^feat|^perf|^docs|^example|^ci|^test)'}}
|
||||
- **{{commit.subject}}**
|
||||
`{{commit.shorthash}} <{{commit.href}}>`__
|
||||
- **{{commit.subject}}** `{{commit.shorthash}} <{{commit.href}}>`__
|
||||
{{/commit-list}}
|
||||
|
||||
{{/each}}
|
||||
|
||||
@@ -197,6 +197,17 @@ LV_EXPORT_CONST_INT(LV_DRAW_BUF_ALIGN);
|
||||
#define LV_USE_THORVG (LV_USE_THORVG_INTERNAL || LV_USE_THORVG_EXTERNAL)
|
||||
#endif
|
||||
|
||||
#if LV_USE_OS
|
||||
#if (LV_USE_FREETYPE || LV_USE_THORVG) && LV_DRAW_THREAD_STACK_SIZE < (32 * 1024)
|
||||
#warning "Increase LV_DRAW_THREAD_STACK_SIZE to at least 32KB for FreeType or ThorVG."
|
||||
#endif
|
||||
|
||||
#if defined(LV_DRAW_THREAD_STACKSIZE) && !defined(LV_DRAW_THREAD_STACK_SIZE)
|
||||
#warning "LV_DRAW_THREAD_STACKSIZE was renamed to LV_DRAW_THREAD_STACK_SIZE. Please update lv_conf.h or run menuconfig again."
|
||||
#define LV_DRAW_THREAD_STACK_SIZE LV_DRAW_THREAD_STACKSIZE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*If running without lv_conf.h add typedefs with default value*/
|
||||
#ifdef LV_CONF_SKIP
|
||||
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS) /*Disable warnings for Visual Studio*/
|
||||
|
||||
@@ -390,7 +390,7 @@ props = [
|
||||
'dsc': "Set the base direction of the object. The possible values are `LV_BIDI_DIR_LTR/RTL/AUTO`."},
|
||||
|
||||
{'name': 'BITMAP_MASK_SRC',
|
||||
'style_type': 'ptr', 'var_type': 'const lv_image_dsc_t *', 'default':'`NULL`', 'inherited': 0, 'layout': 0, 'ext_draw': 0,
|
||||
'style_type': 'ptr', 'var_type': 'const void *', 'default':'`NULL`', 'inherited': 0, 'layout': 0, 'ext_draw': 0,
|
||||
'dsc': "If set a layer will be created for the widget and the layer will be masked with this A8 bitmap mask."},
|
||||
|
||||
{'name': 'ROTARY_SENSITIVITY',
|
||||
|
||||
@@ -15,8 +15,6 @@ extern "C" {
|
||||
*********************/
|
||||
#include "../lv_conf_internal.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "../misc/lv_types.h"
|
||||
#include "../draw/lv_draw.h"
|
||||
#if LV_USE_DRAW_SW
|
||||
@@ -39,6 +37,8 @@ extern "C" {
|
||||
#include "../tick/lv_tick.h"
|
||||
#include "../layouts/lv_layout.h"
|
||||
|
||||
#include "../misc/lv_types.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
@@ -100,16 +100,12 @@ typedef struct _lv_global_t {
|
||||
lv_tick_state_t tick_state;
|
||||
|
||||
lv_draw_buf_handlers_t draw_buf_handlers;
|
||||
lv_draw_buf_handlers_t font_draw_buf_handlers;
|
||||
|
||||
lv_ll_t img_decoder_ll;
|
||||
|
||||
#if LV_CACHE_DEF_SIZE > 0
|
||||
lv_cache_t * img_cache;
|
||||
#endif
|
||||
|
||||
#if LV_IMAGE_HEADER_CACHE_DEF_CNT > 0
|
||||
lv_cache_t * img_header_cache;
|
||||
#endif
|
||||
|
||||
lv_draw_global_info_t draw_info;
|
||||
#if defined(LV_DRAW_SW_SHADOW_CACHE_SIZE) && LV_DRAW_SW_SHADOW_CACHE_SIZE > 0
|
||||
@@ -163,6 +159,10 @@ typedef struct _lv_global_t {
|
||||
lv_fs_drv_t littlefs_fs_drv;
|
||||
#endif
|
||||
|
||||
#if LV_USE_FS_ARDUINO_ESP_LITTLEFS
|
||||
lv_fs_drv_t arduino_esp_littlefs_fs_drv;
|
||||
#endif
|
||||
|
||||
#if LV_USE_FREETYPE
|
||||
struct _lv_freetype_context_t * ft_context;
|
||||
#endif
|
||||
|
||||
@@ -6,12 +6,11 @@
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stddef.h>
|
||||
|
||||
#include "lv_group.h"
|
||||
#include "../core/lv_obj.h"
|
||||
#include "../core/lv_global.h"
|
||||
#include "../indev/lv_indev.h"
|
||||
#include "../misc/lv_types.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
|
||||
@@ -13,11 +13,8 @@ extern "C" {
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
|
||||
#include "../lv_conf_internal.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "../misc/lv_types.h"
|
||||
#include "../misc/lv_ll.h"
|
||||
|
||||
|
||||
@@ -17,10 +17,9 @@
|
||||
#include "../misc/lv_assert.h"
|
||||
#include "../misc/lv_math.h"
|
||||
#include "../misc/lv_log.h"
|
||||
#include "../misc/lv_types.h"
|
||||
#include "../tick/lv_tick.h"
|
||||
#include "../stdlib/lv_string.h"
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
|
||||
@@ -15,8 +15,6 @@ extern "C" {
|
||||
*********************/
|
||||
#include "../lv_conf_internal.h"
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
#include "../misc/lv_types.h"
|
||||
#include "../misc/lv_style.h"
|
||||
#include "../misc/lv_area.h"
|
||||
@@ -260,14 +258,14 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent);
|
||||
/**
|
||||
* Set one or more flags
|
||||
* @param obj pointer to an object
|
||||
* @param f R-ed values from `lv_obj_flag_t` to set.
|
||||
* @param f OR-ed values from `lv_obj_flag_t` to set.
|
||||
*/
|
||||
void lv_obj_add_flag(lv_obj_t * obj, lv_obj_flag_t f);
|
||||
|
||||
/**
|
||||
* Remove one or more flags
|
||||
* @param obj pointer to an object
|
||||
* @param f OR-ed values from `lv_obj_flag_t` to set.
|
||||
* @param f OR-ed values from `lv_obj_flag_t` to clear.
|
||||
*/
|
||||
void lv_obj_remove_flag(lv_obj_t * obj, lv_obj_flag_t f);
|
||||
|
||||
|
||||
@@ -13,8 +13,6 @@ extern "C" {
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "../misc/lv_types.h"
|
||||
#include "../misc/lv_area.h"
|
||||
#include "lv_obj_property.h"
|
||||
|
||||
@@ -13,7 +13,6 @@ extern "C" {
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdbool.h>
|
||||
#include "../misc/lv_types.h"
|
||||
#include "../misc/lv_event.h"
|
||||
#include "../indev/lv_indev.h"
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
**********************/
|
||||
static void scroll_x_anim(void * obj, int32_t v);
|
||||
static void scroll_y_anim(void * obj, int32_t v);
|
||||
static void scroll_completed_completed_cb(lv_anim_t * a);
|
||||
static void scroll_end_cb(lv_anim_t * a);
|
||||
static void scroll_area_into_view(const lv_area_t * area, lv_obj_t * child, lv_point_t * scroll_value,
|
||||
lv_anim_enable_t anim_en);
|
||||
|
||||
@@ -309,7 +309,7 @@ void lv_obj_scroll_by(lv_obj_t * obj, int32_t dx, int32_t dy, lv_anim_enable_t a
|
||||
lv_anim_t a;
|
||||
lv_anim_init(&a);
|
||||
lv_anim_set_var(&a, obj);
|
||||
lv_anim_set_completed_cb(&a, scroll_completed_completed_cb);
|
||||
lv_anim_set_deleted_cb(&a, scroll_end_cb);
|
||||
|
||||
if(dx) {
|
||||
uint32_t t = lv_anim_speed_clamped((lv_display_get_horizontal_resolution(d)) >> 1, SCROLL_ANIM_TIME_MIN,
|
||||
@@ -675,7 +675,7 @@ static void scroll_y_anim(void * obj, int32_t v)
|
||||
_lv_obj_scroll_by_raw(obj, 0, v + lv_obj_get_scroll_y(obj));
|
||||
}
|
||||
|
||||
static void scroll_completed_completed_cb(lv_anim_t * a)
|
||||
static void scroll_end_cb(lv_anim_t * a)
|
||||
{
|
||||
lv_obj_send_event(a->var, LV_EVENT_SCROLL_END, NULL);
|
||||
}
|
||||
@@ -776,13 +776,8 @@ static void scroll_area_into_view(const lv_area_t * area, lv_obj_t * child, lv_p
|
||||
}
|
||||
|
||||
/*Remove any pending scroll animations.*/
|
||||
bool y_del = lv_anim_delete(parent, scroll_y_anim);
|
||||
bool x_del = lv_anim_delete(parent, scroll_x_anim);
|
||||
if(y_del || x_del) {
|
||||
lv_result_t res;
|
||||
res = lv_obj_send_event(parent, LV_EVENT_SCROLL_END, NULL);
|
||||
if(res != LV_RESULT_OK) return;
|
||||
}
|
||||
lv_anim_delete(parent, scroll_y_anim);
|
||||
lv_anim_delete(parent, scroll_x_anim);
|
||||
|
||||
if((scroll_dir & LV_DIR_LEFT) == 0 && x_scroll < 0) x_scroll = 0;
|
||||
if((scroll_dir & LV_DIR_RIGHT) == 0 && x_scroll > 0) x_scroll = 0;
|
||||
|
||||
@@ -429,6 +429,7 @@ void _lv_obj_style_create_transition(lv_obj_t * obj, lv_part_t part, lv_state_t
|
||||
|
||||
_lv_obj_style_t * style_trans = get_trans_style(obj, part);
|
||||
lv_style_set_prop((lv_style_t *)style_trans->style, tr_dsc->prop, v1); /*Be sure `trans_style` has a valid value*/
|
||||
lv_obj_refresh_style(obj, tr_dsc->selector, tr_dsc->prop);
|
||||
|
||||
if(tr_dsc->prop == LV_STYLE_RADIUS) {
|
||||
if(v1.num == LV_RADIUS_CIRCLE || v2.num == LV_RADIUS_CIRCLE) {
|
||||
@@ -906,8 +907,9 @@ static void trans_anim_start_cb(lv_anim_t * a)
|
||||
tr->prop = prop_tmp;
|
||||
|
||||
_lv_obj_style_t * style_trans = get_trans_style(tr->obj, tr->selector);
|
||||
lv_style_set_prop((lv_style_t *)style_trans->style, tr->prop,
|
||||
tr->start_value); /*Be sure `trans_style` has a valid value*/
|
||||
/*Be sure `trans_style` has a valid value*/
|
||||
lv_style_set_prop((lv_style_t *)style_trans->style, tr->prop, tr->start_value);
|
||||
lv_obj_refresh_style(tr->obj, tr->selector, tr->prop);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,10 +13,9 @@ extern "C" {
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "../misc/lv_bidi.h"
|
||||
#include "../misc/lv_style.h"
|
||||
#include "../misc/lv_types.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
|
||||
@@ -690,7 +690,8 @@ void lv_obj_set_style_opa_layered(lv_obj_t * obj, lv_opa_t value, lv_style_selec
|
||||
lv_obj_set_local_style_prop(obj, LV_STYLE_OPA_LAYERED, v, selector);
|
||||
}
|
||||
|
||||
void lv_obj_set_style_color_filter_dsc(lv_obj_t * obj, const lv_color_filter_dsc_t * value, lv_style_selector_t selector)
|
||||
void lv_obj_set_style_color_filter_dsc(lv_obj_t * obj, const lv_color_filter_dsc_t * value,
|
||||
lv_style_selector_t selector)
|
||||
{
|
||||
lv_style_value_t v = {
|
||||
.ptr = value
|
||||
@@ -754,7 +755,7 @@ void lv_obj_set_style_base_dir(lv_obj_t * obj, lv_base_dir_t value, lv_style_sel
|
||||
lv_obj_set_local_style_prop(obj, LV_STYLE_BASE_DIR, v, selector);
|
||||
}
|
||||
|
||||
void lv_obj_set_style_bitmap_mask_src(lv_obj_t * obj, const lv_image_dsc_t * value, lv_style_selector_t selector)
|
||||
void lv_obj_set_style_bitmap_mask_src(lv_obj_t * obj, const void * value, lv_style_selector_t selector)
|
||||
{
|
||||
lv_style_value_t v = {
|
||||
.ptr = value
|
||||
|
||||
@@ -230,7 +230,8 @@ static inline lv_color_t lv_obj_get_style_bg_grad_color(const lv_obj_t * obj, ui
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_bg_grad_color_filtered(const lv_obj_t * obj, uint32_t part)
|
||||
{
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BG_GRAD_COLOR));
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
||||
LV_STYLE_BG_GRAD_COLOR));
|
||||
return v.color;
|
||||
}
|
||||
|
||||
@@ -290,7 +291,8 @@ static inline lv_color_t lv_obj_get_style_bg_image_recolor(const lv_obj_t * obj,
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_bg_image_recolor_filtered(const lv_obj_t * obj, uint32_t part)
|
||||
{
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BG_IMAGE_RECOLOR));
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
||||
LV_STYLE_BG_IMAGE_RECOLOR));
|
||||
return v.color;
|
||||
}
|
||||
|
||||
@@ -314,7 +316,8 @@ static inline lv_color_t lv_obj_get_style_border_color(const lv_obj_t * obj, uin
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_border_color_filtered(const lv_obj_t * obj, uint32_t part)
|
||||
{
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_BORDER_COLOR));
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
||||
LV_STYLE_BORDER_COLOR));
|
||||
return v.color;
|
||||
}
|
||||
|
||||
@@ -356,7 +359,8 @@ static inline lv_color_t lv_obj_get_style_outline_color(const lv_obj_t * obj, ui
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_outline_color_filtered(const lv_obj_t * obj, uint32_t part)
|
||||
{
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_OUTLINE_COLOR));
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
||||
LV_STYLE_OUTLINE_COLOR));
|
||||
return v.color;
|
||||
}
|
||||
|
||||
@@ -404,7 +408,8 @@ static inline lv_color_t lv_obj_get_style_shadow_color(const lv_obj_t * obj, uin
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_shadow_color_filtered(const lv_obj_t * obj, uint32_t part)
|
||||
{
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_SHADOW_COLOR));
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
||||
LV_STYLE_SHADOW_COLOR));
|
||||
return v.color;
|
||||
}
|
||||
|
||||
@@ -428,7 +433,8 @@ static inline lv_color_t lv_obj_get_style_image_recolor(const lv_obj_t * obj, ui
|
||||
|
||||
static inline lv_color_t lv_obj_get_style_image_recolor_filtered(const lv_obj_t * obj, uint32_t part)
|
||||
{
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part, LV_STYLE_IMAGE_RECOLOR));
|
||||
lv_style_value_t v = _lv_obj_style_apply_color_filter(obj, part, lv_obj_get_style_prop(obj, part,
|
||||
LV_STYLE_IMAGE_RECOLOR));
|
||||
return v.color;
|
||||
}
|
||||
|
||||
@@ -636,10 +642,10 @@ static inline lv_base_dir_t lv_obj_get_style_base_dir(const lv_obj_t * obj, uint
|
||||
return (lv_base_dir_t)v.num;
|
||||
}
|
||||
|
||||
static inline const lv_image_dsc_t * lv_obj_get_style_bitmap_mask_src(const lv_obj_t * obj, uint32_t part)
|
||||
static inline const void * lv_obj_get_style_bitmap_mask_src(const lv_obj_t * obj, uint32_t part)
|
||||
{
|
||||
lv_style_value_t v = lv_obj_get_style_prop(obj, part, LV_STYLE_BITMAP_MASK_SRC);
|
||||
return (const lv_image_dsc_t *)v.ptr;
|
||||
return (const void *)v.ptr;
|
||||
}
|
||||
|
||||
static inline uint32_t lv_obj_get_style_rotary_sensitivity(const lv_obj_t * obj, uint32_t part)
|
||||
@@ -829,7 +835,8 @@ void lv_obj_set_style_radius(lv_obj_t * obj, int32_t value, lv_style_selector_t
|
||||
void lv_obj_set_style_clip_corner(lv_obj_t * obj, bool value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_opa_layered(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_color_filter_dsc(lv_obj_t * obj, const lv_color_filter_dsc_t * value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_color_filter_dsc(lv_obj_t * obj, const lv_color_filter_dsc_t * value,
|
||||
lv_style_selector_t selector);
|
||||
void lv_obj_set_style_color_filter_opa(lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_anim(lv_obj_t * obj, const lv_anim_t * value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_anim_duration(lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);
|
||||
@@ -837,7 +844,7 @@ void lv_obj_set_style_transition(lv_obj_t * obj, const lv_style_transition_dsc_t
|
||||
void lv_obj_set_style_blend_mode(lv_obj_t * obj, lv_blend_mode_t value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_layout(lv_obj_t * obj, uint16_t value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_base_dir(lv_obj_t * obj, lv_base_dir_t value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_bitmap_mask_src(lv_obj_t * obj, const lv_image_dsc_t * value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_bitmap_mask_src(lv_obj_t * obj, const void * value, lv_style_selector_t selector);
|
||||
void lv_obj_set_style_rotary_sensitivity(lv_obj_t * obj, uint32_t value, lv_style_selector_t selector);
|
||||
#if LV_USE_FLEX
|
||||
void lv_obj_set_style_flex_flow(lv_obj_t * obj, lv_flex_flow_t value, lv_style_selector_t selector);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user