mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-20 12:32:18 +08:00
merge master
This commit is contained in:
@@ -4,4 +4,3 @@ indent_size = 4
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
---
|
||||
name: All other issues
|
||||
about: Questions and enhancement requests should go to the forum.
|
||||
title: ''
|
||||
labels: not-template
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
# All enhancement requests or questions should be directed to the Forum.
|
||||
|
||||
|
||||
We use GitHub issues for development related discussions.
|
||||
Please use the [forum](https://forum.littlevgl.com/) to ask questions.
|
||||
@@ -1,29 +1,43 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
about: Create a bug report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
> # Important: issues that don't use this template will be ignored/closed.
|
||||
<!--
|
||||
IMPORTANT
|
||||
Issues that don't use this template will be ignored and closed.
|
||||
-->
|
||||
|
||||
**Describe the bug**
|
||||
### Perform all steps below and tick them with [x]
|
||||
- [ ] Check the related part of the [Documentation](https://docs.lvgl.io/)
|
||||
- [ ] Update lvgl to the latest version
|
||||
- [ ] Reproduce the issue in a [Simulator](https://docs.lvgl.io/latest/en/html/get-started/pc-simulator.html)
|
||||
|
||||
### Describe the bug
|
||||
<!--
|
||||
A clear and concise description of what the bug is.
|
||||
-->
|
||||
|
||||
**To Reproduce**
|
||||
|
||||
Please provide a small, independent code sample that can be used to reproduce the issue. Ideally this should work in the PC simulator unless the problem is specific to one platform.
|
||||
|
||||
**Expected behavior**
|
||||
### To Reproduce
|
||||
<!--
|
||||
Provide a small, independent code sample that can be used to reproduce the issue.
|
||||
Ideally this should work in the PC simulator unless the problem is specific to a platform.
|
||||
Format the code like this:
|
||||
```c
|
||||
your code here
|
||||
```
|
||||
-->
|
||||
|
||||
### Expected behavior
|
||||
<!--
|
||||
A clear and concise description of what you expected to happen.
|
||||
-->
|
||||
|
||||
**Screenshots**
|
||||
### Screenshots or video
|
||||
<!--
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Additional context**
|
||||
|
||||
Add any other context about the problem here.
|
||||
-->
|
||||
|
||||
@@ -5,7 +5,7 @@ contact_links:
|
||||
about: Be sure to read to documentation first
|
||||
- name: Forum
|
||||
url: https://forum.lvgl.io
|
||||
about: For how-to questions use the forum
|
||||
about: For topics like How-to, Getting started, Feature request
|
||||
- name: CONTIBUTING.md
|
||||
url: https://github.com/lvgl/lvgl/blob/master/docs/CONTRIBUTING.md#faq-about-contributing
|
||||
about: The basic rules of contributing
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
name: Development discussion
|
||||
about: Discussion strictly related to the develoopment of the LVGL.
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
<!--
|
||||
IMPORTANT
|
||||
Issues that don't use this template will be ignored and closed.
|
||||
|
||||
Normal Feature requests should go to the Forum: https://forum.lvgl.io/c/feature-request/9
|
||||
-->
|
||||
|
||||
### Introcude the problem
|
||||
<!--
|
||||
A clear and concise description of the problem.
|
||||
-->
|
||||
|
||||
### Examples and cases
|
||||
<!--
|
||||
Mention some examples and cases where the problem or the missing feature is relevant
|
||||
-->
|
||||
|
||||
### Suggested solution
|
||||
<!--
|
||||
If you already have an idea about the solution share it here
|
||||
-->
|
||||
@@ -1,12 +1,12 @@
|
||||
# Comment to a new issue.
|
||||
pullRequestOpened: |
|
||||
Thank you for raising your pull request.
|
||||
|
||||
To ensure that all licensing criteria is met all repositories of the LVGL project apply a process called DCO (Developer's Certificate of Origin).
|
||||
|
||||
|
||||
To ensure that all licensing criteria is met all repositories of the LVGL project apply a process called DCO (Developer's Certificate of Origin).
|
||||
|
||||
The text of DCO can be read here: https://developercertificate.org/
|
||||
For a more detailed description see the [Documentation](https://docs.lvgl.io/latest/en/html/contributing/index.html#developer-certification-of-origin-dco) site.
|
||||
|
||||
|
||||
By contributing to any repositories of the LVGL project you state that your contribution corresponds with the DCO.
|
||||
|
||||
No further action is required if your contribution fulfills the DCO. If you are not sure about it feel free to ask us in a comment.
|
||||
|
||||
No further action is required if your contribution fulfills the DCO. If you are not sure about it feel free to ask us in a comment.
|
||||
|
||||
@@ -5,4 +5,4 @@ A clear and concise description of what the bug or new feature is.
|
||||
### Checkpoints
|
||||
- [ ] Follow the [styling guide](https://github.com/lvgl/lvgl/blob/master/docs/CODING_STYLE.md)
|
||||
- [ ] Update CHANGELOG.md
|
||||
- [ ] Update the documentation
|
||||
- [ ] Update the documentation
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ exemptLabels:
|
||||
- architecture
|
||||
- pinned
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: stale
|
||||
staleLabel: stale
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue or pull request has been automatically marked as stale because it has not had
|
||||
|
||||
@@ -37,6 +37,5 @@ jobs:
|
||||
echo "import gc,utime;
|
||||
utime.sleep(5);
|
||||
gc.collect();
|
||||
utime.sleep(5)" |
|
||||
utime.sleep(5)" |
|
||||
ports/unix/micropython -i lib/lv_bindings/examples/advanced_demo.py
|
||||
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
on:
|
||||
issues:
|
||||
types: [opened, edited]
|
||||
|
||||
jobs:
|
||||
auto_close_issues:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v1
|
||||
- name: Automatically close issues that don't follow the issue template
|
||||
uses: lucasbento/auto-close-issues@v1.0.2
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-close-message: "@${issue.user.login}: hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template." # optional property
|
||||
closed-issues-label: "not-template"
|
||||
+25
-14
@@ -1,11 +1,23 @@
|
||||
# Changelog
|
||||
|
||||
## v7.9.1 (Planned at 19.01.2020)
|
||||
|
||||
### Bugfixes
|
||||
- fix(cpicker) fix division by zero
|
||||
- fix(dropdown) fix selecting options after the last one
|
||||
- fix(msgbox) use the animation time provided
|
||||
- fix(gpu_nxp_pxp) fix incorrect define name
|
||||
- fix(indev) don't leave edit mode if there is only one object in the group
|
||||
- fix(draw_rect) fix draw pattern stack-use-after-scope error
|
||||
|
||||
|
||||
## v7.9.0
|
||||
|
||||
### New features
|
||||
- feat(chart) add lv_chart_remove_series and lv_chart_hide_series
|
||||
- feat(img_cahce) allow disabling image cacheing
|
||||
- feat(img_cahce) allow disabling image caching
|
||||
- calendar: make get_day_of_week() public
|
||||
- Added support for Zephyr integration
|
||||
|
||||
### Bugfixes
|
||||
- fix(draw_rect) free buffer used for arabic processing
|
||||
@@ -15,8 +27,11 @@
|
||||
- fix(textarea) cursor position after hiding character in password mode
|
||||
- fix(linemeter) draw critical lines with correct color
|
||||
- fix(lv_conf_internal) be sure Kconfig defines are always uppercase
|
||||
- fix(kconfig) handle disable sprintf float correctly.
|
||||
- fix(layout) stop layout after recursion threshold is reached
|
||||
- fix(gauge) fix redraw with image needle
|
||||
|
||||
## v7.8.1 (Plannad at 15.12.2020)
|
||||
## v7.8.1
|
||||
|
||||
### Bugfixes
|
||||
- fix(lv_scr_load_anim) fix when multiple screen are loaded at tsame time with delay
|
||||
@@ -43,7 +58,7 @@
|
||||
- fix reference to LV_DRAW_BUF_MAX_NUM in lv_mem.c
|
||||
- fix(polygon draw) join adjacent points if they are on the same coordinate
|
||||
- fix(linemeter) fix invalidation when setting new value
|
||||
- fix(table) add missing invalidation when changeing cell type
|
||||
- fix(table) add missing invalidation when changing cell type
|
||||
- refactor(roller) rename LV_ROLLER_MODE_INIFINITE -> LV_ROLLER_MODE_INFINITE
|
||||
|
||||
## v7.7.2 (17.11.2020)
|
||||
@@ -53,7 +68,7 @@
|
||||
- fix(arc) fix and improve arc dragging
|
||||
- label: Repair calculate back `dot` character logical error which cause infinite loop.
|
||||
- fix(theme_material): remove the bottom border from tabview header
|
||||
- fix(imgbtn) guess a the closest availabe state with valid src
|
||||
- fix(imgbtn) guess a the closest available state with valid src
|
||||
- fix(spinbox) update cursor position in lv_spinbox_set_step
|
||||
|
||||
## v7.7.1 (03.11.2020)
|
||||
@@ -70,7 +85,7 @@
|
||||
- Allow max. 16 cell types for table
|
||||
- Add `lv_table_set_text_fmt()`
|
||||
- Use margin on calendar header to set distances and padding to the size of the header
|
||||
- Add `text_sel_bg` style proeprty
|
||||
- Add `text_sel_bg` style property
|
||||
|
||||
### Bugfixes
|
||||
- Theme update to support text selection background
|
||||
@@ -93,7 +108,6 @@
|
||||
- Fix imgbtn image switching with empty style
|
||||
- Material theme: do not set the text font to allow easy global font change
|
||||
|
||||
|
||||
## v7.6.0 (22.09.2020)
|
||||
|
||||
### New features
|
||||
@@ -111,7 +125,7 @@
|
||||
- Add 10px and 8ox built in fonts
|
||||
|
||||
### Bugfixes
|
||||
- Fix unexpeted DEFOCUS on lv_page when clicking to bg after the scrollable
|
||||
- Fix unexpected DEFOCUS on lv_page when clicking to bg after the scrollable
|
||||
- Fix `lv_obj_del` and `lv_obj_clean` if the children list changed during deletion.
|
||||
- Adjust button matrix button width to include padding when spanning multiple units.
|
||||
- Add rounding to btnmatrix line height calculation
|
||||
@@ -126,10 +140,10 @@ The main new features of v7.4 are run-time font loading, style caching and arc k
|
||||
### New features
|
||||
- Add `lv_font_load()` function - Loads a `lv_font_t` object from a binary font file
|
||||
- Add `lv_font_free()` function - Frees the memory allocated by the `lv_font_load()` function
|
||||
- Add style caching to reduce acces time of properties with default value
|
||||
- Add style caching to reduce access time of properties with default value
|
||||
- arc: add set value by click feature
|
||||
- arc: add `LV_ARC_PART_KNOB` similarly to slider
|
||||
- send gestures even if the the obejct was dragged. User can check dragging with `lv_indev_is_dragging(lv_indev_act())` in the event function.
|
||||
- send gestures event if the object was dragged. User can check dragging with `lv_indev_is_dragging(lv_indev_act())` in the event function.
|
||||
|
||||
### Bugfixes
|
||||
- Fix color bleeding on border drawing
|
||||
@@ -177,7 +191,6 @@ The main new features of v7.4 are run-time font loading, style caching and arc k
|
||||
- gauge: fix image needle drawing
|
||||
- fix using freed memory in _lv_style_list_remove_style
|
||||
|
||||
|
||||
## v7.2.0 (21.07.2020)
|
||||
|
||||
### New features
|
||||
@@ -214,7 +227,7 @@ The main new features of v7.4 are run-time font loading, style caching and arc k
|
||||
- Add lv_btnmatrix_set/get_align capability
|
||||
- DMA2D: Remove dependency on ST CubeMX HAL
|
||||
- Added `max_used` propriety to `lv_mem_monitor_t` struct
|
||||
- In `lv_init` test if the the strings are UTF-8 encoded.
|
||||
- In `lv_init` test if the strings are UTF-8 encoded.
|
||||
- Add `user_data` to themes
|
||||
- Add LV_BIG_ENDIAN_SYSTEM flag to lv_conf.h in order to fix displaying images on big endian systems.
|
||||
- Add inline function lv_checkbox_get_state(const lv_obj_t * cb) to extend the checkbox functionality.
|
||||
@@ -268,7 +281,7 @@ The main new features of v7.4 are run-time font loading, style caching and arc k
|
||||
- Remove memcpy from `lv_ll` (caused issues with some optimization settings)
|
||||
- `lv_chart` fix X tick drawing
|
||||
- Fix vertical dashed line drawing
|
||||
- Some additonal minor fixes and formattings
|
||||
- Some additional minor fixes and formattings
|
||||
|
||||
## v7.0.0 (18.05.2020)
|
||||
|
||||
@@ -281,7 +294,6 @@ The name of the project is changed to LVGL and the new website is on https://lvg
|
||||
|
||||
LVGL remains free under the same conditions (MIT license) and a company is created to manage LVGL and offer services.
|
||||
|
||||
|
||||
### New drawing system
|
||||
Complete rework of LVGL's draw engine to use "masks" for more advanced and higher quality graphical effects.
|
||||
A possible use-case of this system is to remove the overflowing content from the rounded edges.
|
||||
@@ -295,7 +307,6 @@ The API in this regard remained the same but some new functions were added:
|
||||
- `lv_img_set_angle`: set image object's angle without using canvas
|
||||
- `lv_img_set_pivot`: set the pivot point of rotation
|
||||
|
||||
|
||||
The new drawing engine brought new drawing features too. They are highlighted in the "style" section.
|
||||
|
||||
### New style system
|
||||
|
||||
@@ -32,6 +32,33 @@ if (CONFIG_LV_ATTRIBUTE_FAST_MEM_USE_IRAM)
|
||||
target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_ATTRIBUTE_FAST_MEM=IRAM_ATTR")
|
||||
endif()
|
||||
|
||||
elseif(ZEPHYR_BASE)
|
||||
|
||||
if(CONFIG_LVGL)
|
||||
|
||||
zephyr_include_directories(${ZEPHYR_BASE}/lib/gui/lvgl)
|
||||
|
||||
target_include_directories(lvgl INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
zephyr_compile_definitions(LV_CONF_KCONFIG_EXTERNAL_INCLUDE=<autoconf.h>)
|
||||
|
||||
zephyr_compile_definitions_ifdef(CONFIG_LV_MEM_CUSTOM
|
||||
LV_MEM_CUSTOM_ALLOC=${CONFIG_LV_MEM_CUSTOM_ALLOC}
|
||||
)
|
||||
zephyr_compile_definitions_ifdef(CONFIG_LV_MEM_CUSTOM
|
||||
LV_MEM_CUSTOM_FREE=${CONFIG_LV_MEM_CUSTOM_FREE}
|
||||
)
|
||||
zephyr_compile_definitions_ifdef(CONFIG_LV_TICK_CUSTOM
|
||||
LV_TICK_CUSTOM_SYS_TIME_EXPR=${CONFIG_LV_TICK_CUSTOM_SYS_TIME_EXPR}
|
||||
)
|
||||
|
||||
zephyr_library()
|
||||
|
||||
file(GLOB_RECURSE SOURCES src/*.c)
|
||||
zephyr_library_sources(${SOURCES})
|
||||
|
||||
endif() # CONFIG_LVGL
|
||||
|
||||
else()
|
||||
message(FATAL_ERROR "Unknown platform.")
|
||||
endif()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Kconfig file for LVGL v7.8.1
|
||||
|
||||
menu "LVGL configuration"
|
||||
|
||||
|
||||
config LV_ATTRIBUTE_FAST_MEM_USE_IRAM
|
||||
bool "Set IRAM as LV_ATTRIBUTE_FAST_MEM"
|
||||
help
|
||||
@@ -47,12 +47,14 @@ menu "LVGL configuration"
|
||||
default 8 if LV_COLOR_DEPTH_8
|
||||
default 16 if LV_COLOR_DEPTH_16
|
||||
default 32 if LV_COLOR_DEPTH_32
|
||||
|
||||
|
||||
config LV_COLOR_16_SWAP
|
||||
bool "Swap the 2 bytes of RGB565 color. Useful if the display has a 8 bit interface (e.g. SPI)."
|
||||
depends on LV_COLOR_DEPTH_16
|
||||
|
||||
config LV_COLOR_SCREEN_TRANSP
|
||||
bool "Enable screen transparency."
|
||||
depends on LV_COLOR_DEPTH_32
|
||||
help
|
||||
Useful for OSD or other overlapping GUIs.
|
||||
Requires `LV_COLOR_DEPTH = 32` colors and the screen's style
|
||||
@@ -95,7 +97,7 @@ menu "LVGL configuration"
|
||||
According to the width of the display (hor. res. / dpi) the
|
||||
displays fall in 4 categories. This is the upper limit for medium
|
||||
displays.
|
||||
|
||||
|
||||
config LV_DISP_LARGE_LIMIT
|
||||
int "Large display limit"
|
||||
default 70
|
||||
@@ -103,34 +105,34 @@ menu "LVGL configuration"
|
||||
According to the width of the display (hor. res. / dpi) the
|
||||
displays fall in 4 categories. This is the upper limit for large
|
||||
displays.
|
||||
|
||||
|
||||
menu "Memory manager settings"
|
||||
config LV_MEM_CUSTOM
|
||||
bool
|
||||
prompt "If true use custom malloc/free, otherwise use the built-in `lv_mem_alloc` and `lv_mem_free`"
|
||||
bool
|
||||
prompt "If true use custom malloc/free, otherwise use the built-in `lv_mem_alloc` and `lv_mem_free`"
|
||||
|
||||
config LV_MEM_CUSTOM_INCLUDE
|
||||
string
|
||||
prompt "Header to include for the custom memory function"
|
||||
default stdlib.h
|
||||
default "stdlib.h"
|
||||
depends on LV_MEM_CUSTOM
|
||||
|
||||
config LV_MEM_CUSTOM_ALLOC
|
||||
string
|
||||
prompt "Wrapper to malloc"
|
||||
default malloc
|
||||
default "malloc"
|
||||
depends on LV_MEM_CUSTOM
|
||||
|
||||
config LV_MEM_CUSTOM_FREE
|
||||
string
|
||||
prompt "Wrapper to free"
|
||||
default free
|
||||
default "free"
|
||||
depends on LV_MEM_CUSTOM
|
||||
|
||||
config LV_MEM_SIZE_BYTES
|
||||
int
|
||||
prompt "Size of the memory used by `lv_mem_alloc` in kilobytes (>= 2kB)"
|
||||
range 2 128
|
||||
config LV_MEM_SIZE_KILOBYTES
|
||||
int
|
||||
prompt "Size of the memory used by `lv_mem_alloc` in kilobytes (>= 2kB)"
|
||||
range 2 128
|
||||
default 32
|
||||
depends on !LV_MEM_CUSTOM
|
||||
|
||||
@@ -138,7 +140,7 @@ menu "LVGL configuration"
|
||||
bool
|
||||
prompt "Use the standard memcpy and memset instead of LVGL's own functions"
|
||||
endmenu
|
||||
|
||||
|
||||
menu "Indev device settings"
|
||||
config LV_INDEV_DEF_READ_PERIOD
|
||||
int "Input device read period [ms]."
|
||||
@@ -163,7 +165,7 @@ menu "LVGL configuration"
|
||||
default 3
|
||||
|
||||
endmenu
|
||||
|
||||
|
||||
menu "Feature usage"
|
||||
config LV_USE_ANIMATION
|
||||
bool "Enable the Animations."
|
||||
@@ -208,6 +210,7 @@ menu "LVGL configuration"
|
||||
bool "Enable STM32 DMA2D."
|
||||
config LV_GPU_DMA2D_CMSIS_INCLUDE
|
||||
string "include path of CMSIS header of target processor"
|
||||
depends on LV_USE_GPU_STM32_DMA2D
|
||||
default ""
|
||||
help
|
||||
e.g. "stm32f769xx.h" or "stm32f429xx.h"
|
||||
@@ -215,6 +218,7 @@ menu "LVGL configuration"
|
||||
bool "Use PXP for CPU off-load on NXP RTxxx platforms."
|
||||
config LV_USE_GPU_NXP_PXP_AUTO_INIT
|
||||
bool "Call lv_gpu_nxp_pxp_init() automatically or manually."
|
||||
depends on LV_USE_GPU_NXP_PXP
|
||||
help
|
||||
1: Add default bare metal and FreeRTOS interrupt handling
|
||||
routines for PXP (lv_gpu_nxp_pxp_osa.c) and call
|
||||
@@ -251,10 +255,10 @@ menu "LVGL configuration"
|
||||
bool "Use the functions and types from the older (v7) API if possible."
|
||||
default y if !LV_CONF_MINIMAL
|
||||
endmenu
|
||||
|
||||
|
||||
menu "Image decoder and cache"
|
||||
config LV_IMG_CF_INDEXED
|
||||
bool "Enable indexed (pallete) images."
|
||||
bool "Enable indexed (palette) images."
|
||||
default y if !LV_CONF_MINIMAL
|
||||
config LV_IMG_CF_ALPHA
|
||||
bool "Enable alpha indexed images."
|
||||
@@ -280,19 +284,19 @@ menu "LVGL configuration"
|
||||
|
||||
menu "HAL Settings"
|
||||
config LV_TICK_CUSTOM
|
||||
bool
|
||||
bool
|
||||
prompt "Use a custom tick source"
|
||||
|
||||
config LV_TICK_CUSTOM_INCLUDE
|
||||
string
|
||||
prompt "Header for the system time function"
|
||||
default Arduino.h
|
||||
default "Arduino.h"
|
||||
depends on LV_TICK_CUSTOM
|
||||
|
||||
config LV_TICK_CUSTOM_SYS_TIME_EXPR
|
||||
string
|
||||
prompt "Expression evaluating to current system time in ms"
|
||||
default "(millis())"
|
||||
default "millis()"
|
||||
depends on LV_TICK_CUSTOM
|
||||
endmenu
|
||||
|
||||
@@ -308,13 +312,13 @@ menu "LVGL configuration"
|
||||
|
||||
config LV_LOG_LEVEL_TRACE
|
||||
bool "Trace - Detailed information"
|
||||
config LV_LOG_LEVEL_INFO
|
||||
config LV_LOG_LEVEL_INFO
|
||||
bool "Info - Log important events"
|
||||
config LV_LOG_LEVEL_WARN
|
||||
config LV_LOG_LEVEL_WARN
|
||||
bool "Warn - Log if something unwanted happened"
|
||||
config LV_LOG_LEVEL_ERROR
|
||||
bool "Error - Only critical issues"
|
||||
config LV_LOG_LEVEL_NONE
|
||||
config LV_LOG_LEVEL_NONE
|
||||
bool "None - Do not log anything"
|
||||
endchoice
|
||||
|
||||
@@ -330,15 +334,15 @@ menu "LVGL configuration"
|
||||
config LV_LOG_PRINTF
|
||||
bool "Print the log with 'printf'" if LV_USE_LOG
|
||||
help
|
||||
Use printf for log output.
|
||||
Use printf for log output.
|
||||
If not set the user needs to register a callback with `lv_log_register_print_cb`.
|
||||
|
||||
endmenu
|
||||
|
||||
|
||||
menu "Debug Settings"
|
||||
config LV_USE_DEBUG
|
||||
bool "Enable Debug"
|
||||
|
||||
|
||||
config LV_USE_ASSERT_NULL
|
||||
bool "Check if the parameter is NULL. (Quite fast)"
|
||||
default y if !LV_CONF_MINIMAL
|
||||
@@ -349,21 +353,21 @@ menu "LVGL configuration"
|
||||
|
||||
config LV_USE_ASSERT_MEM_INTEGRITY
|
||||
bool "Check the integrity of `lv_mem` after critical operations. (Slow)"
|
||||
|
||||
|
||||
config LV_USE_ASSERT_STR
|
||||
bool "Search for NULL, very long strings, invalid characters, and unnatural repetitions. (Slow)"
|
||||
help
|
||||
help
|
||||
If disabled `LV_USE_ASSERT_NULL` will be performed instead (if it's enabled).
|
||||
|
||||
|
||||
config LV_USE_ASSERT_OBJ
|
||||
bool "Check NULL, the object's type and existence (e.g. not deleted). (Quite slow)."
|
||||
help
|
||||
help
|
||||
If disabled `LV_USE_ASSERT_NULL` will be performed instead (if it's enabled)
|
||||
|
||||
|
||||
config LV_USE_ASSERT_STYLE
|
||||
bool "Check if the styles are properly initialized. (Fast)"
|
||||
endmenu
|
||||
|
||||
|
||||
menu "Font usage"
|
||||
config LV_FONT_FMT_TXT_LARGE
|
||||
bool "Enable it if you have fonts with a lot of characters."
|
||||
@@ -372,13 +376,17 @@ menu "LVGL configuration"
|
||||
but with > 10,000 characters if you see issues probably you
|
||||
need to enable it.
|
||||
|
||||
config LV_USE_FONT_SUBPX
|
||||
bool "Enable subpixel rendering."
|
||||
|
||||
config LV_FONT_SUBPX_BGR
|
||||
bool "Use BGR instead RGB for sub-pixel rendering."
|
||||
depends on LV_USE_FONT_SUBPX
|
||||
help
|
||||
Set the pixel order of the display.
|
||||
Important only if "subpx fonts" are used.
|
||||
With "normal" font it doesn't matter.
|
||||
|
||||
|
||||
menu "Enable built-in fonts"
|
||||
config LV_FONT_MONTSERRAT_8
|
||||
bool "Enable Montserrat 8"
|
||||
@@ -527,7 +535,7 @@ menu "LVGL configuration"
|
||||
bool "Simsun 16 CJK"
|
||||
select LV_FONT_SIMSUN_16_CJK
|
||||
endchoice
|
||||
|
||||
|
||||
choice LV_FONT_DEFAULT_NORMAL
|
||||
prompt "Select theme default normal font"
|
||||
default LV_FONT_DEFAULT_NORMAL_MONTSERRAT_16 if !LV_CONF_MINIMAL
|
||||
@@ -617,7 +625,7 @@ menu "LVGL configuration"
|
||||
bool "Simsun 16 CJK"
|
||||
select LV_FONT_SIMSUN_16_CJK
|
||||
endchoice
|
||||
|
||||
|
||||
choice LV_FONT_DEFAULT_SUBTITLE
|
||||
prompt "Select theme default subtitle font"
|
||||
default LV_FONT_DEFAULT_SUBTITLE_MONTSERRAT_16 if !LV_CONF_MINIMAL
|
||||
@@ -707,7 +715,7 @@ menu "LVGL configuration"
|
||||
bool "Simsun 16 CJK"
|
||||
select LV_FONT_SIMSUN_16_CJK
|
||||
endchoice
|
||||
|
||||
|
||||
choice LV_FONT_DEFAULT_TITLE
|
||||
prompt "Select theme default title font"
|
||||
default LV_FONT_DEFAULT_TITLE_MONTSERRAT_16 if !LV_CONF_MINIMAL
|
||||
@@ -797,7 +805,7 @@ menu "LVGL configuration"
|
||||
endmenu
|
||||
|
||||
menu "Theme usage"
|
||||
menu "Enable theme usage, always enable at least one theme"
|
||||
menu "Enable theme usage, always enable at least one theme"
|
||||
config LV_THEME_EMPTY
|
||||
bool "Empty: No theme, you can apply your styles as you need."
|
||||
default y if LV_CONF_MINIMAL
|
||||
@@ -808,7 +816,7 @@ menu "LVGL configuration"
|
||||
default y if !LV_CONF_MINIMAL
|
||||
config LV_THEME_MONO
|
||||
bool "Mono: Mono-color theme for monochrome displays"
|
||||
endmenu
|
||||
endmenu
|
||||
|
||||
choice LV_THEME_DEFAULT_INIT
|
||||
prompt "Select theme default init"
|
||||
@@ -830,7 +838,7 @@ menu "LVGL configuration"
|
||||
bool "Default init for mono theme"
|
||||
select LV_THEME_MONO
|
||||
endchoice
|
||||
|
||||
|
||||
config LV_THEME_DEFAULT_COLOR_PRIMARY
|
||||
hex "Select theme default primary color"
|
||||
range 0x000000 0xFFFFFF
|
||||
@@ -849,7 +857,7 @@ menu "LVGL configuration"
|
||||
|
||||
choice LV_THEME_DEFAULT_FLAG
|
||||
depends on LV_THEME_MATERIAL
|
||||
|
||||
|
||||
prompt "Select theme default flag"
|
||||
default LV_THEME_DEFAULT_FLAG_LIGHT
|
||||
help
|
||||
@@ -857,10 +865,8 @@ menu "LVGL configuration"
|
||||
|
||||
config LV_THEME_DEFAULT_FLAG_LIGHT
|
||||
bool "Light theme"
|
||||
depends on LV_THEME_MATERIAL
|
||||
config LV_THEME_DEFAULT_FLAG_DARK
|
||||
bool "Dark theme"
|
||||
depends on LV_THEME_MATERIAL
|
||||
endchoice
|
||||
|
||||
endmenu
|
||||
@@ -882,39 +888,39 @@ menu "LVGL configuration"
|
||||
config LV_TXT_BREAK_CHARS
|
||||
string "Can break (wrap) texts on these chars"
|
||||
default " ,.;:-_"
|
||||
|
||||
|
||||
config LV_TXT_LINE_BREAK_LONG_LEN
|
||||
int "Line break long length"
|
||||
default 0
|
||||
help
|
||||
If a word is at least this long, will break wherever 'prettiest'.
|
||||
If a word is at least this long, will break wherever 'prettiest'.
|
||||
To disable, set to a value <= 0.
|
||||
|
||||
|
||||
config LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN
|
||||
int "Min num chars before break"
|
||||
default 3
|
||||
depends on LV_TXT_LINE_BREAK_LONG_LEN > 0
|
||||
help
|
||||
Minimum number of characters in a long word to put on a line before a break.
|
||||
Depends on LV_TXT_LINE_BREAK_LONG_LEN
|
||||
|
||||
|
||||
config LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN
|
||||
int "Min num chars after break"
|
||||
default 3
|
||||
depends on LV_TXT_LINE_BREAK_LONG_LEN > 0
|
||||
help
|
||||
Minimum number of characters in a long word to put on a line after a break.
|
||||
Depends on LV_TXT_LINE_BREAK_LONG_LEN
|
||||
|
||||
|
||||
config LV_TXT_COLOR_CMD
|
||||
string "The control character to use for signalling text recoloring"
|
||||
default "#"
|
||||
|
||||
config LV_USE_BIDI
|
||||
bool "Support bidirectional texts"
|
||||
help
|
||||
help
|
||||
Allows mixing Left-to-Right and Right-to-Left texts.
|
||||
The direction will be processed according to the Unicode Bidirectional Algorithm:
|
||||
https://www.w3.org/International/articles/inline-bidi-markup/uba-basics
|
||||
|
||||
|
||||
choice
|
||||
prompt "Set the default BIDI direction"
|
||||
default LV_BIDI_DIR_AUTO
|
||||
@@ -930,7 +936,7 @@ menu "LVGL configuration"
|
||||
|
||||
config LV_USE_ARABIC_PERSIAN_CHARS
|
||||
bool "Enable Arabic/Persian processing"
|
||||
help
|
||||
help
|
||||
In these languages characters should be replaced with
|
||||
an other form based on their position in the text.
|
||||
|
||||
@@ -938,14 +944,14 @@ menu "LVGL configuration"
|
||||
bool "Change the built-in (v)snprintf functions"
|
||||
|
||||
config LV_SPRINTF_DISABLE_FLOAT
|
||||
bool "Disable float in built-in (v)snprintf functions" if !LV_SPRINTF_CUSTOM
|
||||
bool "Disable float in built-in (v)snprintf functions" if !LV_SPRINTF_CUSTOM
|
||||
endmenu
|
||||
|
||||
menu "Widgets"
|
||||
config LV_USE_OBJ_REALIGN
|
||||
bool "Enable `lv_obj_realign()` based on `lv_obj_align()` parameters."
|
||||
default y if !LV_CONF_MINIMAL
|
||||
|
||||
|
||||
choice
|
||||
prompt "Enable to make the object clickable on a larger area."
|
||||
default LV_USE_EXT_CLICK_AREA_TINY
|
||||
@@ -976,6 +982,7 @@ menu "LVGL configuration"
|
||||
default y if !LV_CONF_MINIMAL
|
||||
config LV_CALENDAR_WEEK_STARTS_MONDAY
|
||||
bool "Calendar week starts monday."
|
||||
depends on LV_USE_CALENDAR
|
||||
config LV_USE_CANVAS
|
||||
bool "Canvas. Dependencies: lv_img."
|
||||
select LV_USE_IMG
|
||||
@@ -1005,7 +1012,7 @@ menu "LVGL configuration"
|
||||
default y if !LV_CONF_MINIMAL
|
||||
config LV_DROPDOWN_DEF_ANIM_TIME
|
||||
int "Drop down animation time. 0: no animation."
|
||||
depends on LV_USE_DROPBOX
|
||||
depends on LV_USE_DROPDOWN
|
||||
default 200
|
||||
config LV_USE_GAUGE
|
||||
bool "Gauge. Dependencies: lv_bar, lv_linemeter."
|
||||
@@ -1033,13 +1040,17 @@ menu "LVGL configuration"
|
||||
config LV_LABEL_DEF_SCROLL_SPEED
|
||||
int "Hor. or ver. scroll speed [px/sec] in LV_LABEL_LONG_ROLL/ROLL_CIRC mode."
|
||||
default 25
|
||||
depends on LV_USE_LABEL
|
||||
config LV_LABEL_WAIT_CHAR_COUNT
|
||||
int "Waiting period at beginning/end of animation cycle."
|
||||
default 3
|
||||
depends on LV_USE_LABEL
|
||||
config LV_LABEL_TEXT_SEL
|
||||
bool "Enable selecting text of the label."
|
||||
depends on LV_USE_LABEL
|
||||
config LV_LABEL_LONG_TXT_HINT
|
||||
bool "Store extra some info in labels (12 bytes) to speed up drawing of very long texts."
|
||||
depends on LV_USE_LABEL
|
||||
config LV_USE_LED
|
||||
bool "LED."
|
||||
default y if !LV_CONF_MINIMAL
|
||||
@@ -1047,10 +1058,12 @@ menu "LVGL configuration"
|
||||
int "LED minimal brightness."
|
||||
range 0 255
|
||||
default 120
|
||||
depends on LV_USE_LED
|
||||
config LV_LED_BRIGHT_MAX
|
||||
int "LED maximal brightness."
|
||||
range 0 255
|
||||
default 255
|
||||
depends on LV_USE_LED
|
||||
config LV_USE_LINE
|
||||
bool "Line."
|
||||
default y if !LV_CONF_MINIMAL
|
||||
@@ -1064,12 +1077,14 @@ menu "LVGL configuration"
|
||||
config LV_LIST_DEF_ANIM_TIME
|
||||
int "List default animation time of focusing to a list element [ms]. 0: no animation."
|
||||
default 100
|
||||
depends on LV_USE_LIST
|
||||
config LV_USE_LINEMETER
|
||||
bool "Line meter."
|
||||
default y if !LV_CONF_MINIMAL
|
||||
choice
|
||||
prompt "Draw line more precisely at cost of performance."
|
||||
default LV_LINEMETER_PRECISE_NO_EXTRA_PRECISION
|
||||
depends on LV_USE_LINEMETER
|
||||
config LV_LINEMETER_PRECISE_NO_EXTRA_PRECISION
|
||||
bool "0: No extra precision."
|
||||
config LV_LINEMETER_PRECISE_SOME_EXTRA_PRECISION
|
||||
@@ -1093,6 +1108,7 @@ menu "LVGL configuration"
|
||||
config LV_PAGE_DEF_ANIM_TIME
|
||||
int "Focus default animation time [ms]. 0: No animation."
|
||||
default 100
|
||||
depends on LV_USE_PAGE
|
||||
config LV_USE_SPINNER
|
||||
bool "Spinner. Dependencies: lv_arc, lv_anim."
|
||||
select LV_USE_ARC
|
||||
@@ -1101,12 +1117,15 @@ menu "LVGL configuration"
|
||||
config LV_SPINNER_DEF_ARC_LENGTH
|
||||
int "Spinner def. arc length [deg]."
|
||||
default 60
|
||||
depends on LV_USE_SPINNER
|
||||
config LV_SPINNER_DEF_SPIN_TIME
|
||||
int "Spinner def. spin time [ms]."
|
||||
default 1000
|
||||
depends on LV_USE_SPINNER
|
||||
choice
|
||||
prompt "Type of spinner (animation type)."
|
||||
default LV_SPINNER_TYPE_SPINNING_ARC
|
||||
depends on LV_USE_SPINNER
|
||||
config LV_SPINNER_TYPE_SPINNING_ARC
|
||||
bool "0: Spinner type spinning arc."
|
||||
config LV_SPINNER_TYPE_FILLSPIN_ARC
|
||||
@@ -1121,9 +1140,11 @@ menu "LVGL configuration"
|
||||
config LV_ROLLER_DEF_ANIM_TIME
|
||||
int "Focus animation time [ms]. 0: no animation."
|
||||
default 200
|
||||
depends on LV_USE_ROLLER
|
||||
config LV_ROLLER_INF_PAGES
|
||||
int "Number of extra 'pages' when the controller is infinite."
|
||||
default 7
|
||||
depends on LV_USE_ROLLER
|
||||
config LV_USE_SLIDER
|
||||
bool "Slider. Dependencies: lv_bar."
|
||||
select LV_USE_BAR
|
||||
@@ -1144,9 +1165,11 @@ menu "LVGL configuration"
|
||||
config LV_TEXTAREA_DEF_CURSOR_BLINK_TIME
|
||||
int "Text area def. cursor blink time [ms]."
|
||||
default 400
|
||||
depends on LV_USE_TEXTAREA
|
||||
config LV_TEXTAREA_DEF_PWN_SHOW_TIME
|
||||
int "Text area def. pwn show time [ms]."
|
||||
default 1500
|
||||
depends on LV_USE_TEXTAREA
|
||||
config LV_USE_TABLE
|
||||
bool "Table. Dependencies: lv_label."
|
||||
select LV_USE_LABEL
|
||||
@@ -1154,9 +1177,11 @@ menu "LVGL configuration"
|
||||
config LV_TABLE_COL_MAX
|
||||
int "Table col max."
|
||||
default 12
|
||||
depends on LV_USE_TABLE
|
||||
config LV_TABLE_CELL_STYLE_CNT
|
||||
int "Table cell style count."
|
||||
default 4
|
||||
depends on LV_USE_TABLE
|
||||
config LV_USE_TABVIEW
|
||||
bool "Tab. Dependencies: lv_page, lv_btnm."
|
||||
select LV_USE_PAGE
|
||||
@@ -1165,6 +1190,7 @@ menu "LVGL configuration"
|
||||
config LV_TABVIEW_DEF_ANIM_TIME
|
||||
int "Time of slide animation [ms]. 0: No animation."
|
||||
default 300
|
||||
depends on LV_USE_TABVIEW
|
||||
config LV_USE_TILEVIEW
|
||||
bool "Tileview. Dependencies: lv_page."
|
||||
select LV_USE_PAGE
|
||||
@@ -1172,6 +1198,7 @@ menu "LVGL configuration"
|
||||
config LV_TILEVIEW_DEF_ANIM_TIME
|
||||
int "Time of slide animation [ms]. 0: No animation."
|
||||
default 300
|
||||
depends on LV_USE_TILEVIEW
|
||||
config LV_USE_WIN
|
||||
bool "Window. Dependencies: lv_cont, lv_btn, lv_label, lv_img, lv_page."
|
||||
select LV_USE_CONT
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
<h1 align="center"> LVGL - Light and Versatile Graphics Library</h1>
|
||||
<h1 align="center"> LVGL - Light and Versatile Graphics Library</h1>
|
||||
|
||||
<p align="center">
|
||||
<img src="https://lvgl.io/assets/images/img_1.png">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
LVGL provides everything you need to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint.
|
||||
LVGL provides everything you need to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint.
|
||||
</p>
|
||||
|
||||
<h4 align="center">
|
||||
<a href="https://lvgl.io">Website </a> ·
|
||||
<a href="https://lvgl.io/demos">Online demo</a> ·
|
||||
<a href="https://lvgl.github.io/lv_examples/">Nightly demos</a> ·
|
||||
<a href="https://docs.lvgl.io/">Docs</a> ·
|
||||
<a href="https://lvgl.io">Website </a> ·
|
||||
<a href="https://lvgl.io/demos">Online demo</a> ·
|
||||
<a href="https://lvgl.github.io/lv_examples/">Nightly demos</a> ·
|
||||
<a href="https://docs.lvgl.io/">Docs</a> ·
|
||||
<a href="https://forum.lvgl.io">Forum</a>
|
||||
</h4>
|
||||
|
||||
@@ -53,37 +53,37 @@ Basically, every modern controller (which is able to drive a display) is suitabl
|
||||
<td> > 16 MHz </td>
|
||||
<td> > 48 MHz</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td> <strong>Flash/ROM</strong></td>
|
||||
<td> > 64 kB </td>
|
||||
<td> > 180 kB</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td> <strong>Static RAM</strong></td>
|
||||
<td> > 2 kB </td>
|
||||
<td> > 4 kB</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td> <strong>Stack</strong></td>
|
||||
<td> > 2 kB </td>
|
||||
<td> > 8 kB</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td> <strong>Heap</strong></td>
|
||||
<td> > 2 kB </td>
|
||||
<td> > 8 kB</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td> <strong>Display buffer</strong></td>
|
||||
<td> > 1 × <em>hor. res.</em> pixels </td>
|
||||
<td> > 10 × <em>hor. res.</em> pixels </td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td> <strong>Compiler</strong></td>
|
||||
<td colspan="2"> C99 or newer </td>
|
||||
@@ -114,9 +114,9 @@ This list shows the recommended way of learning the library:
|
||||
7. Read the [Overview](https://docs.lvgl.io/latest/en/html/overview/index.html) page to get a better understanding of the library (2-3 hours)
|
||||
8. Check the documentation of the [Widgets](https://docs.lvgl.io/latest/en/html/widgets/index.html) to see their features and usage
|
||||
9. If you have questions go to the [Forum](http://forum.lvgl.io/)
|
||||
10. Read the [Contributing](https://docs.lvgl.io/latest/en/html/contributing/index.html) guide to see how you can help to improve LVGL (15 minutes)
|
||||
10. Read the [Contributing](https://docs.lvgl.io/latest/en/html/contributing/index.html) guide to see how you can help to improve LVGL (15 minutes)
|
||||
|
||||
## Examples
|
||||
## Examples
|
||||
|
||||
For more examples see the [lv_examples](https://github.com/lvgl/lv_examples) repository.
|
||||
|
||||
|
||||
+14
-14
@@ -11,19 +11,19 @@ Use [lv_misc/lv_templ.c](https://github.com/lvgl/lvgl/blob/master/src/lv_misc/lv
|
||||
* starts with *lv*
|
||||
* followed by module name: *btn*, *label*, *style* etc.
|
||||
* followed by the action (for functions): *set*, *get*, *refr* etc.
|
||||
* closed with the subject: *name*, *size*, *state* etc.
|
||||
* closed with the subject: *name*, *size*, *state* etc.
|
||||
* Typedefs
|
||||
* prefer `typedef struct` and `typedef enum` instead of `struct name` and `enum name`
|
||||
* always end `typedef struct` and `typedef enum` type names with `_t`
|
||||
* Abbreviations:
|
||||
* Only words longer or equal than 6 characters can be abbreviated.
|
||||
* Only words longer or equal than 6 characters can be abbreviated.
|
||||
* Abbreviate only if it makes the word at least half as long
|
||||
* Use only very straightforward and well-known abbreviations (e.g. pos: position, def: default, btn: button)
|
||||
* Use only very straightforward and well-known abbreviations (e.g. pos: position, def: default, btn: button)
|
||||
|
||||
## Coding guide
|
||||
* Functions:
|
||||
* Try to write function shorter than is 50 lines
|
||||
* Always shorter than 200 lines (except very straightforwards)
|
||||
* Try to write function shorter than is 50 lines
|
||||
* Always shorter than 200 lines (except very straightforwards)
|
||||
* Variables:
|
||||
* One line, one declaration (BAD: char x, y;)
|
||||
* Use `<stdint.h>` (*uint8_t*, *int32_t* etc)
|
||||
@@ -41,16 +41,16 @@ Before every function have a comment like this:
|
||||
* @param obj pointer to an object
|
||||
* @return pointer to a screen
|
||||
*/
|
||||
lv_obj_t * lv_obj_get_scr(lv_obj_t * obj);
|
||||
lv_obj_t * lv_obj_get_scr(lv_obj_t * obj);
|
||||
```
|
||||
|
||||
Always use `/* Something */` format and NOT `//Something`
|
||||
|
||||
Write readable code to avoid descriptive comments like:
|
||||
`x++; /* Add 1 to x */`.
|
||||
Write readable code to avoid descriptive comments like:
|
||||
`x++; /* Add 1 to x */`.
|
||||
The code should show clearly what you are doing.
|
||||
|
||||
You should write **why** have you done this:
|
||||
You should write **why** have you done this:
|
||||
`x++; /*Because of closing '\0' of the string */`
|
||||
|
||||
Short "code summaries" of a few lines are accepted. E.g. `/*Calculate the new coordinates*/`
|
||||
@@ -67,19 +67,19 @@ Here is example to show bracket placing and using of white spaces:
|
||||
*/
|
||||
void lv_label_set_text(lv_obj_t * label, const char * text)
|
||||
{ /* Main brackets of functions in new line*/
|
||||
|
||||
|
||||
if(label == NULL) return; /*No bracket only if the command is inline with the if statement*/
|
||||
|
||||
|
||||
lv_obj_inv(label);
|
||||
|
||||
|
||||
lv_label_ext_t * ext = lv_obj_get_ext(label);
|
||||
|
||||
/*Comment before a section */
|
||||
if(text == ext->txt || text == NULL) { /*Bracket of statements start inline*/
|
||||
lv_label_refr_text(label);
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Contributing to LVGL
|
||||
|
||||
Thank you for considering contributing to LVGL.
|
||||
Thank you for considering contributing to LVGL.
|
||||
|
||||
For a detailed description of contribution opportunities, please visit the [Contributing](https://docs.lvgl.io/latest/en/html/contributing/index.html) section of the documentation.
|
||||
|
||||
+12
-15
@@ -1,6 +1,6 @@
|
||||
# Roadmap
|
||||
|
||||
This is a summary for thenew fatures of the major releases and a collection of ideas.
|
||||
This is a summary for thenew fatures of the major releases and a collection of ideas.
|
||||
|
||||
This list indicates only the current intention and can be changed.
|
||||
|
||||
@@ -27,40 +27,37 @@ Planned to November/December 2020
|
||||
- Simplified File system interface ([feat/new_fs_api](https://github.com/lvgl/lvgl/tree/feat/new-fs-api) branch) to make porting easier
|
||||
- Work in progress
|
||||
- Remove the align parameter from `lv_canvas_draw_text`
|
||||
- Remove the copy paramter from create functions
|
||||
- Style selectors and style-based states See [#1832](https://github.com/lvgl/lvgl/issues/1832)
|
||||
- Add Object Orianted system [#1919](https://github.com/lvgl/lvgl/issues/1919)
|
||||
|
||||
## v8.1
|
||||
- Add radio button widget
|
||||
- Make the copy parameter obsolate in create functions
|
||||
- Optimize and simplifie styles [#1832](https://github.com/lvgl/lvgl/issues/1832)
|
||||
- Use a more generic inheritenace [#1919](https://github.com/lvgl/lvgl/issues/1919)
|
||||
|
||||
## v8.x
|
||||
- Add radio button widget
|
||||
- Unit testing (gtest?). See [#1658](https://github.com/lvgl/lvgl/issues/1658)
|
||||
- Benchmarking (gem5?). See [#1660](https://github.com/lvgl/lvgl/issues/1660)
|
||||
- chart: pre-delete `X` pint after the lastly set
|
||||
- chart: autoscroll to the right
|
||||
|
||||
## v9
|
||||
- Simplify `group`s. Discussion is [here](https://forum.lvgl.io/t/lv-group-tabindex/2927/3).
|
||||
- Consider direct binary font format support
|
||||
- Optimize line and cirle drawing and masking
|
||||
- Optimize line and circle drawing and masking
|
||||
- Reconsider color format management for run time color format setting, and custom color format usage. (Also [RGB888](https://github.com/lvgl/lvgl/issues/1722))
|
||||
- 9-patch support for `lv_imgbtn`.
|
||||
- Handle stride. See [#1858](https://github.com/lvgl/lvgl/issues/1858)
|
||||
- Make gradients more versatile
|
||||
- Make image transformations more versatile
|
||||
- Allow snapshoting object to tranfrom them as images
|
||||
|
||||
## v10
|
||||
- Remove property level states
|
||||
|
||||
- Allow snapshoting object to tranfrom them to images
|
||||
|
||||
## Ideas
|
||||
- Use [generate-changelog](https://github.com/lob/generate-changelog) to automatically generate changelog
|
||||
- lv_mem_alloc_aligned(size, align)
|
||||
- Text node. See [#1701](https://github.com/lvgl/lvgl/issues/1701#issuecomment-699479408)
|
||||
- CPP binding. See [Forum](https://forum.lvgl.io/t/is-it-possible-to-officially-support-optional-cpp-api/2736)
|
||||
- Optmize font decompression
|
||||
- Optimize font decompression
|
||||
- Switch to RGBA colors in styles
|
||||
- Need coverage report for tests
|
||||
- Need static analize (via coverity.io or somehing else)
|
||||
- Need static analyze (via coverity.io or somehing else)
|
||||
- Support dot_begin and dot_middle long modes for labels
|
||||
- Add new label alignment modes. [#1656](https://github.com/lvgl/lvgl/issues/1656)
|
||||
- Support larger images: [#1892](https://github.com/lvgl/lvgl/issues/1892)
|
||||
|
||||
@@ -55,20 +55,20 @@ void lv_port_disp_init(void)
|
||||
*----------------------------*/
|
||||
|
||||
/* LVGL requires a buffer where it internally draws the widgets.
|
||||
* Later this buffer will passed your display drivers `flush_cb` to copy its content to your dispay.
|
||||
* Later this buffer will passed your display drivers `flush_cb` to copy its content to your display.
|
||||
* The buffer has to be greater than 1 display row
|
||||
*
|
||||
* There are three buffering configurations:
|
||||
* 1. Create ONE buffer with some rows:
|
||||
* 1. Create ONE buffer with some rows:
|
||||
* LVGL will draw the display's content here and writes it to your display
|
||||
*
|
||||
* 2. Create TWO buffer with some rows:
|
||||
*
|
||||
* 2. Create TWO buffer with some rows:
|
||||
* LVGL will draw the display's content to a buffer and writes it your display.
|
||||
* You should use DMA to write the buffer's content to the display.
|
||||
* It will enable LVGL to draw the next part of the screen to the other buffer while
|
||||
* the data is being sent form the first buffer. It makes rendering and flushing parallel.
|
||||
*
|
||||
* 3. Create TWO screen-sized buffer:
|
||||
*
|
||||
* 3. Create TWO screen-sized buffer:
|
||||
* Similar to 2) but the buffer have to be screen sized. When LVGL is ready it will give the
|
||||
* whole frame to display. This way you only need to change the frame buffer's address instead of
|
||||
* copying the pixels.
|
||||
@@ -91,7 +91,6 @@ void lv_port_disp_init(void)
|
||||
static lv_color_t draw_buf_3_1[LV_HOR_RES_MAX * LV_VER_RES_MAX]; /*An other screen sized buffer*/
|
||||
lv_disp_buf_init(&draw_buf_dsc_3, draw_buf_3_1, draw_buf_3_2, LV_HOR_RES_MAX * LV_VER_RES_MAX); /*Initialize the display buffer*/
|
||||
|
||||
|
||||
/*-----------------------------------
|
||||
* Register the display in LVGL
|
||||
*----------------------------------*/
|
||||
@@ -157,7 +156,6 @@ static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_colo
|
||||
lv_disp_flush_ready(disp_drv);
|
||||
}
|
||||
|
||||
|
||||
/*OPTIONAL: GPU INTERFACE*/
|
||||
#if LV_USE_GPU
|
||||
|
||||
|
||||
@@ -34,7 +34,6 @@ extern "C" {
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
@@ -36,7 +36,6 @@ typedef struct {
|
||||
uint32_t dummy2;
|
||||
}dir_t;
|
||||
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
@@ -81,7 +80,7 @@ void lv_port_fs_init(void)
|
||||
fs_init();
|
||||
|
||||
/*---------------------------------------------------
|
||||
* Register the file system interface in LVGL
|
||||
* Register the file system interface in LVGL
|
||||
*--------------------------------------------------*/
|
||||
|
||||
/* Add a simple drive to open images */
|
||||
@@ -118,7 +117,7 @@ void lv_port_fs_init(void)
|
||||
/* Initialize your Storage device and File system. */
|
||||
static void fs_init(void)
|
||||
{
|
||||
/*E.g. for FatFS initalize the SD card and FatFS itself*/
|
||||
/*E.g. for FatFS initialize the SD card and FatFS itself*/
|
||||
|
||||
/*You code here*/
|
||||
}
|
||||
@@ -157,7 +156,6 @@ static lv_fs_res_t fs_open (lv_fs_drv_t * drv, void * file_p, const char * path,
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Close an opened file
|
||||
* @param drv pointer to a driver where this function belongs
|
||||
@@ -264,7 +262,7 @@ static lv_fs_res_t fs_tell (lv_fs_drv_t * drv, void * file_p, uint32_t * pos_p)
|
||||
* Delete a file
|
||||
* @param drv pointer to a driver where this function belongs
|
||||
* @param path path of the file to delete
|
||||
* @return LV_FS_RES_OK or any error from lv_fs_res_t enum
|
||||
* @return LV_FS_RES_OK or any error from lv_fs_res_t enum
|
||||
*/
|
||||
static lv_fs_res_t fs_remove (lv_fs_drv_t * drv, const char *path)
|
||||
{
|
||||
|
||||
@@ -34,7 +34,6 @@ extern "C" {
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
@@ -79,7 +79,6 @@ void lv_port_indev_init(void)
|
||||
* You should shape them according to your hardware
|
||||
*/
|
||||
|
||||
|
||||
lv_indev_drv_t indev_drv;
|
||||
|
||||
/*------------------
|
||||
@@ -174,8 +173,6 @@ void lv_port_indev_init(void)
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
|
||||
|
||||
|
||||
/*------------------
|
||||
* Touchpad
|
||||
* -----------------*/
|
||||
@@ -225,7 +222,6 @@ static void touchpad_get_xy(lv_coord_t * x, lv_coord_t * y)
|
||||
(*y) = 0;
|
||||
}
|
||||
|
||||
|
||||
/*------------------
|
||||
* Mouse
|
||||
* -----------------*/
|
||||
@@ -361,7 +357,6 @@ static void encoder_handler(void)
|
||||
encoder_state = LV_INDEV_STATE_REL;
|
||||
}
|
||||
|
||||
|
||||
/*------------------
|
||||
* Button
|
||||
* -----------------*/
|
||||
|
||||
@@ -35,7 +35,6 @@ extern "C" {
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lvgl",
|
||||
"version": "8.0.0",
|
||||
"version": "8.0.0",
|
||||
"keywords": "graphics, gui, embedded, tft, lvgl",
|
||||
"description": "Graphics library to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It offers anti-aliasing, opacity, and animations using only one frame buffer.",
|
||||
"repository": {
|
||||
|
||||
+20
-5
@@ -1,10 +1,6 @@
|
||||
/**
|
||||
* @file lv_conf.h
|
||||
<<<<<<< HEAD
|
||||
* Configuration file for v8.0.0-dev
|
||||
=======
|
||||
* Configuration file for v7.8.1-dev
|
||||
>>>>>>> master
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -138,7 +134,6 @@ typedef int16_t lv_coord_t;
|
||||
* Time between `LV_EVENT_LONG_PRESSED_REPEAT */
|
||||
#define LV_INDEV_DEF_LONG_PRESS_REP_TIME 100
|
||||
|
||||
|
||||
/* Gesture threshold in pixels */
|
||||
#define LV_INDEV_DEF_GESTURE_LIMIT 50
|
||||
|
||||
@@ -690,6 +685,26 @@ typedef void * lv_obj_user_data_t;
|
||||
# define LV_TABLE_CELL_STYLE_CNT 4
|
||||
#endif
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
/*Tab (dependencies: lv_page, lv_btnm)*/
|
||||
#define LV_USE_TABVIEW 1
|
||||
# if LV_USE_TABVIEW != 0
|
||||
/*Time of slide animation [ms] (0: no animation)*/
|
||||
# define LV_TABVIEW_DEF_ANIM_TIME 300
|
||||
#endif
|
||||
|
||||
/*Tileview (dependencies: lv_page) */
|
||||
#define LV_USE_TILEVIEW 1
|
||||
#if LV_USE_TILEVIEW
|
||||
/*Time of slide animation [ms] (0: no animation)*/
|
||||
# define LV_TILEVIEW_DEF_ANIM_TIME 300
|
||||
#endif
|
||||
|
||||
/*Window (dependencies: lv_cont, lv_btn, lv_label, lv_img, lv_page)*/
|
||||
#define LV_USE_WIN 1
|
||||
|
||||
>>>>>>> master
|
||||
/*==================
|
||||
* Non-user section
|
||||
*==================*/
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/***************************
|
||||
* CURRENT VERSION OF LVGL
|
||||
***************************/
|
||||
@@ -106,6 +105,29 @@ extern "C" {
|
||||
* */
|
||||
#define LV_VERSION_CHECK(x,y,z) (x == LVGL_VERSION_MAJOR && (y < LVGL_VERSION_MINOR || (y == LVGL_VERSION_MINOR && z <= LVGL_VERSION_PATCH)))
|
||||
|
||||
/**
|
||||
* Wrapper functions for VERSION macros
|
||||
*/
|
||||
|
||||
static inline int lv_version_major()
|
||||
{
|
||||
return LVGL_VERSION_MAJOR;
|
||||
}
|
||||
|
||||
static inline int lv_version_minor()
|
||||
{
|
||||
return LVGL_VERSION_MINOR;
|
||||
}
|
||||
|
||||
static inline int lv_version_patch()
|
||||
{
|
||||
return LVGL_VERSION_PATCH;
|
||||
}
|
||||
|
||||
static inline const char *lv_version_info()
|
||||
{
|
||||
return LVGL_VERSION_INFO;
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -6,5 +6,3 @@ include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/lv_misc/lv_misc.mk
|
||||
include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/lv_themes/lv_themes.mk
|
||||
include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/lv_draw/lv_draw.mk
|
||||
include $(LVGL_DIR)/$(LVGL_DIR_NAME)/src/lv_gpu/lv_gpu.mk
|
||||
|
||||
|
||||
|
||||
@@ -7,40 +7,40 @@ import sys
|
||||
|
||||
parser = argparse.ArgumentParser(description="""Create fonts for LittelvGL including the built-in symbols. lv_font_conv needs to be installed. See https://github.com/littlevgl/lv_font_conv
|
||||
Example: python built_in_font_gen.py --size 16 -o lv_font_roboto_16.c --bpp 4 -r 0x20-0x7F""", formatter_class=RawTextHelpFormatter)
|
||||
parser.add_argument('-s', '--size',
|
||||
type=int,
|
||||
metavar = 'px',
|
||||
nargs='?',
|
||||
parser.add_argument('-s', '--size',
|
||||
type=int,
|
||||
metavar = 'px',
|
||||
nargs='?',
|
||||
help='Size of the font in px')
|
||||
parser.add_argument('--bpp',
|
||||
type=int,
|
||||
metavar = '1,2,4',
|
||||
nargs='?',
|
||||
parser.add_argument('--bpp',
|
||||
type=int,
|
||||
metavar = '1,2,4',
|
||||
nargs='?',
|
||||
help='Bit per pixel')
|
||||
parser.add_argument('-r', '--range',
|
||||
nargs='+',
|
||||
metavar = 'start-end',
|
||||
default=['0x20-0x7F,0xB0,0x2022'],
|
||||
parser.add_argument('-r', '--range',
|
||||
nargs='+',
|
||||
metavar = 'start-end',
|
||||
default=['0x20-0x7F,0xB0,0x2022'],
|
||||
help='Ranges and/or characters to include. Default is 0x20-7F (ASCII). E.g. -r 0x20-0x7F, 0x200, 324')
|
||||
parser.add_argument('--symbols',
|
||||
nargs='+',
|
||||
metavar = 'sym',
|
||||
parser.add_argument('--symbols',
|
||||
nargs='+',
|
||||
metavar = 'sym',
|
||||
default=[''],
|
||||
help=u'Symbols to include. E.g. -s ÁÉŐ'.encode('utf-8'))
|
||||
parser.add_argument('--font',
|
||||
metavar = 'file',
|
||||
nargs='?',
|
||||
default='Montserrat-Medium.ttf',
|
||||
parser.add_argument('--font',
|
||||
metavar = 'file',
|
||||
nargs='?',
|
||||
default='Montserrat-Medium.ttf',
|
||||
help='A TTF or WOFF file')
|
||||
parser.add_argument('-o', '--output',
|
||||
nargs='?',
|
||||
metavar='file',
|
||||
parser.add_argument('-o', '--output',
|
||||
nargs='?',
|
||||
metavar='file',
|
||||
help='Output file name. E.g. my_font_20.c')
|
||||
parser.add_argument('--compressed', action='store_true',
|
||||
help='Compress the bitmaps')
|
||||
parser.add_argument('--subpx', action='store_true',
|
||||
help='3 times wider letters for sub pixel rendering')
|
||||
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.compressed == False:
|
||||
|
||||
@@ -101,5 +101,3 @@ os.system('sed -i \'s|#include "lvgl/lvgl.h"|#include "../../lvgl.h"|\' lv_font_
|
||||
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")
|
||||
os.system('sed -i \'s|#include "lvgl/lvgl.h"|#include "../../lvgl.h"|\' lv_font_dejavu_16_persian_hebrew.c')
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
--suffix=none
|
||||
--preserve-date
|
||||
--formatted
|
||||
--exclude=lv_conf_internal.h
|
||||
--exclude=lv_conf_internal.h
|
||||
--exclude=../src/lv_font/lv_font_montserrat_12.c
|
||||
--exclude=../src/lv_font/lv_font_montserrat_14.c
|
||||
--exclude=../src/lv_font/lv_font_montserrat_16.c
|
||||
@@ -47,4 +47,3 @@
|
||||
--exclude=../src/lv_font/lv_font_montserrat_28_compressed.c
|
||||
--exclude=../src/lv_font/lv_font_simsun_16_cjk.c
|
||||
--exclude=../src/lv_font/lv_font_dejavu_16_persian_hebrew.c
|
||||
|
||||
|
||||
@@ -1,2 +1 @@
|
||||
cppcheck -j8 --template="{severity}\t{file}:{line}\t{id}: {message}" --enable=all ../src/ --output-file=cppcheck_res.txt --suppress=unusedFunction --suppress=preprocessorErrorDirective --force
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
# https://github.com/facebook/infer
|
||||
#
|
||||
# Install:
|
||||
# Install:
|
||||
# VERSION=0.17.0; \
|
||||
# curl -sSL "https://github.com/facebook/infer/releases/download/v$VERSION/infer-linux64-v$VERSION.tar.xz" \
|
||||
# | sudo tar -C /opt -xJ && \
|
||||
# sudoln -s "/opt/infer-linux64-v$VERSION/bin/infer" /usr/local/bin/infer
|
||||
|
||||
|
||||
infer run -- make -j8
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
Generates a checker file for lv_conf.h from lv_conf_template.h define all the not defined values
|
||||
'''
|
||||
|
||||
|
||||
import sys
|
||||
import re
|
||||
|
||||
@@ -15,7 +14,6 @@ if sys.version_info < (3,6,0):
|
||||
fin = open("../lv_conf_template.h", "r")
|
||||
fout = open("../src/lv_conf_internal.h", "w")
|
||||
|
||||
|
||||
fout.write(
|
||||
'''/**
|
||||
* GENERATED FILE, DO NOT EDIT IT!
|
||||
@@ -82,7 +80,7 @@ for i in fin.read().splitlines():
|
||||
if '/*--END OF LV_CONF_H--*/' in i: break
|
||||
|
||||
r = re.search(r'^ *# *define ([^\s]+).*$', i)
|
||||
|
||||
|
||||
#ifndef LV_USE_BTN /*Only if not defined in lv_conf.h*/
|
||||
# ifdef CONFIG_LV_USE_BTN /*Use KConfig value if set*/
|
||||
# define LV_USE_BTN CONFIG_LV_USE_BTN
|
||||
@@ -90,17 +88,16 @@ for i in fin.read().splitlines():
|
||||
# define LV_USE_BTN 1 /*Use default value*/
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
if r:
|
||||
line = re.sub('\(.*?\)', '', r[1], 1) #remove parentheses from macros
|
||||
|
||||
dr = re.sub('.*# *define', '', i, 1)
|
||||
d = "# define " + dr
|
||||
|
||||
|
||||
fout.write(
|
||||
f'#ifndef {line}\n'
|
||||
f'# ifdef CONFIG_{line}\n'
|
||||
f'# define {line} CONFIG_{line}\n'
|
||||
f'# ifdef CONFIG_{line.upper()}\n'
|
||||
f'# define {line} CONFIG_{line.upper()}\n'
|
||||
f'# else\n'
|
||||
f'{d}\n'
|
||||
f'# endif\n'
|
||||
@@ -111,7 +108,6 @@ for i in fin.read().splitlines():
|
||||
else:
|
||||
fout.write(f'{i}\n')
|
||||
|
||||
|
||||
fout.write(
|
||||
'''
|
||||
|
||||
|
||||
+38
-39
@@ -10,32 +10,32 @@ import com
|
||||
|
||||
def cmd(c, ask_on_err = True):
|
||||
print("\n" + c)
|
||||
r = os.system(c)
|
||||
r = os.system(c)
|
||||
if r:
|
||||
print("### Error: " + str(r))
|
||||
if ask_on_err:
|
||||
input("Press Enter to continue exectution...")
|
||||
|
||||
def define_set(fn, name, value):
|
||||
if ask_on_err:
|
||||
input("Press Enter to continue execution...")
|
||||
|
||||
def define_set(fn, name, value):
|
||||
print("In " + fn + " set " + name + " to " + value)
|
||||
|
||||
new_content = ""
|
||||
|
||||
new_content = ""
|
||||
s = r'^ *# *define +' + str(name).rstrip() + ' +'
|
||||
|
||||
|
||||
f = open(fn, "r")
|
||||
for i in f.read().splitlines():
|
||||
r = re.search(s, i)
|
||||
if r:
|
||||
if r:
|
||||
d = i.split("define")
|
||||
i = d[0] + "define " + name + " " + value
|
||||
i = d[0] + "define " + name + " " + value
|
||||
new_content += i + '\n'
|
||||
|
||||
|
||||
f.close()
|
||||
|
||||
|
||||
f = open(fn, "w")
|
||||
f.write(new_content)
|
||||
f.close()
|
||||
|
||||
|
||||
def ver_format(ver):
|
||||
s = "v" + str(ver[0]) + "." + str(ver[1]) + "." + str(ver[2])
|
||||
if(ver[3] != ""): s = s + "-" + ver[3]
|
||||
@@ -43,69 +43,68 @@ def ver_format(ver):
|
||||
|
||||
def get_lvgl_version(br):
|
||||
print("Get LVGL's version")
|
||||
|
||||
ver = [0, 0, 0, ""]
|
||||
|
||||
|
||||
ver = [0, 0, 0, ""]
|
||||
|
||||
os.chdir("./lvgl")
|
||||
|
||||
|
||||
com.cmd("git checkout " + br)
|
||||
|
||||
|
||||
f = open("./lvgl.h", "r")
|
||||
|
||||
|
||||
lastNum = re.compile(r'(?:[^\d]*(\d+)[^\d]*)+')
|
||||
for i in f.read().splitlines():
|
||||
r = re.search(r'^#define LVGL_VERSION_MAJOR ', i)
|
||||
if r:
|
||||
if r:
|
||||
m = lastNum.search(i)
|
||||
if m: ver[0] = m.group(1)
|
||||
|
||||
r = re.search(r'^#define LVGL_VERSION_MINOR ', i)
|
||||
if r:
|
||||
if r:
|
||||
m = lastNum.search(i)
|
||||
if m: ver[1] = m.group(1)
|
||||
|
||||
|
||||
r = re.search(r'^#define LVGL_VERSION_PATCH ', i)
|
||||
if r:
|
||||
if r:
|
||||
m = lastNum.search(i)
|
||||
if m: ver[2] = m.group(1)
|
||||
|
||||
|
||||
f.close()
|
||||
|
||||
|
||||
com.cmd("git checkout master")
|
||||
|
||||
|
||||
os.chdir("../")
|
||||
return ver
|
||||
|
||||
|
||||
def push(c):
|
||||
cmd("git push " + c)
|
||||
|
||||
|
||||
def update_version(ver):
|
||||
ver_str = ver_format(ver)
|
||||
ver_num = ver[0] + "." + ver[1] + "." + ver[2]
|
||||
|
||||
|
||||
templ = fnmatch.filter(os.listdir('.'), '*_templ*.h')
|
||||
|
||||
|
||||
if len(templ) > 0 and templ[0]:
|
||||
print("Updating version in " + templ[0])
|
||||
cmd("sed -i -r 's/v[0-9]+\.[0-9]+\.[0-9]+.*/"+ "v" + ver_num + "/' " + templ[0])
|
||||
|
||||
if os.path.exists("library.json"):
|
||||
if os.path.exists("library.json"):
|
||||
print("Updating version in library.json")
|
||||
cmd("sed -i -r 's/[0-9]+\.[0-9]+\.[0-9]+/"+ ver_num +"/' library.json")
|
||||
|
||||
if path.exists("library.properties"):
|
||||
|
||||
if path.exists("library.properties"):
|
||||
print("Updating version in library.properties")
|
||||
cmd("sed -i -r 's/version=[0-9]+\.[0-9]+\.[0-9]+/"+ "version=" + ver_num + "/' library.properties")
|
||||
|
||||
if path.exists("conf.py"):
|
||||
cmd("sed -i -r \"s/'v[0-9]+\.[0-9]+\.[0-9]+.*'/\'" + ver_str + "'/\" conf.py")
|
||||
|
||||
|
||||
if path.exists("conf.py"):
|
||||
cmd("sed -i -r \"s/'v[0-9]+\.[0-9]+\.[0-9]+.*'/\'" + ver_str + "'/\" conf.py")
|
||||
|
||||
if path.exists("Kconfig"):
|
||||
cmd("sed -i -r \"s/'v[0-9]+\.[0-9]+\.[0-9]+.*'/\'" + ver_str + "'/\" Kconfig")
|
||||
|
||||
if path.exists("lvgl.h"):
|
||||
if path.exists("lvgl.h"):
|
||||
define_set("./lvgl.h", "LVGL_VERSION_MAJOR", str(ver[0]))
|
||||
define_set("./lvgl.h", "LVGL_VERSION_MINOR", str(ver[1]))
|
||||
define_set("./lvgl.h", "LVGL_VERSION_PATCH", str(ver[2]))
|
||||
define_set("./lvgl.h", "LVGL_VERSION_INFO", "\"" + ver[3] + "\"")
|
||||
|
||||
|
||||
+8
-10
@@ -15,7 +15,7 @@ def lvgl_update_ver(ver, br):
|
||||
com.cmd("git commit -am 'Update " + br + " version'")
|
||||
com.push("origin " + br)
|
||||
com.cmd("git checkout master")
|
||||
|
||||
|
||||
os.chdir("../")
|
||||
|
||||
def docs_update_ver(ver, br):
|
||||
@@ -25,10 +25,9 @@ def docs_update_ver(ver, br):
|
||||
com.cmd("git commit -am 'Update " + br + " version'")
|
||||
com.push("origin " + br)
|
||||
com.cmd("git checkout master --")
|
||||
|
||||
|
||||
os.chdir("../")
|
||||
|
||||
|
||||
|
||||
def merge_dev_to_master():
|
||||
os.chdir("./lvgl")
|
||||
com.cmd("git checkout master")
|
||||
@@ -42,8 +41,7 @@ def merge_dev_to_master():
|
||||
com.cmd("git merge dev -X theirs --no-edit;")
|
||||
com.push("origin latest")
|
||||
os.chdir("../")
|
||||
|
||||
|
||||
|
||||
def make(mode):
|
||||
if(mode == "bugfix"):
|
||||
ver = com.get_lvgl_version("master")
|
||||
@@ -58,14 +56,14 @@ def make(mode):
|
||||
if(mode == "major"):
|
||||
ver[0] = str(int(ver[0]) + 1)
|
||||
ver[1] = '0'
|
||||
ver[2] = '0'
|
||||
ver[2] = '0'
|
||||
if(mode == "minor"):
|
||||
ver[1] = str(int(ver[1]) + 1)
|
||||
ver[2] = '0'
|
||||
|
||||
ver[2] = '0'
|
||||
|
||||
lvgl_update_ver(ver, "dev")
|
||||
docs_update_ver(ver, "dev")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if(len(sys.argv) != 2):
|
||||
print("Missing argument. Usage ./dev.py major | minor | bugfix")
|
||||
|
||||
+12
-12
@@ -15,7 +15,7 @@ proj_list = [ "lv_sim_eclipse_sdl", "lv_sim_emscripten"]
|
||||
|
||||
def upstream(repo):
|
||||
return upstream_org_url + repo + ".git"
|
||||
|
||||
|
||||
def clone(repo):
|
||||
com.cmd("git clone --recurse-submodules " + upstream(repo))
|
||||
os.chdir("./" + repo)
|
||||
@@ -23,7 +23,7 @@ def clone(repo):
|
||||
com.cmd("git remote update origin --prune")
|
||||
com.cmd("git pull origin --tags")
|
||||
os.chdir("..")
|
||||
|
||||
|
||||
def clone_repos():
|
||||
com.cmd("rm -fr " + workdir)
|
||||
com.cmd("mkdir " + workdir)
|
||||
@@ -36,30 +36,30 @@ def clone_repos():
|
||||
|
||||
for p in proj_list:
|
||||
clone(p)
|
||||
|
||||
|
||||
def cleanup():
|
||||
os.chdir("../")
|
||||
com.cmd("rm -fr " + workdir)
|
||||
|
||||
if __name__ == '__main__':
|
||||
prepare_type = ['major', 'minor', 'bugfix']
|
||||
dev_prepare = 'minor'
|
||||
dev_prepare = 'minor'
|
||||
|
||||
# if(len(sys.argv) != 2):
|
||||
# print("Missing argument. Usage ./release.py bugfix | minor | major")
|
||||
# print("Use minor by deafult")
|
||||
# else:
|
||||
# print("Use minor by default")
|
||||
# else:
|
||||
# dev_prepare = sys.argv[1]
|
||||
|
||||
if not (dev_prepare in prepare_type):
|
||||
print("Invalid argument. Usage ./release.py bugfix | minor | major")
|
||||
|
||||
if not (dev_prepare in prepare_type):
|
||||
print("Invalid argument. Usage ./release.py bugfix | minor | major")
|
||||
exit(1)
|
||||
|
||||
|
||||
#os.chdir(workdir)
|
||||
clone_repos()
|
||||
release.make()
|
||||
for p in proj_list:
|
||||
proj.make(p, True)
|
||||
|
||||
dev.make(dev_prepare)
|
||||
|
||||
dev.make(dev_prepare)
|
||||
#cleanup()
|
||||
|
||||
+15
-17
@@ -7,43 +7,41 @@ import re
|
||||
import subprocess
|
||||
import com
|
||||
|
||||
|
||||
def make(repo_path, auto_push = False):
|
||||
os.chdir("./" + repo_path)
|
||||
com.cmd('git checkout master')
|
||||
print("Upadte lvgl");
|
||||
print("Update lvgl");
|
||||
os.chdir("./lvgl")
|
||||
com.cmd("git checkout master")
|
||||
com.cmd("git pull origin --tags")
|
||||
|
||||
out = subprocess.Popen(['git', 'tag', '--sort=-creatordate'],
|
||||
stdout=subprocess.PIPE,
|
||||
|
||||
out = subprocess.Popen(['git', 'tag', '--sort=-creatordate'],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT)
|
||||
stdout,stderr = out.communicate()
|
||||
|
||||
|
||||
ver_str = stdout.decode("utf-8").split('\n')[0]
|
||||
release_br = ver_str[1:] #trim "v"
|
||||
release_br = release_br.split('.')[0] # get the first number
|
||||
release_br = "release/v" + release_br
|
||||
|
||||
|
||||
com.cmd("git checkout " + release_br + "; git pull origin " + release_br)
|
||||
|
||||
|
||||
os.chdir("..")
|
||||
|
||||
|
||||
com.cmd("cp -f lvgl/lv_conf_template.h lv_conf.h")
|
||||
com.cmd("sed -i -r 's/#if 0/#if 1/' lv_conf.h") # Enable lv_conf.h
|
||||
with open("confdef.txt") as f:
|
||||
for line in f:
|
||||
(key, val) = line.rstrip().split('\t')
|
||||
com.define_set("lv_conf.h", str(key), str(val))
|
||||
com.define_set("lv_conf.h", str(key), str(val))
|
||||
|
||||
|
||||
if os.path.exists("lv_examples"):
|
||||
print("Upadte lv_examples");
|
||||
if os.path.exists("lv_examples"):
|
||||
print("Update lv_examples");
|
||||
com.cmd("cd lv_examples; git co " + release_br + "; git pull origin " + release_br)
|
||||
|
||||
if os.path.exists("lv_drivers"):
|
||||
print("upadte lv_drivers");
|
||||
|
||||
if os.path.exists("lv_drivers"):
|
||||
print("update lv_drivers");
|
||||
com.cmd("cd lv_drivers " + release_br + "; git pull origin " + release_br)
|
||||
|
||||
msg = 'Update to ' + ver_str
|
||||
@@ -53,7 +51,7 @@ def make(repo_path, auto_push = False):
|
||||
if auto_push:
|
||||
com.push("origin --tags")
|
||||
com.push("origin master")
|
||||
|
||||
|
||||
os.chdir("../")
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
+58
-58
@@ -8,21 +8,21 @@ import com
|
||||
import re
|
||||
|
||||
def update_release_branch(release_br, master_br = "master"):
|
||||
com.cmd("git checkout " + release_br)
|
||||
com.cmd("git pull origin " + release_br)
|
||||
com.cmd("git merge "+ master_br +" -X ours");
|
||||
com.push("origin " + release_br);
|
||||
com.cmd("git checkout master");
|
||||
|
||||
com.cmd("git checkout " + release_br)
|
||||
com.cmd("git pull origin " + release_br)
|
||||
com.cmd("git merge "+ master_br +" -X ours");
|
||||
com.push("origin " + release_br);
|
||||
com.cmd("git checkout master");
|
||||
|
||||
def lvgl_release(ver):
|
||||
print("Release lvgl")
|
||||
|
||||
|
||||
ver_str = com.ver_format(ver)
|
||||
release_br = "release/v" + str(ver[0])
|
||||
|
||||
|
||||
os.chdir("./lvgl")
|
||||
com.define_set("./lvgl.h", "LVGL_VERSION_INFO", '\"\"')
|
||||
|
||||
|
||||
# Run some scripts
|
||||
os.chdir("./scripts")
|
||||
com.cmd("./code-format.sh")
|
||||
@@ -35,132 +35,132 @@ def lvgl_release(ver):
|
||||
#update CHANGLELOG
|
||||
new_content = ""
|
||||
f = open("./CHANGELOG.md", "r")
|
||||
|
||||
|
||||
release_note = ""
|
||||
note_state = 0
|
||||
note_state = 0
|
||||
for i in f.read().splitlines():
|
||||
if note_state == 0:
|
||||
r = re.search(r'^## ' + ver_str, i)
|
||||
if r:
|
||||
i = i.replace("planned on ", "")
|
||||
if r:
|
||||
i = i.replace("planned on ", "")
|
||||
note_state+=1
|
||||
|
||||
elif note_state == 1:
|
||||
|
||||
elif note_state == 1:
|
||||
r = re.search(r'^## ', i)
|
||||
if r:
|
||||
note_state+=1
|
||||
else:
|
||||
release_note += i + '\n'
|
||||
|
||||
|
||||
new_content += i + '\n'
|
||||
|
||||
|
||||
f.close()
|
||||
|
||||
|
||||
f = open("./CHANGELOG.md", "w")
|
||||
f.write(new_content)
|
||||
f.close()
|
||||
|
||||
|
||||
com.cmd('git commit -am "Release ' + ver_str + '"')
|
||||
|
||||
|
||||
com.cmd('git checkout dev')
|
||||
com.cmd("git merge master -X ours")
|
||||
com.cmd("git add .")
|
||||
com.cmd("git commit -am 'Merge master'", False)
|
||||
com.push('origin dev')
|
||||
com.cmd('git checkout master')
|
||||
com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
|
||||
com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
|
||||
com.push('origin master')
|
||||
com.push('origin --tags')
|
||||
|
||||
|
||||
update_release_branch(release_br)
|
||||
|
||||
|
||||
os.chdir("../")
|
||||
|
||||
|
||||
return release_note
|
||||
|
||||
|
||||
|
||||
def lv_examples_release(ver):
|
||||
print("Release lv_examples")
|
||||
|
||||
|
||||
os.chdir("./lv_examples")
|
||||
release_br = "release/v" + str(ver[0])
|
||||
ver_str = com.ver_format(ver)
|
||||
|
||||
|
||||
com.update_version(ver)
|
||||
|
||||
com.cmd("sed -i -r 's/LV_VERSION_CHECK\([0-9]+, *[0-9]+, *[0-9]+\)/"+ "LV_VERSION_CHECK(" + str(ver[0]) + ", " + str(ver[1]) + ", " + str(ver[2]) + ")/' lv_examples.h")
|
||||
|
||||
|
||||
com.cmd("sed -i -r 's/LV_VERSION_CHECK\([0-9]+, *[0-9]+, *[0-9]+\)/"+ "LV_VERSION_CHECK\(" + str(ver[0]) + ", " + str(ver[1]) + ", " + str(ver[2]) + ")/' lv_examples.h")
|
||||
|
||||
com.cmd('git commit -am "Release ' + ver_str + '"')
|
||||
com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
|
||||
com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
|
||||
com.push('origin master')
|
||||
com.push('origin --tags')
|
||||
|
||||
update_release_branch(release_br)
|
||||
|
||||
os.chdir("../")
|
||||
|
||||
|
||||
def lv_drivers_release(ver):
|
||||
print("Release lv_drivers")
|
||||
|
||||
|
||||
os.chdir("./lv_drivers")
|
||||
release_br = "release/v" + str(ver[0])
|
||||
ver_str = com.ver_format(ver)
|
||||
|
||||
|
||||
com.update_version(ver)
|
||||
|
||||
|
||||
com.cmd('git commit -am "Release ' + ver_str + '"')
|
||||
com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
|
||||
com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
|
||||
com.push('origin master')
|
||||
com.push('origin --tags')
|
||||
|
||||
|
||||
update_release_branch(release_br)
|
||||
|
||||
os.chdir("../")
|
||||
|
||||
|
||||
def docs_release(ver):
|
||||
print("Release docs")
|
||||
|
||||
|
||||
os.chdir("./docs")
|
||||
release_br = "release/v" + str(ver[0])
|
||||
ver_str = com.ver_format(ver)
|
||||
|
||||
com.cmd("git co latest --")
|
||||
com.cmd("rm -rf xml");
|
||||
com.cmd("cp -r ../lvgl/docs/api_doc/xml .");
|
||||
|
||||
com.cmd("git co latest --")
|
||||
com.cmd("rm -rf xml");
|
||||
com.cmd("cp -r ../lvgl/docs/api_doc/xml .");
|
||||
com.cmd("git add xml");
|
||||
|
||||
|
||||
com.update_version(ver)
|
||||
|
||||
com.cmd('git commit -am "Release ' + ver_str + '"')
|
||||
com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
|
||||
com.cmd("git tag -a " + ver_str + " -m 'Release " + ver_str + "' ")
|
||||
com.push('origin master')
|
||||
com.push('origin --tags')
|
||||
|
||||
|
||||
update_release_branch(release_br, "latest")
|
||||
|
||||
os.chdir("../")
|
||||
|
||||
|
||||
def blog_release(ver, release_note):
|
||||
|
||||
|
||||
os.chdir("./blog/_posts")
|
||||
|
||||
|
||||
ver_str = com.ver_format(ver)
|
||||
|
||||
|
||||
post = "---\nlayout: post\ntitle: " + ver_str + " is released\nauthor: \"kisvegabor\"\ncover: /assets/release_cover.png\n---\n\n"
|
||||
post += release_note
|
||||
|
||||
|
||||
today = date.today()
|
||||
d = today.strftime("%Y-%m-%d")
|
||||
|
||||
|
||||
f = open(d + "-release_" + ver_str + ".md", "w")
|
||||
f.write(post)
|
||||
f.close()
|
||||
|
||||
|
||||
com.cmd("git add .")
|
||||
com.cmd("git commit -am 'Add " + ver_str + " release post'")
|
||||
com.push('origin master')
|
||||
|
||||
|
||||
os.chdir("../../")
|
||||
|
||||
|
||||
|
||||
def make():
|
||||
ver = com.get_lvgl_version("master")
|
||||
release_note = lvgl_release(ver)
|
||||
@@ -168,6 +168,6 @@ def make():
|
||||
lv_drivers_release(ver)
|
||||
docs_release(ver)
|
||||
blog_release(ver, release_note)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
make()
|
||||
|
||||
@@ -349,7 +349,6 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
/* Gesture threshold in pixels */
|
||||
#ifndef LV_INDEV_DEF_GESTURE_LIMIT
|
||||
# ifdef CONFIG_LV_INDEV_DEF_GESTURE_LIMIT
|
||||
@@ -602,7 +601,7 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h" */
|
||||
* (I.e. no new image decoder is added)
|
||||
* With complex image decoders (e.g. PNG or JPG) caching can save the continuous open/decode of images.
|
||||
* However the opened images might consume additional RAM.
|
||||
* LV_IMG_CACHE_DEF_SIZE must be >= 1 */
|
||||
* Set it to 0 to disable caching */
|
||||
#ifndef LV_IMG_CACHE_DEF_SIZE
|
||||
# ifdef CONFIG_LV_IMG_CACHE_DEF_SIZE
|
||||
# define LV_IMG_CACHE_DEF_SIZE CONFIG_LV_IMG_CACHE_DEF_SIZE
|
||||
@@ -1363,15 +1362,15 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h" */
|
||||
# endif
|
||||
#endif
|
||||
#ifndef lv_snprintf
|
||||
# ifdef CONFIG_lv_snprintf
|
||||
# define lv_snprintf CONFIG_lv_snprintf
|
||||
# ifdef CONFIG_LV_SNPRINTF
|
||||
# define lv_snprintf CONFIG_LV_SNPRINTF
|
||||
# else
|
||||
# define lv_snprintf snprintf
|
||||
# endif
|
||||
#endif
|
||||
#ifndef lv_vsnprintf
|
||||
# ifdef CONFIG_lv_vsnprintf
|
||||
# define lv_vsnprintf CONFIG_lv_vsnprintf
|
||||
# ifdef CONFIG_LV_VSNPRINTF
|
||||
# define lv_vsnprintf CONFIG_LV_VSNPRINTF
|
||||
# else
|
||||
# define lv_vsnprintf vsnprintf
|
||||
# endif
|
||||
|
||||
+21
-8
@@ -30,8 +30,8 @@ extern "C" {
|
||||
*******************/
|
||||
|
||||
#ifndef LV_MEM_SIZE
|
||||
#if defined (CONFIG_LV_MEM_SIZE_BYTES)
|
||||
#define CONFIG_LV_MEM_SIZE (CONFIG_LV_MEM_SIZE_BYTES * 1024U)
|
||||
#if defined (CONFIG_LV_MEM_SIZE_KILOBYTES)
|
||||
#define CONFIG_LV_MEM_SIZE (CONFIG_LV_MEM_SIZE_KILOBYTES * 1024U)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -337,9 +337,9 @@ extern "C" {
|
||||
*-----------------*/
|
||||
#ifndef LV_TEXT_ENC
|
||||
#ifdef CONFIG_LV_TXT_ENC_UTF8
|
||||
#define CONFIG_LV_TXT_ENC LV_TXT_ENC_UTF8
|
||||
#define CONFIG_LV_TXT_ENC LV_TXT_ENC_UTF8
|
||||
#elif defined CONFIG_LV_TXT_ENC_ASCII
|
||||
#define CONFIG_LV_TXT_ENC LV_TXT_ENC_ASCII
|
||||
#define CONFIG_LV_TXT_ENC LV_TXT_ENC_ASCII
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -363,11 +363,11 @@ extern "C" {
|
||||
|
||||
#ifndef LV_USE_EXT_CLICK_AREA
|
||||
#ifdef CONFIG_LV_USE_EXT_CLICK_AREA_OFF
|
||||
#define CONFIG_LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_OFF
|
||||
#define CONFIG_LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_OFF
|
||||
#elif defined CONFIG_LV_USE_EXT_CLICK_AREA_TINY
|
||||
#define CONFIG_LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_TINY
|
||||
#define CONFIG_LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_TINY
|
||||
#elif defined CONFIG_LV_USE_EXT_CLICK_AREA_FULL
|
||||
#define CONFIG_LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_FULL
|
||||
#define CONFIG_LV_USE_EXT_CLICK_AREA LV_EXT_CLICK_AREA_FULL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -385,7 +385,6 @@ extern "C" {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/*------------------
|
||||
* SPINNER DEF ANIM
|
||||
*-----------------*/
|
||||
@@ -400,6 +399,20 @@ extern "C" {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*------------------
|
||||
* SPRINTF DISABLE FLOAT
|
||||
*-----------------*/
|
||||
|
||||
#if defined(CONFIG_LV_CONF_SKIP) || defined(LV_CONF_SKIP)
|
||||
# ifndef LV_SPRINTF_DISABLE_FLOAT
|
||||
# ifndef CONFIG_LV_SPRINTF_DISABLE_FLOAT
|
||||
# define LV_SPRINTF_DISABLE_FLOAT 0
|
||||
# else
|
||||
# define LV_SPRINTF_DISABLE_FLOAT 1
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Jan Van Winkel <jan.van_winkel@dxplore.eu>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#ifdef __ZEPHYR__
|
||||
|
||||
#include <autoconf.h>
|
||||
|
||||
#define LV_MEM_CUSTOM 1
|
||||
|
||||
#define LV_MEMCPY_MEMSET_STD 1
|
||||
|
||||
#ifdef CONFIG_LVGL_MEM_POOL_HEAP_KERNEL
|
||||
|
||||
#define LV_MEM_CUSTOM_INCLUDE "kernel.h"
|
||||
#define LV_MEM_CUSTOM_ALLOC k_malloc
|
||||
#define LV_MEM_CUTOM_FREE k_free
|
||||
|
||||
#elif defined(CONFIG_LVGL_MEM_POOL_HEAP_LIB_C)
|
||||
|
||||
#define LV_MEM_CUSTOM_INCLUDE "stdlib.h"
|
||||
#define LV_MEM_CUSTOM_ALLOC malloc
|
||||
#define LV_MEM_CUTOM_FREE free
|
||||
|
||||
#else
|
||||
|
||||
#define LV_MEM_CUSTOM_INCLUDE "lvgl_mem.h"
|
||||
#define LV_MEM_CUSTOM_ALLOC lvgl_malloc
|
||||
#define LV_MEM_CUTOM_FREE lvgl_free
|
||||
|
||||
#endif
|
||||
|
||||
#define LV_ENABLE_GC 0
|
||||
|
||||
#define LV_TICK_CUSTOM 1
|
||||
#define LV_TICK_CUSTOM_INCLUDE "kernel.h"
|
||||
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (k_uptime_get_32())
|
||||
|
||||
#define LV_SPRINTF_CUSTOM 1
|
||||
|
||||
#if LV_SPRINTF_CUSTOM
|
||||
#define LV_SPRINTF_INCLUDE "stdio.h"
|
||||
#define lv_snprintf snprintf
|
||||
#define lv_vsnprintf vsnprintf
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -161,7 +161,6 @@ void lv_disp_set_bg_image(lv_disp_t * disp, const void * img_src)
|
||||
_lv_inv_area(disp, &a);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Opacity of the background
|
||||
* @param disp pointer to a display
|
||||
@@ -197,8 +196,7 @@ void lv_scr_load_anim(lv_obj_t * new_scr, lv_scr_load_anim_t anim_type, uint32_t
|
||||
lv_disp_t * d = lv_obj_get_disp(new_scr);
|
||||
lv_obj_t * act_scr = lv_scr_act();
|
||||
|
||||
|
||||
if(d->del_prev && act_scr != d->scr_to_load) {
|
||||
if(d->del_prev && act_scr != d->scr_to_load && d->scr_to_load) {
|
||||
lv_obj_del(act_scr);
|
||||
lv_disp_load_scr(d->scr_to_load);
|
||||
lv_anim_del(d->scr_to_load, NULL);
|
||||
|
||||
@@ -199,7 +199,6 @@ static inline void lv_scr_load(lv_obj_t * scr)
|
||||
#define LV_VER_RES lv_disp_get_ver_res(lv_disp_get_default())
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* Same as Android's DIP. (Different name is chosen to avoid mistype between LV_DPI and LV_DIP)
|
||||
* 1 dip is 1 px on a 160 DPI screen
|
||||
|
||||
@@ -13,10 +13,6 @@
|
||||
#include "../lv_themes/lv_theme.h"
|
||||
#include "../lv_misc/lv_gc.h"
|
||||
|
||||
#if defined(LV_GC_INCLUDE)
|
||||
#include LV_GC_INCLUDE
|
||||
#endif /* LV_ENABLE_GC */
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
@@ -84,7 +80,7 @@ lv_group_t * lv_group_create(void)
|
||||
*/
|
||||
void lv_group_del(lv_group_t * group)
|
||||
{
|
||||
/*Defocus the the currently focused object*/
|
||||
/*Defocus the currently focused object*/
|
||||
if(group->obj_focus != NULL) {
|
||||
(*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL);
|
||||
lv_obj_invalidate(*group->obj_focus);
|
||||
@@ -191,7 +187,7 @@ void lv_group_remove_obj(lv_obj_t * obj)
|
||||
*/
|
||||
void lv_group_remove_all_objs(lv_group_t * group)
|
||||
{
|
||||
/*Defocus the the currently focused object*/
|
||||
/*Defocus the currently focused object*/
|
||||
if(group->obj_focus != NULL) {
|
||||
(*group->obj_focus)->signal_cb(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL);
|
||||
lv_obj_invalidate(*group->obj_focus);
|
||||
|
||||
@@ -578,7 +578,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
|
||||
}
|
||||
|
||||
/* Save the last keys before anything else.
|
||||
* They need to be already saved if the the function returns for any reason*/
|
||||
* They need to be already saved if the function returns for any reason*/
|
||||
lv_indev_state_t last_state = i->proc.types.keypad.last_state;
|
||||
i->proc.types.keypad.last_state = data->state;
|
||||
i->proc.types.keypad.last_key = data->key;
|
||||
@@ -650,7 +650,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
|
||||
/*On enter long press toggle edit mode.*/
|
||||
if(editable) {
|
||||
/*Don't leave edit mode if there is only one object (nowhere to navigate)*/
|
||||
if(_lv_ll_is_empty(&g->obj_ll) == false) {
|
||||
if(_lv_ll_get_len(&g->obj_ll) > 1) {
|
||||
lv_group_set_editing(g, lv_group_get_editing(g) ? false : true); /*Toggle edit mode on long press*/
|
||||
}
|
||||
}
|
||||
@@ -716,7 +716,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
|
||||
/*An object is being edited and the button is released. */
|
||||
else if(g->editing) {
|
||||
/*Ignore long pressed enter release because it comes from mode switch*/
|
||||
if(!i->proc.long_pr_sent || _lv_ll_is_empty(&g->obj_ll)) {
|
||||
if(!i->proc.long_pr_sent || _lv_ll_get_len(&g->obj_ll) <= 1) {
|
||||
indev_obj_act->signal_cb(indev_obj_act, LV_SIGNAL_RELEASED, NULL);
|
||||
if(indev_reset_check(&i->proc)) return;
|
||||
|
||||
@@ -1170,7 +1170,6 @@ static void indev_click_focus(lv_indev_proc_t * proc)
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handle the gesture of indev_proc_p->types.pointer.act_obj
|
||||
* @param indev pointer to a input device state
|
||||
@@ -1190,7 +1189,6 @@ void indev_gesture(lv_indev_proc_t * proc)
|
||||
|
||||
if(gesture_obj == NULL) return;
|
||||
|
||||
|
||||
if((LV_ABS(proc->types.pointer.vect.x) < indev_act->driver.gesture_min_velocity) &&
|
||||
(LV_ABS(proc->types.pointer.vect.y) < indev_act->driver.gesture_min_velocity)) {
|
||||
proc->types.pointer.gesture_sum.x = 0;
|
||||
@@ -1226,8 +1224,6 @@ void indev_gesture(lv_indev_proc_t * proc)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Checks if the reset_query flag has been set. If so, perform necessary global indev cleanup actions
|
||||
* @param proc pointer to an input device 'proc'
|
||||
|
||||
@@ -23,10 +23,6 @@
|
||||
#include "../lv_widgets/lv_label.h"
|
||||
#endif
|
||||
|
||||
#if defined(LV_GC_INCLUDE)
|
||||
#include LV_GC_INCLUDE
|
||||
#endif /* LV_ENABLE_GC */
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
@@ -78,7 +74,7 @@ void _lv_refr_init(void)
|
||||
/**
|
||||
* Redraw the invalidated areas now.
|
||||
* Normally the redrawing is periodically executed in `lv_task_handler` but a long blocking process
|
||||
* can prevent the call of `lv_task_handler`. In this case if the the GUI is updated in the process
|
||||
* can prevent the call of `lv_task_handler`. In this case if the GUI is updated in the process
|
||||
* (e.g. progress bar) this function can be called when the screen should be updated.
|
||||
* @param disp pointer to display to refresh. NULL to refresh all displays.
|
||||
*/
|
||||
@@ -564,7 +560,6 @@ static void lv_refr_area_part(const lv_area_t * area_p)
|
||||
|
||||
}
|
||||
|
||||
|
||||
if(top_act_scr == NULL) {
|
||||
top_act_scr = disp_refr->act_scr;
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ void _lv_refr_init(void);
|
||||
/**
|
||||
* Redraw the invalidated areas now.
|
||||
* Normally the redrawing is periodically executed in `lv_task_handler` but a long blocking process
|
||||
* can prevent the call of `lv_task_handler`. In this case if the the GUI is updated in the process
|
||||
* can prevent the call of `lv_task_handler`. In this case if the GUI is updated in the process
|
||||
* (e.g. progress bar) this function can be called when the screen should be updated.
|
||||
* @param disp pointer to display to refresh. NULL to refresh all displays.
|
||||
*/
|
||||
|
||||
@@ -581,8 +581,6 @@ bool lv_style_is_empty(const lv_style_t * style);
|
||||
*/
|
||||
#define LV_STYLE_CREATE(name, copy_p) static lv_style_t name; lv_style_init(&name); lv_style_copy(&name, copy_p);
|
||||
|
||||
|
||||
|
||||
#if LV_USE_DEBUG
|
||||
|
||||
# ifndef LV_DEBUG_IS_STYLE
|
||||
|
||||
@@ -34,7 +34,6 @@ typedef struct {
|
||||
const lv_area_t * clip_area;
|
||||
} quarter_draw_dsc_t;
|
||||
|
||||
|
||||
/**********************
|
||||
* STATIC PROTOTYPES
|
||||
**********************/
|
||||
@@ -44,7 +43,6 @@ static void draw_quarter_2(quarter_draw_dsc_t * q);
|
||||
static void draw_quarter_3(quarter_draw_dsc_t * q);
|
||||
static void get_rounded_area(int16_t angle, lv_coord_t radius, uint8_t thickness, lv_area_t * res_area);
|
||||
|
||||
|
||||
/**********************
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
@@ -364,7 +362,6 @@ static void draw_quarter_2(quarter_draw_dsc_t * q)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void draw_quarter_3(quarter_draw_dsc_t * q)
|
||||
{
|
||||
lv_area_t quarter_area;
|
||||
@@ -418,7 +415,6 @@ static void draw_quarter_3(quarter_draw_dsc_t * q)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void get_rounded_area(int16_t angle, lv_coord_t radius, uint8_t thickness, lv_area_t * res_area)
|
||||
{
|
||||
const uint8_t ps = 8;
|
||||
@@ -456,4 +452,3 @@ static void get_rounded_area(int16_t angle, lv_coord_t radius, uint8_t thickness
|
||||
res_area->y2 = cir_y + thick_half - thick_corr;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_co
|
||||
* STATIC VARIABLES
|
||||
**********************/
|
||||
|
||||
#if LV_USE_GPU || LV_USE_GPU_STM32_DMA2D
|
||||
#if (LV_USE_GPU || LV_USE_GPU_STM32_DMA2D) && (LV_USE_GPU_NXP_PXP == 0) && (LV_USE_GPU_NXP_VG_LITE == 0)
|
||||
LV_ATTRIBUTE_DMA static lv_color_t blend_buf[LV_HOR_RES_MAX];
|
||||
#endif
|
||||
|
||||
@@ -78,7 +78,6 @@ static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_co
|
||||
* MACROS
|
||||
**********************/
|
||||
|
||||
|
||||
#define FILL_NORMAL_MASK_PX(out_x, color) \
|
||||
if(*mask_tmp_x) { \
|
||||
if(*mask_tmp_x == LV_OPA_COVER) disp_buf_first[out_x] = color; \
|
||||
@@ -86,7 +85,6 @@ static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_co
|
||||
} \
|
||||
mask_tmp_x++;
|
||||
|
||||
|
||||
#define FILL_NORMAL_MASK_PX_SCR_TRANSP(out_x, color) \
|
||||
if(*mask_tmp_x) { \
|
||||
if(*mask_tmp_x == LV_OPA_COVER) disp_buf_first[out_x] = color; \
|
||||
@@ -96,7 +94,6 @@ static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_co
|
||||
} \
|
||||
mask_tmp_x++;
|
||||
|
||||
|
||||
#define MAP_NORMAL_MASK_PX(x) \
|
||||
if(*mask_tmp_x) { \
|
||||
if(*mask_tmp_x == LV_OPA_COVER) disp_buf_first[x] = map_buf_first[x]; \
|
||||
@@ -117,7 +114,6 @@ static inline lv_color_t color_blend_true_color_subtractive(lv_color_t fg, lv_co
|
||||
* GLOBAL FUNCTIONS
|
||||
**********************/
|
||||
|
||||
|
||||
/**
|
||||
* Fill and area in the display buffer.
|
||||
* @param clip_area clip the fill to this area (absolute coordinates)
|
||||
@@ -252,7 +248,6 @@ LV_ATTRIBUTE_FAST_MEM void _lv_blend_map(const lv_area_t * clip_area, const lv_a
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**********************
|
||||
* STATIC FUNCTIONS
|
||||
**********************/
|
||||
@@ -336,12 +331,7 @@ LV_ATTRIBUTE_FAST_MEM static void fill_normal(const lv_area_t * disp_area, lv_co
|
||||
/*Simple fill (maybe with opacity), no masking*/
|
||||
if(mask_res == LV_DRAW_MASK_RES_FULL_COVER) {
|
||||
if(opa > LV_OPA_MAX) {
|
||||
#if LV_USE_GPU
|
||||
if(disp->driver.gpu_fill_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) {
|
||||
disp->driver.gpu_fill_cb(&disp->driver, disp_buf, disp_w, draw_area, color);
|
||||
return;
|
||||
}
|
||||
#elif LV_USE_GPU_NXP_PXP
|
||||
#if LV_USE_GPU_NXP_PXP
|
||||
if(lv_area_get_size(draw_area) >= LV_GPU_NXP_PXP_FILL_SIZE_LIMIT) {
|
||||
lv_gpu_nxp_pxp_fill(disp_buf, disp_w, draw_area, color, opa);
|
||||
return;
|
||||
@@ -358,6 +348,11 @@ LV_ATTRIBUTE_FAST_MEM static void fill_normal(const lv_area_t * disp_area, lv_co
|
||||
lv_gpu_stm32_dma2d_fill(disp_buf_first, disp_w, color, draw_area_w, draw_area_h);
|
||||
return;
|
||||
}
|
||||
#elif LV_USE_GPU
|
||||
if(disp->driver.gpu_fill_cb && lv_area_get_size(draw_area) > GPU_SIZE_LIMIT) {
|
||||
disp->driver.gpu_fill_cb(&disp->driver, disp_buf, disp_w, draw_area, color);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
/*Software rendering*/
|
||||
for(y = 0; y < draw_area_h; y++) {
|
||||
@@ -392,7 +387,6 @@ LV_ATTRIBUTE_FAST_MEM static void fill_normal(const lv_area_t * disp_area, lv_co
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#if LV_USE_GPU_STM32_DMA2D
|
||||
if(lv_area_get_size(draw_area) >= 240) {
|
||||
if(blend_buf[0].full != color.full) lv_color_fill(blend_buf, color, LV_HOR_RES_MAX);
|
||||
@@ -450,7 +444,6 @@ LV_ATTRIBUTE_FAST_MEM static void fill_normal(const lv_area_t * disp_area, lv_co
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*Buffer the result color to avoid recalculating the same color*/
|
||||
lv_color_t last_dest_color;
|
||||
lv_color_t last_res_color;
|
||||
@@ -581,7 +574,6 @@ static void fill_blended(const lv_area_t * disp_area, lv_color_t * disp_buf, co
|
||||
/*Create a temp. disp_buf which always point to current line to draw*/
|
||||
lv_color_t * disp_buf_tmp = disp_buf + disp_w * draw_area->y1;
|
||||
|
||||
|
||||
lv_color_t (*blend_fp)(lv_color_t, lv_color_t, lv_opa_t);
|
||||
switch(mode) {
|
||||
case LV_BLEND_MODE_ADDITIVE:
|
||||
@@ -757,7 +749,7 @@ LV_ATTRIBUTE_FAST_MEM static void map_normal(const lv_area_t * disp_area, lv_col
|
||||
|
||||
if(opa > LV_OPA_MAX) {
|
||||
#if LV_USE_GPU_NXP_PXP
|
||||
if(lv_area_get_size(draw_area) >= GPU_NXP_PXP_BLIT_SIZE_LIMIT) {
|
||||
if(lv_area_get_size(draw_area) >= LV_GPU_NXP_PXP_BLIT_SIZE_LIMIT) {
|
||||
lv_gpu_nxp_pxp_blit(disp_buf_first, disp_w, map_buf_first, map_w, draw_area_w, draw_area_h, opa);
|
||||
return;
|
||||
}
|
||||
@@ -775,7 +767,6 @@ LV_ATTRIBUTE_FAST_MEM static void map_normal(const lv_area_t * disp_area, lv_col
|
||||
blit.src_area.x2 = blit.src_area.x1 + draw_area_w;
|
||||
blit.src_area.y2 = blit.src_area.y1 + draw_area_h;
|
||||
|
||||
|
||||
blit.dst = disp_buf;
|
||||
blit.dst_width = lv_area_get_width(disp_area);
|
||||
blit.dst_height = lv_area_get_height(disp_area);
|
||||
@@ -826,7 +817,6 @@ LV_ATTRIBUTE_FAST_MEM static void map_normal(const lv_area_t * disp_area, lv_col
|
||||
blit.src_area.x2 = blit.src_area.x1 + draw_area_w;
|
||||
blit.src_area.y2 = blit.src_area.y1 + draw_area_h;
|
||||
|
||||
|
||||
blit.dst = disp_buf;
|
||||
blit.dst_width = lv_area_get_width(disp_area);
|
||||
blit.dst_height = lv_area_get_height(disp_area);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user