Compare commits

..

2667 Commits

Author SHA1 Message Date
Gabor Kiss-Vamosi
bca13143b9 chore: kick CI to rebuild the docs 2024-04-23 15:58:34 +02:00
Gabor Kiss-Vamosi
5d0ba633a5 chore(docs): fix lv_list_add_text 2022-01-10 12:12:09 +01:00
Philippe Coval
b9eaaffe92 build add install rule to CMakeList.txt (#2621) (#2687)
* build add install rule to CMakeList.txt (#2621)

* build: Add install rule

This can help to install lvgl on systems,
for clients applications.

It's made for unix (Linux OE/Yocto actually)
if needed it can be enabled for other platforms too.

Relate-to: https://github.com/lvgl/lvgl/issues/2534
Forwarded: https://github.com/lvgl/lvgl/pull/2621
Signed-off-by: Philippe Coval <philippe.coval@astrolabe.coop>

* build: Make install rules optionnal

This change may be reverted, once verified it's harmless

It was tested using:

    cmake -Dinstall=ON . && make install DESTDIR=/tmp/

Forwarded: https://github.com/lvgl/lvgl/pull/2621
Signed-off-by: Philippe Coval <philippe.coval@huawei.com>

* build: remove use of 'project' keyword in CMakeLists (#2640)

It looks like it's not supported on ESP32: "project command is not scriptable"

Signed-off-by: Philippe Coval <philippe.coval@huawei.com>

* build: fix lib name in CMakeLists (#2641)

Fixup for #2640
2021-10-28 20:35:09 +02:00
Miguel Magno
14825e03fa docs fix typos (#2472) 2021-08-21 08:58:05 -04:00
tfx2001
b20412ca6b docs(overview) fix typo (#2465) 2021-08-21 08:57:11 -04:00
embeddedt
fe4f9d7349 fix(docs) commit to meta repo as lvgl-bot instead of actual commit author 2021-08-13 13:20:50 -04:00
fvanroie
6ee2c0593b fix(docs) add static keyword to driver declaration (#2452)
Add missing static keyword to disp_drv and indev_drv declarations in the examples
2021-08-13 13:00:42 -04:00
Gabor Kiss-Vamosi
c2c24a7bc7 perf(refresh) optimize where to wait for lv_disp_flush_ready with 2 buffers 2021-07-20 11:14:15 +02:00
Gabor Kiss-Vamosi
ae058a3d8f Update CHANGELOG.md 2021-07-16 18:00:05 +02:00
Gabor Kiss-Vamosi
2e942060f0 Update versions to v8.0.2 2021-07-16 17:40:51 +02:00
Gabor Kiss-Vamosi
346b9979dc fix(theme) improve button focus of keyboard
fixes https://github.com/lvgl/lvgl/issues/2359#issuecomment-880704341
2021-07-16 17:40:51 +02:00
Gabor Kiss-Vamosi
e742455be2 fix(tabview) send LV_EVENT_VALUE_CHANGED only once
Fixes #2377
2021-07-16 17:40:51 +02:00
Gabor Kiss-Vamosi
de8b0ad834 fix(imgbtn) use the correct src in LV_EVENT_GET_SELF_SIZE 2021-07-16 17:40:51 +02:00
Themba Dube
04bae5f006 fix(color) remove extraneous cast for 8-bit color
This brings it in line with the corresponding macros for other BPP values.

This issue was found via CI added in the following commit.
2021-07-16 17:40:51 +02:00
Gabor Kiss-Vamosi
7bd924bd4d fix(obj style) fix children reposition if the parent's padding changes.
fixes #2368
2021-07-16 17:40:51 +02:00
embeddedt
7f7b9670d9 fix(color) remove extraneous _LV_COLOR_MAKE_TYPE_HELPER (#2372)
This updates it to match the other `LV_COLOR_MAKEXX` (where XX is the color depth) lines.
2021-07-16 17:40:51 +02:00
HX2003
31d49d1527 fix(spinner) should not be clickable (#2373) 2021-07-16 17:40:51 +02:00
Gabor Kiss-Vamosi
64728e7d0a fix(obj) improve how the focusing indev is determined 2021-07-16 17:40:51 +02:00
embeddedt
2c1d9e868d fix(template) update indev template for v8
A few APIs were missed in the last attempt.

Fixes #2363
2021-07-16 17:40:51 +02:00
Themba Dube
be67fa1cec fix(printf) skip defining attribute if pycparser is used 2021-07-16 17:40:51 +02:00
Avamander
e62d43c83a refactor(printf) add printf-like function attribute to _lv_txt_set_text_vfmt and lv_label_set_text_fmt (#2332)
This improves static analysis and compiler warnings of incorrect format usage.
2021-07-16 17:40:51 +02:00
Gabor Kiss-Vamosi
3e11cf38a9 fix(template) include lvgl.h in lv_port_*_template.c files
fixes: #2361
2021-07-16 17:40:51 +02:00
Gabor Kiss-Vamosi
5b4c61a871 fix(obj) detecting which indev sent LV_EVENT_FOCUS
fixes #2359
2021-07-16 17:40:51 +02:00
guoweilkd
b415e2d122 fix (span) fill LV_EVENT_GET_SELF_SIZE (#2360)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-07-16 17:40:51 +02:00
Gabor Kiss-Vamosi
05ca75e8ea fix(arc) disable LV_OBJ_FLAG_SCROLL_CHAIN by default 2021-07-16 17:40:51 +02:00
Gabor Kiss-Vamosi
752ac98d96 fix (draw) fix arc bg image drawing with full arcs 2021-07-16 17:40:51 +02:00
xaowang96
c4ff3ccc14 fix(disp) fix memory leak in lv_disp_remove (#2355)
Co-authored-by: wangxuedong <wangxuedong@xiaomi.com>
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
a4915d3a34 fix warnigs introduced by 3fb8baf5 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
43638ceb4b fix(widgets) use lv_obj_class for all the widgets
Related to #2346
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
dfef40dbe6 fix(obj) move clean ups from lv_obj_del to lv_obj_destructor 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
e0cc92ddec fix(roller) fix partial redraw of the selected area 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
c774c26ac1 fix(roller) adjust the size of the selected area correctly
fixes #2340
2021-07-16 17:40:50 +02:00
guoweilkd
8eb99b0e4e fix(obj) delete useless type conversion (#2343)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-07-16 17:40:50 +02:00
guoweilkd
4fa45941fc fix(lv_obj_scroll.h) typos (#2345)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-07-16 17:40:50 +02:00
embeddedt
0d09025e70 fix(scroll) fire LV_EVENT_SCROLL_BEGIN in the same spot for both axes 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
335b55e932 fix(btnmatrix) fix button invalidation on focus change 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
01ca590c6d fix(textarea) style update in oneline mode + improve sroll to cursor
fixes: #2335
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
4ac4d87fff fix(tlsf) do not use <assert.h>
fixes: #2341
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
8080b5f718 fix(imgbtn) consider width==LV_SIZE_CONTENT if only mid. img is set
fixes #2305
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
4faede19e9 fix(refr) reduce the nesting level in lv_refr_area 2021-07-16 17:40:50 +02:00
guoweilkd
0de30d7f56 fix(txt) enhance the function of break_chars (#2327)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-07-16 17:40:50 +02:00
Seb Fagard
bff9546c26 fix(pxp): update RTOS macro for SDK 2.10
replace FSL_RTOS_FREE_RTOS by SDK_OS_FREE_RTOS in order to be aligned
with MCU SDK 2.10.
See MCUX-41577.

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
2021-07-16 17:40:50 +02:00
Jozef Bastek
e74e6c27af fix(vglite): update for v8
includes updates coming from NXP MCU SDK 2.10 with adaptation for lvgl v8:

Fixed BLIT offset computation

Previous implementation didn't take into account a possibility of
non-zero offset in source image, so output was wrong if offset was used.
With this fix, CPU and VG-Lite output is the same even with offsets.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

gpu: vglite: Buffer sync with BLITs

Added buffer synchronisation with BLITs instead of memcpy for VG-Lite.
In LVGL v8, buffer synchronisation acceleration is moved to littlevgl_support.c.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

gpu: vglite: Fixed BLIT boundary

Fixed artifact issue revealed by buffer sync with BLIT feature. Caused
by wrong BLIT boundary.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

gpu: vglite: BLIT quality degradation workaround for RT595

Limitation in RT595 causes BLIT image quality degradation when
coordinates are above 368 px. This patch implements workaround that will
break the BLIT into multiple smaller BLITs, so the quality is not
affected for higher resolutions.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

gpu: vglite: Fix address alignment and stride requirements

Fixed multiple issues:
- The VGLite alignment requirement checks for the pixel destination
buffer are not applicable in our case of Linear (non-tiled) format.
- Some VGLite stride requirement requirement should be expressed in bytes,
not in pixels.
- Fix the Y alignment function to ensure that line starts at an address
that the respects the alignment requirement of VG-Lite.

Such mistakes do not break application,
but cause a fallback to non-accelerated Blit by CPU.
See MGG-741.

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>

gpu: vglite: fix some MISRA C 2012 violations

fixed 56 violations: mainly implicit format casts
and unchecked returned values.

see JIRA MCUX-43327

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>

gpu: vglite: fix stride requirement in _init_vg_buf()

fix unit: need to convert the alignment requirement into bytes when checking
stride parameter.
fix condition: stride requirement applies only on source buffers.

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>

gpu: vglite: updates for v8

cache callback type changed in display driver struct

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>

gpu: vglite: update parameter type for v8

display driver is now a pointer in structure.

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
2021-07-16 17:40:50 +02:00
Jozef Bastek
4766e97bc5 fix(pxp): update for v8
includes updates from NXP MCU SDK 2.10 with adaptation for lvgl v8:

Updated cache handling

- range limited cache flushing changed to complete cache flush, which is
faster and shold be safe
- flushing done via callback system, so OS specific code is removed
from LVGL

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

gpu: pxp: Buffer sync with BLITs

Added buffer synchronisation with BLITs instead of memcpy for PXP.
In LVGL v8, buffer synchronisation acceleration is moved to littlevgl_support.c.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

gpu: pxp: updates for v8

cache callback type changed in display driver struct
chroma key name changed

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>

gpu: pxp: new log header file for v8

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>

core: init PXP accelerator

Signed-off-by: Seb Fagard <sebastien.fagard@nxp.com>
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
ebcb6c0224 fix(flex) fix layout update and invalidation issues 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
fbd88fe434 fix(flex) fix NULL pointer dereference
fixes #2331
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
de1f6e978e fix(obj, switch) do not send LV_EVENT_VALUE_CHANGED twice
fixes #2330
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
edb23d2640 fix(color) overflow with 16 bit color depth 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
dee6530b0b fix(coords) fix using large coordinates
Fixes #2323
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
68651c718a fix(chart) fix crash if no series are added
fixes #2322
2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
90c878ee92 fix(chart) invalidation with LV_CHART_UPDATE_MODE_SHIFT 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
9acd70d9ec fix(align) fix lv_obj_align_to 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
d7e5b2983e fix(table) invalidate the table on cell value change 2021-07-16 17:40:50 +02:00
Gabor Kiss-Vamosi
6d73386245 fix(label) remove dupliacted lv_obj_refresh_self_size 2021-07-16 17:40:49 +02:00
Gabor Kiss-Vamosi
502ca5b809 fix(draw) underflow in subpixel font drawing
Fixes: #2273
2021-07-16 17:40:49 +02:00
Gabor Kiss-Vamosi
62255ad153 fix (scroll) do not send unnecessary scroll end events 2021-07-16 17:40:49 +02:00
Gabor Kiss-Vamosi
16f576319c docs update CHANGELOG for v8.0.1 2021-06-14 13:45:19 +02:00
Gabor Kiss-Vamosi
f2c6f5dc9c update verson numbers to v8.0.1 2021-06-14 13:41:36 +02:00
Gabor Kiss-Vamosi
f18e1eb967 docs(filesystem) update to v8 2021-06-14 13:29:23 +02:00
Gabor Kiss-Vamosi
4d334f5c72 fix(msgbox) create modals on top layer instead of act screen
To cover widgets on the top layer too
2021-06-14 13:29:07 +02:00
Gabor Kiss-Vamosi
7001f851da fix(colowheel) disable LV_OBJ_FLAG_SCROLL_CHAIN by default 2021-06-14 13:28:53 +02:00
Ali Rostami
b7e6230a89 docs(grid) typo fix (#2310) 2021-06-14 13:28:45 +02:00
dronecz
0c1105951d fix(arduino) fix the prototype of my_touchpad_read in the LVGL_Arduino.ino 2021-06-14 13:28:30 +02:00
Gabor Kiss-Vamosi
58a169d757 fix(meter) fix needle image invalidation
Fixes #2300
2021-06-14 13:28:22 +02:00
Gabor Kiss-Vamosi
3847fd5b46 fix(mem) add lv_ prefix to tlsf functions and types
It avoids collision if tlsf is used by other libs in the project too
Fixes https://github.com/lvgl/lvgl/issues/2116#issuecomment-857765919
2021-06-14 13:28:13 +02:00
Gabor Kiss-Vamosi
7793e8b730 fix(calendar) fix the position calculation today
Fixes https://forum.lvgl.io/t/calendar-widget-bug-in-v8-0/5763
2021-06-14 13:27:55 +02:00
Rop Gonggrijp
e0cd31fe95 docs(color) language fixes (#2302) 2021-06-14 13:26:11 +02:00
Gabor Kiss-Vamosi
26c7f48756 fix conflict 2021-06-14 13:25:58 +02:00
Rop Gonggrijp
1deff8ed03 Spelling and other language fixes to documentation (#2293) 2021-06-14 13:24:32 +02:00
Gabor Kiss-Vamosi
ad9de31a05 fix(theme) show disabled state on buttons of btnmatrix, msgbox and kayboard 2021-06-14 13:24:22 +02:00
Gabor Kiss-Vamosi
d4d88ac642 fix(scroll) keep the scroll position on object deleted 2021-06-14 13:24:13 +02:00
Gabor Kiss-Vamosi
0cd5a15969 fix(msgbox) handle NULL btn map paramter 2021-06-14 13:24:04 +02:00
Gabor Kiss-Vamosi
19a6cff016 fix(group) allow refocusing obejcts
But do not send defocus event if the same obejct is refocused
2021-06-14 13:23:55 +02:00
embeddedt
790e1078d5 docs(overview) spelling fixes 2021-06-14 13:23:47 +02:00
Gabor Kiss-Vamosi
db1e56a90e chore(docs) minor formatting on example's GitHub link 2021-06-14 13:23:16 +02:00
Themba Dube
f76c01b4ca feat(docs) add view on GitHub link 2021-06-14 13:23:03 +02:00
Themba Dube
42d191c679 chore(lv_conf_template) fix spelling mistake
Also forces the docs to rebuild.
2021-06-14 13:22:37 +02:00
Gabor Kiss-Vamosi
054d933742 fix(theme) fix the switch style in the default theme
LVGL didn't see that the styles were changed in checked state therefore the switch wasn't invalidated.
2021-06-14 13:22:21 +02:00
Gabor Kiss-Vamosi
57839d8e7d docs fix typo 2021-06-14 13:22:12 +02:00
Gabor Kiss-Vamosi
5ca2528bff feat(event) pass the scroll aniamtion to LV_EVENT_SCROLL_BEGIN
Also add lv_example_tabview_2 for demonstration
2021-06-14 13:21:27 +02:00
Gabor Kiss-Vamosi
1afcd1691f fix(tabview) fix with left and right tabs 2021-06-14 13:21:18 +02:00
Gabor Kiss-Vamosi
8e60f28432 fix(template) udpate lv_objx_template to v8 2021-06-14 13:21:00 +02:00
Ali Rostami
a4b7ef4f50 Update quick-overview.md (#2295)
* Update quick-overview.md

* Update quick-overview.md

* Update lv_example_get_started_3.c

* Update coords.md
2021-06-14 13:20:43 +02:00
Gabor Kiss-Vamosi
70911accf5 fix(pxp) change LV_COLOR_TRANSP to LV_COLOR_CHROMA_KEY to v8 compatibility
Fixes #2289
2021-06-14 13:20:36 +02:00
Gabor Kiss-Vamosi
a4d854291a docs(color) minor fix 2021-06-14 13:20:24 +02:00
Gabor Kiss-Vamosi
9446a9aecb fix(example) revert test code 2021-06-14 13:20:17 +02:00
Gabor Kiss-Vamosi
bb6b8037cd fix(draw) with additive blending with 32 bit color depth 2021-06-14 13:20:04 +02:00
Gabor Kiss-Vamosi
bd5c8c0e12 docs(color) update colors' docs 2021-06-14 13:19:54 +02:00
KSam
d83258ab4a docs(lv_obj_style) update add_style and remove_style function headers (#2287) 2021-06-14 13:19:38 +02:00
guoweilkd
33e0926ae3 fix memory leak of spangroup (#2285)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-06-03 16:41:20 +02:00
Gabor Kiss-Vamosi
38ebcd8154 fix make lv_img_cache.h public becasue cache invalidation is public 2021-06-03 13:50:08 +02:00
Gabor Kiss-Vamosi
2b29249510 Merge branch 'master' of https://github.com/lvgl/lvgl 2021-06-02 14:21:38 +02:00
Gabor Kiss-Vamosi
3b58ef14e5 fix(btnmamatrix) fix focus event handling 2021-06-02 14:21:15 +02:00
dependabot[bot]
a2f45b26e1 Merge pull request #2280 from lvgl/dependabot/pip/docs/urllib3-1.26.5 2021-06-02 12:01:45 +00:00
Gabor Kiss-Vamosi
57e211cc17 fix(label) calculating the clip area 2021-06-02 13:22:55 +02:00
dependabot[bot]
b2f77dfcd9 chore(deps): bump urllib3 from 1.26.4 to 1.26.5 in /docs
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.4 to 1.26.5.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.4...1.26.5)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-02 04:41:41 +00:00
Gabor Kiss-Vamosi
29bfe60438 fix(docs) add docs about the default group 2021-06-01 19:43:54 +02:00
Gabor Kiss-Vamosi
d1f2726ed7 Update release.yml 2021-06-01 11:14:59 +02:00
Gabor Kiss-Vamosi
9c7f4a8651 Update CHANGELOG.md 2021-06-01 11:11:54 +02:00
Gabor Kiss-Vamosi
c597d25798 Release v8.0.0 2021-06-01 09:48:03 +02:00
Gabor Kiss-Vamosi
9ef2b22203 fix(anim) fix deleting animations with custom_exec_cb 2021-06-01 09:34:21 +02:00
Gabor Kiss-Vamosi
dd186466eb Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-06-01 09:11:34 +02:00
Gabor Kiss-Vamosi
5287ec5ba2 fix(flex, grid) move the style related functions with designated initializer to the C files 2021-06-01 09:11:28 +02:00
Themba Dube
c8e1876eda fix(docs) more fixes 2021-05-31 14:14:58 -04:00
Gabor Kiss-Vamosi
d3022648dc fix(docs) minor fixes 2021-05-31 19:42:53 +02:00
Gabor Kiss-Vamosi
26c4de7389 fix update makefiles 2021-05-31 19:32:03 +02:00
Gabor Kiss-Vamosi
124f7a080e fix(style) use C files for style set functions instead of designated initializers
Related comment: ab149501c8 (commitcomment-51535673)
2021-05-31 19:27:35 +02:00
Gabor Kiss-Vamosi
8930a60874 chore force docs rebuild 2021-05-31 17:45:13 +02:00
Gabor Kiss-Vamosi
ab149501c8 fix(style) use an other technique to generate style set functions
The previous version caused glitches.
2021-05-31 14:45:53 +02:00
Gabor Kiss-Vamosi
165ff859f3 fix warnings 2021-05-31 13:03:56 +02:00
Gabor Kiss-Vamosi
82b21a98a4 fix(style) remove designated initializers from lv_style_gen.h 2021-05-31 12:53:04 +02:00
Gabor Kiss-Vamosi
be92f9f749 fix simplify lv_example_get_started_2 2021-05-31 12:49:49 +02:00
Gabor Kiss-Vamosi
b575b0418a fix(obj draw) fix the use of filtered grad color 2021-05-31 12:49:23 +02:00
Gabor Kiss-Vamosi
66152438f6 fix minor fix in a scroll example 2021-05-30 20:39:35 +02:00
Gabor Kiss-Vamosi
1cb57494df revert attempts to make struct private
feat/priate-struct was create as snapshot before this commit
2021-05-30 15:15:43 +02:00
embeddedt
0ad3dcbf9b chore(docs) update version labeling 2021-05-30 08:40:29 -04:00
embeddedt
d1a42ea883 chore(docs) add "v" prefix 2021-05-30 08:21:24 -04:00
Gabor Kiss-Vamosi
6ab6134af1 fix warning 2021-05-30 14:02:39 +02:00
Gabor Kiss-Vamosi
0d9a5d47a3 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-30 13:51:30 +02:00
Gabor Kiss-Vamosi
b7da7c1b1a fix(font gen) revert test code 2021-05-30 13:51:14 +02:00
Gabor Kiss-Vamosi
9efb99d177 feat(example) add lv_example_scroll_6 2021-05-30 13:50:05 +02:00
Themba Dube
e3ce3a8f5c chore(docs) fix error 2021-05-29 16:49:59 -04:00
Themba Dube
11f1c5d13f chore(docs) handle version names without dots 2021-05-29 16:36:28 -04:00
Gabor Kiss-Vamosi
152dffcce4 fix(tabview) wix memory leak with left/right tab position 2021-05-29 21:44:08 +02:00
Gabor Kiss-Vamosi
0b03482bcb fix(font) fix generating builtin subpx fonts 2021-05-29 21:43:27 +02:00
Gabor Kiss-Vamosi
4554f5d9c3 fix try a different approach to make structs private 2021-05-29 09:32:19 +02:00
Gabor Kiss-Vamosi
d527ca019a Revert "fix how the private struct are handled in function pointer typedefs"
This reverts commit b1bcff6f8f.
2021-05-29 09:11:41 +02:00
Gabor Kiss-Vamosi
8dd33a0041 fix warnings 2021-05-29 07:32:44 +02:00
Gabor Kiss-Vamosi
b1bcff6f8f fix how the private struct are handled in function pointer typedefs
Do no use '_' for compatibility with Micropython binding.
2021-05-29 07:26:24 +02:00
Gabor Kiss-Vamosi
4780beae01 fix(obj) fix invalidation of objects on state change 2021-05-28 14:10:12 +02:00
Gabor Kiss-Vamosi
e3fb5d2840 fix minor example issues 2021-05-27 16:06:17 +02:00
Gabor Kiss-Vamosi
00dc5db326 fix some examples 2021-05-27 15:21:51 +02:00
Gabor Kiss-Vamosi
98c3c8eb5c fix some examples 2021-05-27 15:12:50 +02:00
Gabor Kiss-Vamosi
1a3e704b25 fix example include paths 2021-05-27 12:34:54 +02:00
Gabor Kiss-Vamosi
20af77b142 fix(docs) fix missing meter example 2021-05-27 11:55:45 +02:00
Gabor Kiss-Vamosi
7fe16e2ed4 fix warning 2021-05-27 11:52:10 +02:00
Gabor Kiss-Vamosi
0cafde653d feat(example) add style examples 2021-05-27 11:50:04 +02:00
Gabor Kiss-Vamosi
5bc529bc46 fix(example) fix the grid examples to not have scrollbars on the items 2021-05-26 23:11:29 +02:00
Gabor Kiss-Vamosi
46de101c97 feat(example) add RTL scroll example 2021-05-26 23:05:07 +02:00
Gabor Kiss-Vamosi
20f3b2e04c feat(align) add LV_ALIGN_DEFAULT
It's resolved to LV_ALIGN_TOP_LEFT/RIGHT according to the based direction
2021-05-26 23:04:31 +02:00
Gabor Kiss-Vamosi
ec6c20b587 feat(examples) add event examples 2021-05-26 22:05:32 +02:00
Gabor Kiss-Vamosi
71189b46e9 feat(examples) add aniamtion examples 2021-05-26 22:05:32 +02:00
Gabor Kiss-Vamosi
0a70280177 feat(scroll) add scrollbar styling example + allow for the scrollbar using shadow 2021-05-26 22:05:32 +02:00
TimSchumann
ce936b8839 docs(CONTRIBUTING) edit for spelling, grammar, and clarity (#2268)
- Changed all text based instances of LVGL to uppercase (Only instances referring to LVGL the project, not instances referring to the ‘lvgl’ directory structure in the repository, or in URL links)
- Standardized bulleted/numbered list capitalization and punctuation
- Fixed several typos and spelling errors
- Changed minor grammatical errors and structure for clarity.
2021-05-26 13:02:13 -04:00
Themba Dube
4a1462aa3e fix(docs) handle tuple 2021-05-26 11:58:46 -04:00
Themba Dube
bc6c20618e Fix GitHub links 2021-05-26 11:53:03 -04:00
Gabor Kiss-Vamosi
2d09196d2d fix(docs) fix path of example 2021-05-26 16:45:13 +02:00
Gabor Kiss-Vamosi
42cd4b8f43 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-26 16:34:33 +02:00
Gabor Kiss-Vamosi
b969c21881 fix(example) add scroll examples + minor fixes 2021-05-26 16:34:25 +02:00
embeddedt
26043cbcd0 fix(example) add missing space and remove extra space in lv_example_label_1 2021-05-26 10:17:38 -04:00
Gabor Kiss-Vamosi
1b3c4e7c25 fix(example) fix the overlapping texts in lv_example_label_3 2021-05-26 15:30:51 +02:00
Gabor Kiss-Vamosi
1b2d28bbc0 fix warnings 2021-05-26 14:38:42 +02:00
Gabor Kiss-Vamosi
7fe00f995a feat(example) add new label example to show LTR, RTL and Chinese texts 2021-05-26 14:35:34 +02:00
Gabor Kiss-Vamosi
833b91364a feat(fonts) add more CJK characters to lv_font_simsum_16_cjk 2021-05-26 14:35:31 +02:00
Gabor Kiss-Vamosi
ee09d7de6a describe the intended features of the new relase scripts (initial ideas) 2021-05-26 12:57:11 +02:00
Gabor Kiss-Vamosi
8bba029aa6 fix warning 2021-05-26 12:50:45 +02:00
Gabor Kiss-Vamosi
a0eb46b042 feat(theme) add mono theme 2021-05-26 12:23:23 +02:00
Gabor Kiss-Vamosi
87dbda8e10 fix(chart) optimize memory usage of tick dsc 2021-05-25 21:44:27 +02:00
Gabor Kiss-Vamosi
a6fc90ccc5 Update CHANGELOG.md 2021-05-25 16:07:06 +02:00
Gabor Kiss-Vamosi
fdf33e1190 Update CHANGELOG.md 2021-05-25 15:53:01 +02:00
Gabor Kiss-Vamosi
16cc870ce2 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-25 11:39:34 +02:00
Gabor Kiss-Vamosi
8564e647f6 fix(animing) add LV_usE_IMG as dependency 2021-05-25 11:39:23 +02:00
Gabor Kiss-Vamosi
4a00031713 fix push the compiled docs to the docs repo instead of docs_compiled
"docs" was renamed to "docs_old" and "docs_compiled" to "docs"
2021-05-25 11:21:04 +02:00
guoweilkd
f1cbf49718 fix lv_chart_set_point_count() bug (#2270)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-05-25 09:24:45 +02:00
Gabor Kiss-Vamosi
5b9329fd5d fix(chart) various scatter chart related fixes 2021-05-24 21:45:05 +02:00
Gabor Kiss-Vamosi
7522f4e2f0 feat(chart) add scatter chart example 2021-05-24 15:11:07 +02:00
Gabor Kiss-Vamosi
b1f7fbe3b7 feat(chart) add SCATTER type 2021-05-24 15:10:12 +02:00
Gabor Kiss-Vamosi
431156e5e7 fix(chart) consider border width in division line position calculation 2021-05-24 13:56:22 +02:00
Gabor Kiss-Vamosi
75e1950320 feat make a lot of structures private 2021-05-24 13:33:59 +02:00
Gabor Kiss-Vamosi
923dbca934 Update ROADMAP.md 2021-05-23 13:49:14 +02:00
Gabor Kiss-Vamosi
5331fc9fb5 feat make some other structs private 2021-05-23 13:09:58 +02:00
Gabor Kiss-Vamosi
c29221d90f fix warning 2021-05-22 14:40:30 +02:00
Gabor Kiss-Vamosi
12ab12eb94 fix(draw) do not report warnings if the glyph of LV_SYMBOL_DUMMY is not found 2021-05-22 14:35:24 +02:00
Gabor Kiss-Vamosi
6b4dd7c463 fix(mem) disable LV_MEM_ADD_JUNK 2021-05-22 14:34:36 +02:00
Gabor Kiss-Vamosi
73327b9141 revert parts of making some struct static for Microbinding compatibility (d73e4201) 2021-05-22 14:33:26 +02:00
Gabor Kiss-Vamosi
3fa42f4245 fix(table) fix clicking with RTL direction 2021-05-21 12:57:26 +02:00
Gabor Kiss-Vamosi
e2710feedb fix(scoll) lv_obj_get_scroll_bottom if there is no children 2021-05-21 12:33:58 +02:00
Gabor Kiss-Vamosi
bb066f2f72 fix(example) lv_example_roller_3 2021-05-21 11:31:06 +02:00
Gabor Kiss-Vamosi
33ab14568a fix(text) fix handling LV_TEXT_ALIGN_AUTO 2021-05-21 11:30:42 +02:00
Gabor Kiss-Vamosi
d73e42011d feat make some structs private 2021-05-21 10:58:32 +02:00
Gabor Kiss-Vamosi
46253b1286 docs minor fixes 2021-05-20 22:25:47 +02:00
Gabor Kiss-Vamosi
6f42088dec fix(example) fix meter example 2021-05-20 21:24:59 +02:00
Gabor Kiss-Vamosi
9a1eaea25d docs add meter 2021-05-20 21:12:27 +02:00
Gabor Kiss-Vamosi
32b3988126 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-20 15:53:12 +02:00
Gabor Kiss-Vamosi
058c750ba9 fix(tabview) fix warning 2021-05-20 15:53:06 +02:00
Gabor Kiss-Vamosi
5e9a7e226f fix(btnmatrix) in edot mode go to the last button after the first 2021-05-20 15:52:13 +02:00
Gabor Kiss-Vamosi
52d07408ba Update library.properties 2021-05-20 15:02:11 +02:00
Gabor Kiss-Vamosi
63c6fa6968 Update library.json 2021-05-20 15:02:04 +02:00
guoweilkd
1241fe144b rename span interface (#2259)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-05-20 14:47:46 +02:00
Gabor Kiss-Vamosi
c77ec58af7 fix(flex) fix flex row layout calculation with RTL base direction 2021-05-20 14:44:22 +02:00
Gabor Kiss-Vamosi
42145ec2a9 docs add details to LV_EVENT_HIT_TEST 2021-05-20 14:32:06 +02:00
guoweilkd
e9d82d8336 docs(chart) fix typos (#2263)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-05-20 14:03:07 +02:00
guoweilkd
fcdca6229f add fade mask example for roller obj (#2260)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-05-20 13:43:54 +02:00
Gabor Kiss-Vamosi
94717684b0 docs minor fix 2021-05-20 13:23:26 +02:00
Gabor Kiss-Vamosi
408cddee48 feat(indev) add warning log if the pointer's point is out of the screen 2021-05-20 13:10:29 +02:00
Gabor Kiss-Vamosi
4293f9d921 fix warnings 2021-05-20 12:52:48 +02:00
Gabor Kiss-Vamosi
07fd3d2c96 feat(chart) add rename lv_chart_set_cursor_point to lv_chart_set_cursor_pos and add lv_chart_set_cursor_point to stick the cursor to a point 2021-05-20 12:43:27 +02:00
Gabor Kiss-Vamosi
6c013fe158 revert(example) remove test codes 2021-05-20 12:08:24 +02:00
Gabor Kiss-Vamosi
1386edf2fb fix(bidi) fix tabview, textarea, label, btnmatrix, roller, dropdown with RTL base direction 2021-05-20 12:04:06 +02:00
Gabor Kiss-Vamosi
a63ab1eef1 feat(event) add LV_EVENT_LAYOUT_CHANGED and fix tabview's tab position on resize 2021-05-20 07:41:02 +02:00
Gabor Kiss-Vamosi
b06a1f35f3 fix typo 2021-05-20 07:41:02 +02:00
Gabor Kiss-Vamosi
2f4e8c6a98 chore(build) rerun tests 2021-05-19 22:11:43 +02:00
Gabor Kiss-Vamosi
1fd1db3229 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-19 21:56:49 +02:00
Gabor Kiss-Vamosi
37d0471698 fix(tabview) fix tab position on resize 2021-05-19 21:56:40 +02:00
Gabor Kiss-Vamosi
97282e67bd feat(example) add obj drag example 2021-05-19 21:55:29 +02:00
Themba Dube
9928029a0f chore(docs) force rebuild
Also fix a minor pluralization issue.
2021-05-19 21:55:29 +02:00
Gabor Kiss-Vamosi
a4f8c65f5b Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-19 20:57:14 +02:00
Gabor Kiss-Vamosi
e2a7f559ab feat(bidi) make base dir a style property and rename lv_bidi_dir_t to lv_base_dir_t 2021-05-19 20:55:44 +02:00
Themba Dube
a3e857c2cf chore(docs) force rebuild
Also fix a minor pluralization issue.
2021-05-19 09:56:08 -04:00
Gabor Kiss-Vamosi
5f0fe3a22c fix(roller) make lv_roller_set_visible_row_count consider border width 2021-05-19 15:51:30 +02:00
Gabor Kiss-Vamosi
1a3f4d6b9c fix(scroll) consider border width when determining the horizontal scroll size too 2021-05-19 15:50:46 +02:00
Gabor Kiss-Vamosi
b634a63963 fix(textarea, spinbox) fix cursor position and size 2021-05-19 15:29:28 +02:00
Gabor Kiss-Vamosi
7bd449fd59 fix(tileview) fix position of tiles 2021-05-19 15:29:28 +02:00
Themba Dube
30f89f1ce7 Merge branch 'master' of github.com:littlevgl/lvgl 2021-05-19 09:07:35 -04:00
Themba Dube
e65a36fcf4 chore(docs) remove unused code 2021-05-19 09:05:05 -04:00
Gabor Kiss-Vamosi
46f017c29c Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-19 15:04:14 +02:00
Gabor Kiss-Vamosi
31d23c38fb fix(include) add lv_draw.h to lvgl.h 2021-05-19 15:03:58 +02:00
Themba Dube
b34b520885 chore(docs) use relative version path for examples 2021-05-19 08:54:05 -04:00
Gabor Kiss-Vamosi
a77fbc574d docs update some widgets' docs to v8 2021-05-19 13:51:32 +02:00
guoweilkd
32d742cf52 fix encoded letter bug (#2252)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-05-19 13:27:09 +02:00
embeddedt
3b9f01766e chore(stale) adjust issue closure timeouts 2021-05-18 10:07:42 -04:00
guoweilkd
fb0979cbc1 docs(timer) fix typos (#2261)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-05-18 16:02:52 +02:00
Gabor Kiss-Vamosi
8155712687 fix(example) fix artifacts when the fist point is clicked in lv_example_chart_4 2021-05-18 15:50:56 +02:00
Gabor Kiss-Vamosi
973c36b514 fix warning 2021-05-18 15:42:23 +02:00
Gabor Kiss-Vamosi
1c748cda2d fix(tabview) handle size changes 2021-05-18 15:40:41 +02:00
Gabor Kiss-Vamosi
643b6f52f0 docs add docs for some extra widgets 2021-05-18 14:25:17 +02:00
Gabor Kiss-Vamosi
ca01593561 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-18 11:20:32 +02:00
Gabor Kiss-Vamosi
33c238b2da fix(event) fix lv_event_set_cover_res 2021-05-18 11:20:28 +02:00
Gabor Kiss-Vamosi
76fe4148b5 docs update CHANGELOG, CONTRIBUTING and ROADMAP 2021-05-18 11:07:01 +02:00
guoweilkd
6e8b769d2c docs(scroll) fix small problem (#2257)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-05-17 22:35:10 -04:00
embeddedt
76d5d468b9 chore(issues) allow dispatching issue closer 2021-05-17 18:56:32 -04:00
embeddedt
f4bb6eadf5 Create close_old_issues.yml 2021-05-17 18:40:00 -04:00
embeddedt
e22a201369 Delete stale.yml
It has been extremely unreliable over the last few months.
2021-05-17 18:37:16 -04:00
Gabor Kiss-Vamosi
d505429dd8 fix(keyboard) do not deassign the textarea on OK or CANCEL click 2021-05-17 20:22:01 +02:00
Gabor Kiss-Vamosi
9d3d24202c fix(example) fix sending LV_EVENT_READY in lv_example_textarea_1 2021-05-17 20:17:11 +02:00
Gabor Kiss-Vamosi
ab8c1ce2e2 docs fix links 2021-05-17 16:30:34 +02:00
Gabor Kiss-Vamosi
c65dad1f93 docs fix links 2021-05-17 16:27:37 +02:00
Gabor Kiss-Vamosi
f97f87fdcd docs link fixes 2021-05-17 16:17:20 +02:00
Gabor Kiss-Vamosi
103311192c Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-17 15:38:49 +02:00
Gabor Kiss-Vamosi
2972433a45 minor fixes 2021-05-17 15:38:42 +02:00
Gabor Kiss-Vamosi
5ca2481aa2 dics add calendar, chart, colorpicker 2021-05-17 15:37:35 +02:00
Gabor Kiss-Vamosi
7d26d10c3b docs add flex and grid layout 2021-05-17 15:37:06 +02:00
embeddedt
77c61aa297 chore(docs) ensure requirements.txt is hashed in workflow 2021-05-15 16:08:55 -04:00
Gabor Kiss-Vamosi
26366ad279 docs(style) fix typos 2021-05-15 21:12:06 +02:00
Gabor Kiss-Vamosi
a9275f53f3 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-15 20:03:08 +02:00
Gabor Kiss-Vamosi
20f76a1e16 docs minor fixes 2021-05-15 20:02:56 +02:00
Themba Dube
a6086edfc0 chore(docs) upgrade to Sphinx 4 and use requirements.txt 2021-05-14 20:25:40 -04:00
Themba Dube
0ba2e25626 chore(docs) fix version selector 2021-05-14 20:15:25 -04:00
Gabor Kiss-Vamosi
f95b72de3a chore(docs) force rebuilding of the docs 2021-05-15 01:11:51 +02:00
Gabor Kiss-Vamosi
d85703b274 docs include ROADMAP.md and CHANGELOG.md 2021-05-15 01:10:19 +02:00
Gabor Kiss-Vamosi
650f2fc6fa refactor(obj) rename lv_dpx_obj to lv_obj_dpx 2021-05-15 00:49:49 +02:00
Gabor Kiss-Vamosi
a7cd42d5a3 fix build error 2021-05-15 00:23:16 +02:00
Gabor Kiss-Vamosi
796ca68f2a fix(disp) change lv_dpx_disp and lv_dpx_obj to lv_disp_dpx and lv_obj_dpx forr Micropython compatibility 2021-05-15 00:16:28 +02:00
Gabor Kiss-Vamosi
94a47dc6d9 refactor(event) simplify cover check realted event functions 2021-05-15 00:14:31 +02:00
Gabor Kiss-Vamosi
b7f875aba6 refactor(event) change lv_event_get_ext_draw_size_info to lv_event_set_ext_draw_size for simpler usage 2021-05-14 23:56:34 +02:00
Gabor Kiss-Vamosi
b56e60acef feat(disp) add lv_dpx_disp and lv_dpx_obj 2021-05-14 23:51:33 +02:00
Gabor Kiss-Vamosi
20f7ea0961 fix warning 2021-05-14 15:55:36 +02:00
Gabor Kiss-Vamosi
3c994fb968 add forgotten docs file 2021-05-14 15:53:04 +02:00
Gabor Kiss-Vamosi
abe04e98d3 docs add style props 2021-05-14 15:37:35 +02:00
Gabor Kiss-Vamosi
9b647dc919 fix(scroll) fix snapping if an object is has LV_OBJ_FLAG_FLOAT 2021-05-14 15:36:33 +02:00
Gabor Kiss-Vamosi
f9ca3900f5 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-13 21:23:20 +02:00
Gabor Kiss-Vamosi
fb654c481b docs update drawing and porting (display, indev) 2021-05-13 21:23:11 +02:00
Themba Dube
acc00e320b chore(docs) force another rebuild
Testing that an 8.0 docs update doesn't remove 7.11 docs.
2021-05-13 13:39:55 -04:00
Themba Dube
10278b4680 fix(span) update to new API 2021-05-13 13:17:05 -04:00
Gabor Kiss-Vamosi
addf05da8b docs update drawing 2021-05-13 19:15:29 +02:00
guoweilkd
9fc556a90b add span widget (#2227)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-05-13 17:42:33 +02:00
Gabor Kiss-Vamosi
a2a65d48a5 fix(msgbox) fix size settings 2021-05-13 17:27:09 +02:00
Gabor Kiss-Vamosi
052c3c9f3e feat(event) add more event code specific wrappers for lv_event_get_param() 2021-05-13 17:08:49 +02:00
Gabor Kiss-Vamosi
e3425188f5 docs fix example paths 2021-05-13 16:13:47 +02:00
Gabor Kiss-Vamosi
3fc03658ed fix build error 2021-05-13 16:10:17 +02:00
Gabor Kiss-Vamosi
47de5e1eda docs fix link to examples 2021-05-13 16:04:49 +02:00
Gabor Kiss-Vamosi
e29c96e975 fix export missing constants and defines to make them available in Micropython binding. 2021-05-13 16:04:32 +02:00
Gabor Kiss-Vamosi
1ed42a937f docs finish the the core widgets 2021-05-13 15:39:26 +02:00
Gabor Kiss-Vamosi
6aa27cc11b refactor(label, text area) rename functions of text_sel to text_selection 2021-05-13 15:39:06 +02:00
Gabor Kiss-Vamosi
4f8e3a38b3 feat(list, win) remove event_cb paramter from *_add_btn() functions
It was difficult to handle in the Micropython binding and the user can add events to the returned button in a more flexible way
2021-05-13 00:42:52 +02:00
Gabor Kiss-Vamosi
3091e44d65 fix(grid, flex) consider border width besides padding to determine the sapce from the sides of the parent 2021-05-13 00:40:40 +02:00
Gabor Kiss-Vamosi
14673f6167 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-12 23:15:21 +02:00
Gabor Kiss-Vamosi
eb2d67d238 fix(align) consider the parent's border_width in lv_obj_align_to() 2021-05-12 23:15:13 +02:00
Themba Dube
109a6c2716 Merge branch 'master' of github.com:littlevgl/lvgl 2021-05-12 15:13:00 -04:00
Themba Dube
67dd4e98c7 chore(docs) force rebuild 2021-05-12 15:12:50 -04:00
Gabor Kiss-Vamosi
039ed0baa6 feat(indev) change the prototype of indev read_cb
Instead of returning bool to indicate that there is more data to read
set data->continue_reading = true.
It's less error porne because if the user doesn't set the flag the indev will be read once
which is usually the inteded behaviour.
2021-05-12 14:24:57 +02:00
Gabor Kiss-Vamosi
0117320c30 fix warning 2021-05-12 13:01:32 +02:00
Gabor Kiss-Vamosi
08a1b04fdf feat(style) add user_data paramter to lv_style_transition_dsc_init 2021-05-12 12:57:12 +02:00
Gabor Kiss-Vamosi
75d1c05a23 feat(event) add lv_event_get_indev/clip_area/draw_part_dsc 2021-05-12 12:49:32 +02:00
Gabor Kiss-Vamosi
1b38632b6f refactor(obj draw)rename lv_obj_draw_dsc_t to lv_obj_draw_part_dsc_t 2021-05-12 12:48:38 +02:00
Gabor Kiss-Vamosi
bdffb2c932 fix(example) fix lv_example_chart_5 2021-05-11 19:53:47 +02:00
Gabor Kiss-Vamosi
f0dd603dbd docs update some widgets to v8 2021-05-11 19:44:52 +02:00
Gabor Kiss-Vamosi
96ef55273d fix(example) reconvert the images to add alpha channel 2021-05-11 17:43:14 +02:00
Gabor Kiss-Vamosi
125aec59ec fix(tabview) make focusing more visible 2021-05-11 17:23:54 +02:00
Gabor Kiss-Vamosi
fb97895746 fix(switch) add LV_OBJ_FLAG_SCROLL_ON_FOCUS 2021-05-11 17:23:54 +02:00
Gabor Kiss-Vamosi
dfe56c856a fix(indev) use lv_dir_t instead of lv_indev_scroll_dir_t and lv_gesture_dir_t 2021-05-11 17:23:50 +02:00
Gabor Kiss-Vamosi
5f44ff412a fix(calendar) fix the width of calendar headers 2021-05-11 16:13:39 +02:00
Gabor Kiss-Vamosi
779a4aab3c docs(coords) update the box model 2021-05-11 16:04:54 +02:00
Gabor Kiss-Vamosi
faa86280ab fix(coords) do not recalclate the pos. and size in lv_obj_set_x/y/width/height/... 2021-05-11 16:04:31 +02:00
Gabor Kiss-Vamosi
1899fdff8f fix(example) fix focusing in lv_example_textarea_2
related to https://github.com/lvgl/lvgl/issues/2249
2021-05-11 13:18:30 +02:00
Gabor Kiss-Vamosi
71fd3e68a2 fix(example) add textarea event to lv_example_textarea_1
related to https://github.com/lvgl/lvgl/issues/2248
2021-05-11 13:13:01 +02:00
Gabor Kiss-Vamosi
a46f20de91 feat(obj_class) separate lv_obj_class_create_obj into lv_obj_class_create_obj and lv_obj_class_init_obj
It allows using the new object reference somewhere before initializing it. Usuful for the Micropython binding.
2021-05-11 13:05:42 +02:00
Gabor Kiss-Vamosi
21a1dca21e fix(animing) use array definition in the function argument
related to: https://github.com/lvgl/lvgl/issues/1763#issuecomment-838235880
2021-05-11 12:38:57 +02:00
Gabor Kiss-Vamosi
e9388c1aa0 feat(coords) follow CCS border-box model 2021-05-11 12:35:35 +02:00
Gabor Kiss-Vamosi
ee14b00398 fix(slider) do not set the height manually in constructor to let the theme overwrite it 2021-05-11 10:17:21 +02:00
Gabor Kiss-Vamosi
bd741aa783 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-11 10:07:12 +02:00
Gabor Kiss-Vamosi
617d94ceff fix(btnmatrix) fix incorrect array indexing 2021-05-11 10:06:43 +02:00
Themba Dube
b6a328363d chore(docs) add support for release/v8 branch when it's created 2021-05-10 14:59:32 -04:00
Gabor Kiss-Vamosi
b3df023ebb Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-10 09:58:46 +02:00
Gabor Kiss-Vamosi
3b8480b605 fix(anim) fix calling start_cb twice 2021-05-10 09:58:38 +02:00
Gabor Kiss-Vamosi
f73e813562 minor fixes 2021-05-10 09:53:04 +02:00
Gabor Kiss-Vamosi
bad4450795 docs(roller) update to v8 2021-05-10 09:52:54 +02:00
embeddedt
918db23840 chore(docs) specify concurrency at job level 2021-05-08 20:34:16 -04:00
guoweilkd
241a0bead8 docs(coords) fix spelling errors (#2244)
Co-authored-by: guowei15 <guowei15@xiaomi.com>
2021-05-08 09:15:51 -04:00
Themba Dube
ac414cbb23 Merge branch 'master' of github.com:littlevgl/lvgl 2021-05-07 16:56:03 -04:00
Gabor Kiss-Vamosi
182ac21613 fix(example) minor fixes 2021-05-07 21:54:43 +02:00
Gabor Kiss-Vamosi
b8557f2432 fix(dropdown) fix list width calculation 2021-05-07 21:53:45 +02:00
Themba Dube
2c886537e9 chore(docs) specify concurrency to avoid potential race condition 2021-05-07 15:46:31 -04:00
Gabor Kiss-Vamosi
327da8a5cd Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-07 21:23:22 +02:00
Gabor Kiss-Vamosi
f5c70a06db docs(examples) fix some examples 2021-05-07 21:23:09 +02:00
Themba Dube
86af86613b chore(docs) improve PDF sidebar and pin dependencies 2021-05-07 13:02:17 -04:00
Themba Dube
ae27c592dd chore(docs) add another missing dependency 2021-05-07 12:46:06 -04:00
Themba Dube
2746e8ea2a chore(docs) add latexmk to dependencies and cache examples 2021-05-07 12:40:58 -04:00
Themba Dube
677c19a895 chore(docs) replace makeindex with texlive-binaries package 2021-05-07 12:34:43 -04:00
Themba Dube
5a5d469e23 chore(docs) fix latex build 2021-05-07 12:31:39 -04:00
Themba Dube
e44c19946c chore(docs) add missed makeindex step 2021-05-07 11:33:37 -04:00
Themba Dube
d8baf19b3d chore(docs) run makeindex before xelatex 2021-05-07 11:29:16 -04:00
Gabor Kiss-Vamosi
77b098db9d feat(log) add the elapsed time sine the last log in the message 2021-05-07 15:28:40 +02:00
Gabor Kiss-Vamosi
3b7bbddb09 fix(animimg) fix flickering and build error 2021-05-07 15:27:55 +02:00
Gabor Kiss-Vamosi
99177baf3f Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-07 15:04:08 +02:00
ZhaoQiang-b45475
8f083a34fa Extra: widgets: add a new widget animation image (#2167)
* Extra: widgets: add a new widget animation image

This widget is a combination of img and animation,
could achieve animation effects by
constantly switching a series imgs.

Signed-off-by: Qiang Zhao <qiang.zhao@nxp.com>
Signed-off-by: Hui Song <hui.song_1@nxp.com>
Signed-off-by: Xiaolin He <xiaolin.he@nxp.com>

* example: add animimg example

Signed-off-by: Qiang Zhao <qiang.zhao@nxp.com>
2021-05-07 14:50:48 +02:00
Gabor Kiss-Vamosi
e0b08d64f0 fix(chart) fix drawing the first and last division lines 2021-05-07 14:08:24 +02:00
Gabor Kiss-Vamosi
684db9b3e7 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-07 13:41:52 +02:00
Gabor Kiss-Vamosi
9c7af6c321 fix(arc) minor fixes and example updates 2021-05-07 13:33:53 +02:00
Gabor Kiss-Vamosi
c9c3e22449 fix(textarea) be sure the cursor position is refreshed on creation 2021-05-07 12:27:56 +02:00
Gabor Kiss-Vamosi
9ab0a09fd2 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-06 20:11:52 +02:00
Gabor Kiss-Vamosi
bd361597ef fix(dropdown) fix list height 2021-05-06 20:11:35 +02:00
Gabor Kiss-Vamosi
feb5b0f345 fix(obj style) do not refresh the obj, if an empty style was removed 2021-05-06 20:10:50 +02:00
Gabor Kiss-Vamosi
e3bcea759c Update coords.md 2021-05-06 10:53:16 +02:00
Gabor Kiss-Vamosi
4056f60fa9 fix(grid, flex) fix alignment on LV_SIZE_CONTENT containers 2021-05-05 20:59:35 +02:00
Gabor Kiss-Vamosi
c3c8aca38b Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-05 17:16:35 +02:00
Gabor Kiss-Vamosi
7cbf97afd0 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-05 17:16:23 +02:00
embeddedt
a4f5e14302 fix(kconfig) remove dependency for LV_COLOR_CHROMA_KEY_HEX
forward port of #2234
2021-05-05 11:16:21 -04:00
Gabor Kiss-Vamosi
eb474a671e Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-05 17:14:17 +02:00
Gabor Kiss-Vamosi
744a974104 fix(indev) pass indev_act to the indev related events 2021-05-05 17:14:11 +02:00
Gabor Kiss-Vamosi
c529644100 fix(obj) fix lv_obj_move_background 2021-05-05 17:13:46 +02:00
Gabor Kiss-Vamosi
6cb28da8e9 perf(coord. refr.): imrove the speed of layout, size and position recalculation
Reduce the number of refreshes.
2021-05-05 15:53:54 +02:00
Themba Dube
012d00a3eb chore(docs) workflow update 2021-05-04 20:49:13 -04:00
Themba Dube
e6b0b87e33 docs(all) add live example for arc and PDF build 2021-05-04 20:43:12 -04:00
Themba Dube
528314533c docs(display) remove built-in color list as they no longer exist in this manner 2021-05-04 20:28:30 -04:00
Themba Dube
5e25cec25d docs(examples) update to handle Emscripten port switching to CMake 2021-05-04 17:14:22 -04:00
Themba Dube
c057060913 docs: workflow improvements 2021-05-04 16:46:44 -04:00
Themba Dube
aeeec60885 docs(widgets) begin adding support for building live examples 2021-05-04 16:41:56 -04:00
Themba Dube
a1cea30bff fix(example) disable more missing style examples 2021-05-04 16:27:46 -04:00
Themba Dube
af41a8387d fix(examples) disable lv_example_style_10 in header as well 2021-05-04 16:25:50 -04:00
Gabor Kiss-Vamosi
79d9f299ef refactor(txt) rename _lv_txt_get_width to lv_txt_get_width
related to #2228
2021-05-04 14:28:52 +02:00
Gabor Kiss-Vamosi
87f8ac2ef9 docs(css) improve CSS of API section 2021-05-04 11:53:39 +02:00
Gabor Kiss-Vamosi
ad89db7c76 fix(obj style) make lv_obj_style_t more compact 2021-05-03 22:08:15 +02:00
Gabor Kiss-Vamosi
366d01eec9 fix(label) fix word wrapping if stretched by grid 2021-05-03 22:07:49 +02:00
Gabor Kiss-Vamosi
bf8e7b13be Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-05-03 20:48:41 +02:00
Gabor Kiss-Vamosi
b0933ace92 docs add back the contributing page 2021-05-03 20:48:30 +02:00
ataweg
d7d36f89b3 update to work with Arduino (#2200) 2021-05-03 20:26:10 +02:00
Gabor Kiss-Vamosi
2c089e51a7 fix warnings 2021-05-03 19:36:03 +02:00
Gabor Kiss-Vamosi
b3d9ab0657 fix warnings 2021-05-03 19:20:02 +02:00
Gabor Kiss-Vamosi
3d4c4aea3c feat(draw) allow using argb images, border and outline with LV_DRAW_COMPLEX=0 too 2021-05-03 18:54:24 +02:00
Gabor Kiss-Vamosi
9b2b6deb97 fix(docs) update CSS
Add some space between the type and name in the api docs of the enums
2021-05-03 17:55:09 +02:00
Gabor Kiss-Vamosi
418830e831 Merge branch 'master' into feat/img-frame-id 2021-05-03 17:43:05 +02:00
Gabor Kiss-Vamosi
3bbe46f74f minor fixes 2021-05-03 17:34:45 +02:00
Gabor Kiss-Vamosi
7b8de7af8a feat(dropdown) make the dropdown's list use the max_height style proeprty
Instead of a widget property
2021-05-03 17:34:15 +02:00
Gabor Kiss-Vamosi
05252b7fe8 docs update some mroe widgets to v8 + fix links 2021-05-03 17:32:57 +02:00
Gabor Kiss-Vamosi
efc5bccbfd fix(dropdown) fix showing the selected text if symbol=NULL
fixes #2235
2021-05-03 15:27:57 +02:00
Gabor Kiss-Vamosi
6b497dec3c feat(checkbox) add LV_EVENT_DRAW_PART_BEING/END to the indicator 2021-05-03 15:26:51 +02:00
Gabor Kiss-Vamosi
4de1d745b6 fix warnings 2021-05-03 14:42:44 +02:00
Gabor Kiss-Vamosi
10c1dcb43c fix(obj style) minor fixes on style transitions 2021-05-03 14:30:57 +02:00
Gabor Kiss-Vamosi
445c0ea9ae refactor(obj class) add user_data parameter to lv_obj_class_create_obj() 2021-05-03 14:06:55 +02:00
Gabor Kiss-Vamosi
4f743a7aa8 refactor(obj class) rename lv_obj_create_from_class to lv_obj_class_create_obj 2021-05-03 13:58:20 +02:00
Gabor Kiss-Vamosi
bf8f8230a6 feat(chart) add LV_EVENT_DRAW_PART_BEGIN/END to hook division line drawing 2021-05-03 13:51:09 +02:00
Gabor Kiss-Vamosi
9b067784ee fix(obj) fix adding LV_STATE_FOCUS_KEY 2021-05-03 12:47:22 +02:00
Gabor Kiss-Vamosi
e1e45b1de3 fix(btnmatrix) improve focusing if used in groups 2021-05-03 11:14:25 +02:00
Gabor Kiss-Vamosi
3c39c39c9d docs separate widgets into core and extra groups 2021-05-03 11:13:43 +02:00
Gabor Kiss-Vamosi
22fa87a58e fix(obj) be sure the slef size is refreshed when an obejct is created 2021-05-02 22:16:38 +02:00
Gabor Kiss-Vamosi
b76efce8a8 fix(chart) fix y axis tick labels with negative values 2021-05-02 22:11:17 +02:00
Gabor Kiss-Vamosi
91ef2cb53e docs(canvas) update to v8 2021-05-02 22:01:56 +02:00
Gabor Kiss-Vamosi
a8016196a8 refactor(meter, chart) make them extra widgets instead of core 2021-05-02 22:01:56 +02:00
Gabor Kiss-Vamosi
e76ccc7ed2 fix(examples) update the outdated bar and slider examples 2021-05-02 21:05:23 +02:00
Gabor Kiss-Vamosi
5662c8d52d fix(bar, slider) fix minor issues 2021-05-02 21:05:23 +02:00
Gabor Kiss-Vamosi
d8e76f5d68 fix(obj_style) fix style transitions if they not affect the main part 2021-05-02 21:05:23 +02:00
embeddedt
e3b8b84d71 feat(style) add support for declaring styles in ROM (#2220)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2021-05-01 20:16:34 -04:00
Gabor Kiss-Vamosi
b1f7d195db fix(style) in lv_style_transition_dsc_init chnage the props argument from '* props' to 'props[]' as it's an array 2021-05-01 08:43:46 +02:00
Gabor Kiss-Vamosi
73cda914e0 fix(obj_class) do not fire style change events before the object is fully constructed 2021-05-01 08:32:16 +02:00
Gabor Kiss-Vamosi
8578a68849 fix(btnmatrix) fix typo
button_is_hidden was used instead of button_is_recolor
2021-05-01 07:41:12 +02:00
Gabor Kiss-Vamosi
e6d64b74d5 refactor(calendar): use lv_res_t return value in lv_calendar_get_pressed_date instead of bool 2021-05-01 07:34:30 +02:00
Gabor Kiss-Vamosi
f194079cd8 fix(anim) fix bounce path 2021-05-01 07:34:30 +02:00
Gabor Kiss-Vamosi
e9aa30ff7d feat(btnmatrix) make 'recolor' a button flag insted of a function 2021-05-01 07:34:30 +02:00
Gabor Kiss-Vamosi
9c7ba22f66 fix(refr) do not pause display refreshing is memory monitor is enabled 2021-05-01 07:34:30 +02:00
Gabor Kiss-Vamosi
b58bdb4f0d docs minor updates 2021-05-01 07:34:30 +02:00
Gabor Kiss-Vamosi
cba67447f2 docs(btn, btnmatrix, calendar) upadte to v8 2021-05-01 07:34:30 +02:00
Themba Dube
57417a851e docs(index) use version extracted from lvgl.h 2021-04-30 13:14:10 -04:00
Gabor Kiss-Vamosi
f812020eba fix(timer) fix the use of lv_timer_pause/resume 2021-04-30 14:48:36 +02:00
Gabor Kiss-Vamosi
9c96230323 fix(obj) ext_click_area lv_coord_t instead of uint8_t 2021-04-30 14:47:34 +02:00
Gabor Kiss-Vamosi
b56d0ad835 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-30 11:22:13 +02:00
Gabor Kiss-Vamosi
144221e0b6 feat(timer) add lv_timer_resume()
Instead of a pause/resume paramater in lv_timer_pause()
2021-04-30 11:22:08 +02:00
Gabor Kiss-Vamosi
bd45129d8f Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-30 10:04:08 +02:00
Gabor Kiss-Vamosi
1864f608b4 fix build error 2021-04-30 10:03:57 +02:00
Gabor Kiss-Vamosi
3a1ed7a321 docs(arc, bar) update to v8 2021-04-30 10:02:08 +02:00
Gabor Kiss-Vamosi
b08da09e62 docs(event, coords) add more info 2021-04-30 10:02:08 +02:00
Gabor Kiss-Vamosi
3c40c83691 feat(bar) send LV_DRAW_PART_BEGIN/END for the indicator 2021-04-30 10:00:25 +02:00
Gabor Kiss-Vamosi
4f37e3ee25 refactor(arc) rename arc type to mode 2021-04-30 09:59:54 +02:00
Gabor Kiss-Vamosi
9394de662c Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-29 15:16:47 +02:00
Gabor Kiss-Vamosi
6206a5381d fix(dropdown) make the symbol (arrow) use LV_PART_INDICATOR 2021-04-29 15:16:41 +02:00
Gabor Kiss-Vamosi
40d0d1ebb0 fix(grid) avoid rounding error is FR cells are used 2021-04-29 15:16:15 +02:00
Gabor Kiss-Vamosi
45a50f1766 fix(example) correct the elements size and position
Fixes #2229
2021-04-29 12:24:59 +02:00
Gabor Kiss-Vamosi
1797fe29f0 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-29 10:15:29 +02:00
Gabor Kiss-Vamosi
5a385a14b4 fix(theme) improve the style of the keybpard in the default theme 2021-04-29 10:15:20 +02:00
Gabor Kiss-Vamosi
9ff1cb7f1d fix(meter) keep the creation order of indicator during drawing
Instead of drawing the indicators per scale
2021-04-29 10:11:21 +02:00
Gabor Kiss-Vamosi
1b93668df7 feat(obj) save self_size in the obejct to save a lot of recalculations 2021-04-29 09:52:49 +02:00
Gabor Kiss-Vamosi
ff2c2e5d33 fix(meter) use antialaising on needle rotation and fix needle invalidation artifact 2021-04-28 17:47:36 +02:00
Themba Dube
5a5593713f chore(docs) use single commit 2021-04-28 08:43:24 -04:00
Themba Dube
bb1a4cfdcb chore(docs) workflow update 2021-04-28 08:40:38 -04:00
Gabor Kiss-Vamosi
bed49e5e05 feat(coords) support negative percentage, e.g. lv_pct(-50) 2021-04-28 13:55:29 +02:00
Gabor Kiss-Vamosi
f7b42ac8b4 fix(obj) be sure the new objects' size is recalculated 2021-04-28 10:26:06 +02:00
Gabor Kiss-Vamosi
a7d87cd244 fix build error 2021-04-28 10:19:52 +02:00
Gabor Kiss-Vamosi
dadaca8f6f Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-28 10:11:50 +02:00
Gabor Kiss-Vamosi
4f46336a54 fix(theme) simplify the default theme 2021-04-28 10:11:26 +02:00
Gabor Kiss-Vamosi
f35f696332 Update CHANGELOG.md 2021-04-28 06:54:01 +02:00
Gabor Kiss-Vamosi
5dc0e37ce3 fiw warning 2021-04-27 20:47:58 +02:00
Gabor Kiss-Vamosi
6736697222 feat(log) add lv_log(buf) that uses printf or a regsitered print callback to print a message 2021-04-27 20:42:35 +02:00
Themba Dube
8a51917041 fix(theme_default) respect LV_THEME_DEFAULT_PALETTE_LIGHT setting 2021-04-27 13:36:14 -04:00
Gabor Kiss-Vamosi
95ae499a8f fix(scroll) fix normalizing scroll position when size is recalculated 2021-04-27 18:22:53 +02:00
Gabor Kiss-Vamosi
f78269c360 remove debug printf 2021-04-27 17:47:01 +02:00
Gabor Kiss-Vamosi
5b47f7b563 minor fixes 2021-04-27 17:44:15 +02:00
Gabor Kiss-Vamosi
44e502ecb3 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-27 16:02:03 +02:00
Gabor Kiss-Vamosi
fa0c1d1423 docs(objects) update to v8 2021-04-27 15:36:53 +02:00
Gabor Kiss-Vamosi
492b3a417e feat(label) update long modes and use LV_SIZE_CONTENT 2021-04-27 15:36:08 +02:00
embeddedt
978fc9993d feat(theme_default) improvements to dark mode (#2215)
* feat(theme_default) improvements to dark mode

* fix(theme_default) adjust scrollbar opacity in dark mode so it's visually similar to light mode

* fix(theme_default) improve contrast in dark mode
2021-04-27 14:09:50 +02:00
Amir Gonnen
7d3d206105 fix(obj) Add missing getter and setter for user_data (#2221)
* fix(obj) Add missing getter and setter for user_data

This is needed for Micropython bindings, which stores a reference to the Python object which wraps the LVGL object.

* Added comments to lv_obj_[get/set]_user_data
2021-04-27 14:06:57 +02:00
Gabor Kiss-Vamosi
9eb71a0538 feat(btnmatrix) allow NULL terminated array too for the button's list 2021-04-27 14:05:18 +02:00
Gabor Kiss-Vamosi
607316d723 remove unused variable 2021-04-26 16:55:57 +02:00
Gabor Kiss-Vamosi
e06e7b5e5d fix(event) fire LV_EVENT_VALUE_CHANGED if the object is checked when LV_OBJ_FLAG_CHECKABLE is enabled 2021-04-26 16:55:25 +02:00
Gabor Kiss-Vamosi
d8c2e0a37a fix(timer) correctly handle deleting a timer in an other timer with repeat_count = 1 2021-04-26 16:23:05 +02:00
Gabor Kiss-Vamosi
668960e3c0 Merge branch 'master' of https://github.com/jianjunxia/lvgl into jianjunxia-master 2021-04-26 15:31:52 +02:00
Gabor Kiss-Vamosi
36d3537046 feat(bar, slider) unse int32_t as bar an slider ranges and values 2021-04-26 14:38:29 +02:00
Gabor Kiss-Vamosi
227afda492 minor fixes 2021-04-26 13:27:51 +02:00
Gabor Kiss-Vamosi
70c8180699 refactor(lv_conf_checker) rename to lv_conf_internal_gen.py 2021-04-26 12:21:35 +02:00
Gabor Kiss-Vamosi
fca7b106f1 feat(lv_conf) export LV_DPI_DEF in lv_conf_internal.h 2021-04-26 12:20:57 +02:00
Gabor Kiss-Vamosi
da39d692dd feat(msgbox) add parent attribute to lv_msgbox_create()
It keeps the consistency of create functions and allows craeting non-modal message boxes
2021-04-26 12:15:55 +02:00
Gabor Kiss-Vamosi
d4deb28663 fix(label) remove duplicated prototypse (coming from merge conflicts) 2021-04-26 11:25:44 +02:00
jianjun_xia
14077f1c6e Update src/lv_draw/lv_draw_label.c
Co-authored-by: embeddedt <42941056+embeddedt@users.noreply.github.com>
2021-04-26 10:01:16 +08:00
embeddedt
2d459c86d3 chore(arc) fix typo in header file
Fixes #2219
2021-04-25 09:36:51 -04:00
Gabor Kiss-Vamosi
acc6ca16f3 Update ROADMAP.md 2021-04-25 14:05:10 +02:00
Gabor Kiss-Vamosi
0bb8789e69 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-25 13:52:54 +02:00
Gabor Kiss-Vamosi
ad89bc32c2 fix(utils) remove the unused _lv_utils_num_to_str function
lv_snprintf can be used instead
2021-04-25 13:51:47 +02:00
Gabor Kiss-Vamosi
db4613a904 fix(dropdown) in the list draw the border after the selected option 2021-04-25 13:50:53 +02:00
Gabor Kiss-Vamosi
26ed7aa852 refactor(event) simplify the internals of event sending 2021-04-25 13:45:29 +02:00
XiaJianJun
f78c069e6e (fix draw) txt add null pointer judgment to avoid segment fault 2021-04-25 15:39:31 +08:00
Themba Dube
81886e7859 fix(docs): temporarily lock workflow to master to prevent running in PRs 2021-04-24 20:55:16 -04:00
Themba Dube
d9b3c672fd fix(color) fix off-by-one error 2021-04-24 20:28:09 -04:00
Themba Dube
f4988689a8 fix(color) correct log message 2021-04-24 20:27:34 -04:00
Themba Dube
123d749cb0 fix(color) adjust log messages to match implementation 2021-04-24 20:13:27 -04:00
Themba Dube
7e9c1532b0 fix(disp) further fixes for the driver API change
GPU drivers still assumed lv_disp_drv_t was stored statically
2021-04-24 19:58:51 -04:00
Gabor Kiss-Vamosi
2d00a3fc17 feat(obj) remove LV_OBJ_FLAG_FOCUS_BUBBLE as it can be easily mimiced by events 2021-04-24 21:35:05 +02:00
Gabor Kiss-Vamosi
6428be5441 fix(dropdown) fix include path 2021-04-24 21:30:05 +02:00
Gabor Kiss-Vamosi
638682de4a fix(tlsf) add missing include 2021-04-24 17:43:33 +02:00
Gabor Kiss-Vamosi
5d4c9fac83 fix(include) remove unused stdio includes 2021-04-24 17:27:41 +02:00
Gabor Kiss-Vamosi
38b4ff6b4c refactor(event) move event related functions to a dedicated file (core/lv_event.c/h) 2021-04-24 17:04:12 +02:00
Gabor Kiss-Vamosi
d377552a9c fix(color) fix warning due to misplaced semicolon 2021-04-24 16:48:58 +02:00
Gabor Kiss-Vamosi
31474538ad refactor(layout) rename place keywords to align 2021-04-24 16:48:24 +02:00
Gabor Kiss-Vamosi
8c44edf33e Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-24 16:35:56 +02:00
Gabor Kiss-Vamosi
9d6d0094f5 fix(layout) fix missing layout recalculation on screen 2021-04-24 16:35:36 +02:00
Alfie
a6ac99baa9 fix(group) rare crash caused by null pointer (#2210)
Co-authored-by: Alfie Zhao <alfie.zhao@fluidmt.com>
2021-04-24 16:35:36 +02:00
Amir Gonnen
3dfc59435d refactor(color) small fixes (#2211) 2021-04-24 16:34:09 +02:00
Amir Gonnen
cf7133997c fix(workflows) Use dev-8.0 branch of Micropython (#2212) 2021-04-23 20:41:27 -04:00
Themba Dube
331fea0ae4 fix(docs) install doxygen for GitHub Actions 2021-04-23 17:47:20 -04:00
Themba Dube
6df6cb0ec0 feat(docs) add first iteration of compile script 2021-04-23 17:45:34 -04:00
Gabor Kiss-Vamosi
ace2e6af68 fix(theme) remove setting width and height in basic theme styles 2021-04-23 15:23:06 +02:00
Gabor Kiss-Vamosi
46a21485a5 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-23 14:20:08 +02:00
Gabor Kiss-Vamosi
8ed806ce5c fix(layout) fix missing layout recalculation on screen 2021-04-23 14:06:50 +02:00
Alfie
67323ef733 fix(group) rare crash caused by null pointer (#2210)
Co-authored-by: Alfie Zhao <alfie.zhao@fluidmt.com>
2021-04-23 13:58:49 +02:00
Gabor Kiss-Vamosi
070df61eb2 refactor(color) refactor the palette API 2021-04-23 12:46:14 +02:00
Gabor Kiss-Vamosi
a9bedcf335 minor fixes 2021-04-23 11:34:59 +02:00
Gabor Kiss-Vamosi
eaed66057b refactor(style) rename LV_STYLE_PROP_ALL to LV_STYLE_PROP_ANY 2021-04-23 10:35:36 +02:00
Gabor Kiss-Vamosi
21489eddc8 docs(object) update to v8 2021-04-22 17:47:41 +02:00
Gabor Kiss-Vamosi
d7735a486b fix(msgbox) fix the alignment of the items 2021-04-22 17:47:41 +02:00
Gabor Kiss-Vamosi
e29bfc5dc5 minor fixes 2021-04-22 15:36:40 +02:00
Gabor Kiss-Vamosi
e8f84271ee fix(theme) fix textarea cursor style in lv_theme_basic 2021-04-22 15:36:09 +02:00
Gabor Kiss-Vamosi
d9c7fd14f1 feat(font) add LV_SYMBOL_BARS (hamburder menu icon) 2021-04-22 15:34:54 +02:00
Themba Dube
980c18fa51 fix(canvas) allocate a fake driver on the stack
As of v8 drivers are no longer stored inside lv_disp_t, so a driver
needs to be allocated as well.

Fixes #2204
2021-04-21 13:09:55 -04:00
Gabor Kiss-Vamosi
7522858d07 fix(examples) use LV_PART_INDICATOR to target the points on line chart 2021-04-21 13:22:55 +02:00
Gabor Kiss-Vamosi
36a699fbe4 minor fix 2021-04-21 12:34:44 +02:00
Gabor Kiss-Vamosi
4417ee9d91 docs(scroll) add docs for scrolling 2021-04-21 12:30:52 +02:00
Gabor Kiss-Vamosi
fb0481cec0 minor fixes 2021-04-21 12:30:37 +02:00
Gabor Kiss-Vamosi
6c863cabb7 feat(obj_class) use different prototype for the event_cb in lv_obj_class_t
It adds lv_obj_class_t * as the first arguement for MicroPython compatibility
2021-04-21 09:55:21 +02:00
Gabor Kiss-Vamosi
663f8c2672 fix(style) rename path_cb to to path_xcb in lv_style_transition_dsc_t
This way the MicroPython won't allow manually setting this field.
And it can't be set manually becasue the user data needs to be set too.
So lv_style_transition_dsc_init() should be used to initialize the fields of lv_style_transition_dsc_t
2021-04-21 09:02:39 +02:00
Gabor Kiss-Vamosi
078b15da55 feat(theme) add experimental dark mode to the default theme 2021-04-20 21:36:24 +02:00
Gabor Kiss-Vamosi
4324cf72f3 refactor(style, obj) lv_obj_get_width/height_fit -> lv_objget_get_content_width/height, style_tranform_x/y -> style_translate_x/y 2021-04-20 21:08:16 +02:00
Gabor Kiss-Vamosi
4b0c85426a feat(lv_init) check if LV_BIG_ENDIAN_SYSTEM is enabled on big endian systems 2021-04-20 14:57:56 +02:00
Gabor Kiss-Vamosi
13d38f6a52 fix(style) rename path_cb to path_xcb in lv_style_transition_dsc_init
It was required for the MicroPython binding
2021-04-20 13:54:35 +02:00
Gabor Kiss-Vamosi
c2d6c3805c fix(coords) make lv_pct and LV_SIZE_CONTENT available to the MicroPython binding 2021-04-20 13:50:19 +02:00
Gabor Kiss-Vamosi
d412a98e54 fix(chart) don't draw division lines on the sides if there no padding but have a visible border 2021-04-20 13:46:49 +02:00
Gabor Kiss-Vamosi
48e70e97f0 fix(roller) fix left shift negative value
reported by ASAN
2021-04-20 13:31:40 +02:00
Gabor Kiss-Vamosi
cbb13f4ea5 fix(group) add some more widgets to default group 2021-04-20 13:26:57 +02:00
Gabor Kiss-Vamosi
8cb2cbff81 feat(obj) remove lv_obj_get_width/height_visible
They can be replaced by  max/min-width/height
2021-04-19 22:11:09 +02:00
Gabor Kiss-Vamosi
5b3df13366 docs: add some skeleton files for the new features 2021-04-19 22:10:01 +02:00
Gabor Kiss-Vamosi
37c3162bbe Revert "feat(conf) automatically enable LV_LVGL_H_INCLUDE_SIMPLE if lvgl.h can be included"
This reverts commit a995695cdf.

__has_include("lvgl.h") is always true beacsue it's next to lv_conf_internal.h.
2021-04-19 20:22:46 +02:00
Gabor Kiss-Vamosi
a995695cdf feat(conf) automatically enable LV_LVGL_H_INCLUDE_SIMPLE if lvgl.h can be included 2021-04-19 19:04:46 +02:00
Gabor Kiss-Vamosi
75f40e590c fix(example) fix table_2 example 2021-04-19 15:59:38 +02:00
Gabor Kiss-Vamosi
d857de043e fix(table) fix memory leak
See https://forum.lvgl.io/t/possible-memory-leak-in-table-widget/5254
2021-04-19 15:56:34 +02:00
Gabor Kiss-Vamosi
13d7256528 fix(btn) set default width to LV_SIZE_CONTENT 2021-04-19 15:01:39 +02:00
Gabor Kiss-Vamosi
8667402524 minor fixes 2021-04-19 11:21:44 +02:00
Gabor Kiss-Vamosi
bbfcb2454e feat(event) add event filter to lv_event_send 2021-04-19 11:15:28 +02:00
Gabor Kiss-Vamosi
ddea17afe2 feat(theme) add outline padding for the focused state in the default theme 2021-04-19 10:04:08 +02:00
Gabor Kiss-Vamosi
0a10d45c51 fix(scroll) fix refactoring issue in scrollbar size calculation 2021-04-19 10:03:21 +02:00
Gabor Kiss-Vamosi
1c53d26bcc feat(event) add lv_obj_remove_event_dsc and remove user_data from lv_obj_remove_event_cb 2021-04-19 10:02:16 +02:00
Gabor Kiss-Vamosi
a9ed244bb1 feat(layout) add user_data to layout callbacks
It was required for compatibility with the MicroPython binding.
2021-04-19 09:44:03 +02:00
Gabor Kiss-Vamosi
14bc4e9f8f Revert "feat(style) make transform_zoom use pixel or percentage value"
This reverts commit 5b4e9fc6f3.
2021-04-18 20:39:47 +02:00
Gabor Kiss-Vamosi
6db12e4997 revert(style) revert the usage of transform width/height 2021-04-18 20:28:06 +02:00
Gabor Kiss-Vamosi
32bd067778 Revert "feat(style) make transform_zoom use pixel or percentage value"
This reverts commit 5b4e9fc6f3.
2021-04-18 19:31:38 +02:00
Gabor Kiss-Vamosi
5b4e9fc6f3 feat(style) make transform_zoom use pixel or percentage value 2021-04-18 13:15:48 +02:00
Gabor Kiss-Vamosi
2fb8b672ae refactor(coords) rename LV_SIZE_PCT to LV_PCT 2021-04-18 12:19:02 +02:00
Gabor Kiss-Vamosi
03efd13e4f fix build error 2021-04-18 01:08:12 +02:00
Gabor Kiss-Vamosi
511d9d8c50 fix(theme) update the tabview's theme
Allow setting background color directly on the tabview
2021-04-18 00:55:11 +02:00
Gabor Kiss-Vamosi
da367337c9 feat(anim) remove lv_anim_path_t and use a callback directly
lv_anim_path_t was required for the MicroPython binding becase the callback couldn't attached dircetly to the styles
However, in v8, path_cb is used in the style transitons which has user_data and that user data is passed to the transition animation. Hence the path_cb sees the the same user data during the animaton as when it was registered to the transiton.
2021-04-17 20:50:10 +02:00
Gabor Kiss-Vamosi
88979ccff9 fix(obj) fix infinit loop in object repositioning 2021-04-17 20:46:41 +02:00
Gabor Kiss-Vamosi
e1355dbeee feat(style) add transform_x/y 2021-04-17 17:33:57 +02:00
Gabor Kiss-Vamosi
a9d0de5998 refactor: remove some unused functions and prototypes 2021-04-15 23:36:06 +02:00
Gabor Kiss-Vamosi
aa800841bc fix(gc root) add the layouts' list to GC roots 2021-04-15 19:13:41 +02:00
Gabor Kiss-Vamosi
5f8445966b fix build error 2021-04-15 18:46:21 +02:00
Gabor Kiss-Vamosi
b4f625d355 Merge branch 'feat/new-event' 2021-04-15 18:32:14 +02:00
Gabor Kiss-Vamosi
9787d38781 feat(style) add transform_x/y 2021-04-15 18:31:50 +02:00
Gabor Kiss-Vamosi
ff330b0f42 feat(img_decoder) add frame_id parameter to the image decoder
Related to #2090
2021-04-14 17:04:24 +02:00
Gabor Kiss-Vamosi
e4345bd7f5 feat(disp) add full_refresh flag to the display driver
It replaces the previous concept of true double buffering when the whole screen was refreshed if the 2 draw buffers had the same size

Fixes: #2038
2021-04-14 16:26:13 +02:00
Gabor Kiss-Vamosi
422c9e5bd6 feat(event) rework the prototype of lv_event_cb
It encapsulates all event related parameters into a single lv_event_t obejct.
2021-04-14 15:31:54 +02:00
Gabor Kiss-Vamosi
c090af0f26 fix(theme) do not add background to the line widget in the default theme 2021-04-14 14:27:36 +02:00
Gabor Kiss-Vamosi
834e2177e7 fix(obj) add lv_obj_class_t * as first parameter of constructors and destructors
It's required for compatibility with the MicroPython binding.
2021-04-13 14:31:21 +02:00
Gabor Kiss-Vamosi
04f0ffc775 docs(event, timer) update to v8 2021-04-13 13:25:10 +02:00
Gabor Kiss-Vamosi
f0d41222f7 minor refactoring, commenting 2021-04-13 13:24:53 +02:00
Gabor Kiss-Vamosi
52f1b0979e fix(grid) rename column/row_template to column/row_dsc_array to add more meaning for binding generators 2021-04-13 13:23:52 +02:00
Gabor Kiss-Vamosi
73f4264320 add the md files from the docs repo to start updating them to v8 2021-04-12 18:19:04 +02:00
Gabor Kiss-Vamosi
c587fc4d2a fix(obj) move lv_event_dsc_t into lv_obj.c from lv_obj.h
It keeps the list of global types shorter
2021-04-12 12:42:51 +02:00
Gabor Kiss-Vamosi
96bbee0229 fix(grid) use lv_coord_t value[] instead of lv_coord_t value * in prototypes
It helps the binding generators to better understand the meaning of the parameters
2021-04-12 12:36:10 +02:00
Gabor Kiss-Vamosi
a6d3eff4db fix(draw_outline) do not change the outline_width based on the outline_pad
fixes: #2171
2021-04-12 12:15:31 +02:00
Gabor Kiss-Vamosi
5dc7356f99 fix(font) add warning if a compress font it used but LV_USE_FONT_COMPRESSED is not enabled 2021-04-12 12:14:15 +02:00
Gabor Kiss-Vamosi
cbb699fe88 fix(grid) prevent setting negative size if no place for FR tracks 2021-04-09 15:42:54 +02:00
Gabor Kiss-Vamosi
c42412f83f fix(obj_class) add missing user_data to lv_obj_class_t 2021-04-09 10:36:15 +02:00
Gabor Kiss-Vamosi
853dc0508f feat(obj_tree) add lv_obj_tree_walk 2021-04-08 13:58:48 +02:00
Gabor Kiss-Vamosi
20803031e8 fix(test) fix tests 2021-04-08 13:07:48 +02:00
Gabor Kiss-Vamosi
8e9dbf6d12 fix(lvgl.h) do not include lv_examples.h to keep the API cleaner 2021-04-08 13:02:54 +02:00
Gabor Kiss-Vamosi
1eaf80f6ef fix(table) fix unused variable warning 2021-04-08 12:56:39 +02:00
Gabor Kiss-Vamosi
b36345107c feat(group) add default group 2021-04-08 12:48:48 +02:00
Gabor Kiss-Vamosi
25c464dc6a fix(widgets) remove the prototype of some unimplemented functions 2021-04-08 11:56:56 +02:00
Carlos Diaz
1ad767b152 fix(kconfig) update Kconfig to match LVGLv8 options (#2170)
* Kconfig: Remove LV_HOR_RES_MAX and LV_VER_RES_MAX options

* Kconfig: Remove LV_USE_ANIMATION

* Kconfig: Remove LV_USE_GROUP

* Kconfig: Remove LV_USE_FILESYSTEM

* Kconfig: Add LV_USE_MEM_MONITOR

* Kconfig: Add LV_USE_REFR_MONITOR

* Kconfig: Add Layouts menu, missing descriptions

* Kconfig: Update themes menu

* Kconfig: Create and update Color settings menu

* Kconfig: Update Memory settings menu

* Kconfig: Create and update HAL Settings menu

* Kconfig: Remove LV_ANTIALIAS option

* Kconfig: Create and update Drawing menu

Remove unused options

* Kconfig: Create and update GPU menu

* Kconfig: Create and update Logging menu

* Kconfig: Create and update Asserts menu

* Kconfig: Create and update Others menu

* Kconfig: Create and update Compiler settings menu

* Kconfig: Remove Image decoder and cache menu

* Kconfig: Update Hal settings menu

* Kconfig: Adds LV_USE_FONT_COMPRESSED option

* Kconfig: Update Widget usage menu

* Kconfig: Create and update Extra components menu

* Kconfig: Remove string-function options

It will cause compilation failure when they're used as strings.

* Kconfig: Add description to LV_USE_FLEX and LV_USE_GRID

* Kconfig: Update default font usage

* lv_conf_kconfig: Remove Color selection section

* lv_conf_kconfig: Update Default font section

* lv_conf_kconfig: Remove ext click area section

* lv_conf_kconfig: Remove linemeter precise section

* lv_conf_kconfig: Remove sprintf disable float section

* lv_conf_kconfig: Remove theme selection section

* lv_conf_kconfig: Remove spinner def anim section

* Kconfig: Fix typo

* Kconfig: Fix chroma key value setting

* Kconfig: Update header version
2021-04-06 20:48:57 +02:00
Gabor Kiss-Vamosi
b73c41b310 fix(roller) fix drawing the label twice 2021-04-06 18:24:01 +02:00
Gabor Kiss-Vamosi
b69fc73805 feat(style) handle percentage value of min/max width/height 2021-04-06 18:24:01 +02:00
Gabor Kiss-Vamosi
92e85d1b9e fix(scroll) fix scroll minor scrolling issues 2021-04-06 18:24:01 +02:00
Riccardo
460a020de1 feat(style): handle min_width and max_width in lv_table LV_PART_ITEMS (cells) (#2187) 2021-04-06 13:31:05 +02:00
Gabor Kiss-Vamosi
2a07880db2 fix(lv_conf_template.h) remove lv_user_data_t as it's not used 2021-04-06 13:14:19 +02:00
Gabor Kiss-Vamosi
d2e0e6c56b Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-04-06 11:55:04 +02:00
Gabor Kiss-Vamosi
171b40a3d2 fix(obj) add back the accidentally removed user_data to lv_obj_t 2021-04-06 11:54:53 +02:00
Jon Thacker
c6e68dc503 fix(comment) keep newline between comments (#2186)
To maintain uniformity of comment formatting, but primarily to work around a deficiency in the rust library bindgen (0.58 and earlier), comments should be separated by a newline.
2021-04-05 12:28:38 -04:00
embeddedt
d2baa9c3e2 fix(indev) provide raw old points to read_cb, not rotated points (#2180)
cherry-picked from acf42d39
2021-04-02 12:57:36 +02:00
Gabor Kiss-Vamosi
194f893bd7 feat(flex) add min/max-width/height handling to flex 2021-04-02 12:48:14 +02:00
Gabor Kiss-Vamosi
d334573a35 fix warnings 2021-04-02 10:07:15 +02:00
Gabor Kiss-Vamosi
e97810c966 remove dead link from lv_Conf_template.h 2021-04-02 09:48:02 +02:00
Gabor Kiss-Vamosi
b22aa1497b Revert "fix(comment) remove https:// from lv_conf_template.h comments beacsue they caused nested comment warning"
The issue wasn't beacause of https:// but with  /*some/url/*/

This reverts commit bc081f6ef3.
2021-04-02 09:46:06 +02:00
Gabor Kiss-Vamosi
28257ff9fa feat(style) add basic support to min/max-width/height 2021-04-02 09:45:54 +02:00
Gabor Kiss-Vamosi
a8f31dab55 feat(widgets) add default sizes to obj_class 2021-04-01 14:11:32 +02:00
Gabor Kiss-Vamosi
85559d6665 fix(draw_mask) remove debug printf 2021-04-01 12:18:54 +02:00
Gabor Kiss-Vamosi
ffb875ed17 fix (draw_mask) fix << on negative value
Fixes https://github.com/lvgl/lvgl/issues/2144#issuecomment-811764356
2021-04-01 12:10:46 +02:00
Gabor Kiss-Vamosi
bc081f6ef3 fix(comment) remove https:// from lv_conf_template.h comments beacsue they caused nested comment warning
Fixes 66c1105ef6 (r48929310)
2021-03-31 20:13:46 +02:00
Gabor Kiss-Vamosi
5c991aaf71 solve conflicts 2021-03-31 19:58:53 +02:00
Gabor Kiss-Vamosi
663bcfd030 api(style) add lv_style_selector_t instead of lv_part_t and lv_state_t in style API 2021-03-31 19:57:14 +02:00
Xiang Xiao
07a9b3232d fix(style_api_gen.py) extract style_get_cast and style_set_cast (#2174) 2021-03-31 19:31:56 +02:00
Xiang Xiao
ed7aee668d Merge pull request #2179 from mysterywolf/master
auto formatted
2021-03-31 12:23:01 -05:00
Meco Man
a8c21f8e18 fix(style): auto formatted 2021-04-01 01:06:43 +08:00
Gabor Kiss-Vamosi
0527874f8d chore(textarea) clean up comemnts 2021-03-31 13:22:35 +02:00
Gabor Kiss-Vamosi
d86c0e3e55 feat(textarea) add lv_textarea_set_align
It makes easier to align the label and line fo teh text
Related to https://github.com/lvgl/lvgl/issues/2144#issuecomment-808973937
2021-03-31 13:16:37 +02:00
Xiang Xiao
a588dced31 fix(style): modify prop_cnt only after lv_mem_alloc return non-zero value (#2169)
to handle the out of memory gracefully
2021-03-31 10:06:02 +02:00
Gabor Kiss-Vamosi
66c1105ef6 chore(lv_conf_temaple.h): add comments to FLEX and GRID 2021-03-30 21:07:17 +02:00
Gabor Kiss-Vamosi
a9f86c96b3 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-03-29 21:18:21 +02:00
Gabor Kiss-Vamosi
722f1ca689 fix(obj) force layout recalculation on style change 2021-03-29 18:24:23 +02:00
Riccardo
e7c0401116 Fix a compilation error and build warning (#2172)
* fix(lv_obj): make lv_obj_update_layout() work with a const pointer

* fix(lv_conf_internal): prevent URL being interpreted as comment warning
2021-03-29 16:15:14 +02:00
Gabor Kiss-Vamosi
2dd9ca06d3 minor fixes 2021-03-26 20:27:11 +01:00
Gabor Kiss-Vamosi
d1c5f1c16e fix(bar) invalidate the indicator on press/release 2021-03-26 16:50:10 +01:00
Gabor Kiss-Vamosi
38e77d1381 fix(style_gen) update style_api_gen.py according to the changed style properties 2021-03-26 12:26:57 +01:00
Xiang Xiao
e153ccd1c1 fix(style_api_gen.py): change lv_color_filter_cb_t to lv_color_filter_dsc_t (#2162)
and update the generated style header files
2021-03-26 12:16:57 +01:00
Gabor Kiss-Vamosi
020c95a308 fix(include) add missing include 2021-03-26 11:47:02 +01:00
Gabor Kiss-Vamosi
0e0393539e fix(extra): add lv_extra.c/h for lv_extra_init() 2021-03-26 11:45:28 +01:00
Gabor Kiss-Vamosi
415c114be6 fix(align) refresh position on size change 2021-03-25 20:53:45 +01:00
Gabor Kiss-Vamosi
f4abafc1c9 fix(obj_class) add missing define 2021-03-25 20:37:51 +01:00
Gabor Kiss-Vamosi
400bb9e02d remove debug code 2021-03-25 20:29:19 +01:00
Amir Gonnen
d0fb10724b feat(cmake) Allow building LVGL without kconfig (#2165) 2021-03-25 20:15:39 +01:00
Gabor Kiss-Vamosi
b3f1d49735 follow Micropython conventions with anim->get_value_cb 2021-03-25 20:09:51 +01:00
Gabor Kiss-Vamosi
966f6e1727 refactor(dropdown): rename lv_dropdown_list_class to lv_dropdownlist_class
It avoids ambiguity. See  https://github.com/lvgl/lvgl/issues/1763#issuecomment-804357591
2021-03-25 20:03:49 +01:00
Gabor Kiss-Vamosi
63bc72e53a minor fixes 2021-03-25 19:59:23 +01:00
Gabor Kiss-Vamosi
35c55291e3 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-03-25 19:42:37 +01:00
Gabor Kiss-Vamosi
3ab9b366f4 remove 'merge-to-dev.yml' as we don't use the dev brach anymore 2021-03-25 19:42:29 +01:00
Gabor Kiss-Vamosi
a2f3022188 api(align) save align in style and handle x/y according to it 2021-03-25 16:14:17 +01:00
Gabor Kiss-Vamosi
53f3cc1827 api(style) remove content style proeprties 2021-03-25 13:36:50 +01:00
Xiang Xiao
22f4e0b011 Merge pull request #2161 from xiaoxiang781216/rename
fix(build): remove lv_ prefix from path
2021-03-25 01:42:03 -07:00
Gabor Kiss-Vamosi
b7becbbb22 feat(style): store layout and position coordinates as style properties
related to #2152
2021-03-24 15:38:53 +01:00
Xiang Xiao
7cc3ed51bf fix(style): add one space before { for struct definition (#2160) 2021-03-24 12:01:56 +01:00
Xiang Xiao
5f993286a2 minor fix for obj class (#2154)
* fix(class): correct the typo error in comment

* fix(class): return directly if the memory allocation fail

* fix(class): remove the unused code

* fix(class): remove parent argument from lv_obj_construct

since this argumnet is really used

* fix(class): replace stddef.h with stdint.h

since uint32_t is defined in stdint.h
2021-03-24 11:29:56 +01:00
Xiang Xiao
85a7c5e66a fix(gc): remove the inclusion of LV_GC_INCLUDE (#2164) 2021-03-24 09:44:46 +01:00
Xiang Xiao
8dd3c76305 fix(build): remove lv_ prefix from path 2021-03-23 23:30:32 +08:00
Xiang Xiao
04990aefe5 fix(obj): remove the unused MY_CLASS macro (#2153) 2021-03-21 17:37:25 +01:00
Xiang Xiao
e7cc4bc180 fix(format): remove 0x prefix from %p (#2151)
* fix(format): remove 0x prefix from %p

since %p already add this prefix automatically

* fix(printf): make %p more compatible with the standard
2021-03-21 16:50:49 +01:00
Gabor Kiss-Vamosi
84163749ec fix(lv_conf): add LV_USE_THEME_BASIC 2021-03-19 18:07:58 +01:00
Gabor Kiss-Vamosi
c565d4de8a feat(refresh): add LV_USE_REFR_DEBUG 2021-03-19 18:05:33 +01:00
Gabor Kiss-Vamosi
d83fa19703 minor fixes 2021-03-19 18:03:08 +01:00
Gabor Kiss-Vamosi
a4b66d550f minor fix 2021-03-19 16:33:50 +01:00
Gabor Kiss-Vamosi
bcacdecbcb remove test code 2021-03-19 16:30:08 +01:00
Gabor Kiss-Vamosi
c1fd58b785 fix(theme) do not apply theme to top/sys_layer as they are transparent by default
Fixes 4bdb0e94
2021-03-19 16:28:57 +01:00
Gabor Kiss-Vamosi
4bdb0e94a3 fix(theme): apply the new theme on the screen if there are no object created
When a display is registered the act_screen, top_layer and sys_layer are created with the default theme.
If a new theme is set immediatelly after the driver regsitration (with lv_theme_set_act) the created screens should use the styles from the new theme.
If there are more obejct do not add the theme becasue it's possibelt that the user already added styles to the screens and applying the theme would clear these styles.
2021-03-19 16:10:38 +01:00
Gabor Kiss-Vamosi
fa5e42ac0e fix warning 2021-03-19 16:04:23 +01:00
Gabor Kiss-Vamosi
666653efe7 fix(refresh): do not redraw the whole object if only part's style changes on a new state 2021-03-19 16:01:26 +01:00
Gabor Kiss-Vamosi
ac3fa78718 minor fixes 2021-03-19 13:00:21 +01:00
Gabor Kiss-Vamosi
a9e826d3c5 feat(obj style): remove obj->style_lista nd use array of lv_obj_style_t in lv_obj_t 2021-03-19 09:38:52 +01:00
Gabor Kiss-Vamosi
d62c8b2114 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-03-19 00:28:22 +01:00
Gabor Kiss-Vamosi
2af273011d fix(chart): revert the removal of LV_EVENT_GET_SELF_SIZE handling
It's required to make th chart scrollable
2021-03-19 00:28:13 +01:00
Gabor Kiss-Vamosi
171f7548d6 fix(textarea): remove the prototype of unimplementes functions 2021-03-18 18:15:38 +01:00
github-actions[bot]
53c6b1f5b2 Merge 150f44ed13 into dev 2021-03-18 16:40:34 +00:00
Gabor Kiss-Vamosi
150f44ed13 update lv_cont_internal.h 2021-03-18 17:39:07 +01:00
Gabor Kiss-Vamosi
c1f8a844bc style(comment): remove the word signal from the comments 2021-03-18 17:38:42 +01:00
Gabor Kiss-Vamosi
bf2deded51 fix conflicts 2021-03-18 17:31:09 +01:00
Gabor Kiss-Vamosi
6873544e2f Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-03-18 17:18:29 +01:00
Gabor Kiss-Vamosi
0ef2e08d02 refactor(event): adjust events names 2021-03-18 17:18:11 +01:00
Gabor Kiss-Vamosi
03f74ce186 feat(obj): merge draw clallback to events 2021-03-18 17:03:36 +01:00
Gabor Kiss-Vamosi
6b7fe23fb8 feat(obj): merge signals into events 2021-03-18 15:13:35 +01:00
github-actions[bot]
bb9efb13c9 Merge 35772ba6c3 into dev 2021-03-18 13:26:35 +00:00
Xiang Xiao
35772ba6c3 fix(label): fix build break(lv_disp_buf_t not defined) (#2148) 2021-03-18 09:26:04 -04:00
Xiang Xiao
9254a7ea14 fix(comment): remove the space after /* and before */ 2021-03-18 11:51:36 +08:00
github-actions[bot]
cd619bcb63 Merge a7084509b5 into dev 2021-03-17 19:46:21 +00:00
Gabor Kiss-Vamosi
a7084509b5 fix(fs): do not trim the leading / from the path 2021-03-17 20:45:36 +01:00
github-actions[bot]
ea213d07d1 Merge 9d23260ce5 into dev 2021-03-17 12:37:32 +00:00
Gabor Kiss-Vamosi
9d23260ce5 minor fixes 2021-03-17 13:36:58 +01:00
github-actions[bot]
81d4f510df Merge 39f627022f into dev 2021-03-17 09:31:44 +00:00
Gabor Kiss-Vamosi
39f627022f fix build error 2021-03-17 10:28:26 +01:00
Gabor Kiss-Vamosi
6363d53fbe fix conflicts 2021-03-17 10:27:36 +01:00
Gabor Kiss-Vamosi
87c4a0ffef fix conflicts 2021-03-17 10:24:48 +01:00
Gabor Kiss-Vamosi
39dccac4e4 Merge branch 'disp' of https://github.com/xiaoxiang781216/lvgl into xiaoxiang781216-disp 2021-03-17 10:22:26 +01:00
Xiang Xiao
5f042a8c5f fix(example): replace LV_HOR_RES_MAX with 320 in LVGL_Arduino.ino
since LV_HOR_RES_MAX doesn't exist anymore
2021-03-17 10:20:29 +01:00
github-actions[bot]
624755b57b Merge b0c1febc16 into dev 2021-03-17 09:17:17 +00:00
Gabor Kiss-Vamosi
b0c1febc16 feat(obj): add lv_obj_remove_event_cb
based on #2128
2021-03-17 10:15:49 +01:00
github-actions[bot]
3c50a252ce Merge 4a0dbffc47 into dev 2021-03-17 09:09:16 +00:00
Gabor Kiss-Vamosi
4a0dbffc47 fix(disp): need save the new driver pointer in lv_disp_drv_update
Based on #2138
2021-03-17 10:08:35 +01:00
github-actions[bot]
2c2303f40d Merge 498b6c6c54 into dev 2021-03-17 09:06:15 +00:00
Gabor Kiss-Vamosi
498b6c6c54 fix(indev) don't call memcpy in lv_indev_drv_update
Based on #2139
2021-03-17 10:05:36 +01:00
github-actions[bot]
1651260027 Merge 85f21a1345 into dev 2021-03-17 08:27:59 +00:00
Gabor Kiss-Vamosi
85f21a1345 refactor(draw_hook): rename lv_obj_draw_hook_dsc_t to lv_obj_draw_dsc_t
Based on #2142
2021-03-17 09:27:19 +01:00
github-actions[bot]
da082c93a4 Merge 7f32ffe203 into dev 2021-03-16 22:01:03 +00:00
github-actions[bot]
3e5ce7a464 Merge 2676bc8839 into dev 2021-03-16 22:00:40 +00:00
Gabor Kiss-Vamosi
7f32ffe203 add blue arc to lv_example_meter_1 2021-03-16 23:00:23 +01:00
Gabor Kiss-Vamosi
2676bc8839 fix(gpu): fix the name of the gpu related includes 2021-03-16 22:59:59 +01:00
github-actions[bot]
1efbe921b5 Merge dad2b4aab1 into dev 2021-03-16 19:57:53 +00:00
Gabor Kiss-Vamosi
dad2b4aab1 fix tests 2021-03-16 20:57:22 +01:00
github-actions[bot]
0c0039ef15 Merge 1a1e5c8196 into dev 2021-03-16 19:54:22 +00:00
Gabor Kiss-Vamosi
1a1e5c8196 update make files 2021-03-16 20:53:42 +01:00
Gabor Kiss-Vamosi
0cc1e99ddf remove the lv_ prefix from the directories in the src folder 2021-03-16 20:36:27 +01:00
github-actions[bot]
179319b034 Merge 7b3dbd5e2a into dev 2021-03-16 16:09:40 +00:00
Gabor Kiss-Vamosi
7b3dbd5e2a Update README.md 2021-03-16 17:09:08 +01:00
github-actions[bot]
931d647d40 Merge 24588d08b6 into dev 2021-03-16 15:59:26 +00:00
Gabor Kiss-Vamosi
24588d08b6 remove leftover files after merging master 2021-03-16 16:58:50 +01:00
Gabor Kiss-Vamosi
3dbc170d4b remove leftover files after merging master 2021-03-16 16:41:52 +01:00
Gabor Kiss-Vamosi
73d51608e8 Merge master 2021-03-16 16:32:58 +01:00
Gabor Kiss-Vamosi
ec9de515b3 Release v7.11.0 2021-03-16 16:31:32 +01:00
Gabor Kiss-Vamosi
a9e50ae822 remove debug expressions 2021-03-16 15:43:03 +01:00
Gabor Kiss-Vamosi
434c01d7cf minor fixes 2021-03-16 15:39:10 +01:00
Gabor Kiss-Vamosi
9e8e892dff perf(meter): invalidate only the needle area 2021-03-16 15:24:52 +01:00
Gabor Kiss-Vamosi
0f70859758 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-03-16 12:38:47 +01:00
Gabor Kiss-Vamosi
fc0b3afee2 fix warning 2021-03-16 12:38:36 +01:00
Gabor Kiss-Vamosi
a0671ab953 fix(theme): default theme fixes 2021-03-16 12:33:47 +01:00
Gabor Kiss-Vamosi
0aec010a52 feat(arc): add lv_draw_arc_get_area to have a common function to get the area to invalidated 2021-03-16 12:32:52 +01:00
Gabor Kiss-Vamosi
8106c2f348 feat(chart): add lv_chart_set_series_color 2021-03-16 12:29:21 +01:00
Gabor Kiss-Vamosi
3f23733961 feat(font): add LV_SYMBOL_TINT and LV_SYMBOL_ENVELOPE 2021-03-16 12:28:43 +01:00
Gabor Kiss-Vamosi
ef5b2c695b minor fixes 2021-03-16 12:28:25 +01:00
Gabor Kiss-Vamosi
d93056cd43 feat(obj): add lv_obj_get_height/width_visible 2021-03-15 16:38:54 +01:00
Gabor Kiss-Vamosi
acd07ff83c feat(example): add more chart examples 2021-03-15 15:23:10 +01:00
Gabor Kiss-Vamosi
dc7e6b00a0 rename some LV_PART_... and add cursor drawing back to lv_chart 2021-03-15 15:20:40 +01:00
Xiang Xiao
1f3ae7f274 fix(disp): change all disp_buf to draw_buf
follow up the commit:
commit e9cc1c2d46
Author: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Date:   Wed Mar 10 13:07:15 2021 +0100

    feat(driver): raname lv_disp_buf_t to lv_disp_draw_buf_t + save only the drv's pointer in lv_disp_t
2021-03-14 21:39:05 +08:00
Xiang Xiao
1da95cf534 fix(example): replace LV_HOR_RES_MAX with 320 in LVGL_Arduino.ino
since LV_HOR_RES_MAX doesn't exist anymore
2021-03-14 21:10:58 +08:00
Xiang Xiao
460b227b83 fix(doc): remove ':' from @param (#2137) 2021-03-14 14:02:16 +01:00
Gabor Kiss-Vamosi
4516018ce7 refactor(draw_buf): rename vdb to draw_buf
It affected only local variables and comments
2021-03-14 13:57:53 +01:00
Xiang Xiao
d90759aaab Minor fix for disp driver (#2135)
* fix(disp): correct the typo error in comment

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>

* fix(disp): fix the field definition

1.change rotated from 3bits to 2bits since lv_disp_rot_t has only four value
2.change inv_p from 10bits to uint16_t to avoid the bit operation
3.reorder bg_opa to save the memory space

* fix(disp): remove the unnecessary field zero

since lv_memset_00 is already done for the main struct

* fix(disp): handle the out of memmory gracefully

* fix(disp): delete the refresh timer in lv_disp_remove

* fix(disp): handle NULL pointer correctly in lv_disp_[g|s]et_rotation

like other similar(allow NULL disp) functions

* fix(disp): call lv_area_set_[width|height] in lv_disp_drv_update

to remove one extra row and column
2021-03-14 13:46:35 +01:00
Xiang Xiao
54b8862609 fix(disp): rename lv_disp_get_buf to lv_disp_get_draw_buf (#2136)
follow up the commit:
commit e9cc1c2d46
Author: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Date:   Wed Mar 10 13:07:15 2021 +0100

    feat(driver): raname lv_disp_buf_t to lv_disp_draw_buf_t + save only the drv's pointer in lv_disp_t
2021-03-14 13:44:01 +01:00
Gabor Kiss-Vamosi
a431569455 feat(fs driver): save only the pointer of the driver in lv_fs_drv_register 2021-03-14 13:42:32 +01:00
Gabor Kiss-Vamosi
7840f3577e feat(indev driver): save only the pointer of the input deveice driver in lv_indev_register() 2021-03-14 13:34:06 +01:00
Gabor Kiss-Vamosi
f0e17cad60 fix(chart): fix warning 2021-03-14 13:31:29 +01:00
Gabor Kiss-Vamosi
ea557d2b4c perf(chart): use raw line end on line chart if line_width == 1 2021-03-12 21:42:18 +01:00
Gabor Kiss-Vamosi
93ddf0b8fb feat(chart): chage to simpler line drawing if the number of points > chart width
If there are a lot of points always draw vertical lines.
Visually it's similar but much faster than drawing skewed antialaised lines.
2021-03-12 21:36:33 +01:00
Gabor Kiss-Vamosi
fa2c817681 Update lv_port_disp_template.c 2021-03-12 14:12:12 +01:00
Gabor Kiss-Vamosi
ca7d806eab fix(screen change): allow postion change on screens to make screen change animations work 2021-03-11 22:30:51 +01:00
Gabor Kiss-Vamosi
ae09ce5701 feat(style): remove style caching becasue it had no peformance benefit
and add custom user states
2021-03-11 21:05:11 +01:00
Gabor Kiss-Vamosi
ba69cb4dca fix compiler error with some logs 2021-03-11 19:38:51 +01:00
Gabor Kiss-Vamosi
2ffa8165c1 fix warning 2021-03-11 12:31:14 +01:00
Gabor Kiss-Vamosi
fbba11af37 fix(obj style) rename lv_obj_set_pad...() to lv_obj_set_style_pad...() 2021-03-11 12:28:49 +01:00
Gabor Kiss-Vamosi
48cd3809f6 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-03-11 12:21:10 +01:00
Gabor Kiss-Vamosi
751f1aa829 minor fixes 2021-03-11 12:21:03 +01:00
Gabor Kiss-Vamosi
f63f3408eb fix(chart): fix zooming on bar charts 2021-03-11 12:20:55 +01:00
Gabor Kiss-Vamosi
fb8faed097 fix(grid): support fr on LV_SIZE_CONTENT parents too 2021-03-11 12:20:09 +01:00
Gabor Kiss-Vamosi
e05af14af9 fix(flex): fix centering on small parents + renames 2021-03-11 12:18:59 +01:00
Themba Dube
28f2f9f922 fix(disp) mark new_drv as unused in lv_disp_drv_update 2021-03-10 20:58:30 -05:00
Themba Dube
39a1451fc6 fix(disp) remove pointless memcpy() 2021-03-10 20:54:41 -05:00
Themba Dube
d7f6d006b1 fix(obj,layouts) remove warning spam 2021-03-10 20:54:13 -05:00
Xiang Xiao
7bf547a928 feat(mem): switch the default allocator to tlsf (#2129)
* feat(mem): add initial version of tlsf

from  : https://github.com/mattconte/tlsf
commit: deff9ab509341f264addbd3c8ada533678591905

* feat(mem): switch the default allocator to tlsf

* fix(mem): remove the preserved small buffer

since the builtin allocator(tlsf) is fast enough now

* fix(mem): change LV_MEM_ADD_JUNK to 0

to speed up the normal operation
2021-03-10 15:13:35 +01:00
Gabor Kiss-Vamosi
91a44a465a fix tests 2021-03-10 13:12:45 +01:00
Gabor Kiss-Vamosi
73c4903d39 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-03-10 13:12:24 +01:00
Gabor Kiss-Vamosi
e9cc1c2d46 feat(driver): raname lv_disp_buf_t to lv_disp_draw_buf_t + save only the drv's pointer in lv_disp_t 2021-03-10 13:07:15 +01:00
Gabor Kiss-Vamosi
c230df0782 feat(flex): add LV_OBJ_FLAG_FLEX_IN_NEW_TRACK 2021-03-10 12:50:22 +01:00
Gabor Kiss-Vamosi
1b51f69116 fix(meter): fix off by one pixel issue on arcs and the order of tick indicators during drawing 2021-03-10 12:50:06 +01:00
Gabor Kiss-Vamosi
22c06a19bc minor fixes 2021-03-10 09:44:17 +01:00
Gabor Kiss-Vamosi
9a447883c1 fix(draw) consider style opa for outline too 2021-03-09 11:43:04 +01:00
Gabor Kiss-Vamosi
c908cc98b6 add lv_anim_del_all() 2021-03-09 10:31:17 +01:00
Gabor Kiss-Vamosi
6169a2417d Merge branch 'dev' of https://github.com/lvgl/lvgl into dev 2021-03-09 09:23:51 +01:00
Gabor Kiss-Vamosi
a774aa439f fix(mask) fix off by one pixel issue with horizontal line masks 2021-03-09 09:23:43 +01:00
Gabor Kiss-Vamosi
94431f8aaf refactor(flex): change the name of teh built-in flex layouts 2021-03-08 23:30:27 +01:00
Gabor Kiss-Vamosi
289f8e4bac fix(table): refresh only the changed cell's height 2021-03-08 23:14:26 +01:00
Gabor Kiss-Vamosi
c01f54d206 fix warning 2021-03-08 20:41:11 +01:00
Gabor Kiss-Vamosi
fdbee4bf54 fix old function name 2021-03-08 20:31:14 +01:00
Gabor Kiss-Vamosi
e65e80c1f8 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-03-08 20:13:26 +01:00
Gabor Kiss-Vamosi
4f70bbf182 feat(font): make all fonts const 2021-03-08 20:08:51 +01:00
Petteri Aimonen
607e02e52a Cleanup LV_SIGNAL_GET_TYPE implementations (#2127)
Remove dead code in lv_label and lv_spinbox, there is already lv_obj_handle_get_type_signal() call higher up.
Change lv_led to use lv_obj_handle_get_type_signal() like other widgets do.
2021-03-08 15:01:59 +01:00
Gabor Kiss-Vamosi
cdbbdc36bb Merge branch 'feat/font-cache' into dev 2021-03-08 14:51:15 +01:00
Gabor Kiss-Vamosi
00860900b2 merge master 2021-03-08 14:46:55 +01:00
Xiang Xiao
54cab8a283 Minor fix for hal indev module (#2124)
* fix(hal indev): correct the typo and adjust the alignment

* fix(hal indev): remove the unnecessary forward declaration

* fix(hal indev): relayout the bitfiled to save space

* fix(hal indev): remove the unnecessary memory zero

* fix(hal indev): remove the initial hardcode value for scroll_throw
2021-03-08 14:44:39 +01:00
Gabor Kiss-Vamosi
430c91e40c fix(table): recalcualte the height only the necesasry rows 2021-03-08 10:22:58 +01:00
Themba Dube
438ba35076 feat(disp) add drv_update_cb to detect rotation/other parameter changes 2021-03-07 12:51:42 -05:00
Gabor Kiss-Vamosi
34dfccd829 fix(refr): send LV_EVENT_COVER_CHECK 2021-03-06 13:11:31 +01:00
Xiang Xiao
7aab2b669c fix(timer): change 'Task' to 'Timer' (#2125) 2021-03-05 14:02:19 -05:00
Gabor Kiss-Vamosi
42ab81cac5 add #ifs 2021-03-04 19:41:55 +01:00
Gabor Kiss-Vamosi
376da66dab feat(layout): automatically update the screen's layout in lv_obj_scroll_to_view 2021-03-03 21:10:49 +01:00
Gabor Kiss-Vamosi
0d38d100c2 feat(layout): add deferred layout recalculation 2021-03-03 20:15:21 +01:00
Gabor Kiss-Vamosi
3ecf550bcd fix(example) add trailing empty string in lv_example_textarea_1 2021-03-03 15:05:37 +01:00
Gabor Kiss-Vamosi
22fcb8009b fix(meter): use the arc styles of the meter during indicator drawing 2021-03-03 14:25:55 +01:00
Gabor Kiss-Vamosi
15ebc12b64 fix(draw): use arc_rounded instead of line_rounded property in lv_obj_init_draw_arc_dsc() 2021-03-03 14:25:55 +01:00
Xiang Xiao
8e55d42290 fix(style): remove allocated field from lv_style_t (#2121)
to simplify the code logic and extend prop_cnt to 256
2021-03-03 13:32:22 +01:00
Xiang Xiao
ffd9c47d3d fix: remove the tail space after cast expression (#2122)
ensure the style consistency through the code base
2021-03-03 12:02:58 +01:00
Xiang Xiao
58413adbd3 Merge pull request #2117 from xiaoxiang781216/anim
fix(task): change all task related term to timer
2021-03-03 01:00:03 -08:00
Xiang Xiao
649c45de0d Merge pull request #2120 from xiaoxiang781216/style2
fix(style): align the enum entry in lv_style_prop_t
2021-03-03 00:59:00 -08:00
Gabor Kiss-Vamosi
586542ddce font cache test 2021-03-03 09:22:34 +01:00
Xiang Xiao
1a5606e0f4 fix(style): align the enum entry in lv_style_prop_t 2021-03-03 15:54:57 +08:00
Xiang Xiao
33b5ee3ad2 fix(task): change all task related term to timer
follow up the task module change
2021-03-03 14:32:25 +08:00
Gabor Kiss-Vamosi
d4eb6a2ad3 fix(layout): fix layout update trigger in lv_obj_add/clear_flag() 2021-03-03 02:23:11 +01:00
Gabor Kiss-Vamosi
a8dd20435d fix(indev): fix not clicking hidden objects 2021-03-03 02:20:57 +01:00
Gabor Kiss-Vamosi
bb8cce00d2 fix(chart): add the current series to hook_dsc->sub_part_ptr with line charts too 2021-03-02 23:50:21 +01:00
Kamranaghl
a4c33bb16e feat(label) decide text animation's direction based on base_dir (#2112) 2021-03-02 12:51:37 -05:00
Gabor Kiss-Vamosi
b8b66c6929 Update lv_label.h 2021-03-02 12:23:31 +01:00
Xiang Xiao
978e8915da fix(style): handle the out of memory gracefully in lv_style_[set|remove]_prop (#2101)
* fix(style): remove the wrong first break statement from lv_style_prop_get_default

and correct the comment and style

* fix(style): handle the out of memory gracefully in lv_style_[set|remove]_prop
2021-03-01 20:18:22 +01:00
Gabor Kiss-Vamosi
122f6c12be fix(disp): lv_disp_drv_update set screen size manually
Using lv_obj_set_size will trigger asserts as normally the size of the screens shouldn't be adjusted
2021-03-01 20:11:09 +01:00
Themba Dube
a42c4191a6 Merge branch 'dev' of github.com:littlevgl/lvgl into dev 2021-03-01 13:58:39 -05:00
Themba Dube
db7a6e4fac fix(disp) disp->screens isn't terminated by a null member, so use screen_cnt instead 2021-03-01 13:58:20 -05:00
Gabor Kiss-Vamosi
834895ebc2 fix(arc): fix ext. draw pad calculation of the knob 2021-03-01 19:51:06 +01:00
Gabor Kiss-Vamosi
1a30e04952 fix(theme): add smaller padding to window header 2021-03-01 19:51:06 +01:00
Gabor Kiss-Vamosi
47b8893f99 fix(mem) fix traeting data as lvgl alloacted even if LV_MEM_CUSTOM 1 2021-03-01 19:31:09 +01:00
Gabor Kiss-Vamosi
2618326f24 fix(txt): fix global buffer overflow in lv_txt_utf8_get_byte_id
fixes #2089
2021-03-01 16:07:59 +01:00
Xiang Xiao
772e403eb0 fix(lv_*.mk): add the miss source code (#2106)
and reorder the entry to help finding the mismatch
2021-03-01 16:00:35 +01:00
Xiang Xiao
3bf5079427 fix(aysnc): don't set the timer's user data again (#2097)
* fix(async): replace all task with timer

* fix(aysnc): don't set the timer's user data again

since lv_timer_create alreqdy do the same thing
2021-03-01 15:59:51 +01:00
Xiang Xiao
4118b1e52a fs: avoid the unnecessary memory allocation (#2098)
* fix(fs): don't allocate lv_fs_file_t in lv_fs_open

avoid the unnecessary allocation

* fix(fs): apply the similar file open/close change to dir open/close

avoid the unnecessary allocation
2021-03-01 15:59:14 +01:00
Gabor Kiss-Vamosi
293807eb27 fix issue after fixing conflits 2021-03-01 15:56:33 +01:00
Xiang Xiao
2aacbd5ddd fix(misc): correct the comment and coding style (#2096)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2021-03-01 15:55:46 +01:00
Xiang Xiao
02efef12db fix(image decoder): fix the chagne losed after merging dev-v8 (#2103)
commit 06917a6ec3
* fix(image decoder): fix memory leak when no decoder can be used

and handle the out of memory gracefully

* fix(image decoder): zero the output fields after each iteration

to clean the stale info saved by try failed decoder and remove img_data
zero from lv_img_decoder_built_in_open since it has be done in the loop

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2021-03-01 15:52:04 +01:00
Gabor Kiss-Vamosi
fd34dbe056 test with LV_MEM_CUSTOM 1 too 2021-03-01 15:44:43 +01:00
Gabor Kiss-Vamosi
367e3a31df fix(mem): with LV_MEM_CUSTOM don't try to realloc &zero_mem, use malloc instead 2021-03-01 15:44:27 +01:00
Gabor Kiss-Vamosi
23a8c0b68a remove accent colors becasue they were inconsistent 2021-03-01 15:15:35 +01:00
Gabor Kiss-Vamosi
f990a5f85e use LV_COLOR_PALETTE_LIGHT_BLUE by deafult 2021-03-01 14:59:38 +01:00
Gabor Kiss-Vamosi
58708ca771 fix(gauge): fix needle invalidation 2021-03-01 14:01:13 +01:00
Gabor Kiss-Vamosi
90d0eec5ae feat(anim): add lv_anim_set_get_value_cb 2021-03-01 13:52:57 +01:00
Xiang Xiao
b35c67c8b6 Various fix for gc module (#2102)
* fix(gc): remove the unused variables from gc

* fix(gc): correct typo(from _lv_img_defoder_ll to _lv_img_decoder_ll)

* fix(gc): change _lv_drv_ll to _lv_fsdrv_ll

since only instances fo lv_fs_drv_t can be added to this list

* fix(gc): Iterate the root variables only when they are really used

to save the memory space

* fix(image cache): move cache_temp to gc.h

and rename it to _lv_img_cache_single
2021-03-01 13:18:57 +01:00
Gabor Kiss-Vamosi
1b79a5ae32 fix(obj): swap lv_obj_move_forground/background 2021-03-01 12:12:18 +01:00
Gabor Kiss-Vamosi
16b9e3fd96 minor fixes 2021-03-01 12:04:19 +01:00
Gabor Kiss-Vamosi
2f0443b803 update lv_conf_internal.h 2021-03-01 12:03:46 +01:00
Gabor Kiss-Vamosi
27025ee6f9 fix(mem): assume &zero_mem has 0 size 2021-03-01 12:02:18 +01:00
Gabor Kiss-Vamosi
403351222e add logs + minor fixes 2021-03-01 12:00:13 +01:00
Gabor Kiss-Vamosi
bcafd8a0b0 add some more logs 2021-03-01 11:57:49 +01:00
Gabor Kiss-Vamosi
8bc6931f7f add many LV_LOG_TRACE-s 2021-02-28 20:42:48 +01:00
Gabor Kiss-Vamosi
df5a47871d add some logs 2021-02-28 15:02:00 +01:00
Gabor Kiss-Vamosi
468fdb4f74 feat(debug): add mem. monitor simalarly to perf. monitor 2021-02-28 15:01:28 +01:00
Gabor Kiss-Vamosi
6f357ea745 minor fixes 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
1e22db2c2c minor fixes 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
bdef0c3b8b feat(obj): add LV_OBJ_FLAG_FLOATING and lv_obj_has_flag_any 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
4650132767 fix(shadow draw): fix missing column in hte middle with some sizes 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
3eab2e2dc7 feat(log): add timestamp to log mesages 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
85f60bcf70 feat(calendar): add lv_calendar_header_dropdown 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
7b48fa0fc0 minor fixes 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
bdef86faf2 feat(style): add lv_style_get_prop_inlined and use it in the core main object style getter 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
347680a3c0 feat(dropdown): lv_dropdown_set/get_selected_highlight + minor fixes 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
b1677205b0 minor fixes 2021-02-28 14:18:32 +01:00
Gabor Kiss-Vamosi
950124f5a0 fix(scroll): varius fixes on lv_obj_scroll_to_view and snapping 2021-02-28 14:18:32 +01:00
Xiang Xiao
8f48cf5cc7 fix(font): Handle the out of memory gracefully in decompression case (#2100) 2021-02-27 14:07:17 +01:00
Carlos Diaz
b55ee6aaf3 fix(esp32) adjust COMPONENT_SRCDIRS and COMPONENT_ADD_INCLUDEDIRS in component.mk (#2108) 2021-02-26 21:03:32 -05:00
Gabor Kiss-Vamosi
0493a9aebd update lv_conf_template 2021-02-26 16:12:30 +01:00
Gabor Kiss-Vamosi
87cee2f72b minor fixes 2021-02-26 13:13:37 +01:00
Gabor Kiss-Vamosi
c9abb38e67 feat(color): add lv_color_get_palette_... functions and update the default theme accordingly 2021-02-26 13:02:06 +01:00
Gabor Kiss-Vamosi
17a619bd95 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-02-26 09:51:50 +01:00
Gabor Kiss-Vamosi
0ab6433c66 assign theme to the display + minor fixes 2021-02-26 09:51:30 +01:00
Gabor Kiss-Vamosi
add5ce9ddb fix typo 2021-02-26 09:49:14 +01:00
Gabor Kiss-Vamosi
c4dc6ff940 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-02-26 09:47:49 +01:00
Gabor Kiss-Vamosi
9f1fbadf9d fix(bar, slider): fix with negative padding on bar and slider background
It allows making the indicator larger
2021-02-26 09:47:35 +01:00
Gabor Kiss-Vamosi
8fdefa8508 fix(chart) fix warning 2021-02-25 15:38:25 +01:00
Gabor Kiss-Vamosi
c846a37adc feat(chart): trigger draw hook event on the bars of chart 2021-02-25 15:17:44 +01:00
Xiang Xiao
8c34c1533e Fix memory module issue (#2095)
* fix(mem): reutrn NULL in lv_mem_buf_get if allocation fail

* fix(mem): refine the loop in alloc_core to simplify the logic

* fix(mem): remove the lv_mem_buf declaration from lv_mem.h

since it already declared in gc.h
2021-02-25 14:59:50 +01:00
Xiang Xiao
9a2008bfb9 Fix minor issues found in timer module (#2094)
* fix(timer): remove LV_GC_INCLUDE inclusion since it doesn't need anymore

please see commit d6ca15a749 for more info

* fix(timer): implement lv_timer_create directly

and call it in lv_timer_create_basic

* fix(timer): exclude the return value computing from the idle time

and change handler_start and time_till_next to local variables

* fix(timer): restart the timer process loop correctly

* fix(timer): skip the count pause timer into next timeout

it's wrong to check repeat_count since the timer is always
removed from the list once the repeat_count change to zero

* fix(timer): remove zero task_deleted and task_created in lv_task_exec

since the loop in lv_task_handler already do the same thing
2021-02-25 14:58:07 +01:00
Gabor Kiss-Vamosi
8a7f9cb131 fix(style): use struct as color filter instead of pure callback for Micropython compatibility 2021-02-24 15:12:36 +01:00
X-Ryl669
45d6fd2397 Port of the fast colorwheel change to v8 (#2092) 2021-02-24 14:16:56 +01:00
Gabor Kiss-Vamosi
d2d8f973b0 format(btnmatrix) change paramater name in lv_btnmatrix_set_selected_btn 2021-02-24 14:14:46 +01:00
embeddedt
b47a982510 fix(bar) correct symmetric handling for vertical bars (#2085) 2021-02-24 07:52:04 -05:00
Gabor Kiss-Vamosi
8004058463 minor fixes 2021-02-24 10:07:54 +01:00
Gabor Kiss-Vamosi
e1457c968c Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-02-24 10:01:29 +01:00
Gabor Kiss-Vamosi
a2b29c091f fix: follow changes of lvgl in examples and extra widgets 2021-02-24 10:00:54 +01:00
Gabor Kiss-Vamosi
0aff24505e fix(theme): add theme perssed and focused styles to table 2021-02-24 09:59:55 +01:00
Gabor Kiss-Vamosi
8f89740612 fix(scroll): fix elastic scrolling on the first and last object with snapping 2021-02-24 09:59:02 +01:00
Gabor Kiss-Vamosi
2ddd485284 fix(obj): fix lv_obj_has_flag when ORed values are used 2021-02-24 09:57:36 +01:00
Gabor Kiss-Vamosi
027a82dc35 feat(table): add support the get the selected cell + keypad navigation 2021-02-24 09:56:44 +01:00
Gabor Kiss-Vamosi
ba89ea35a2 refactor(btnmatrix): use the seleceted word instead of activated 2021-02-24 09:55:47 +01:00
Gabor Kiss-Vamosi
8cf129b4af fix(btnmatrix): join active, pressed and focused button into active button 2021-02-24 05:10:48 +01:00
Gabor Kiss-Vamosi
326734545b refactor(scroll): remove the align word from scroll snap 2021-02-24 04:28:42 +01:00
Xiang Xiao
7f6a2eccea fix(style): make the code generated by style_api_gen.py confirm the coding style (#2093) 2021-02-23 16:01:46 +01:00
Gabor Kiss-Vamosi
6b1d25a140 fix: remove debug printf 2021-02-23 15:40:50 +01:00
Gabor Kiss-Vamosi
c6dd413f11 minor fixes 2021-02-23 15:13:14 +01:00
Gabor Kiss-Vamosi
cbfbcb47f9 feat(color): use colors from material design
Use function instead of color macros
2021-02-23 15:03:06 +01:00
Gabor Kiss-Vamosi
8740046efc fix(theme): make LV_THEME_DEFAULT_GROW 1 by default 2021-02-23 11:32:50 +01:00
Gabor Kiss-Vamosi
82e3c827cc fix(flex): make lv_flex_stacked horizontally center aligned 2021-02-23 11:31:55 +01:00
Gabor Kiss-Vamosi
00b1c80d3c feat(examples): fix examples and add new scroll examples 2021-02-23 11:31:10 +01:00
Gabor Kiss-Vamosi
1442a0f8bc feat(scroll): add lv_obj_update_snap() 2021-02-23 11:30:27 +01:00
Gabor Kiss-Vamosi
d55a27887e fix(draw): incorrent dash line redraw 2021-02-23 11:29:36 +01:00
Gabor Kiss-Vamosi
af98c9a9c0 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-02-23 11:18:20 +01:00
Gabor Kiss-Vamosi
8cfba6ae39 fix(shadow): fix overlapping shadow parts on small objects 2021-02-23 11:18:11 +01:00
Gabor Kiss-Vamosi
1d53278958 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-02-23 09:45:18 +01:00
Gabor Kiss-Vamosi
54cfc37c5c refactor(scroll) rename lv_set/get_snap_.. to lv_obj_set/get_scroll_snap_... 2021-02-23 09:45:13 +01:00
Gabor Kiss-Vamosi
4d788125d7 Merge branch 'dev-v8' into dev 2021-02-23 09:31:37 +01:00
Gabor Kiss-Vamosi
dd588dd56d minor fixes 2021-02-23 09:28:18 +01:00
Gabor Kiss-Vamosi
e9613526f8 fix(anim) fix anim_exec_cb casts 2021-02-22 20:27:46 +01:00
Gabor Kiss-Vamosi
757c18e430 refactor(anim) replace lv_anim_value_t with int32_t
see #2086
2021-02-22 19:01:40 +01:00
Xiang Xiao
dcf0339747 Fix issues found in image cache (#2081)
* fix(image cache): don't need zero dec_dsc field individually

since the next _lv_memset_00 cover this field too and

* fix(image cache): shouldn't call lv_img_decoder_close when lv_img_decoder_open fail

* fix(image cache): fix the cache match algo

1.check cache entry is LV_IMG_SRC_FILE before invoke strcmp
2.ensure lv_img_cache_invalidate_src use the same algo
2021-02-22 12:18:37 +01:00
Gabor Kiss-Vamosi
9b6516617b fix(img example) use dedicated function for anim. callback 2021-02-22 11:23:24 +01:00
Gabor Kiss-Vamosi
f2437f83d2 fix incorrect function name 2021-02-22 11:20:37 +01:00
Gabor Kiss-Vamosi
b6bbadd006 merge master 2021-02-22 11:16:27 +01:00
Gabor Kiss-Vamosi
71a6b5fda9 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-02-22 11:12:37 +01:00
Gabor Kiss-Vamosi
e8179407cd minor fixes 2021-02-22 11:12:19 +01:00
Gabor Kiss-Vamosi
3ddf26923f fix warning 2021-02-22 09:54:38 +01:00
Gabor Kiss-Vamosi
b252998b62 fix(anim) handle edge cases in lv_anim_path_bounce 2021-02-22 09:48:23 +01:00
embeddedt
e467686002 fix(v8) handle most compiler warnings (#2086) 2021-02-20 07:51:03 +01:00
Gabor Kiss-Vamosi
7197372b19 remove gauge (leftover from merging master) 2021-02-20 07:50:48 +01:00
Gabor Kiss-Vamosi
e6955d6ef0 feat(style): add lv_obj_remove_style_all as a wrapper to lv_obj_style_remove 2021-02-19 18:54:03 +01:00
Gabor Kiss-Vamosi
11ea18ca1e feat(align): add lv_obj_center as a wrapper to lv_obj_align 2021-02-19 18:53:26 +01:00
Gabor Kiss-Vamosi
8572cb10c6 fix(img) fix image drawing with padding 2021-02-19 18:42:20 +01:00
Gabor Kiss-Vamosi
9484f1b224 fix warnings 2021-02-19 18:19:47 +01:00
Gabor Kiss-Vamosi
ca4f11e9f4 add the prototypes of the examples 2021-02-19 18:19:32 +01:00
Gabor Kiss-Vamosi
fe20d47b6e fix warnings 2021-02-19 16:16:11 +01:00
embeddedt
406da6856c Various v8 compilation fixes (#2078)
* fix(style) improve script and fix C/C++ compilation

* fix(api_map) add NO_TASK_READY
2021-02-19 15:58:58 +01:00
Gabor Kiss-Vamosi
5c75c7cc12 fix issues on merging to dev 2021-02-19 15:52:04 +01:00
Gabor Kiss-Vamosi
776165977a merge to dev and slove conflitc 2021-02-19 15:27:44 +01:00
github-actions[bot]
b219998000 Merge 700c1290ba into dev 2021-02-19 14:02:45 +00:00
Gabor Kiss-Vamosi
5341cb73f5 Merge branch 'dev-v8' of https://github.com/littlevgl/lvgl into dev-v8 2021-02-19 15:02:29 +01:00
Xiang Xiao
700c1290ba Fix the minor issue in style module (#2071)
* fix(style): correct the comment and alignment

* fix(style): remove the unused macro and inclusion

* fix(style): correct _lv_style_get_xxx with the right pointer type

* fix(style): handle the out of memory gracefully

* fix(style): unify the term usage(class->style)

* fix(style): remove the unnecessary mask in _lv_style_get_xxx

since get_property_index ensure the returned state is a subset of required

* fix(style): centralize the style validation in one place

* fix(style): reuse the new_prop_size in _lv_style_set_xxx

* fix(style): correct the return value of get_style_prop in big endian machine
2021-02-19 15:02:16 +01:00
Gabor Kiss-Vamosi
574a6c0321 fix(meter) fix underflow 2021-02-19 14:48:15 +01:00
Gabor Kiss-Vamosi
fb27f59479 add style examples 2021-02-19 14:47:32 +01:00
github-actions[bot]
b7777b908a Merge 06917a6ec3 into dev 2021-02-19 12:57:24 +00:00
Xiang Xiao
06917a6ec3 Fix issues found in image decoder (#2083)
* fix(image decoder): replace lv_style.h with lv_color.h

since image decoder doesn't depends on style subsystem
and correct the related comment and some error handling

* fix(image decoder): fix memory leak when no decoder can be used

and handle the out of memory gracefully

* fix(image decoder): zero the output fields after each iteration

to clean the stale info saved by try failed decoder and remove img_data
zero from lv_img_decoder_built_in_open since it has be done in the loop

* fix(image decoder): check .bin suffix in lv_img_decoder_built_in_info

align with what has done in lv_img_decoder_built_in_open

* fix(image decoder): embed lv_fs_file_t directly to save the memory

and handle the abnormal case gracefully(avoid crash or leak)

* fix(image decoder): simplify decode builtin alpha/index bitmap
2021-02-19 13:56:59 +01:00
github-actions[bot]
4452106cce Merge 2edc95d7cd into dev 2021-02-19 12:51:16 +00:00
Gabor Kiss-Vamosi
2edc95d7cd fix(fix): gauge
fix needle invalidation
2021-02-19 13:50:43 +01:00
Gabor Kiss-Vamosi
c938f44d84 fix(obj tree): fix moving an object to the foreground if the object was the first child 2021-02-19 12:03:13 +01:00
Gabor Kiss-Vamosi
4c56747142 fix(invalidation): do not invalidate an area if it's not on a visible screen 2021-02-19 12:02:07 +01:00
Gabor Kiss-Vamosi
e088388fd5 fix(refr): restart drawer task in true double buffered mode too 2021-02-19 12:00:52 +01:00
Gabor Kiss-Vamosi
b396fd2b9d fix(style): fix the ID of outline properties
They were accidentally overlapping the border properties
2021-02-19 12:00:17 +01:00
Gabor Kiss-Vamosi
4714cc4421 (indev) send release event before click
It's important becasue the release signal handels the LV_OBJ_FLEG_CHECKABLE and the LV_EVENT_CLICKED should alrady know about the checked state
2021-02-18 16:14:18 +01:00
github-actions[bot]
3f36a7593d Merge 0bdcf362ff into dev 2021-02-18 12:42:24 +00:00
Alex Kalmuk
0bdcf362ff feat(cmake) build a static liblvgl.a library by default (#2079) 2021-02-18 07:41:54 -05:00
github-actions[bot]
4445a77732 Merge faf45419ca into dev 2021-02-17 15:11:12 +00:00
Xiang Xiao
faf45419ca Try to fix the various issue found in animation module again (#2073)
* fix(anim): relayout lv_anim_t to save 4 bytes

and fix the minor comment issue

* fix(anim): unify the type of time and animation to int32_t or uint32_t

since lv_anim_t use these types internally

* fix(anim): Don't need initialize last_task_run

since lv_anim_start will do this if the list is empty
and remove -1 to improve the accuracy

* fix(anim): remove the return value from anim_ready_handler

since no caller really use the return value

* fix(math): _lv_map check x >= max_in first

_lv_map return max_out when min_in equals max_in,
since the animation module require this behaviour

* fix(anim): normalize the time elapse by lv_map

* fix(anim): avoid iterate the list twice in anim_task
2021-02-17 16:10:36 +01:00
github-actions[bot]
49058df485 Merge 339b3de2dc into dev 2021-02-17 14:52:13 +00:00
embeddedt
339b3de2dc fix(list) scroll list when button is focused using LV_KEY_NEXT/PREV (#2061) 2021-02-17 09:51:41 -05:00
Gabor Kiss-Vamosi
b9911cb519 fix(theme): fix define name in theme default 2021-02-17 13:45:40 +01:00
Gabor Kiss-Vamosi
bf40fd7572 upadte lv_conf_internal.h 2021-02-17 13:42:54 +01:00
Gabor Kiss-Vamosi
10a26bf082 fix(align): fix align ...IN_MID 2021-02-17 13:42:31 +01:00
Gabor Kiss-Vamosi
f97d1db244 fix(delete): fix screen deletion 2021-02-17 13:41:47 +01:00
Gabor Kiss-Vamosi
c26ff96819 feat(theme): add LV_THEME_DEFAULT_GROW config options 2021-02-17 13:40:50 +01:00
github-actions[bot]
1281406e98 Merge de58ee2784 into dev 2021-02-17 10:40:28 +00:00
Gabor Kiss-Vamosi
de58ee2784 fix(gauge): consider paddigns for needle images 2021-02-17 11:39:52 +01:00
Gabor Kiss-Vamosi
f04dc72c4a fix(examples): update the get started examples 2021-02-16 20:41:11 +01:00
Gabor Kiss-Vamosi
4c1b18527b fix(style): fix style caching 2021-02-16 20:37:45 +01:00
Gabor Kiss-Vamosi
b75a8d43b0 Update dev version 2021-02-16 15:35:44 +01:00
Gabor Kiss-Vamosi
351008edcc Merge branch 'master' into dev 2021-02-16 15:25:31 +01:00
Gabor Kiss-Vamosi
5247094727 Release v7.10.1 2021-02-16 15:25:31 +01:00
Gabor Kiss-Vamosi
28addaf3ce add some missong LV_USE_... guards 2021-02-16 14:23:18 +01:00
Gabor Kiss-Vamosi
c35b645c31 fix(cpp build): ix the order of __cplusplus tag and #endf in lv_fs.h 2021-02-16 14:22:55 +01:00
Gabor Kiss-Vamosi
0d3a206f00 fix(cpp build): fix the order of __cplusplus tag and #endf in lv_anim.h 2021-02-16 14:07:01 +01:00
Gabor Kiss-Vamosi
71173aa949 add missing comemnts to __cplusplus tags 2021-02-16 10:55:10 +01:00
Gabor Kiss-Vamosi
c449718f99 fix(flex): fix gap calculatin with 'grow' items 2021-02-15 21:16:37 +01:00
Gabor Kiss-Vamosi
1f45d98e46 fix(layout): update the layout when the HIDDEN flag chnages 2021-02-15 21:16:37 +01:00
github-actions[bot]
b8ac56b7e8 Merge 11a2f82027 into dev 2021-02-15 19:59:38 +00:00
Xiang Xiao
11a2f82027 fix(theme): fix the memory leak when lv_theme_xxx_init is called twice (#2074)
* fix(theme): the minor typo error

* fix(style): make lv_style_reset work with zerod memory

* fix(theme): fix the memory leak when lv_theme_xxx_init is called twice

due to inited variable forget to set to 1

* fix(theme): empty theme should call lv_obj_refresh_style too

and remove lv_obj_clean_style_list since the same thing is
already done in the common code(clear_styles)
2021-02-15 20:59:11 +01:00
github-actions[bot]
af61cc4afd Merge 626f47f87b into dev 2021-02-15 19:48:01 +00:00
Themba Dube
626f47f87b feat(ci) add GCC problem matcher 2021-02-15 14:47:24 -05:00
github-actions[bot]
2e00a075d8 Merge 211a895008 into dev 2021-02-15 19:45:25 +00:00
Themba Dube
211a895008 ci(tests) add pedantic to compiler options 2021-02-15 14:44:43 -05:00
Gabor Kiss-Vamosi
fcc9f725a5 fix(theme): fix operating without default theme 2021-02-15 19:34:35 +01:00
Gabor Kiss-Vamosi
981f63c3fa fix(makefile): use absoulte path in extra.mk 2021-02-15 19:08:41 +01:00
Gabor Kiss-Vamosi
e1331fa6d7 feature(true double buffering) redraw the whole screen 2021-02-15 19:05:20 +01:00
github-actions[bot]
bad50d05e1 Merge 85c75c2f34 into dev 2021-02-15 14:40:19 +00:00
Xiang Xiao
85c75c2f34 fix(color): simplify the current color depth macro definition (#2076)
the change also simplify the addition of new color format
2021-02-15 09:39:49 -05:00
github-actions[bot]
5e25a432b8 Merge 87a8be3624 into dev 2021-02-15 08:39:53 +00:00
Xiang Xiao
87a8be3624 fix(style): merge scaler and noscalar variant into one (#2072)
since there is no real difference between these two version
2021-02-15 09:39:22 +01:00
Gabor Kiss-Vamosi
cdd531bef3 format(style_api_gen.py) change tabs to spaces 2021-02-15 09:37:40 +01:00
github-actions[bot]
e0cf4c3845 Merge 6b3452dc7b into dev 2021-02-15 08:28:04 +00:00
Xiang Xiao
6b3452dc7b fix(release/com.py): fail to update Kconfig version (#2075) 2021-02-15 09:27:30 +01:00
Gabor Kiss-Vamosi
02c19eacab fix warnings and make tests working 2021-02-14 22:07:38 +01:00
Gabor Kiss-Vamosi
bb08660cb6 minor fixes 2021-02-14 14:56:34 +01:00
github-actions[bot]
68688fba26 Merge 0f48c62b17 into dev 2021-02-12 21:34:26 +00:00
Themba Dube
0f48c62b17 fix(calendar) force no wrapping on day numbers and names
Fixes #1850
2021-02-12 16:33:32 -05:00
embeddedt
4b151cc885 feat(rotation) add full 90-degree rotation support, incl. software rotation (#2055) 2021-02-12 09:57:58 -05:00
github-actions[bot]
11afa125b4 Merge 681cf0dc57 into dev 2021-02-12 14:16:42 +00:00
embeddedt
681cf0dc57 fix(draw) overlap outline with background to prevent aliasing artifacts (#2067)
* fix(draw) overlap outline with background to prevent aliasing artifacts

* fix(draw) only overlap outline if padding == 0
2021-02-12 15:16:10 +01:00
Gabor Kiss-Vamosi
95b1bd8409 add examples + refactoring 2021-02-12 14:22:48 +01:00
github-actions[bot]
830d341b50 Merge 1566e6fab1 into dev 2021-02-12 10:02:50 +00:00
Gabor Kiss-Vamosi
1566e6fab1 Update Makefile 2021-02-12 11:02:20 +01:00
github-actions[bot]
c94ce67015 Merge 3cec3964dd into dev 2021-02-12 10:00:40 +00:00
Gabor Kiss-Vamosi
3cec3964dd Revert "Fix the various issue found in animation module (#2063)"
This reverts commit a62ecda760.
2021-02-12 10:59:53 +01:00
github-actions[bot]
0350f29cab Merge c4b46706c3 into dev 2021-02-12 01:01:52 +00:00
Xiang Xiao
c4b46706c3 fix(fs): correct the document for lv_fs_get_last (#2068) 2021-02-11 20:01:26 -05:00
github-actions[bot]
8ccc17f9cc Merge 4cb3f01b9d into dev 2021-02-11 22:08:28 +00:00
Xiang Xiao
4cb3f01b9d fix(font): add the new font to lv_font.mk (#2069)
and order the item to find the difference from file system quickly
2021-02-11 17:07:59 -05:00
github-actions[bot]
06520e38af Merge 84600a78db into dev 2021-02-11 17:53:27 +00:00
alsaleem00
84600a78db fix(text) improve Arabic contextual analysis (#2062)
Adds hyphen processing and proper handling of lam-alef sequence
2021-02-11 12:53:00 -05:00
github-actions[bot]
bd141df9af Merge 5d0a06b6fa into dev 2021-02-11 14:59:28 +00:00
Gabor Kiss-Vamosi
5d0a06b6fa add -Wno-error=cast-function-type to build 2021-02-11 15:58:41 +01:00
Gabor Kiss-Vamosi
29867b46fe Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-02-11 14:55:29 +01:00
Gabor Kiss-Vamosi
a6b86578df fix conflicts 2021-02-11 14:54:41 +01:00
Gabor Kiss-Vamosi
f9c73fe69d update CHANGELOG 2021-02-11 14:53:05 +01:00
Gabor Kiss-Vamosi
ab14266f67 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-02-11 14:42:54 +01:00
Gabor Kiss-Vamosi
0591dec33a fix(delete): delete animation after the children are deleted
New animation can be added during child delete
2021-02-11 14:42:48 +01:00
Xiang Xiao
9b52db0531 fix(conf): remove esp specific inclusion from lv_conf_internal.h (#2065)
* fix(lv_conf_internal.h): remove esp specific inclusion

since the same thing is already included in lv_conf_kconfig.h

* fix(library.json): change space to tab
2021-02-11 11:49:50 +01:00
github-actions[bot]
835ee48699 Merge a62ecda760 into dev 2021-02-11 10:12:23 +00:00
Xiang Xiao
a62ecda760 Fix the various issue found in animation module (#2063)
* fix(anim): relayout lv_anim_t to save 4 bytes

and fix the minor comment issue

* fix(anim): unify the type of time and animation to int32_t or uint32_t

since lv_anim_t use these types internally

* fix(anim): Don't need initialize last_task_run

since lv_anim_start will do this if the list is empty
and remove -1 to improve the accuracy

* fix(anim): remove the return value from anim_ready_handler

since no caller really use the return value

* fix(anim): normalize the time elapse by lv_map

* fix(anim): avoid iterate the list twice in anim_task
2021-02-11 11:11:49 +01:00
Gabor Kiss-Vamosi
e0fb0db735 add all widgets and widget examples 2021-02-10 22:59:53 +01:00
github-actions[bot]
41ac65039a Merge e6de537952 into dev 2021-02-08 15:16:30 +00:00
Carlos Diaz
e6de537952 Add component.mk file for esp-idf make based commands (#2056)
* Add component.mk file for esp-idf make commands

* component.mk: Check for IDF_VER

Checks for IDF_VER when adding COMPONENT_SRCDIRS and COMPONENT_ADD_INCLUDEDIRS
to avoid definig them when not using LVGL as ESP-IDF component.

* component.mk: Remove info messages
2021-02-08 16:15:59 +01:00
github-actions[bot]
bc30cf40c9 Merge 5d3fce8208 into dev 2021-02-08 09:46:02 +00:00
embeddedt
5d3fce8208 fix(gauge,linemeter) draw critical sections/end value in correct spot (#2059)
Revert be4f7a76d4 and
20d56ee6e9 as they both have issues.
2021-02-08 10:45:32 +01:00
github-actions[bot]
49cee3298c Merge fd74f6985a into dev 2021-02-08 09:42:24 +00:00
Carlos Diaz
fd74f6985a Kconfig: Add comments to primary and secondary colors (#2048) 2021-02-08 10:41:51 +01:00
Gabor Kiss-Vamosi
7bec13c2b9 update asserts 2021-02-08 09:53:03 +01:00
Gabor Kiss-Vamosi
956a367dbc refactoring 2021-02-07 22:39:54 +01:00
Gabor Kiss-Vamosi
c43259814a fixes 2021-02-07 21:32:43 +01:00
Gabor Kiss-Vamosi
063d17d842 rework widgets, refactoring, fixes 2021-02-07 12:37:37 +01:00
Gabor Kiss-Vamosi
2cae4a27c1 add some extra components and examples 2021-02-05 16:52:51 +01:00
Gabor Kiss-Vamosi
8a1af8646f add lv_components as src/extra and minor fixes 2021-02-04 14:46:11 +01:00
github-actions[bot]
efcd88a4e4 Merge dfc6719479 into dev 2021-02-03 13:54:53 +00:00
Vitaly Puzrin
dfc6719479 Improve OpenCollective link (#2054)
Will show better icon
2021-02-03 08:54:17 -05:00
github-actions[bot]
b7fdffad0c Merge 2181dd858b into dev 2021-02-03 10:46:41 +00:00
Gabor Kiss-Vamosi
2181dd858b Update FUNDING.yml 2021-02-03 11:46:08 +01:00
Gabor Kiss-Vamosi
315f03f8b6 merge master 2021-02-03 10:33:22 +01:00
Gabor Kiss-Vamosi
7cbcc878cc Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2021-02-03 10:31:33 +01:00
Gabor Kiss-Vamosi
fe47caf161 update CHANGELOG 2021-02-03 10:31:20 +01:00
Gabor Kiss-Vamosi
8b78688c79 fix(text): fix out of bounds read in _lv_txt_get_width 2021-02-03 10:29:45 +01:00
Gabor Kiss-Vamosi
1b25649483 Merge branch 'fix/indev' 2021-02-03 10:06:18 +01:00
Gabor Kiss-Vamosi
0631b17076 fix(indev): clear the indev's act_obj in lv_indev_reset
fixes #2052
2021-02-03 10:06:07 +01:00
Gabor Kiss-Vamosi
cc8b564352 Update master version 2021-02-02 15:17:59 +01:00
Gabor Kiss-Vamosi
21051b8d60 Merge branch 'master' into dev 2021-02-02 15:12:11 +01:00
Gabor Kiss-Vamosi
81e5690b2c Release v7.10.0 2021-02-02 15:12:11 +01:00
github-actions[bot]
890ef3fde2 Merge 222afe9e9b into dev 2021-02-02 14:01:26 +00:00
Gabor Kiss-Vamosi
222afe9e9b Update CHANGELOG.md 2021-02-02 15:00:53 +01:00
github-actions[bot]
28778c7bd7 Merge b38ceb52eb into dev 2021-02-01 13:55:35 +00:00
Gabor Kiss-Vamosi
5c5327f31a clean up widgets 2021-02-01 14:55:08 +01:00
embeddedt
b38ceb52eb fix(lv_version) add proper C++ prototype to functions 2021-02-01 08:55:03 -05:00
github-actions[bot]
24cd0f981b Merge ced4f2a61f into dev 2021-02-01 11:09:46 +00:00
Xiang Xiao
ced4f2a61f fix(font): load_glyph calculate the wrong size(one byte short) of last glyph (#2042)
* fix(font): load_glyph calculate the wrong size(one byte short) of last glyph

* Print the banner before running the font test
2021-02-01 12:09:16 +01:00
github-actions[bot]
138d20440e Merge 5e8d053adf into dev 2021-01-31 18:11:53 +00:00
Carlos Diaz
5e8d053adf fix(issue-templates) correct typos in dev-discussion.md (#2047) 2021-01-31 13:11:08 -05:00
github-actions[bot]
7911730dbd Merge 9fa5216263 into dev 2021-01-31 17:51:52 +00:00
embeddedt
9fa5216263 fix(spinbox) cast ext_attr for C++ (#2051) 2021-01-31 12:51:23 -05:00
github-actions[bot]
0db0bcca1b Merge 27154b632c into dev 2021-01-31 16:41:22 +00:00
minyiky
27154b632c feat(spinbox) add get_step function (#2051)
Adds a static inline function to allow access to the step parameter for the spinbox widget
2021-01-31 11:40:57 -05:00
github-actions[bot]
0daec88c1d Merge 9003f4a9e3 into dev 2021-01-28 08:48:58 +00:00
Xiang Xiao
9003f4a9e3 Fix various issues found in font module(2) (#2044)
* fix(font): Remove the unnecessary and duplicated inclusion

and correct some wrong comment too

* fix(font): Handle the out of memory gracefully in decompression case

and remove the check of gdsc since it is impossible to become null

* fix(font): Use the correct type to avoid the cast and shift

* fix(font): Change the bit field width to occupy the whole byte
2021-01-28 09:48:26 +01:00
github-actions[bot]
b74b200485 Merge 1e91569763 into dev 2021-01-27 10:21:10 +00:00
Xiang Xiao
1e91569763 Fix various issues found in font module (#2040)
* fix(font): Correct _LV_STR_SYMBOL_ generation command

and add _LV_STR_SYMBOL_BULLET to the list

* fix(font): lv_font_load shouldn't call lv_fs_close if lv_fs_open fail

* fix(font): read_bits should return 0 not -1 in error case

to avoid read_bits_signed waste time to extend the sign bit

* fix(font): Correct the return type of read_bits to unsgined int

and extend the sign bit more efficient and correct

* fix(font): Sync LV_FONT_FMT_TXT_CMAP_ value to binary font spec

and then remove the hard code value from source code:
https://github.com/lvgl/lv_font_conv/blame/master/doc/font_spec.md#L96
remove zero fields statement too since font_dsc->cmaps already zero at line 334.

* fix(font): Improve the performance by reading cmap table by once

* fix(font): Improve the loading performance if the header is multipled by 8bits

* fix(font): Read loca table in batch if the size is 32bits

* fix(font): Load the underline related attributes

spec here:
https://github.com/lvgl/lv_font_conv/blame/master/doc/font_spec.md#L55-L56
2021-01-27 11:20:36 +01:00
github-actions[bot]
4f9c79a374 Merge df3cf24db4 into dev 2021-01-27 09:38:14 +00:00
Gabor Kiss-Vamosi
df3cf24db4 fix(indev): fix implementation of LV_PROTECT_EVENT_TO_DISABLED 2021-01-27 10:37:38 +01:00
github-actions[bot]
413b9003b9 Merge b6db434c21 into dev 2021-01-27 09:00:46 +00:00
Gabor Kiss-Vamosi
b6db434c21 fix(btnmatrix): fix lv_btnmatrix_get_active_btn_text() when used in a group 2021-01-27 10:00:08 +01:00
github-actions[bot]
fe377d5b36 Merge 19f769f1d7 into dev 2021-01-26 17:19:03 +00:00
embeddedt
19f769f1d7 Fix incorrect version for new feature in CHANGELOG 2021-01-26 12:18:33 -05:00
github-actions[bot]
c117dcadd0 Merge dacca6eeb8 into dev 2021-01-26 17:17:17 +00:00
scandermore
dacca6eeb8 feat(indev) allow input events to be passed to disabled objects (#2033) 2021-01-26 12:16:47 -05:00
Gabor Kiss-Vamosi
e02c7bd415 add LV_DRAW_COMPLEX 2021-01-26 16:38:21 +01:00
Gabor Kiss-Vamosi
1f4c5adc30 remove LV_USE_ANIMATION/FS/GROUP 2021-01-26 15:09:36 +01:00
Gabor Kiss-Vamosi
07268829c4 refectoring and restructoring 2021-01-26 14:12:35 +01:00
Gabor Kiss-Vamosi
c899595bff refactoring, commenting and clean up 2021-01-24 16:24:02 +01:00
Gabor Kiss-Vamosi
f84720aa95 merge master 2021-01-23 23:50:00 +01:00
Gabor Kiss-Vamosi
8d3f43cf5c all widgets work in a basic way 2021-01-23 23:03:50 +01:00
Gabor Kiss-Vamosi
ea6ee3d198 refactoring and fixes 2021-01-23 20:46:42 +01:00
Gabor Kiss-Vamosi
1d6d2eb9d9 change custom drawer to event 2021-01-21 15:18:20 +01:00
github-actions[bot]
9e2fcfd1d0 Merge eaacde6722 into dev 2021-01-20 10:58:03 +00:00
Linch
eaacde6722 fixs draw pattern stack-use-after-scope error (#2030)
* fixs draw pattern stack-use-after-scope error

* Update CHANGELOG.md
2021-01-20 11:57:33 +01:00
github-actions[bot]
040e30020a Merge 762c0a3274 into dev 2021-01-20 10:57:29 +00:00
Gabor Kiss-Vamosi
762c0a3274 Update ROADMAP.md 2021-01-20 11:56:54 +01:00
github-actions[bot]
cd815e2aa7 Merge f6fe3dcc8c into dev 2021-01-19 14:58:02 +00:00
Gabor Kiss-Vamosi
f6fe3dcc8c Update ROADMAP.md 2021-01-19 15:57:27 +01:00
github-actions[bot]
9ec84e2662 Merge 011f105038 into dev 2021-01-19 14:10:00 +00:00
Gabor Kiss-Vamosi
011f105038 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-01-19 14:54:10 +01:00
Gabor Kiss-Vamosi
aaf4ee95f1 fix(release script) add missed merging of lv_examples to release branch 2021-01-19 14:53:54 +01:00
Gabor Kiss-Vamosi
9c1d81db90 Update dev version 2021-01-19 14:50:06 +01:00
Gabor Kiss-Vamosi
7740085a08 Merge branch 'master' into dev 2021-01-19 14:36:38 +01:00
Gabor Kiss-Vamosi
0aefab358b Release v7.9.1 2021-01-19 14:36:38 +01:00
Gabor Kiss-Vamosi
b639ddc3bc Update CHANGELOG.md 2021-01-19 14:32:22 +01:00
Gabor Kiss-Vamosi
c03ffd7c3c Update CHANGELOG.md 2021-01-19 14:31:47 +01:00
github-actions[bot]
32b2381168 Merge 60be7c1cee into dev 2021-01-19 09:09:03 +00:00
Xiang Xiao
60be7c1cee Fix minor issues found in task module (#2029)
* fix(task): Remove the unnecessary cast and init

and correct the comment too

* fix(task): Implement lv_task_create directly

to avoid lv_task_set_prio which is a time consuming operation.

* fix(task): Exclude the return value computing from the idle time

and change handler_start and time_till_next to local variables

* fix(task): Remove zero task_deleted and task_created in lv_task_exec

since the loop in lv_task_handler already do the same thing
2021-01-19 10:08:30 +01:00
Gabor Kiss-Vamosi
c64810dac4 add custom draw function to styles 2021-01-18 15:48:46 +01:00
github-actions[bot]
3dbaa25911 Merge a637f415d7 into dev 2021-01-18 08:14:19 +00:00
Xiang Xiao
a637f415d7 Fix minor issue found in color module (#2024)
* fix(color): Return the opposite value in lv_color_premult when LV_COLOR_DEPTH equals 1

and correct the comment too

* fix(color): Correct the comment and alignment issue

* fix(color): Remove LV_COLOR_[SET|GET]_G16_SWAP

to simplify LV_COLOR_16_SWAP process

* fix(color): Correct the cast usage

* fix(color): Remove LV_MATH_ABS in lv_color_rgb_to_hsv

since delta can never become a negative number

* fix(color): Align LV_COLOR_[SET|GET]_A1 with other similar macro
2021-01-18 09:13:42 +01:00
github-actions[bot]
680d537607 Merge c9b97feea8 into dev 2021-01-17 14:04:07 +00:00
Xiang Xiao
c9b97feea8 fix(formatting): various improvements (#2028)
* fix(formatting): Remove the duplicated space

* fix(formatting): Remove the duplicated 'the'

* fix(spell): run codespell -w for the code base
2021-01-17 09:03:31 -05:00
github-actions[bot]
bb2d633e33 Merge 873551bb5e into dev 2021-01-15 19:31:51 +00:00
Xiang Xiao
873551bb5e fix(area): minor improvements (#2023)
* fix(area): Correct r_sqrd and dist(int32_t to uint32_t)

since these two variables never become negative

* fix(area): Return early in _lv_area_is_in if pointer outside area

The origin code always does the full check if radius != 0, but it
is unnecessary when is_in equals true.
2021-01-15 14:31:16 -05:00
Gabor Kiss-Vamosi
4c93793fe5 Merge branch 'master' of https://github.com/littlevgl/lvgl into dev 2021-01-12 19:27:21 +01:00
github-actions[bot]
31622a811d Merge bc25998c5b into dev 2021-01-12 18:26:55 +00:00
Xiang Xiao
bc25998c5b Minor fix found in mem module (#2014)
* fix(mem): Utilize ALIGN_MASK as much as possible

to avoid check LV_ARCH_64 again and again and
correct the comment about MEM_UNIT

* fix(mem): Simplify _lv_memset implementation by SET8/SET32/REPEAT8 macro

* fix(mem): Handle the out of memory gracefully in _lv_mem_buf_get

don't modify the state in the failure

* fix(mem): Remove the unnecessary memset, memcpy and assignment
2021-01-12 19:26:26 +01:00
Gabor Kiss-Vamosi
09ffbb80e7 rwork and update widgets 2021-01-12 19:22:38 +01:00
github-actions[bot]
febe314b3b Merge 9ca4ffd64d into dev 2021-01-12 16:02:18 +00:00
Xiang Xiao
9ca4ffd64d fix(format) correct comments in lv_gc.h, lv_ll.h and lv_log.h (#2016) 2021-01-12 11:01:45 -05:00
github-actions[bot]
8e93df38a1 Merge d6ca15a749 into dev 2021-01-12 15:14:18 +00:00
Xiang Xiao
d6ca15a749 Move LV_GC_INCLUDE to the common place(gc.h) (#2010)
* Move LV_GC_INCLUDE to the common place(gc.h)

to avoid the duplication in many source files

* fix(theme template): Always initialize _lv_theme_material_styles

just like what other theme do
2021-01-12 16:13:41 +01:00
github-actions[bot]
49124b4ef0 Merge 486053012d into dev 2021-01-12 11:16:38 +00:00
Xiang Xiao
486053012d Various fs module fix and improvement (#2019)
* fix(fs): Check driver ready in lv_fs_dir_open and lv_fs_free_space

* fix(fs): Avoid the memory leak in lv_fs_open and lv_fs_dir_open

* fix(fs): Fix typo error in lv_fs_trunc(tell_cb should be trunc_cb)

* fix(fs): Make lv_fs_dir_close same as lv_fs_close when dir_close_cb equals NULL

* fix(fs): Handle the struct cleanup correctly

* improve(fs): Don't allocate memory when file_size or rddir_size equal zero

pass the address of file_d or dir_d to open_cb or dir_open_cb instead, so
implementor can point file_d/dir_d to other location. In many cases(POSIX),
file system will allocate the context for us, this improvement could avoid
we allocate the 4/8 bytes intermediate space.
2021-01-12 12:16:02 +01:00
github-actions[bot]
47ad247988 Merge c083d19b52 into dev 2021-01-12 11:07:33 +00:00
Xiang Xiao
c083d19b52 Minor fix found in async module (#2015)
* fix(async): Move lv_async_info_t from lv_async.h to lv_async.c

since the user don't need know the implementation detail

* fix(async): Don't set user_data again

since lv_task_create already save it for us
2021-01-12 12:07:00 +01:00
github-actions[bot]
f170e1d2ec Merge 138fcfec79 into dev 2021-01-12 11:00:50 +00:00
Xiang Xiao
138fcfec79 fix(math): Correct the function argument type declaration (#2013)
1.all argument of _lv_bezier3 should be uint32_t since the input and output are unsigned
2.the return type of _lv_map should be int32_t since the type of output range is int32_t
3.remove the unnecessary cast
2021-01-12 12:00:20 +01:00
github-actions[bot]
595bb0b062 Merge c20d5d81f2 into dev 2021-01-11 13:38:56 +00:00
Xiang Xiao
c20d5d81f2 Minor fix found in Kconfig (#2005)
* Trim trailing whitespace from Kconfig

* Replace all tab to space in Kconfig

* Add more dependence between opions to Kconfig

* Add LV_USE_FONT_SUBPX for LV_FONT_SUBPX_BGR in Kconfig

* Fix typo error(LV_USE_DROPBOX->LV_USE_DROPDOWN) in Kconfig

* Remove LV_THEME_MATERIAL dependence from the child of LV_THEME_DEFAULT_FLAG

since LV_THEME_DEFAULT_FLAG already depends on LV_THEME_MATERIAL

* Rename LV_MEM_SIZE_BYTES to LV_MEM_SIZE_KILOBYTES

since this opion use KiB as the unit
2021-01-11 14:38:17 +01:00
Gabor Kiss-Vamosi
0f0c2790fb merge master 2021-01-11 14:35:26 +01:00
Xiang Xiao
81b13bf3b6 Remove the double empty lines from all source files (#2009)
* Run dos2unix for all source files

* Remove the trail space from all source files

* Remove the double empty lines from all source files
2021-01-11 14:28:00 +01:00
github-actions[bot]
18444e5ce3 Merge 52ba06a228 into dev 2021-01-11 12:11:25 +00:00
udoudou
52ba06a228 Update CHANGELOG.md (#2011)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2021-01-11 13:10:54 +01:00
github-actions[bot]
6e862b0f83 Merge 923f989b39 into dev 2021-01-11 12:10:32 +00:00
udoudou
923f989b39 Fix(indev): Don't leave edit mode if there is only one object in the group (#1999)
* Release v7.7.0

* Fix(indev): Don't leave edit mode if there is only
 one object in the group

* Remove unnecessary judgment conditions

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2021-01-11 13:10:02 +01:00
github-actions[bot]
b66600d0c8 Merge a2e9f03eda into dev 2021-01-11 09:26:54 +00:00
Julian Mitchell
a2e9f03eda Fix build when LV_USE_GPU_NXP_PXP is enabled (#1982)
* Fix build when LV_USE_GPU_NXP_PXP is enabled

* Allow fill_normal to use PXP
2021-01-11 10:26:24 +01:00
github-actions[bot]
57df8f4175 Merge 4cff14f823 into dev 2021-01-11 09:23:20 +00:00
Gabor Kiss-Vamosi
4cff14f823 fix(gou_nxp_pxp): fix incorrent define name 2021-01-11 10:22:23 +01:00
github-actions[bot]
1a04b54f2b Merge 0d52a60200 into dev 2021-01-09 20:25:57 +00:00
github-actions[bot]
6ae11b7a46 Merge c988b68605 into dev 2021-01-09 20:25:39 +00:00
embeddedt
0d52a60200 Update CHANGELOG.md 2021-01-09 15:25:21 -05:00
embeddedt
c988b68605 fix(msgbox) use the animation time provided
Fixes #2008
2021-01-09 15:25:07 -05:00
Gabor Kiss-Vamosi
04aa8de0f3 change data inheritance model (drop ext) 2021-01-08 21:30:14 +01:00
github-actions[bot]
4249b9edc5 Merge 7d3a6c8de4 into dev 2021-01-08 13:36:42 +00:00
Gabor Kiss-Vamosi
7d3a6c8de4 Update main.yml 2021-01-08 14:35:39 +01:00
github-actions[bot]
2aba361ebd Merge 636ea46a44 into dev 2021-01-08 13:34:17 +00:00
Gabor Kiss-Vamosi
636ea46a44 Delete close-if-no-template.yml 2021-01-08 14:33:49 +01:00
github-actions[bot]
c094773b89 Merge 0e2c83813f into dev 2021-01-08 13:33:31 +00:00
Gabor Kiss-Vamosi
0e2c83813f Create main.yml 2021-01-08 14:32:55 +01:00
github-actions[bot]
0bd48925dc Merge ccc847e975 into dev 2021-01-08 13:25:21 +00:00
Gabor Kiss-Vamosi
ccc847e975 Create close-if-no-template.yml 2021-01-08 14:24:53 +01:00
github-actions[bot]
4b14785e40 Merge cabbaf093c into dev 2021-01-08 13:24:51 +00:00
Gabor Kiss-Vamosi
cabbaf093c Delete auto-close-if-no-template.yml 2021-01-08 14:24:24 +01:00
github-actions[bot]
a82e6b89e8 Merge d31304a1cc into dev 2021-01-08 13:23:20 +00:00
Gabor Kiss-Vamosi
d31304a1cc Create auto-close-if-no-template.yml 2021-01-08 14:22:51 +01:00
github-actions[bot]
955ad6fe96 Merge 6de31e9ffc into dev 2021-01-08 13:11:51 +00:00
Gabor Kiss-Vamosi
6de31e9ffc Update bug-report.md 2021-01-08 14:11:23 +01:00
github-actions[bot]
295d3b42bd Merge e457c33dc2 into dev 2021-01-08 13:10:41 +00:00
Gabor Kiss-Vamosi
e457c33dc2 Update dev-discussion.md 2021-01-08 14:10:12 +01:00
github-actions[bot]
045163cc1d Merge 9bb7ff30ec into dev 2021-01-08 13:09:12 +00:00
Gabor Kiss-Vamosi
9bb7ff30ec Update and rename all-other-issues.md to dev-discussion.md 2021-01-08 14:08:39 +01:00
github-actions[bot]
b9e415fef0 Merge f0fd2b757f into dev 2021-01-08 11:52:51 +00:00
Gabor Kiss-Vamosi
f0fd2b757f Update bug-report.md 2021-01-08 12:52:23 +01:00
github-actions[bot]
68def59570 Merge 97f1493202 into dev 2021-01-08 11:52:13 +00:00
Gabor Kiss-Vamosi
97f1493202 Update bug-report.md 2021-01-08 12:51:44 +01:00
github-actions[bot]
c8ca027fc6 Merge 20975a2290 into dev 2021-01-07 13:52:49 +00:00
Gabor Kiss-Vamosi
20975a2290 Update all-other-issues.md 2021-01-07 14:52:19 +01:00
github-actions[bot]
684442d2f3 Merge 7dc3262855 into dev 2021-01-07 13:51:14 +00:00
Gabor Kiss-Vamosi
7dc3262855 Update config.yml 2021-01-07 14:50:43 +01:00
github-actions[bot]
6ecf888dbb Merge 0110a1888d into dev 2021-01-07 13:49:43 +00:00
Gabor Kiss-Vamosi
0110a1888d Update bug-report.md 2021-01-07 14:49:09 +01:00
github-actions[bot]
843e5f4236 Merge 74564b7c7e into dev 2021-01-07 12:46:49 +00:00
embeddedt
74564b7c7e fix(canvas): spelling in log messages 2021-01-07 07:46:20 -05:00
github-actions[bot]
e12eedc0e3 Merge b391c64434 into dev 2021-01-07 12:33:32 +00:00
Gabor Kiss-Vamosi
b391c64434 Update config.yml 2021-01-07 13:33:01 +01:00
Gabor Kiss-Vamosi
a4eab49e94 fix conflicts 2021-01-06 12:09:53 +01:00
Gabor Kiss-Vamosi
509a56fde9 fix(dropdown): fix selecting options after the last one
fix #1996
2021-01-06 12:06:51 +01:00
Gabor Kiss-Vamosi
8cd07b6ff5 fix(cpicker): fix division by zero
fix #1992
2021-01-06 11:53:51 +01:00
embeddedt
ae2fbdb9ef fix(win): incorrect switch syntax 2021-01-05 17:10:57 -05:00
Gabor Kiss-Vamosi
8aaff10bd5 fix(release script): fix regexp to update the required LVGL version in lv_examples.h 2021-01-05 16:33:07 +01:00
Gabor Kiss-Vamosi
e3ad7918e2 Update master version 2021-01-05 16:04:29 +01:00
Gabor Kiss-Vamosi
ffe9ae5311 Merge branch 'master' into dev 2021-01-05 15:57:36 +01:00
Gabor Kiss-Vamosi
e66f19e5ce Release v7.9.0 2021-01-05 15:57:36 +01:00
github-actions[bot]
95394e2b2f Merge 8ed224fd63 into dev 2021-01-05 14:52:31 +00:00
Gabor Kiss-Vamosi
8ed224fd63 fix warning 2021-01-05 15:51:59 +01:00
github-actions[bot]
e0eb79043f Merge 998ad66c84 into dev 2021-01-05 14:47:37 +00:00
Gabor Kiss-Vamosi
998ad66c84 fix(kconfig): fix redefinition of LV_SPRINTF_DISABLE_FLOAT if no Kconfig 2021-01-05 15:46:57 +01:00
Gabor Kiss-Vamosi
6db5fa38ea minor foratting 2021-01-05 13:02:08 +01:00
Gabor Kiss-Vamosi
a42d3942c6 add table and btnmatrix 2021-01-05 13:01:07 +01:00
github-actions[bot]
70a9e486c6 Merge 83c55c2a64 into dev 2021-01-04 17:16:10 +00:00
Gabor Kiss-Vamosi
83c55c2a64 Update ROADMAP.md 2021-01-04 18:15:37 +01:00
Gabor Kiss-Vamosi
9c55d77617 layout update 2021-01-04 17:26:09 +01:00
github-actions[bot]
ac910f278a Merge 6ed420e043 into dev 2021-01-04 14:28:13 +00:00
Carlos Diaz
6ed420e043 Kconfig: Handle LV_SPRINTF_DISABLE_FLOAT (#1988)
* Kconfig: Handle LV_SPRINTF_DISABLE_FLOAT

* Update CHANGELOG

* Remove debug code

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2021-01-04 15:27:38 +01:00
github-actions[bot]
0159438692 Merge de44f74522 into dev 2021-01-04 14:13:13 +00:00
Gabor Kiss-Vamosi
de44f74522 fix(gauge): fix redraw with image needle
fix #1993
2021-01-04 15:12:34 +01:00
github-actions[bot]
f948f2dcf8 Merge ed5f91ab72 into dev 2021-01-04 13:18:43 +00:00
Jan Van Winkel
ed5f91ab72 Add support for Zephyr intergartion (#1979)
* Removed src/lv_conf_zephyr.h

Removed src/lv_conf_zephyr.h as it is maintained in the Zephyr build it self.

* CMakeLists.txt: Added support for Zephyr RTOS

Added support to build LVGL as library for Zephyr RTOS

* Added support to use LVGL repo as Zephyr module

Added support to use the LVGL repository as a Zephyr module repository
2021-01-04 14:18:11 +01:00
github-actions[bot]
853dc6bd79 Merge e5f58151ac into dev 2021-01-04 09:48:05 +00:00
robekras
e5f58151ac Update lv_disp.c (#1990)
Check d->scr_to_load for not beeing NULL.

See forum post https://forum.lvgl.io/t/lv-scr-load-anim-does-not-work-properly/4057
2021-01-04 10:47:34 +01:00
github-actions[bot]
7d9f30face Merge 26ab373b43 into dev 2021-01-04 08:55:40 +00:00
embeddedt
26ab373b43 fix(layout): workaround overflow by implementing a recursion threshold (#1986)
* fix(layout): workaround overflow by implementing a recursion threshold

* Update CHANGELOG.md
2021-01-04 09:55:13 +01:00
github-actions[bot]
ce9ba8220f Merge 3dbee9b584 into dev 2021-01-04 08:46:44 +00:00
Gabor Kiss-Vamosi
3dbee9b584 refactor(lv_conf_internal): simplify the uppercase conversation added in aba10b0
Reaeted to #1989
2021-01-04 09:46:01 +01:00
github-actions[bot]
dcef7b8b92 Merge 56a48e0173 into dev 2021-01-04 08:43:36 +00:00
Gabor Kiss-Vamosi
56a48e0173 Merge branch 'master' of https://github.com/littlevgl/lvgl 2021-01-04 09:42:59 +01:00
Gabor Kiss-Vamosi
aba10b0170 fix(lv_conf_internal): be sure Kconfig defines are always uppercase
fixes #1989
2021-01-04 09:42:50 +01:00
Gabor Kiss-Vamosi
68b27f6077 remove margin 2021-01-03 00:32:21 +01:00
Gabor Kiss-Vamosi
d027a4f00f update layouts 2021-01-03 00:12:42 +01:00
Gabor Kiss-Vamosi
98c2cdde3a experiemt with simplified classes 2021-01-01 13:57:59 +01:00
github-actions[bot]
d09b52bc61 Merge f0c52b3511 into dev 2020-12-30 16:02:05 +00:00
Themba Dube
f0c52b3511 Add note about base_dir functions requiring LV_USE_BIDI 2020-12-30 11:01:24 -05:00
github-actions[bot]
ab66ee0270 Merge 6dd1884228 into dev 2020-12-30 15:55:09 +00:00
liebman
6dd1884228 Fix kconfig warnings (#1967)
* quote string defaults for Kconfig values to eliminate warnings

* don't add \ in default for LV_TICK_CUSTOM_SYS_TIME_EXPR
(tho its needed on linux and MacOS) as I can't test on Windows
2020-12-30 16:54:38 +01:00
Gabor Kiss-Vamosi
1d2d73438d remove LV_STATE_BORN 2020-12-30 14:45:02 +01:00
Gabor Kiss-Vamosi
9878d83ff7 minor cleanup 2020-12-30 14:22:40 +01:00
Gabor Kiss-Vamosi
2e58d4b07e refactoring 2020-12-30 14:21:07 +01:00
Gabor Kiss-Vamosi
56159d60a0 fix build error 2020-12-30 14:20:06 +01:00
Gabor Kiss-Vamosi
a7f9508ec4 add dropdown 2020-12-30 14:18:25 +01:00
Gabor Kiss-Vamosi
f0999ccbd4 merge master 2020-12-28 13:08:26 +01:00
Gabor Kiss-Vamosi
bbc995d846 start dropdown 2020-12-28 13:00:18 +01:00
Gabor Kiss-Vamosi
c536ca55cb add roller 2020-12-28 12:28:02 +01:00
Gabor Kiss-Vamosi
d43a1bc14f add style caching 2020-12-27 13:37:54 +01:00
github-actions[bot]
b7a02e130a Merge 20d56ee6e9 into dev 2020-12-27 10:31:32 +00:00
embeddedt
20d56ee6e9 fix(linemeter): draw first critical needle with correct color (#1978)
* fix(linemeter): draw first critical needle with correct color

* Update CHANGELOG.md
2020-12-27 11:30:59 +01:00
github-actions[bot]
d33d816632 Merge 196bcb9b0e into dev 2020-12-24 16:13:19 +00:00
embeddedt
196bcb9b0e Update pull_request_template.md 2020-12-24 11:12:53 -05:00
Gabor Kiss-Vamosi
61c977e2ae test style caching 2020-12-24 00:24:49 +01:00
github-actions[bot]
aca9512213 Merge cee779a56d into dev 2020-12-23 21:00:32 +00:00
Hamid Reza Mehrabian
cee779a56d Fix #1959: wrong glyph data 2020-12-23 16:00:02 -05:00
Amir Gonnen
f532be9051 lvgl.h: Add lv_version functions (#1973)
These static inline functions return the values of the VERSION macros, making them available for Micropython

See also https://github.com/lvgl/lv_examples/pull/85#issuecomment-749506978
2020-12-23 09:25:06 -05:00
github-actions[bot]
53fd7ec37b Merge 07b6d93de4 into dev 2020-12-22 09:44:57 +00:00
Andrey
07b6d93de4 lv_chart: Fix division by zero issue when all points are equal (#1962)
* Fix division by zero issue when all points are equal

As the title says, when all the points are equal, it attempts division by zero, and in some cases it can result in funny behavior.
Slightly kludgy fix, but not a significant performance impact.

* Actually fix the division by zero issue both ways

Previous commit was slightly broken and only worked one way

* Fix range setting instead of drawing

* Missing y_tmp
2020-12-22 10:44:17 +01:00
Gabor Kiss-Vamosi
31372d6972 add chart to v8 with zoom and scroll support (not finished) 2020-12-21 20:16:59 +01:00
github-actions[bot]
ffdabfd16d Merge 091174069d into dev 2020-12-21 17:55:20 +00:00
Gabor Kiss-Vamosi
091174069d fix(textarea): cursor position after hiding character in password mode 2020-12-21 18:54:47 +01:00
github-actions[bot]
6d063ba3aa Merge 43ed3eb1f4 into dev 2020-12-21 15:14:13 +00:00
Riccardo
43ed3eb1f4 lv_txt: support extended ascii codes in lv_txt_unicode_to_iso8859_1() (#1963) 2020-12-21 16:13:42 +01:00
Gabor Kiss-Vamosi
aed63d9cbd optimize size of the style 2020-12-21 14:19:35 +01:00
Gabor Kiss-Vamosi
093a6652cf integarte label and checkbox 2020-12-21 10:56:25 +01:00
github-actions[bot]
1661d5ede8 Merge c4d978fa6f into dev 2020-12-20 14:37:02 +00:00
Gabor Kiss-Vamosi
c4d978fa6f fix(textarea): buffer overflow in password mode with UTF-8 characters
fixes #1960
2020-12-20 15:36:28 +01:00
github-actions[bot]
5236ad0f9b Merge 0ca874bc49 into dev 2020-12-20 14:20:22 +00:00
Gabor Kiss-Vamosi
0ca874bc49 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-12-20 15:19:33 +01:00
Gabor Kiss-Vamosi
3d22dc5722 dropdown: fix typo causing build error 2020-12-20 13:39:00 +01:00
github-actions[bot]
89555372e8 Merge 62d21734d9 into dev 2020-12-20 12:35:15 +00:00
Mattia Maldini
62d21734d9 Improved ESP-IDF integration (#1961)
* Removed LV_CONF_SKIP definition from CMake to avoid redefinition warnings; added more Kconfig options

* Bumped up version and removed unnecessary default values

* Added user data configuration to KConfig

* Moved user data options to "Feature Usage" menu
2020-12-20 13:34:48 +01:00
github-actions[bot]
7f15d06a2e Merge cd69be12d1 into dev 2020-12-20 12:33:03 +00:00
Gabor Kiss-Vamosi
cd69be12d1 Update pull_request_template.md 2020-12-20 13:32:37 +01:00
github-actions[bot]
5e2dee26cd Merge 1b83855c72 into dev 2020-12-20 12:32:11 +00:00
Gabor Kiss-Vamosi
1b83855c72 Create pull_request_template.md 2020-12-20 13:31:44 +01:00
Ashraf Kamel
2ea03e3745 add arabic keyboard (#1964)
* add arabic keyboard

* add arabic keyboard
2020-12-20 13:25:25 +01:00
github-actions[bot]
5a88573fdb Merge 243145d8c9 into dev 2020-12-20 12:21:41 +00:00
Gabor Kiss-Vamosi
243145d8c9 add arabic processin to to window title and lv_dropdown_add_option 2020-12-20 13:21:06 +01:00
github-actions[bot]
c8ff9f1d5c Merge cb021a425a into dev 2020-12-20 10:00:11 +00:00
Gabor Kiss-Vamosi
cb021a425a calendar: fix build error 2020-12-20 10:59:42 +01:00
github-actions[bot]
cb3ab5daa7 Merge b0fecc6bb2 into dev 2020-12-20 09:57:10 +00:00
Gabor Kiss-Vamosi
b0fecc6bb2 update CHANGELOG 2020-12-20 10:56:30 +01:00
Gabor Kiss-Vamosi
4e177e01ea Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-12-20 10:55:25 +01:00
Gabor Kiss-Vamosi
2bf91dbbb5 calendar: make get_day_of_week() public 2020-12-20 10:55:20 +01:00
Gabor Kiss-Vamosi
aac672e88b fix(draw): free buffer used for arabic processing 2020-12-20 10:54:40 +01:00
Gabor Kiss-Vamosi
93d7bd4cf5 release script: update version in Kconfig 2020-12-20 10:53:06 +01:00
Gabor Kiss-Vamosi
181692605a make style transition more flexible 2020-12-20 10:46:41 +01:00
Gabor Kiss-Vamosi
4fe3821719 add color filter style property 2020-12-19 06:51:14 +01:00
Gabor Kiss-Vamosi
01a6bacbd7 start to update themes 2020-12-18 15:41:22 +01:00
Gabor Kiss-Vamosi
be060a0dc7 handle style change check on state change 2020-12-16 20:15:27 +01:00
Gabor Kiss-Vamosi
a2bf576f7c make styles classes, add transitions again, add LV_STATE_SCROLLED 2020-12-16 19:25:42 +01:00
Gabor Kiss-Vamosi
74d19b109c experiements with improving styles 2020-12-16 10:22:13 +01:00
Gabor Kiss-Vamosi
67369eed22 Update dev version 2020-12-15 20:13:53 +01:00
Gabor Kiss-Vamosi
57c2201386 Merge branch 'master' into dev 2020-12-15 19:59:27 +01:00
Gabor Kiss-Vamosi
9e72cb0000 Release v7.8.1 2020-12-15 19:59:27 +01:00
Gabor Kiss-Vamosi
6d964609e5 add btn and arc to classes 2020-12-14 10:56:59 +01:00
Gabor Kiss-Vamosi
ec124559f6 add lv_obj, lv_bar, lv_slider to work with classes 2020-12-11 18:04:23 +01:00
github-actions[bot]
0ea6bcd40c Merge 9b579f3fad into dev 2020-12-11 15:42:50 +00:00
Gabor Kiss-Vamosi
9b579f3fad fix(test): use sys/time.h only if built in test mode 2020-12-11 16:42:15 +01:00
Gabor Kiss-Vamosi
417e32b4df fix: add missing lv_txt_ap.h include to some C files 2020-12-11 16:40:52 +01:00
Rhaoma
0a7f6a6331 Add option to align title text in window (#1953)
* Add option to align title text in window 

I found that i really needed a basic way to align the title text in a window, and therefore i did a bit of tinkering and came up with this solution. Mind you that I'm very new to this so it might not be the most optimal way. I have tested a bit and it pretty looked promising,
I have of course written the alignments as I felt was most suitable, but I shouldn't be the judge of that.
Current alignment:

LV_TXT_FLAG_CENTER makes the text align in the center of the header but ensures it can’t overextend into to header button area;

LV_TXT_FLAG_RIGHT makes the text align at the right side, but takes the right side header buttons into account

LV_TXT_FLAG_FIT & LV_TXT_FLAG_EXPAND I wasn’t too sure about what to do so as of now it just aligns them as normal

LV_TXT_FLAG_NONE Is equal to no flag set by the user and therefore I have just set it to the default coords, like normal. The text then align at the left side.

* Update lv_win.h

* Added functions

Added function to set and get alignment of the header title as requested

* Added functions

Added setter and getter functions for the header title alignment as requested
2020-12-11 16:37:20 +01:00
Gabor Kiss-Vamosi
396ef46307 Merge remote-tracking branch 'origin/dev-v8' into feat/class 2020-12-10 11:27:39 +01:00
Gabor Kiss-Vamosi
b04dea5971 fix warnings 2020-12-10 11:18:30 +01:00
Gabor Kiss-Vamosi
e90ce9d4b7 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-12-10 11:15:01 +01:00
Gabor Kiss-Vamosi
5fc66822b9 feat(img_cache): allow disabling image cacheing
related to #1954
2020-12-10 11:14:26 +01:00
github-actions[bot]
e2d7fa4477 Merge b565a69c76 into dev 2020-12-09 18:07:53 +00:00
embeddedt
b565a69c76 fix(dropdown): always invalidate if selected option changes
Reported on the forum: https://forum.lvgl.io/t/dropdown-selected-value-doesnt-change-after-calling-lv-dropdown-set-selected/3983
2020-12-09 13:07:21 -05:00
Gabor Kiss-Vamosi
861f07bb77 feat(chart): add lv_chart_remove_series and lv_chart_hide_series 2020-12-09 14:15:56 +01:00
Gabor Kiss-Vamosi
6d4de78756 set version number 2020-12-09 14:11:14 +01:00
Gabor Kiss-Vamosi
a905be4f90 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-12-09 14:02:36 +01:00
Gabor Kiss-Vamosi
99bb4cb8f1 fix(page): fix LV_SCOLLBAR_MODE_DRAG
fixes
https://forum.lvgl.io/t/page-scrollbar-appears-even-if-scrollbar-mode-is-set-to-lv-scrlbar-mode-drag/3883
2020-12-09 14:02:28 +01:00
embeddedt
03d2d10f17 Fix #1955: wrong display size macro being used 2020-12-08 07:45:52 -05:00
Gabor Kiss-Vamosi
b80f1dbf14 fix(lv_scr_load_anim): fix when multiple screen are loaded at tsame time with delay 2020-12-07 18:04:40 +01:00
embeddedt
b9aff01102 Correct preprocessor syntax (#1951) 2020-12-05 19:47:50 -05:00
Amir Gonnen
ba5ee315e9 lv_txt.h: Add missing include (#1949) 2020-12-03 18:42:42 -05:00
Gabor Kiss-Vamosi
b760a7bd33 Merge branch 'dev' into feat/class 2020-12-02 11:37:42 +01:00
Gabor Kiss-Vamosi
bde7c58caa merge master 2020-12-02 11:32:44 +01:00
nazar01
568c2ee688 Spelling, docs fixing, and cosmetic code fixing (#1944)
* Spelling and docs fixes

* Fix #endif comments

* Fix function declarations (fix param names and remove duplicate)
2020-12-02 11:25:15 +01:00
fvanroie
37dcfab21d Fix "lv_timer.h" includes in dev (#1943)
* Fix "lv_timer.h" includes

* Kick CI

* Merge incoming changes

* refactor(scroll): lv_obj_scroll_to_obj -> lv_obj_scroll_to_child

* kick CI

Co-authored-by: fvanroie <cpt_jack@msn.com>
Co-authored-by: embeddedt <42941056+embeddedt@users.noreply.github.com>
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2020-12-02 09:59:49 +01:00
Gabor Kiss-Vamosi
fe5796f268 refactor(scroll): lv_obj_scroll_to_obj -> lv_obj_scroll_to_child 2020-12-02 09:38:23 +01:00
Gabor Kiss-Vamosi
70d00469c6 fix build errors 2020-12-02 09:25:48 +01:00
Gabor Kiss-Vamosi
d51bb29c24 merge master 2020-12-01 15:32:49 +01:00
Gabor Kiss-Vamosi
2aad9aaebd Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-12-01 15:27:52 +01:00
Gabor Kiss-Vamosi
4f6fb723ef fix roller LV_ROLLER_MODE_INIFINITE refactoring 2020-12-01 15:27:44 +01:00
Gabor Kiss-Vamosi
2c0ca03319 Update master version 2020-12-01 15:13:30 +01:00
Gabor Kiss-Vamosi
45b8f5856d Merge branch 'dev' of https://github.com/lvgl/lvgl into dev 2020-12-01 15:09:47 +01:00
Gabor Kiss-Vamosi
51f95f3286 Release v7.8.0 2020-12-01 15:08:50 +01:00
Gabor Kiss-Vamosi
280bab33c6 Merge branch 'master' into dev 2020-12-01 15:08:50 +01:00
github-actions[bot]
8e1d4c06b1 Merge bf08ff444e into dev 2020-12-01 14:04:57 +00:00
Carlos Diaz
bf08ff444e Update Kconfig. (#1917)
* Kconfig: Add missing _HEX to LV_COLOR_TRANSP option.

* lv_conf_checker: Define LV_CONF_SKIP if CONFIG_LV_CONF_SKIP is defined.

* fix(indev): disabled object shouldn't absorb clicks but let the parent to be clicked

* Update README.md

* fix(arabic): support processing again alraedy processed texts with _lv_txt_ap_proc

* fix(textarea): support Arabic letter connections

fixes #1888

* Fix #1924: incorrect date on changelog

December 1st is two weeks from 7.7.2 release.

* Kconfig: Fix LV_CONF_MINIMAL related options.

* fix(arabic): support Arabic letter connections

fixes #1920

* fix(arabic): support Arabic letter connections in value string property

* Update CHANGELOG.md

* Update CHANGELOG.md

* Kconfig: Add Zephyr specific code.

* fix: fix double include in lv_obj.c

fix #1926

* Removed trailing semi-colon from macros (#1928)

* Removed commented out test definition

Removed commented out test definition LV_BUILD_TEST

* Remove blank line

* Fix comment spelling

* Added blank line

* Removed trailing semi-colon in macros

* fix(indev): in LV_INDEV_TYPE_BUTTON recognize 1 cycle long presses too

Fixes https://forum.lvgl.io/t/bug-in-indev-button-proc-misses-buttons-that-are-pressed-for-a-single-callback/3699

* fix(arc): make arc work with encoder

fixes https://forum.lvgl.io/t/lv-arc-with-encoder-lv-group/3769

* fix(slider): adjusting the left knob too with encoder

https://forum.lvgl.io/t/slider-with-2-knobs-and-encoder-functionality/3770

* fix(arc_draw): remove statments that do nothing

fix #1930

* Change LV_DRAW_BUF_MAX_NUM to LV_MEM_BUF_MAX_NUM (#1931)

* Update CHANGELOG.md

* fix(draw polygon): join adjacent points if they are on the same coordinate

* fix(draw polygon): fix memory leak and vertex joining

* fix(style): invalidate cache on every PART

Inherited properties on parts other than MAIN  needs to be recached on property change beacuse they
are inherted from MAIN

fixes #1933

* fix(anim): fix bounce path

* fix(slider): do not let edit left knob in non-range mode

* Update ROADMAP.md

* Fix hardfault when DCache is disabled with no callback (#1935)

* fix(linemeter): fix invalidation when setting new value

The old complex but more optimal invalidation was buggy in some cases

fixes #1904

* fix(linemeter): fix invalidation when setting new value

The old complex but more optimal invalidation was buggy in some cases

fixes #1904

* fix(table): add missing invalidation when changeing cell type

fixes https://forum.lvgl.io/t/bug-of-table-click-to-change-style/3842

* CMakeLists.txt: Let the user configure whether LV_ATTRIBUTE_FAST_MEM is IRAM_ATTR (#1939)

* fix(slider): fix left/right knob control with encoder

* fix(img): increase the size of invalidated area in lv_img_set_zoom

Becasue of the pivot placement there can be some rounding errors

* feat(perf_monitor): add lv_refr_get_fps_avg()

* Add 8px and 10px montserrat fonts to build (#1941)

* Fix #1942: lv_textarea_set_pwd_mode not changing to bullets

Thanks to @fvanroie for investigating.

* fix(material): make button pressed color darker (#1940)

* simplify touch handling in the Arduino example

* Update ROADMAP.md

* Update ROADMAP.md

* feat(lv_conf_kconfig): add LV_CONF_KCONFIG_EXTERNAL_INCLUDE

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Co-authored-by: embeddedt <42941056+embeddedt@users.noreply.github.com>
Co-authored-by: xennex22 <25083624+xennex22@users.noreply.github.com>
Co-authored-by: incity <610455681@qq.com>
Co-authored-by: Andrey <spirit@spirit.re>
Co-authored-by: defogprog <22955033+defogprog@users.noreply.github.com>
2020-12-01 15:04:20 +01:00
Gabor Kiss-Vamosi
18aba3ccb3 merge master 2020-12-01 13:00:50 +01:00
Gabor Kiss-Vamosi
41b1a7ea15 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-12-01 12:51:53 +01:00
Gabor Kiss-Vamosi
4e5b262401 refactor(roller): rename LV_ROLLER_MODE_INIFINITE -> LV_ROLLER_MODE_INFINITE 2020-12-01 12:50:42 +01:00
Gabor Kiss-Vamosi
761a452137 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-12-01 12:40:43 +01:00
Gabor Kiss-Vamosi
a6588c77cf merge master 2020-12-01 12:40:31 +01:00
Gabor Kiss-Vamosi
c52482efa2 Update ROADMAP.md 2020-12-01 12:19:45 +01:00
Gabor Kiss-Vamosi
5b09c3879d Update ROADMAP.md 2020-12-01 12:15:59 +01:00
Gabor Kiss-Vamosi
e43d6da389 simplify touch handling in the Arduino example 2020-12-01 11:40:21 +01:00
github-actions[bot]
71fdc5e7d2 Merge 73f4156aad into dev 2020-12-01 10:26:21 +00:00
embeddedt
73f4156aad fix(material): make button pressed color darker (#1940) 2020-12-01 11:25:43 +01:00
Gabor Kiss-Vamosi
b5246c2339 feat(class): add create and create static functions
realted to #1919
2020-12-01 11:11:31 +01:00
Gabor Kiss-Vamosi
7045ec7927 fix(class): use more specific name for functions to avoid name collision 2020-11-30 15:08:44 +01:00
Gabor Kiss-Vamosi
c919a5f199 feat(class): first experiement with classes
related to #1919
2020-11-30 14:45:37 +01:00
Gabor Kiss-Vamosi
6b1a8f19f5 fix(slider): remove CHECHABLE flag 2020-11-30 10:05:30 +01:00
github-actions[bot]
69ea5bbcbd Merge bc2ca71bf5 into dev 2020-11-29 00:57:44 +00:00
embeddedt
bc2ca71bf5 Fix #1942: lv_textarea_set_pwd_mode not changing to bullets
Thanks to @fvanroie for investigating.
2020-11-28 19:57:14 -05:00
github-actions[bot]
393ca02615 Merge b1a7dbadcd into dev 2020-11-28 17:20:14 +00:00
defogprog
b1a7dbadcd Add 8px and 10px montserrat fonts to build (#1941) 2020-11-28 12:19:46 -05:00
Gabor Kiss-Vamosi
f2568bebe5 minor fixes 2020-11-28 16:04:13 +01:00
github-actions[bot]
138c5423a1 Merge 1b37ee8873 into dev 2020-11-28 11:42:02 +00:00
Gabor Kiss-Vamosi
1b37ee8873 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-11-28 12:41:23 +01:00
Gabor Kiss-Vamosi
9c5fec9b79 feat(perf_monitor): add lv_refr_get_fps_avg() 2020-11-28 12:41:06 +01:00
Gabor Kiss-Vamosi
65f7ff66d5 fix(img): increase the size of invalidated area in lv_img_set_zoom
Becasue of the pivot placement there can be some rounding errors
2020-11-28 12:38:48 +01:00
Gabor Kiss-Vamosi
dded9b383a fix(slider): fix left/right knob control with encoder 2020-11-28 12:37:26 +01:00
github-actions[bot]
fae70636a8 Merge 3c55dfb672 into dev 2020-11-27 18:17:49 +00:00
Carlos Diaz
3c55dfb672 CMakeLists.txt: Let the user configure whether LV_ATTRIBUTE_FAST_MEM is IRAM_ATTR (#1939) 2020-11-27 13:17:15 -05:00
github-actions[bot]
3807c423f2 Merge 9797c555c0 into dev 2020-11-27 10:15:48 +00:00
Gabor Kiss-Vamosi
9797c555c0 fix conflits 2020-11-27 11:15:08 +01:00
Gabor Kiss-Vamosi
87e26d4997 fix(table): add missing invalidation when changeing cell type
fixes https://forum.lvgl.io/t/bug-of-table-click-to-change-style/3842
2020-11-27 11:14:36 +01:00
Gabor Kiss-Vamosi
b09bd63c42 fix(makefile): fix the name of lv_timer.c in the mk file 2020-11-27 10:37:05 +01:00
Gabor Kiss-Vamosi
2161cf8f53 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-11-27 10:05:16 +01:00
Gabor Kiss-Vamosi
57734ff3c5 refactor(tmr): rename lv_tmr to lv_timer 2020-11-27 10:05:02 +01:00
github-actions[bot]
8df1b0341a Merge 4853eacfa4 into dev 2020-11-27 08:49:36 +00:00
Gabor Kiss-Vamosi
6c62a8eeb5 fix(linemeter): fix invalidation when setting new value
The old complex but more optimal invalidation was buggy in some cases

fixes #1904
2020-11-27 09:49:10 +01:00
Gabor Kiss-Vamosi
4853eacfa4 fix(linemeter): fix invalidation when setting new value
The old complex but more optimal invalidation was buggy in some cases

fixes #1904
2020-11-27 09:48:59 +01:00
github-actions[bot]
bd7544ce82 Merge 48a676f404 into dev 2020-11-27 00:12:51 +00:00
Andrey
48a676f404 Fix hardfault when DCache is disabled with no callback (#1935) 2020-11-26 19:12:21 -05:00
github-actions[bot]
b9ee35ef43 Merge 2f6eaa516c into dev 2020-11-26 14:55:08 +00:00
Gabor Kiss-Vamosi
2f6eaa516c Update ROADMAP.md 2020-11-26 15:54:39 +01:00
Gabor Kiss-Vamosi
4c0574a0de Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-11-26 15:40:07 +01:00
Gabor Kiss-Vamosi
6f6a30fa4a merge master 2020-11-26 15:39:58 +01:00
Gabor Kiss-Vamosi
5e8581a345 fix(slider): do not let edit left knob in non-range mode 2020-11-26 15:30:50 +01:00
Gabor Kiss-Vamosi
d6d5903be1 fix(anim): fix bounce path 2020-11-26 15:23:50 +01:00
Gabor Kiss-Vamosi
313f7f30a7 fix(style): invalidate cache on every PART
Inherited properties on parts other than MAIN  needs to be recached on property change beacuse they
are inherted from MAIN

fixes #1933
2020-11-26 15:23:50 +01:00
Gabor Kiss-Vamosi
89eca30da8 fix(draw polygon): fix memory leak and vertex joining 2020-11-26 15:23:50 +01:00
Gabor Kiss-Vamosi
819f01c930 fix(draw polygon): join adjacent points if they are on the same coordinate 2020-11-26 15:23:50 +01:00
github-actions[bot]
42e1037de5 Merge 8cd738eaa1 into dev 2020-11-25 17:22:44 +00:00
embeddedt
8cd738eaa1 Update CHANGELOG.md 2020-11-25 12:22:11 -05:00
github-actions[bot]
c3460842c7 Merge d6dd6199f3 into dev 2020-11-25 17:21:53 +00:00
incity
d6dd6199f3 Change LV_DRAW_BUF_MAX_NUM to LV_MEM_BUF_MAX_NUM (#1931) 2020-11-25 12:21:22 -05:00
github-actions[bot]
e63ae95e2b Merge 9d0335f38c into dev 2020-11-25 10:35:51 +00:00
Gabor Kiss-Vamosi
9d0335f38c fix(arc_draw): remove statments that do nothing
fix #1930
2020-11-25 11:35:12 +01:00
Gabor Kiss-Vamosi
d90ea9ea8b merge master 2020-11-25 10:25:46 +01:00
Gabor Kiss-Vamosi
82fdfb34c0 fix(slider): adjusting the left knob too with encoder
https://forum.lvgl.io/t/slider-with-2-knobs-and-encoder-functionality/3770
2020-11-25 10:12:58 +01:00
Gabor Kiss-Vamosi
a2535fe6f1 fix(arc): make arc work with encoder
fixes https://forum.lvgl.io/t/lv-arc-with-encoder-lv-group/3769
2020-11-25 09:56:24 +01:00
github-actions[bot]
97fc7021e7 Merge fa49f35b14 into dev 2020-11-25 08:49:16 +00:00
Gabor Kiss-Vamosi
fa49f35b14 fix(indev): in LV_INDEV_TYPE_BUTTON recognize 1 cycle long presses too
Fixes https://forum.lvgl.io/t/bug-in-indev-button-proc-misses-buttons-that-are-pressed-for-a-single-callback/3699
2020-11-25 09:48:37 +01:00
github-actions[bot]
4af361290b Merge bc369de6fa into dev 2020-11-24 17:16:47 +00:00
xennex22
bc369de6fa Removed trailing semi-colon from macros (#1928)
* Removed commented out test definition

Removed commented out test definition LV_BUILD_TEST

* Remove blank line

* Fix comment spelling

* Added blank line

* Removed trailing semi-colon in macros
2020-11-24 18:16:16 +01:00
Gabor Kiss-Vamosi
be72cad1c8 fix build errors 2020-11-24 18:15:47 +01:00
Gabor Kiss-Vamosi
77b16c96a0 fixes for task->tmr rename 2020-11-24 17:57:35 +01:00
Gabor Kiss-Vamosi
8641f7d598 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-11-24 17:56:24 +01:00
Gabor Kiss-Vamosi
6bafb34769 refactor(task): rename lv_task to lv_tmr and remove priorities
fixes #1925
2020-11-24 17:56:11 +01:00
github-actions[bot]
bb91e85cf7 Merge 3d81bb40da into dev 2020-11-24 14:28:21 +00:00
Gabor Kiss-Vamosi
3d81bb40da fix: fix double include in lv_obj.c
fix #1926
2020-11-24 15:27:42 +01:00
Gabor Kiss-Vamosi
77e7fe7fea fix: remove old LV_OBJ_PART related defines
fix #1927
2020-11-23 16:36:08 +01:00
github-actions[bot]
c556826d0b Merge 5848aa59e5 into dev 2020-11-23 13:06:58 +00:00
Gabor Kiss-Vamosi
5848aa59e5 Update CHANGELOG.md 2020-11-23 14:06:27 +01:00
github-actions[bot]
7260942f52 Merge 68300a5dec into dev 2020-11-23 12:25:12 +00:00
Gabor Kiss-Vamosi
68300a5dec Update CHANGELOG.md 2020-11-23 13:24:34 +01:00
github-actions[bot]
b22be726f7 Merge 07a95b5b33 into dev 2020-11-23 12:13:03 +00:00
Gabor Kiss-Vamosi
07a95b5b33 fix(arabic): support Arabic letter connections in value string property 2020-11-23 13:12:13 +01:00
Gabor Kiss-Vamosi
d90cbe92de fix(arabic): support Arabic letter connections
fixes #1920
2020-11-23 13:12:13 +01:00
github-actions[bot]
855b205a13 Merge 45599c2c2a into dev 2020-11-22 20:02:13 +00:00
embeddedt
45599c2c2a Fix #1924: incorrect date on changelog
December 1st is two weeks from 7.7.2 release.
2020-11-22 15:01:37 -05:00
benjaminSchilling33
57ed5d609f fix(examples): Updated the Arduino example to compile using the latest Arduino libraries (7.7.2) (#1922) 2020-11-22 14:44:55 -05:00
github-actions[bot]
7ea3648a63 Merge 85b3e8766f into dev 2020-11-21 22:53:52 +00:00
Gabor Kiss-Vamosi
85b3e8766f Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-11-21 23:53:15 +01:00
Gabor Kiss-Vamosi
07c63b8ad3 fix(textarea): support Arabic letter connections
fixes #1888
2020-11-21 23:53:05 +01:00
Gabor Kiss-Vamosi
8361d89a55 fix(arabic): support processing again alraedy processed texts with _lv_txt_ap_proc 2020-11-21 23:51:57 +01:00
github-actions[bot]
216ba08676 Merge 510bc7ca11 into dev 2020-11-21 20:45:41 +00:00
embeddedt
510bc7ca11 Update README.md 2020-11-21 15:45:11 -05:00
Gabor Kiss-Vamosi
a33f892dd8 fix build error 2020-11-21 21:12:44 +01:00
Gabor Kiss-Vamosi
51aaf7454c merge master 2020-11-21 21:07:12 +01:00
Gabor Kiss-Vamosi
0c81059272 fix(slider): add const to the copy parameter in lv_slider_create 2020-11-21 21:00:48 +01:00
Gabor Kiss-Vamosi
440c79e40c fix(indev): disabled object shouldn't absorb clicks but let the parent to be clicked 2020-11-21 20:54:39 +01:00
Gabor Kiss-Vamosi
e23c2cf905 fix warnings 2020-11-20 12:57:34 +01:00
Gabor Kiss-Vamosi
155a2a9cb3 fix warnings 2020-11-20 12:56:13 +01:00
Gabor Kiss-Vamosi
008f51435e fix(user_data): move user_data from spec_attr to lv_obj_t
It allows more straightforward access to it in case of binding generation
2020-11-20 12:43:31 +01:00
Gabor Kiss-Vamosi
fddd535013 refactor LV_SCROLL_MODE -> LV_SCROLLBAR_MODE and add lv_obj_set_scroll_freeze 2020-11-20 12:29:59 +01:00
Gabor Kiss-Vamosi
fdfb69f066 fi warnigns to make tests run succesfully 2020-11-20 11:55:50 +01:00
Gabor Kiss-Vamosi
0ba7dedeeb fix conflicts 2020-11-20 10:37:11 +01:00
Gabor Kiss-Vamosi
42cd3302be fix(lv_conf_template.h): update to v8 2020-11-20 10:36:05 +01:00
Gabor Kiss-Vamosi
0daa222fdb Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-11-20 10:27:30 +01:00
Gabor Kiss-Vamosi
841b5251f1 Merge branch 'master' into dev 2020-11-20 10:24:22 +01:00
Gabor Kiss-Vamosi
0c66b899e4 fix: fix warnings 2020-11-20 10:24:15 +01:00
Gabor Kiss-Vamosi
b6f4bc912c feat(checkbox): remove set/get state API functions
Use lv_obj_set/get_state() instead
2020-11-20 10:23:50 +01:00
github-actions[bot]
ff5614ec46 Merge baa1f848b1 into dev 2020-11-19 16:22:27 +00:00
Gabor Kiss-Vamosi
baa1f848b1 Update ROADMAP.md 2020-11-19 17:21:52 +01:00
github-actions[bot]
04460e4a12 Merge 522e975a4e into dev 2020-11-19 10:50:13 +00:00
Gabor Kiss-Vamosi
522e975a4e fix(btnmatrix): fix seg. fault with arabic text processing 2020-11-19 11:49:34 +01:00
github-actions[bot]
928206e7a2 Merge e511fe53c9 into dev 2020-11-18 12:52:36 +00:00
Gabor Kiss-Vamosi
e511fe53c9 Update ROADMAP.md 2020-11-18 13:52:01 +01:00
Gabor Kiss-Vamosi
e98b82323d refactor: flexbox, btnmatrix, chart refactoring 2020-11-18 12:57:11 +01:00
Gabor Kiss-Vamosi
61d7df4340 fix(textarea): autoscroll to cursor if it's out on the bottom when new text added 2020-11-17 13:42:08 +01:00
Gabor Kiss-Vamosi
0134c53993 merge dev-v8 2020-11-17 13:14:19 +01:00
github-actions[bot]
f1d893430e Merge 4903bdb908 into dev 2020-11-17 11:12:58 +00:00
Gabor Kiss-Vamosi
4903bdb908 fix(btnmatrix): handle arabic texts in button matrices 2020-11-17 12:12:19 +01:00
github-actions[bot]
3004433ef5 Merge 6b99545e50 into dev 2020-11-17 11:03:15 +00:00
Gabor Kiss-Vamosi
6b99545e50 fix(release): minor fixes in the release script 2020-11-17 12:02:32 +01:00
Gabor Kiss-Vamosi
4187286d9c Update dev version 2020-11-17 11:40:38 +01:00
Gabor Kiss-Vamosi
70438d158d Merge branch 'master' into dev 2020-11-17 11:29:58 +01:00
Gabor Kiss-Vamosi
52f52397cb Release v7.7.2 2020-11-17 11:29:58 +01:00
Gabor Kiss-Vamosi
94a25b86a8 fix confilcts 2020-11-17 11:15:14 +01:00
Gabor Kiss-Vamosi
3979024660 fix(spinbox): update cursor position in lv_spinbox_set_step
fix #1907
2020-11-17 10:52:33 +01:00
Carlos Diaz
16567f5705 Add Kconfig (#1875)
* Kconfig: Add first revision of Kconfig.

* Kconfig: Let the user edit LV_COLOR_TRANSP directly.

* Kconfig: Define CONFIG_LV_CONF_SKIP.

* Kconfig: Let the user edit LV_THEME_DEFAULT_COLOR_PRIMARY and LV_THEME_DEFAULT_COLOR_SECONDARY directly.

* Kconfig: add LV_CONF_MINIMAL

* Kconfig: Expose LV_CONF_MINIMAL option.

* Kconfig: Fix LV_CONF_SKIP missing type.

* Remove garbage files

* lv_conf_kconfig: Fix wrong check for LV_THEME_DEFAULT_COLOR_PRIMARY and SECONDARY symbols.

* Add Unscii 16 options.

* Multiply LV_MEM_SIZE by 1024

* Fix message on API compability options

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2020-11-16 12:49:48 +01:00
github-actions[bot]
0b79b1690f Merge 4f0beee01b into dev 2020-11-15 12:50:02 +00:00
Tim Gates
4f0beee01b docs: fix simple typo, obejct -> object (#1900)
There is a small typo in src/lv_core/lv_obj.c, src/lv_core/lv_obj.h.

Should read `object` rather than `obejct`.
2020-11-15 07:49:31 -05:00
github-actions[bot]
d018558134 Merge 6060d4d1f6 into dev 2020-11-13 22:16:32 +00:00
Gabor Kiss-Vamosi
6060d4d1f6 fix(list): in lv_list remove clean last_sel_btn and act_sel_btn only if arelated button was deleted
related to #1895
2020-11-13 23:15:46 +01:00
Gabor Kiss-Vamosi
263c04d7fd refactor: rename lv_obj_allocate_rare_attr to lv_obj_allocate_spec_attr 2020-11-13 23:05:38 +01:00
Gabor Kiss-Vamosi
65fc61c9c0 perf(obj): move ext_draw_pad to spec_attrs
It saves some memory becasue it's rarly used any by default evaluated as zero.
2020-11-13 23:04:46 +01:00
github-actions[bot]
0c6a627b92 Merge 54883792e1 into dev 2020-11-13 15:29:55 +00:00
Gabor Kiss-Vamosi
54883792e1 fix(list): fix compiler error if LV_USE_GROUP = 0 2020-11-13 16:29:18 +01:00
github-actions[bot]
e2f96b9007 Merge 20fef93fea into dev 2020-11-13 15:21:10 +00:00
Gabor Kiss-Vamosi
20fef93fea fix(list): fix removing list elements
remove the button from last_sel_btn adn act_sel_btn
related to #1895
2020-11-13 16:20:11 +01:00
Gabor Kiss-Vamosi
63dfe9e8e3 fix(imgbtn): guess a the closest availabe state with valid src 2020-11-13 16:18:34 +01:00
Gabor Kiss-Vamosi
0ae70c027b fix(anim): tune overshoth path 2020-11-13 15:57:38 +01:00
github-actions[bot]
3e404b1583 Merge 43771fa2f7 into dev 2020-11-11 12:22:27 +00:00
Gabor Kiss-Vamosi
43771fa2f7 fix(theme_material): remove the bottom border from tabview header
If the tabs were placed to the bottom the bottom border looked like gap on the bottom

fix #1882
2020-11-11 13:21:40 +01:00
github-actions[bot]
34635da14c Merge b79d615ae8 into dev 2020-11-11 11:30:19 +00:00
iDalink
b79d615ae8 look ahead chars when be in LV_LABEL_LONG_DOT (#1881)
Co-authored-by: Dalink <Dalink@gitee.com>
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2020-11-11 12:29:51 +01:00
github-actions[bot]
af27c16793 Merge 945f5900d5 into dev 2020-11-10 21:07:35 +00:00
Gabor Kiss-Vamosi
945f5900d5 fix(arc): update knob position when bg_angle(s) changes 2020-11-10 22:06:58 +01:00
github-actions[bot]
24340fa927 Merge a7c4fc410a into dev 2020-11-10 21:00:26 +00:00
Gabor Kiss-Vamosi
a7c4fc410a fix(arc): fix and improve arc dragging
It was difficult to handle the pressed angle on the arc when it crossed the 360 degree boundery.
The solution is to handle the angle relative to the bg_start_angle. This way no angle can be larger than 360.
The other issue was the case when a smaller than min. or larger than max. angle was pressed.
It is handled by introducing 'min_close' flag which stores which end is closer on the last valid press
and prefer this end in uncleary situation.
2020-11-10 21:59:37 +01:00
github-actions[bot]
08fcf03c3f Merge 93138759a9 into dev 2020-11-10 16:26:09 +00:00
Gabor Kiss-Vamosi
93138759a9 fix(btnmatrix): fix setting the same map with modified pointers
fix #1889
2020-11-10 17:25:17 +01:00
Gabor Kiss-Vamosi
d06aa859c9 fix(flex): correctly handle setting the size of streched flex items 2020-11-10 16:16:58 +01:00
Gabor Kiss-Vamosi
dd7a392023 fix(lv_obj_scroll): add missing function declarations in header 2020-11-10 16:16:13 +01:00
Gabor Kiss-Vamosi
9a926aa2f0 fix(copy): fix copying spec_attrs in lv_obj_create 2020-11-10 16:11:10 +01:00
Gabor Kiss-Vamosi
a69d5d08df fix(draw): handle opa_scale on scrollbars 2020-11-10 16:10:06 +01:00
Gabor Kiss-Vamosi
288411a1d3 feat(flex): add item placement in the main direction too 2020-11-10 16:09:28 +01:00
Gabor Kiss-Vamosi
1ea0d7845a fix(dropdown): fix incorrect scrolling to the selected option 2020-11-10 16:08:12 +01:00
Gabor Kiss-Vamosi
380df4578e fix(lv_font_unscii_16) use relative include path to lvgl.h 2020-11-10 10:18:08 +01:00
Gabor Kiss-Vamosi
cfd0968bfe fix(grid): fix grid positioning with RTL base diraction 2020-11-09 19:58:05 +01:00
Gabor Kiss-Vamosi
fab5121ac5 feat(grid): add RTL and margin support 2020-11-09 16:14:51 +01:00
github-actions[bot]
71619aa8f6 Merge a07583331e into dev 2020-11-09 15:12:28 +00:00
Gabor Kiss-Vamosi
a07583331e docs(changelog): update changelog 2020-11-09 16:11:48 +01:00
github-actions[bot]
2afd887fdf Merge 1bc1d278eb into dev 2020-11-09 15:11:28 +00:00
Gabor Kiss-Vamosi
1bc1d278eb fix(draw_triangle): fix polygon/triangle drawing when the order of points is counter-clockwise 2020-11-09 16:10:46 +01:00
github-actions[bot]
fc5709d04c Merge b3c9096830 into dev 2020-11-09 12:13:49 +00:00
Gabor Kiss-Vamosi
b3c9096830 Use copy of va_list rather than original va_list in txt_set_text_vfmt (#1890)
Fix issue #1886

Co-authored-by: Wenting Zhang <zephray@outlook.com>
2020-11-09 13:13:18 +01:00
github-actions[bot]
74efc2e73e Merge 85c5e786a4 into dev 2020-11-09 09:30:43 +00:00
Gabor Kiss-Vamosi
85c5e786a4 fix(library.json) set the version to the last release
platform.io haven't recognized the last version
https://forum.lvgl.io/t/platformio-repository-for-lvgl-not-updating/3607
2020-11-09 10:30:14 +01:00
github-actions[bot]
8a489b3a8e Merge b19fb8620f into dev 2020-11-06 08:51:06 +00:00
Maureen Helm
b19fb8620f lv_font: Fix compiler warning when compressed fonts are disabled (#1880)
Fixes a compiler warning in lv_font_fmt_txt.c when compressed fonts are
disabled (LV_USE_FONT_COMPRESSED=0):

/home/maureen/zephyrproject/modules/lib/gui/lvgl/src/lv_font/lv_font_fmt_txt.c:349:13: warning: 'decompress' defined but not used [-Wunused-function]
  349 | static void decompress(const uint8_t * in, uint8_t * out, lv_coord_t w, lv_coord_t h, uint8_t bpp, bool prefilter)
      |             ^~~~~~~~~~

This was found after upgrading Zephyr to use LVGL v7.6.1, building with
the Zephyr SDK 0.11.3 toolchain.

Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
2020-11-06 09:50:32 +01:00
Gabor Kiss-Vamosi
2d986871c9 fix(lv_conf_internal): re-generate to add LV_FONT_UNSCII_16 2020-11-05 12:42:20 +01:00
Gabor Kiss-Vamosi
ef81e0fbc3 feat(font): add unscii-16 built-in font
https://forum.lvgl.io/t/more-unscii-font-version/3433
2020-11-05 12:38:44 +01:00
Gabor Kiss-Vamosi
92c23bab9a feat(flex): add LV_FLEX_PLACE_STRETCH to support stretching items in cross direction 2020-11-03 14:14:21 +01:00
Gabor Kiss-Vamosi
d12af050fa style: comment update in lv_flex.c and lv_obj_scroll 2020-11-03 13:19:54 +01:00
Gabor Kiss-Vamosi
1fa0c5527f perf(scroll): simplify lv_obj_get_scroll_right with RTL base direction 2020-11-03 11:48:27 +01:00
Gabor Kiss-Vamosi
d98b933b05 refactor(flex): use dedicated defines for flex_dir instead of OR-ing 2020-11-03 11:26:53 +01:00
Gabor Kiss-Vamosi
b00628e77d merge master 2020-11-03 11:04:34 +01:00
Gabor Kiss-Vamosi
d110731409 add v7.7.2 to changelog 2020-11-03 11:03:26 +01:00
Gabor Kiss-Vamosi
92c75a6e8c minor release script fixes 2020-11-03 11:02:26 +01:00
Gabor Kiss-Vamosi
2f40ca37df Update master version 2020-11-03 10:02:00 +01:00
Gabor Kiss-Vamosi
112c894e73 Merge branch 'master' into dev 2020-11-03 09:23:29 +01:00
Gabor Kiss-Vamosi
5035c0c780 Release v7.7.1 2020-11-03 09:23:29 +01:00
Gabor Kiss-Vamosi
f42afb1c52 Update lv_conf_kconfig.h 2020-11-02 16:12:24 +01:00
github-actions[bot]
4f9869fc7e Merge f915b4cfb6 into dev 2020-11-02 15:04:17 +00:00
Gabor Kiss-Vamosi
f915b4cfb6 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-11-02 16:03:37 +01:00
github-actions[bot]
06ae6be9d4 Merge b62ddf8f64 into dev 2020-11-02 15:03:22 +00:00
Gabor Kiss-Vamosi
b62ddf8f64 push test 2020-11-02 16:02:47 +01:00
Gabor Kiss-Vamosi
b05aaaeb6b Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-11-02 15:55:10 +01:00
Gabor Kiss-Vamosi
47687fc252 Update changelog 2020-11-02 15:54:54 +01:00
Gabor Kiss-Vamosi
66dc6250b5 flex, scroll: support RTL base dir 2020-11-02 15:52:26 +01:00
github-actions[bot]
a85ed5b949 Merge 929d9f7a57 into dev 2020-11-02 12:13:31 +00:00
Gabor Kiss-Vamosi
929d9f7a57 Update release.yml 2020-11-02 13:13:01 +01:00
github-actions[bot]
20d034c279 Merge 23aec1e1ce into dev 2020-11-02 11:52:32 +00:00
Gabor Kiss-Vamosi
23aec1e1ce Update release.yml 2020-11-02 12:52:03 +01:00
github-actions[bot]
0931bb6cae Merge d487acd7cc into dev 2020-11-02 11:51:39 +00:00
Gabor Kiss-Vamosi
d487acd7cc Create release.yml 2020-11-02 12:51:12 +01:00
github-actions[bot]
380b59fddd Merge 6d92d084f7 into dev 2020-11-02 11:24:52 +00:00
Gabor Kiss-Vamosi
6d92d084f7 group: fix in lv_group_remove_obj to handle deleting hidden obejcts correctly 2020-11-02 12:24:12 +01:00
Carlos Diaz
16678b78bc lv_conf_kconfig: Update (#1870)
* lv_conf_kconfig: Update

* lv_conf_kconfig: Define CONFIG_LV_COLOR_TRANSP with lv_color_hex.
2020-11-02 11:10:33 +01:00
Gabor Kiss-Vamosi
a2cc8c3127 minor fix 2020-10-31 14:22:35 +01:00
github-actions[bot]
8f14c31bc9 Merge a2b4bbcd2a into dev 2020-10-29 22:05:58 +00:00
Gabor Kiss-Vamosi
a2b4bbcd2a add missing #include <stdarg.h> 2020-10-29 23:05:16 +01:00
Gabor Kiss-Vamosi
4fbc518d6a raname lv_obj_rare_attr_t to lv_obj_spec_attr_t and finialize it 2020-10-29 22:46:37 +01:00
Gabor Kiss-Vamosi
7a950f1863 introduce lv_obj_rare_attr_t 2020-10-29 14:51:39 +01:00
Gabor Kiss-Vamosi
e6738a2617 remove debug code 2020-10-28 14:58:44 +01:00
Gabor Kiss-Vamosi
54fa0dc28b fix lv_mem_free 2020-10-28 14:50:42 +01:00
Gabor Kiss-Vamosi
6bc4f00bf0 minor fixes 2020-10-28 14:40:14 +01:00
Gabor Kiss-Vamosi
f162a4ca2f lv_mem_alloc: speedup with incremental allocation 2020-10-28 14:39:58 +01:00
github-actions[bot]
20f901f9e3 Merge 85c8014880 into dev 2020-10-28 10:18:12 +00:00
Gabor Kiss-Vamosi
85c8014880 gauge: make the needle images to use the styles from LV_GAUGE_PART_PART 2020-10-28 11:14:05 +01:00
github-actions[bot]
b5ddf8d19d Merge b3cca917df into dev 2020-10-28 09:14:53 +00:00
Ali Rostami
b3cca917df create the fmt version of setting text for msgbox. (#1851)
* create the fmt version of setting text for msgbox.

* define _lv_txt_set_text_vfmt and change the body of lv_msgbox_set_text_fmt.

* make lv_label_refr_text out of static.

* fix a bug in _lv_txt_set_text_vfmt
2020-10-28 10:14:18 +01:00
github-actions[bot]
6bae5c7af5 Merge 4dafa10017 into dev 2020-10-27 12:50:23 +00:00
Gabor Kiss-Vamosi
4dafa10017 fix messed up function introduced in 6e9714c5 2020-10-27 13:49:47 +01:00
github-actions[bot]
622472387c Merge 6e9714c545 into dev 2020-10-27 12:42:40 +00:00
Gabor Kiss-Vamosi
6e9714c545 respect btnmatrix's one_check in lv_btnmatrix_set_btn_ctrl
Related to https://forum.lvgl.io/t/expand-lv-btnmatrix-set-one-check-to-allow-radio-button-functionality/2962
2020-10-27 13:42:01 +01:00
Gabor Kiss-Vamosi
9fc88b6535 minor fixes 2020-10-26 15:46:21 +01:00
github-actions[bot]
6e12abe015 Merge 8788317bb1 into dev 2020-10-26 14:19:22 +00:00
Gabor Kiss-Vamosi
8788317bb1 chart: remove LV_CHART_SCATTER option which was only an accidental leftover 2020-10-26 15:18:41 +01:00
Carlos Diaz
f9da89d77d Add CMakeLists.txt (#1868) 2020-10-26 10:05:32 -04:00
Carlos Diaz
def8e047af lv_conf_checker: Update lv_conf_checker so it is ESP-IDF aware. (#1864)
* lv_conf_checker: Update lv_conf_checker so it is ESP-IDF aware.

Include ESP-IDF headers and lv_conf_kconfig.h when using the ESP-IDF framework.
Also remove the CONFIG_LV_CONF_SKIP as it is not generated by the Kconfig file.

* lv_conf_checker: Always include lv_conf_kconfig.h.

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2020-10-26 13:18:06 +01:00
github-actions[bot]
6b59b1f706 Merge cc921dae17 into dev 2020-10-26 11:46:26 +00:00
Gabor Kiss-Vamosi
cc921dae17 Fix infinite loop in lv_imgbtn
Fixes: #1867
2020-10-26 12:45:51 +01:00
github-actions[bot]
ae0d498cf6 Merge 18ae2fe7fb into dev 2020-10-26 11:40:55 +00:00
Gabor Kiss-Vamosi
18ae2fe7fb Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-10-26 12:40:15 +01:00
Gabor Kiss-Vamosi
c19a4ad568 lv_conf_checker.py: add auto incude of lv_conf.h if available 2020-10-26 12:40:05 +01:00
github-actions[bot]
54a8a4ba33 Merge b3bfa3c58b into dev 2020-10-26 11:02:04 +00:00
iDalink
b3bfa3c58b lv_label effect area clip line space (#1866)
Co-authored-by: Dalink <Dalink@gitee.com>
2020-10-26 12:01:32 +01:00
github-actions[bot]
9d7ba3fcb1 Merge b44ddb5b64 into dev 2020-10-26 08:14:38 +00:00
Gabor Kiss-Vamosi
b44ddb5b64 lv_gpu_nxp_pxp_osa.h include lv_conf_internal.h instead of lv_conf.h
Related to #1860
2020-10-26 09:13:48 +01:00
github-actions[bot]
1a66a485f9 Merge d6c87cb753 into dev 2020-10-24 18:50:24 +00:00
Chris Mumford
d6c87cb753 Initialize lv_color_t::green_l when LV_COLOR_16_SWAP==1 (#1865) 2020-10-24 14:49:55 -04:00
github-actions[bot]
bd59dafa42 Merge 51a522c8d3 into dev 2020-10-24 18:07:52 +00:00
Chris Mumford
51a522c8d3 Fixed a few dangling references to lv_conf_templ.h. (#1863) 2020-10-24 14:07:19 -04:00
Gabor Kiss-Vamosi
872bbc7e3e merge dev 2020-10-22 14:32:58 +02:00
Gabor Kiss-Vamosi
e3fedd29c9 simpilfy flex constants 2020-10-22 14:19:53 +02:00
github-actions[bot]
120d579c88 Merge 200d3aa26d into dev 2020-10-22 11:57:58 +00:00
Gabor Kiss-Vamosi
200d3aa26d fix build with out lv_conf.h
Fixes: #1860
2020-10-22 13:57:25 +02:00
github-actions[bot]
e6a4860d96 Merge c03160abc2 into dev 2020-10-22 11:55:51 +00:00
Gabor Kiss-Vamosi
c03160abc2 add lv_conf_kvoncfig.h to handle special Kconfig options 2020-10-22 13:55:12 +02:00
Gabor Kiss-Vamosi
232d6a5530 merge master 2020-10-21 14:15:37 +02:00
Gabor Kiss-Vamosi
757df9eb89 Update version to 7.7.1-dev 2020-10-21 14:10:24 +02:00
github-actions[bot]
63ea07c0ab Merge aec831d277 into dev 2020-10-21 12:09:15 +00:00
Gabor Kiss-Vamosi
aec831d277 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-10-21 14:08:29 +02:00
Gabor Kiss-Vamosi
d3cafedb65 remove pycache files 2020-10-21 14:08:16 +02:00
Gabor Kiss-Vamosi
16a4023abf reorganize release script 2020-10-21 14:06:48 +02:00
Gabor Kiss-Vamosi
9c78f86880 Merge branch 'master' into dev 2020-10-20 13:33:37 +02:00
Gabor Kiss-Vamosi
6fb4235c66 prepare to release v7.7.0 2020-10-20 13:32:57 +02:00
github-actions[bot]
8627389837 Merge 64c68ec25b into dev 2020-10-20 11:28:56 +00:00
Gabor Kiss-Vamosi
64c68ec25b release.py: add lv_sim_emscripten 2020-10-20 13:27:14 +02:00
Gabor Kiss-Vamosi
4eb222f7be Merge branch 'dev-v8' of https://github.com/littlevgl/lvgl into dev-v8 2020-10-19 16:02:18 +02:00
Gabor Kiss-Vamosi
5dadb03ae6 minor scroll improvements 2020-10-19 16:02:02 +02:00
Gabor Kiss-Vamosi
e8aaaccc8e flex: add reverse direction bit 2020-10-19 16:01:39 +02:00
github-actions[bot]
5e1b08131b Merge 62a21e912c into dev 2020-10-19 10:34:20 +00:00
Gabor Kiss-Vamosi
62a21e912c Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-10-19 12:33:42 +02:00
Gabor Kiss-Vamosi
df49f8656d fix image transformation
Fixes: #1854
2020-10-19 12:33:34 +02:00
github-actions[bot]
eb2ad01a89 Merge 3d4284b02c into dev 2020-10-18 16:33:09 +00:00
Themba Dube
3d4284b02c stm32: use DSB to ensure GPU clock gets enabled 2020-10-18 12:32:22 -04:00
Themba Dube
9e349fe625 Update version to 8.0.0-dev 2020-10-18 09:58:16 -04:00
Themba Dube
cfed728714 Remove typedef from lv_obj.h as it is now in lv_grid.h 2020-10-18 08:20:53 -04:00
Gabor Kiss-Vamosi
c61609f6ee minor fixes 2020-10-16 16:00:05 +02:00
github-actions[bot]
0dd1dc41be Merge 4ca5d4e86d into dev 2020-10-16 11:13:15 +00:00
Gabor Kiss-Vamosi
4ca5d4e86d Update ROADMAP.md 2020-10-16 13:12:46 +02:00
github-actions[bot]
6f41624b14 Merge 55d78e1f92 into dev 2020-10-16 11:06:54 +00:00
Gabor Kiss-Vamosi
55d78e1f92 Update ROADMAP.md 2020-10-16 13:06:21 +02:00
Gabor Kiss-Vamosi
ae452cbc22 add flexbox layout and percentage size 2020-10-16 13:00:53 +02:00
github-actions[bot]
dcaa2e037f Merge cf8e40fcbe into dev 2020-10-16 09:28:14 +00:00
Gabor Kiss-Vamosi
cf8e40fcbe Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-10-16 11:27:35 +02:00
Gabor Kiss-Vamosi
8d9c0bd9b2 fix define_set to check define name end too 2020-10-16 11:27:24 +02:00
github-actions[bot]
e32b3bf13b Merge 8c0ab944af into dev 2020-10-15 13:22:29 +00:00
Gabor Kiss-Vamosi
8c0ab944af Update ROADMAP.md 2020-10-15 15:21:55 +02:00
Gabor Kiss-Vamosi
7b48464241 add lv_obj_get_child_by_id 2020-10-13 20:36:54 +02:00
Gabor Kiss-Vamosi
68058eeff1 minor fixes 2020-10-13 16:41:55 +02:00
Gabor Kiss-Vamosi
778c2a5cb7 arc_draw: fix using large angles 2020-10-13 16:41:33 +02:00
Gabor Kiss-Vamosi
04148ade34 table: remove debug code 2020-10-13 16:40:33 +02:00
Gabor Kiss-Vamosi
2333051133 add btnmatrix type 2 style 2020-10-13 16:35:43 +02:00
Gabor Kiss-Vamosi
d96a2c890c indev scroll clean up 2020-10-13 16:35:00 +02:00
Gabor Kiss-Vamosi
4eda4d59fc grid: add fill 2020-10-13 16:34:22 +02:00
github-actions[bot]
77b4bd597b Merge 79433deeb8 into dev 2020-10-13 10:56:14 +00:00
Gabor Kiss-Vamosi
79433deeb8 Update ROADMAP.md 2020-10-13 12:55:43 +02:00
github-actions[bot]
8a54450984 Merge ddb4ae8685 into dev 2020-10-13 09:53:40 +00:00
Gabor Kiss-Vamosi
ddb4ae8685 fix lv_win_clean() 2020-10-13 11:53:03 +02:00
github-actions[bot]
5a946fc3f4 Merge 489f426b27 into dev 2020-10-12 13:49:28 +00:00
Gabor Kiss-Vamosi
489f426b27 fix rectangle border drawing with large width 2020-10-12 15:48:43 +02:00
Gabor Kiss-Vamosi
8cddd4bdab fix conflicts 2020-10-12 13:16:43 +02:00
Gabor Kiss-Vamosi
b1b233d249 fix warning 2020-10-12 13:15:48 +02:00
Gabor Kiss-Vamosi
c4f8959e65 remove version control text
Fixes #1846
2020-10-12 12:58:04 +02:00
github-actions[bot]
5347779e50 Merge 68629c725a into dev 2020-10-12 10:44:29 +00:00
Gabor Kiss-Vamosi
68629c725a add missing fonts
fixes: #1845
2020-10-12 12:43:51 +02:00
github-actions[bot]
a81a8b8d3e Merge 20363b09e6 into dev 2020-10-12 10:09:46 +00:00
Gabor Kiss-Vamosi
20363b09e6 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-10-12 12:09:08 +02:00
Gabor Kiss-Vamosi
4d620d3771 fix dropdown selection with RTL basedirection
Related to: #1842
2020-10-12 12:08:49 +02:00
Gabor Kiss-Vamosi
6d120b1f7f Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-10-12 11:55:22 +02:00
Gabor Kiss-Vamosi
5d0c00a201 update CHANGELOG 2020-10-12 11:54:54 +02:00
Gabor Kiss-Vamosi
9a029a1784 make DMA2S non blovking 2020-10-12 11:53:56 +02:00
Sergei Kolotovchenkov
cb5ad1e9d3 Improve compatibility with C++14 (#1843) 2020-10-12 11:53:56 +02:00
Gabor Kiss-Vamosi
4d614e60ef skip objects in groups if they are in disabled state 2020-10-12 11:53:56 +02:00
github-actions[bot]
6fcfe72df6 Merge e1f222d04f into dev 2020-10-09 13:12:06 +00:00
Sergei Kolotovchenkov
e1f222d04f Improve compatibility with C++14 (#1843) 2020-10-09 09:11:34 -04:00
github-actions[bot]
de7cb0fa71 Merge 56c4cab228 into dev 2020-10-09 08:34:38 +00:00
Gabor Kiss-Vamosi
56c4cab228 skip objects in groups if they are in disabled state 2020-10-09 10:34:02 +02:00
github-actions[bot]
0429c501b7 Merge 5d91c24723 into dev 2020-10-08 13:19:22 +00:00
Gabor Kiss-Vamosi
5d91c24723 support RTL in pretty layout (draw columns right to left)
Related to #1833
2020-10-08 15:18:30 +02:00
github-actions[bot]
8ec2030cab Merge 6e48cde2f1 into dev 2020-10-08 12:31:00 +00:00
embeddedt
6e48cde2f1 Fix #1837: remove last designated initializer in lv_color.h 2020-10-08 08:30:29 -04:00
github-actions[bot]
73c0bf6439 Merge 9ec4b61417 into dev 2020-10-07 18:18:09 +00:00
robekras
9ec4b61417 Fix #1798: Use AHB3 enable register for STM32H7 (#1840) 2020-10-07 14:17:38 -04:00
github-actions[bot]
28c9cf0aa5 Merge 6c426aa855 into dev 2020-10-07 12:03:39 +00:00
Gabor Kiss-Vamosi
6c426aa855 fix warnings 2020-10-07 14:03:06 +02:00
github-actions[bot]
2b47542bbd Merge c804fadf40 into dev 2020-10-07 11:55:43 +00:00
Gabor Kiss-Vamosi
c804fadf40 remove the internal usage of LV_HOR/VER_RES_MAX 2020-10-07 13:55:06 +02:00
github-actions[bot]
d9c75f61c5 Merge 1ee9c13a1d into dev 2020-10-07 11:49:04 +00:00
Gabor Kiss-Vamosi
1ee9c13a1d revert debug changes in material theme 2020-10-07 13:48:31 +02:00
github-actions[bot]
0b5f414ca8 Merge 0266244c58 into dev 2020-10-07 11:48:30 +00:00
Gabor Kiss-Vamosi
0266244c58 support RTL in table (draw columns right to left)
Related to #1833
2020-10-07 13:47:49 +02:00
github-actions[bot]
beda277316 Merge f1a198bd93 into dev 2020-10-07 10:45:39 +00:00
Gabor Kiss-Vamosi
f1a198bd93 fix imgbtn state change 2020-10-07 12:44:54 +02:00
github-actions[bot]
63c4b43a57 Merge 1d50bc962d into dev 2020-10-07 10:23:59 +00:00
Gabor Kiss-Vamosi
1d50bc962d theme update to support text selection background
Fixes #1820
2020-10-07 12:23:24 +02:00
github-actions[bot]
ec616da1ac Merge fff3a00de2 into dev 2020-10-06 09:32:55 +00:00
Gabor Kiss-Vamosi
fff3a00de2 fix lv_disp_get_inactive_time if the disp==NULL
Fixes #1836
2020-10-06 11:25:37 +02:00
github-actions[bot]
6f312e34e3 Merge faf50714a1 into dev 2020-10-06 09:24:17 +00:00
Gabor Kiss-Vamosi
faf50714a1 update release script 2020-10-06 11:23:40 +02:00
Gabor Kiss-Vamosi
3c9468a621 Update dev version 2020-10-06 09:54:32 +02:00
Gabor Kiss-Vamosi
e41bc28817 Merge branch 'master' into dev 2020-10-06 09:33:59 +02:00
Gabor Kiss-Vamosi
8b6bb63795 prepare to release v7.6.1 2020-10-06 09:30:37 +02:00
Gabor Kiss-Vamosi
0de2cc9a8e fix conflicts 2020-10-06 09:30:00 +02:00
Gabor Kiss-Vamosi
3d8a19a0ca fix version number 2020-10-06 09:29:13 +02:00
Gabor Kiss-Vamosi
bc626dc9d0 update CHANGELOG 2020-10-06 08:59:07 +02:00
github-actions[bot]
38a9426135 Merge 6b24c949f1 into dev 2020-10-05 18:46:45 +00:00
Gabor Kiss-Vamosi
6b24c949f1 fix lv_img offset usage
Fixes: https://forum.lvgl.io/t/problem-with-lv-img-set-offset-y-in-ver-7/3330
2020-10-05 20:46:09 +02:00
github-actions[bot]
44709caf6f Merge e557b0fbac into dev 2020-10-05 12:31:49 +00:00
embeddedt
e557b0fbac Only check __STDC_VERSION__ if __cplusplus is not defined 2020-10-05 08:31:20 -04:00
github-actions[bot]
b124f4d7e0 Merge 3dabec4cae into dev 2020-10-05 08:53:33 +00:00
Amir Gonnen
3dabec4cae Run test on dev branch as well (#1835) 2020-10-05 10:53:02 +02:00
github-actions[bot]
4092c71a45 Merge 78ecdd1f1d into dev 2020-10-05 07:44:20 +00:00
Gabor Kiss-Vamosi
78ecdd1f1d Update ROADMAP.md 2020-10-05 09:43:52 +02:00
Gabor Kiss-Vamosi
4c2c1dd8bd fix conflicts 2020-10-05 09:42:59 +02:00
Gabor Kiss-Vamosi
e33e1df4af Merge branch 'feature/vg-lite-support-dev-7-7' of https://github.com/NXPmicro/lvgl into NXPmicro-feature/vg-lite-support-dev-7-7 2020-10-05 09:23:53 +02:00
github-actions[bot]
4c7a2ae0b7 Merge 96478a0c3e into dev 2020-10-03 12:38:29 +00:00
C47D
96478a0c3e lv_conf_internal: Check for LV_CONF_INCLUDE_SIMPLE before defining it. 2020-10-03 08:37:49 -04:00
github-actions[bot]
61437e793a Merge 86ddaf90a7 into dev 2020-10-02 19:46:11 +00:00
Gabor Kiss-Vamosi
86ddaf90a7 material theme: do not set the text font to allow easy global font change 2020-10-02 21:45:32 +02:00
Ali Rostami
8394d92fac Cursor (#1789)
* update lv_obj_refresh_style describtion.

* cursor added.

* refresh chart after setting the cursor

* add new direction and a bug fixed.

* fixed the wrong changes for header file.

* rename lv_cursor_direction_t enum members.

* add lv_chart_get_x_from_index and lv_chart_get_y_from_index

* lv_chart_get_x_from_index supports column chart type too.

* fix the error of no lv_coord_t value return.

* fix a bug based on the coord is with respect to the series area.

* make get_series_area function global.

* fix the name of get_series_area function.

* add the description of the added functions.

* chart cursor minor fixes

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2020-10-02 13:59:05 +02:00
jozba
fc2206105b Fixed include paths (#1823)
Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>
2020-10-02 13:12:41 +02:00
jozba
b049b7e1f6 Bugfix/mgg 562 lvgl pxp symbol prefix missing include path update blit limit (#1830)
* PXP: Updated area threshold, fixed symbol names, minor fixes

- Area threshold of 1 left from debugging, changed to 32 for performance
reasons.
- Fixed naming convention of symbols (prefix LV_GPU_)
- Fixed include paths (no need to add src folder into include paths)
- Comments changed to doxygen

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

* PXP: Code formatting

Applied code-format.sh script.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>
2020-10-02 13:10:09 +02:00
github-actions[bot]
cf1ca20750 Merge 34e0fefeb3 into dev 2020-10-02 10:26:54 +00:00
Gabor Kiss-Vamosi
34e0fefeb3 fix imgbtn image switching with empty style 2020-10-02 12:26:12 +02:00
Gabor Kiss-Vamosi
a12d54855f Update CHANGELOG.md 2020-10-02 11:35:15 +02:00
ryanpowers
6d1a72b522 Text selection enhancement (#1829)
* Corrected bug in styles of labels with selections

Text selection color (text_selection_color) property was incorrectly
being applied to the text color if there was a selection. The sel_color
property in the label descriptor was initialized to blue. This property
was intended to be the label background color under a selection.

* Add new property for the color of selected text

New property for labels: text_sel_font_color
This property will change the color of the font within selected text.

* Rename text selection color properties

Per feedback from issue #1820, sel_color is now sel_bg_color and
sel_font_color is now sel_color. This results in clearer naming.

Co-authored-by: Ryan Powers <ryan.powers@envision-tek.com>
2020-10-02 11:34:28 +02:00
github-actions[bot]
f37cbafad6 Merge 79d72f9286 into dev 2020-10-02 08:55:42 +00:00
Gabor Kiss-Vamosi
79d72f9286 Fix click focus 2020-10-02 10:54:53 +02:00
Themba Dube
e7bb0382c4 Merge remote-tracking branch 'origin/master' into dev 2020-10-01 10:34:08 -04:00
Gabor Kiss-Vamosi
0b1590d9ac Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-10-01 16:24:01 +02:00
Gabor Kiss-Vamosi
d14e642fc7 fix style transitions with style caching
related to #1825
2020-10-01 16:23:54 +02:00
Martino Facchin
535c3d506f Allow inclusion of local lv_conf_internal.h (#1822)
* Allow inclusion of local lv_conf_internal.h

A wrapper library cna contain an lv_conf.h file and it would be automatically picked up by the buildsystem

* Guard __has_include and simplify code

* Make number sign indentation consistent

Co-authored-by: embeddedt <42941056+embeddedt@users.noreply.github.com>
2020-10-01 13:51:33 +02:00
Gabor Kiss-Vamosi
8bed30db34 handle sub pixel rendering in font loader 2020-10-01 13:28:22 +02:00
Gabor Kiss-Vamosi
f6df9b490e Update CHANGELOG.md 2020-10-01 13:18:00 +02:00
Gabor Kiss-Vamosi
5770a09e73 Update CHANGELOG.md 2020-10-01 13:16:52 +02:00
Ali Rostami
c2c130889d use margin in the header part of calendar. (#1817)
* use margin in the header part of calendar.

* make calendar_init same as before based on new changes of pad and margin in calendar_header.
2020-10-01 13:16:00 +02:00
Gabor Kiss-Vamosi
705a564ca8 merge dev 2020-09-30 21:30:07 +02:00
Gabor Kiss-Vamosi
da1591c10f rework arc 2020-09-30 21:22:26 +02:00
Gabor Kiss-Vamosi
301859b978 handle LV_OBJ_FLAG_SCROLL_ELASTIC/MOMENTUM 2020-09-30 21:17:29 +02:00
Jozef Bastek
ed90f36984 VG-Lite: Added support for fill and BLIT
VG-Lite accelerated features:
  - fill (+ transparency)
  - BLIT (+ transparency)

Limitation:
  Image width must be aligned to 16 for VG-Lite to process the buffer.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>
2020-09-30 17:38:25 +02:00
github-actions[bot]
540856a8bc Merge 8c824b265e into dev 2020-09-30 04:55:39 +00:00
Gabor Kiss-Vamosi
8c824b265e style cahce: add margin 2020-09-30 06:55:05 +02:00
Gabor Kiss-Vamosi
afc5475196 rework table and textarea 2020-09-30 06:12:29 +02:00
Gabor Kiss-Vamosi
06281e38cf img: use self_size and LV_SIZE_AUTO to automatically set size to image size 2020-09-29 14:27:15 +02:00
Gabor Kiss-Vamosi
132e79fa42 rework checkbox and add LV_SIGNAL_SELF_SIZE 2020-09-29 14:26:35 +02:00
github-actions[bot]
f1690be7fc Merge 5a0006cd3c into dev 2020-09-29 07:34:27 +00:00
Gabor Kiss-Vamosi
5a0006cd3c Update ROADMAP.md 2020-09-29 09:33:57 +02:00
github-actions[bot]
25bd804724 Merge 07746a78d5 into dev 2020-09-28 13:32:34 +00:00
Gabor Kiss-Vamosi
07746a78d5 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-09-28 15:31:55 +02:00
Gabor Kiss-Vamosi
a24e3f619f dropdown list fixes with Bidi == RTL 2020-09-28 11:48:27 +02:00
Gabor Kiss-Vamosi
5be1fcadca fix copying base dir in lv_obj_craete 2020-09-28 11:48:06 +02:00
github-actions[bot]
03c526514d Merge 8ff5e23378 into dev 2020-09-28 09:08:17 +00:00
Gabor Kiss-Vamosi
8ff5e23378 Update ROADMAP.md 2020-09-28 11:07:49 +02:00
github-actions[bot]
ef0c8690e4 Merge ce11b4c71c into dev 2020-09-28 08:51:58 +00:00
Gabor Kiss-Vamosi
ce11b4c71c fix build error 2020-09-28 10:51:26 +02:00
github-actions[bot]
0d62025e2c Merge f0fc45eb52 into dev 2020-09-28 08:43:39 +00:00
Gabor Kiss-Vamosi
f0fc45eb52 checkbox: do not play transition on manual state change 2020-09-28 10:43:05 +02:00
Gabor Kiss-Vamosi
c474d6d3a6 add self-size support 2020-09-28 10:42:36 +02:00
Gabor Kiss-Vamosi
f5dc2e4248 rework roller 2020-09-27 22:10:08 +02:00
github-actions[bot]
115314b140 Merge ffd9b872d9 into dev 2020-09-27 12:47:45 +00:00
Gabor Kiss-Vamosi
ffd9b872d9 fix BIDI support in dropdown list 2020-09-27 14:47:11 +02:00
github-actions[bot]
22fbde4501 Merge 71669c252c into dev 2020-09-23 17:59:22 +00:00
Gabor Kiss-Vamosi
71669c252c Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-09-23 19:58:45 +02:00
Gabor Kiss-Vamosi
672537dcc2 propogate checkbox state change to bullet and label too 2020-09-23 19:26:22 +02:00
github-actions[bot]
a45ff2c574 Merge 6b06ac4b72 into dev 2020-09-23 17:24:37 +00:00
embeddedt
6b06ac4b72 Fix grammar error in README.md 2020-09-23 13:24:00 -04:00
Gabor Kiss-Vamosi
f3085bf191 style invalidation fixes 2020-09-23 18:50:57 +02:00
github-actions[bot]
2f7369e771 Merge b2d201dba7 into dev 2020-09-23 10:42:07 +00:00
embeddedt
b2d201dba7 Fix #1795: ensure switch/bar visual state matches logical state (#1805) 2020-09-23 06:41:37 -04:00
Gabor Kiss-Vamosi
f01bfcb6f6 imporve ddlist 2020-09-23 12:25:01 +02:00
github-actions[bot]
695d8e5462 Merge 2b49a7eb28 into dev 2020-09-23 09:00:53 +00:00
Gabor Kiss-Vamosi
2b49a7eb28 add missing style cache invalidation on state change 2020-09-23 11:00:15 +02:00
Gabor Kiss-Vamosi
0b3759201f Update CHANGELOG.md 2020-09-23 10:23:45 +02:00
Ali Rostami
23f5a11340 Table fmt (#1803)
* update lv_obj_refresh_style describtion.

* fmt version of lv_table_set_cell_value added.

* fix a bug.

* add include lv_printf.h

* fix a bug for LV_USE_BIDI in lv_table_set_cell_value_fmt

* fix a missed part for arabic_persian chars in lv_table_set_cell_value
2020-09-23 10:23:37 +02:00
github-actions[bot]
a590f91fd0 Merge 686a3b5271 into dev 2020-09-23 08:14:44 +00:00
Gabor Kiss-Vamosi
686a3b5271 Update ROADMAP.md 2020-09-23 10:14:06 +02:00
Gabor Kiss-Vamosi
27eb84667f Update CHANGELOG.md 2020-09-23 09:59:09 +02:00
jozba
1508320aa8 PXP support for NXP RTxxx MCUs (#1702)
* PXP: Added basic PXP acceleration

PXP accelerated features:
 - fill (+ opacity)
 - BLIT (+ opacity)
 - recoloring (+ opacity)
 - color keying (+ opacity)

Recoloring + color keying simultaneously not supported.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

* PXP: Added abstraction for interrupt handling

Previous imlpementation used IRQ polling on PXP, which doesn't allow
real CPU offload. Therefore added set of callbacks for interrupt
handling that should be implemented by user, with possible RTOS
integration.

Default/example implementation of callbacks for bare metal and FreeRTOS
provided (lv_gpu_nxp_pxp_osa.c), enabled by
LV_USE_GPU_NXP_PXP_DEFAULT_OSA switch, accesible via pxp_default_cfg
structure.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

* PXP: Optimized cache flushing

Previous implementation flushed areas of (LCD width * object height)
size. Cache flush is expensive operation and flushing line by line,
smallest possible area, boost performance by shortening time spent on
cache flushes.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

* PXP: Added documentation for NXP PXP accelerator

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

* PXP: added missing extern c in header files

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

* PXP: Fixed ifdefs - Removed LV_USE_GPU, fixed internal config

LV_USE_GPU is not intended as a global GPU enable switch. It's used only
for gpu_blend_cb and gpu_fill_cb callbacks, which are obsolete. This
patch removes LV_USE_GPU dependency for PXP code, so it's enabled only
with LV_USE_GPU_NXP_PXP symbol.

Added missing symbols to internal conf, so automatic testd can pass
build step.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

* PXP: Default OSA changed to PXP auto-initialization

Auto init feature added so if user run FreeRTOS or bare-metal, no PXP
Init code is required. Renamed symbol to be more clear.

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

* PXP: Documentation moved to docs repo

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>

* PXP: Fixed alpha configuration

- Coverity issue: AS blend config used uninitialized structure. No
impact on functionality, as blend module is not used (porter-duff blends
in this case)
- Alpha config fixed - swapped alpha values produced different result
from SW render

Signed-off-by: Jozef Bastek <jozef.bastek@nxp.com>
2020-09-23 09:57:38 +02:00
github-actions[bot]
ea16ce5dd0 Merge eb056315c3 into dev 2020-09-22 13:54:10 +00:00
xennex22
eb056315c3 Changed non-debug macro expansion (#1808) 2020-09-22 09:53:36 -04:00
Gabor Kiss-Vamosi
a00a293871 merge master 2020-09-22 13:57:23 +02:00
github-actions[bot]
64a4fff635 Merge ddf33b2fd9 into dev 2020-09-22 09:24:13 +00:00
Gabor Kiss-Vamosi
ddf33b2fd9 release.py: update docs only in the end 2020-09-22 11:23:34 +02:00
Gabor Kiss-Vamosi
e9476f4767 Merge branch 'dev' of https://github.com/lvgl/lvgl into dev 2020-09-22 10:51:09 +02:00
Gabor Kiss-Vamosi
04e2b94c06 Merge branch 'master' into dev 2020-09-22 10:46:38 +02:00
Gabor Kiss-Vamosi
f2bd86ed7c prepare to release v7.6.0 2020-09-22 10:39:15 +02:00
github-actions[bot]
39f4c15876 Merge 783dc6be9a into dev 2020-09-22 08:37:22 +00:00
Gabor Kiss-Vamosi
783dc6be9a update release script 2020-09-22 10:36:48 +02:00
github-actions[bot]
39f1b363fd Merge 18db4d83bc into dev 2020-09-22 07:27:24 +00:00
Michael Simon
18db4d83bc Highlight selected option if show_selected is false (#1810) 2020-09-22 09:26:56 +02:00
Gabor Kiss-Vamosi
458046b9b0 add v7.7 to changelog 2020-09-22 09:24:59 +02:00
github-actions[bot]
23ba19d068 Merge 4d87007c95 into dev 2020-09-22 04:21:17 +00:00
github-actions[bot]
0576300981 Merge 2415f99a20 into dev 2020-09-22 04:21:00 +00:00
Gabor Kiss-Vamosi
4d87007c95 Delete a.patch 2020-09-22 06:20:45 +02:00
Gabor Kiss-Vamosi
2415f99a20 Delete r.patch 2020-09-22 06:20:34 +02:00
github-actions[bot]
77fd862b3f Merge 1c930dc8fb into dev 2020-09-22 04:20:10 +00:00
Gabor Kiss-Vamosi
1c930dc8fb Update CHANGELOG.md 2020-09-22 06:19:45 +02:00
github-actions[bot]
259907b788 Merge 83c9145072 into dev 2020-09-22 04:18:24 +00:00
incity
83c9145072 Update CHANGELOG.md (#1809) 2020-09-22 06:17:51 +02:00
github-actions[bot]
02afe7f82c Merge 94a6dc08d8 into dev 2020-09-21 22:05:35 +00:00
embeddedt
94a6dc08d8 Check for a Cortex-M7 before calling cache functions (#1806) 2020-09-21 18:05:06 -04:00
tosriram
5ef1df9357 Extend maximum number of table cell styles from 4 to 16 (#1800) 2020-09-21 11:50:54 -04:00
github-actions[bot]
a81574543b Merge cbd3393d7c into dev 2020-09-21 09:58:26 +00:00
Gabor Kiss-Vamosi
cbd3393d7c Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-09-21 11:57:47 +02:00
Gabor Kiss-Vamosi
7def9a9bb2 add Arduino example 2020-09-21 11:57:37 +02:00
Gabor Kiss-Vamosi
1067d04c03 fix font laoder supprt LV_FONT_FMT_TXT_LARGE 2020-09-21 11:57:20 +02:00
Gabor Kiss-Vamosi
33acf23949 udpate lv_conf.h 2020-09-17 15:18:16 +02:00
github-actions[bot]
b09d5a846c Merge 2820cf897f into dev 2020-09-17 13:09:42 +00:00
github-actions[bot]
33dbc82a0c Merge 18a4869e62 into dev 2020-09-17 13:09:41 +00:00
Gabor Kiss-Vamosi
2820cf897f Update ROADMAP.md 2020-09-17 15:09:11 +02:00
Gabor Kiss-Vamosi
18a4869e62 Update ROADMAP.md 2020-09-17 15:08:59 +02:00
github-actions[bot]
adce9d72fc Merge d90f5d0144 into dev 2020-09-17 11:26:04 +00:00
Gabor Kiss-Vamosi
d90f5d0144 Update CHANGELOG.md 2020-09-17 13:25:33 +02:00
Gabor Kiss-Vamosi
c53da44ff5 reenable lv_img 2020-09-16 22:35:01 +02:00
Gabor Kiss-Vamosi
ab08796736 add grid fill 2020-09-16 22:34:45 +02:00
github-actions[bot]
9461e48998 Merge 565643e883 into dev 2020-09-16 17:55:03 +00:00
Themba Dube
565643e883 lv_gauge: fix invalidation with angle offset 2020-09-16 13:54:23 -04:00
github-actions[bot]
132e6d11b4 Merge 7756d70705 into dev 2020-09-16 13:23:52 +00:00
Gabor Kiss-Vamosi
7756d70705 Update ROADMAP.md 2020-09-16 15:23:21 +02:00
github-actions[bot]
dbbf4a406f Merge be4f7a76d4 into dev 2020-09-16 13:22:05 +00:00
embeddedt
be4f7a76d4 Fix gauge end arc segment not being rendered (#1796) 2020-09-16 15:21:33 +02:00
github-actions[bot]
537456cea5 Merge d547d8afe1 into dev 2020-09-16 09:51:23 +00:00
Gabor Kiss-Vamosi
d547d8afe1 cleant the Arduino example folders 2020-09-16 11:50:41 +02:00
Gabor Kiss-Vamosi
1b15a7b875 simplify checkbox and btnmatrix 2020-09-16 11:26:06 +02:00
Gabor Kiss-Vamosi
25691a4d94 rework checkbox
now it has no real parts, the bullet and text are drawn on the fly
2020-09-15 15:38:18 +02:00
github-actions[bot]
fb6e3518ea Merge 2614d1342e into dev 2020-09-15 10:30:09 +00:00
Gabor Kiss-Vamosi
2614d1342e update relaese script 2020-09-15 12:29:37 +02:00
github-actions[bot]
0287b759ac Merge 3c6741b11c into dev 2020-09-15 10:20:27 +00:00
Amir Gonnen
3c6741b11c Update build_micropython.yml (#1794)
Fetch both head and merge commits of "pull" refs. This would allow the CI script to first try checkout the merge commit (which is `github.sha` on PR) and only if that fails, default to checking out the PR head.
2020-09-15 12:19:56 +02:00
Gabor Kiss-Vamosi
9b953abbd2 Update dev version 2020-09-15 11:56:57 +02:00
Gabor Kiss-Vamosi
ac52762c20 update lv_cnf_internal.h 2020-09-15 11:44:13 +02:00
Gabor Kiss-Vamosi
9093395478 fix version number 2020-09-15 11:35:50 +02:00
Gabor Kiss-Vamosi
dc0f9253d4 Merge branch 'master' into dev 2020-09-15 11:19:33 +02:00
Gabor Kiss-Vamosi
c5bacff2fa prepare to release v7.5.0 2020-09-15 11:14:32 +02:00
Gabor Kiss-Vamosi
fceb1177cd start to rework widgets 2020-09-15 10:16:15 +02:00
Gabor Kiss-Vamosi
c46be31df1 fix file handling in image decoder 2020-09-15 08:32:45 +02:00
github-actions[bot]
b60714a710 Merge 5a6da9a2ef into dev 2020-09-14 19:49:32 +00:00
Gabor Kiss-Vamosi
5a6da9a2ef fix selectiion of options with non-ASCII letters in dropdown list 2020-09-14 21:48:57 +02:00
github-actions[bot]
38e4e5d385 Merge d99ea10213 into dev 2020-09-14 19:17:19 +00:00
Gabor Kiss-Vamosi
d99ea10213 fix drawing images with 1 px height or width 2020-09-14 21:16:43 +02:00
Gabor Kiss-Vamosi
59791a8e2f perform style change check in lv_obj_set_state() with LV_USE_ANIMATION == 0 too 2020-09-14 20:42:03 +02:00
github-actions[bot]
f4cdea6a0d Merge 5566935a5d into dev 2020-09-14 18:28:03 +00:00
Gabor Kiss-Vamosi
5566935a5d Update CHANGELOG.md 2020-09-14 20:27:35 +02:00
github-actions[bot]
f874b61bd3 Merge b947465da1 into dev 2020-09-14 18:15:08 +00:00
Gabor Kiss-Vamosi
b947465da1 fix divisioin by zero in draw_pattern (lv_draw_rect.c) if the image or letter is not found 2020-09-14 20:14:33 +02:00
Gabor Kiss-Vamosi
877b30017d move some widgets to lv_components repo 2020-09-14 20:13:43 +02:00
github-actions[bot]
efb0ca04a0 Merge d44b8d47d3 into dev 2020-09-14 10:46:20 +00:00
Sergei Kolotovchenkov
d44b8d47d3 Improve compatibility with ARM Compiler V6 with C++98 mode (#1788)
* Fixed infinite loop during calculation size of lv_list

* Fixed msvc 2019 compiler error C4576 when using the LVGL inside C++ code

* Refactoring to make autocomplete less noisy

* Improve compatibility with ARM Compiler V6 with C++98 mode

* Replaced non-ascii symbol

* Fixed CI build error

* Refactoring, added ability to override _LV_COLOR_HAS_MODERN_CPP
2020-09-14 12:45:53 +02:00
github-actions[bot]
eb79d9263c Merge 96e0de063a into dev 2020-09-14 10:45:00 +00:00
liebman
96e0de063a fix lv_align_y/mid_y to align y and not x (#1792) 2020-09-14 12:44:28 +02:00
github-actions[bot]
3994a5425d Merge 81ec2d1b10 into dev 2020-09-14 08:46:57 +00:00
Gabor Kiss-Vamosi
81ec2d1b10 add LV_GC_ROOT prefix to _lv_font_decompr_buf 2020-09-14 10:46:20 +02:00
Gabor Kiss-Vamosi
de1d6b2581 add 8px an 10 px built in fonts 2020-09-14 10:43:26 +02:00
github-actions[bot]
e4a1a800d1 Merge 55d05c2eb3 into dev 2020-09-12 23:15:47 +00:00
embeddedt
55d05c2eb3 Fix #1791: add NULL check for group->obj_focus 2020-09-12 19:15:21 -04:00
github-actions[bot]
160d92ba69 Merge e236cf7f73 into dev 2020-09-11 12:26:03 +00:00
Michael Simon
e236cf7f73 Do not use an anim if pwd_show_time is 0 (#1786) 2020-09-11 14:25:33 +02:00
Gabor Kiss-Vamosi
17fd875f4b merge master 2020-09-11 14:19:43 +02:00
Gabor Kiss-Vamosi
38cf5c0b3e remove code accidentally merged from dev branch 2020-09-11 14:07:56 +02:00
Gabor Kiss-Vamosi
3d0c5f7207 Merge branch 'master' into dev 2020-09-11 13:46:08 +02:00
Gabor Kiss-Vamosi
e2183750f2 fix warnings 2020-09-11 13:42:57 +02:00
Gabor Kiss-Vamosi
c55b165150 add font decompr_buf to GC roots 2020-09-11 13:39:05 +02:00
Gabor Kiss-Vamosi
50b5e3c477 add rounding to btnmatrix line height calculation
Fixes #1776
2020-09-11 13:28:34 +02:00
Amir Gonnen
1b3e1c4331 Fix submodule checkout in both push and PR (#1783) 2020-09-10 19:20:59 -04:00
Gabor Kiss-Vamosi
3f36139469 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-09-10 16:08:03 +02:00
Gabor Kiss-Vamosi
125e6e95f6 fix color bleeding on corner clipping
Fixes #1777
2020-09-10 16:07:42 +02:00
Gabor Kiss-Vamosi
db28d441f2 Merge branch 'dev' into feat/new-scroll 2020-09-10 09:17:12 +02:00
Gabor Kiss-Vamosi
1f8450b453 lv_conf_internal fixes 2020-09-10 09:16:42 +02:00
Gabor Kiss-Vamosi
c9ad0bf310 merge dev 2020-09-09 11:31:08 +02:00
Gabor Kiss-Vamosi
97d976f9c2 minor fixes 2020-09-09 10:46:49 +02:00
Gabor Kiss-Vamosi
dc7c18916f grid_calc: handle w,h,x,y sparately to prepare for gap handling 2020-09-08 15:57:37 +02:00
github-actions[bot]
1c96215db9 Merge c683a3612d into dev 2020-09-08 13:57:22 +00:00
梁永祥
c683a3612d group fix calling lv_obj_invalidate() when focuse is NULL (#1774) 2020-09-08 15:56:51 +02:00
github-actions[bot]
42cdab2e98 Merge 50594851f6 into dev 2020-09-08 12:58:06 +00:00
Gabor Kiss-Vamosi
50594851f6 Update ROADMAP.md 2020-09-08 14:57:38 +02:00
github-actions[bot]
6f8f293241 Merge a2685363e8 into dev 2020-09-08 12:48:24 +00:00
Gabor Kiss-Vamosi
a2685363e8 Update ROADMAP.md 2020-09-08 14:47:56 +02:00
Gabor Kiss-Vamosi
893c53476c fix define name in lv_conf_internal.h 2020-09-08 14:47:00 +02:00
Gabor Kiss-Vamosi
a8e3fc594e add Kconfig support to lv_conf_internal.h 2020-09-08 14:39:19 +02:00
github-actions[bot]
3247a10f2c Merge 8b7ffccd64 into dev 2020-09-08 11:45:50 +00:00
Gabor Kiss-Vamosi
8b7ffccd64 Update ROADMAP.md 2020-09-08 13:45:22 +02:00
Gabor Kiss-Vamosi
b87ca71824 fix warnings 2020-09-08 13:44:03 +02:00
Gabor Kiss-Vamosi
c94f9358d1 style change check fixes 2020-09-08 13:41:57 +02:00
Gabor Kiss-Vamosi
49052a7f06 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-09-08 13:39:24 +02:00
Gabor Kiss-Vamosi
966ff9d186 Merge branch 'master' into dev 2020-09-08 13:39:04 +02:00
Gabor Kiss-Vamosi
81884401d2 style change check 2020-09-08 13:20:29 +02:00
Gabor Kiss-Vamosi
40b987dc81 optimize grid recalcualtion on style change 2020-09-08 10:51:24 +02:00
Gabor Kiss-Vamosi
f002f6a722 minor grid fix 2020-09-08 10:08:19 +02:00
Gabor Kiss-Vamosi
8b969fab61 imporve grid performance 2020-09-08 09:56:56 +02:00
github-actions[bot]
715b40fb3f Merge b87d16fc6e into dev 2020-09-07 08:19:11 +00:00
Gabor Kiss-Vamosi
b87d16fc6e fix textra focus event sending 2020-09-07 10:18:37 +02:00
github-actions[bot]
75ca0e6e2e Merge b1c43d329d into dev 2020-09-07 08:13:53 +00:00
Gabor Kiss-Vamosi
b1c43d329d update comments in lv_port_disp_template 2020-09-07 10:13:17 +02:00
github-actions[bot]
4073e43e34 Merge 710ec7d417 into dev 2020-09-07 07:21:14 +00:00
Gabor Kiss-Vamosi
710ec7d417 Update ROADMAP.md 2020-09-07 09:20:41 +02:00
Gabor Kiss-Vamosi
10e0727015 move some part of lv_obj.c to lv_obj_pos.v and lv_obj_scroll.c 2020-09-06 21:07:58 +02:00
github-actions[bot]
c73004caef Merge 176eb9fd46 into dev 2020-09-06 10:50:36 +00:00
Gabor Kiss-Vamosi
176eb9fd46 Update ROADMAP.md 2020-09-06 12:50:08 +02:00
Gabor Kiss-Vamosi
9c638950bb add lv_scroll.c/h to keep scroll related code in one place 2020-09-05 14:15:39 +02:00
github-actions[bot]
dc500aa19e Merge a6150ea78f into dev 2020-09-05 11:46:33 +00:00
Amir Gonnen
a6150ea78f CI - Build Micropython with LVGL submodule (#1771) 2020-09-05 13:46:07 +02:00
Gabor Kiss-Vamosi
6e08d402c1 add scroll direction enable/disable support 2020-09-05 13:34:58 +02:00
Gabor Kiss-Vamosi
9f2526a73c implement scroll snapping 2020-09-05 11:57:17 +02:00
github-actions[bot]
366c3abdff Merge 35c7197d1c into dev 2020-09-04 11:31:09 +00:00
tgillbe
35c7197d1c Fix button matrix button width (#1768) 2020-09-04 07:30:39 -04:00
github-actions[bot]
2074146b30 Merge 15e692d596 into dev 2020-09-04 11:11:22 +00:00
Gabor Kiss-Vamosi
15e692d596 fix conflicts 2020-09-04 13:10:44 +02:00
Gabor Kiss-Vamosi
1ab87eda09 update CHANGELOG 2020-09-04 13:07:29 +02:00
Gabor Kiss-Vamosi
804c3c7994 fix unexpeted DEFOCUS on lv_page
Fixes #1762
2020-09-04 13:06:19 +02:00
Michael Simon
1b638565b0 lv_textarea: send event when Enter is pressed in one-line mode (#1769) 2020-09-03 08:08:04 -04:00
Gabor Kiss-Vamosi
f09d871e4c add lv_obj_has/set/clear_flag() instead unique function for click, hidden etc 2020-09-02 11:56:51 +02:00
Gabor Kiss-Vamosi
5852852f8b Merge branch 'feat/new-scroll' of https://github.com/littlevgl/lvgl into feat/new-scroll 2020-09-02 10:56:06 +02:00
Gabor Kiss-Vamosi
572974b5e0 update font loader to the new FS API 2020-09-02 10:25:46 +02:00
Gabor Kiss-Vamosi
7cf51010b0 Merge branch 'master' into feat/new-fs-api 2020-09-02 10:09:00 +02:00
github-actions[bot]
61fa7eed6b Merge 0596088544 into dev 2020-09-01 17:19:58 +00:00
Gabor Kiss-Vamosi
0596088544 remove unused variable 2020-09-01 19:19:25 +02:00
github-actions[bot]
1cc17f7888 Merge 85bd12a794 into dev 2020-09-01 17:15:14 +00:00
Gabor Kiss-Vamosi
85bd12a794 fix lv_obj_del and lv_obj_clean if the children list changed during deletion
https://forum.lvgl.io/t/lv-obj-del-and-kin-wrongly-assume-that-child-ll-wont-change-while-deleting/3091
2020-09-01 19:14:39 +02:00
Gabor Kiss-Vamosi
4613811c45 lmeter: fix uninitialized 'mirror' property 2020-09-01 19:14:34 +02:00
github-actions[bot]
9ce57485ab Merge 03c3838605 into dev 2020-09-01 14:46:11 +00:00
Gabor Kiss-Vamosi
03c3838605 arc: use value_update in lv_arc_set_value
it was overwritten on merge
2020-09-01 16:45:36 +02:00
Gabor Kiss-Vamosi
1d875eaa22 fix conflicts 2020-09-01 16:43:05 +02:00
Gabor Kiss-Vamosi
b4a8a21d26 update changelog 2020-09-01 13:01:21 +02:00
github-actions[bot]
6bfba0e02a Merge fb6e7deadf into dev 2020-09-01 10:24:43 +00:00
Gabor Kiss-Vamosi
fb6e7deadf Update CHANGELOG.md 2020-09-01 12:24:18 +02:00
github-actions[bot]
bc80633a0d Merge d941461052 into dev 2020-09-01 10:21:03 +00:00
Gabor Kiss-Vamosi
d941461052 release script fixes 2020-09-01 12:20:28 +02:00
Gabor Kiss-Vamosi
0104d436e9 Update dev version 2020-09-01 12:06:21 +02:00
Gabor Kiss-Vamosi
3d32290ee4 fix version number 2020-09-01 11:59:50 +02:00
Gabor Kiss-Vamosi
6932b6c1da Merge branch 'master' into dev 2020-09-01 11:42:11 +02:00
Gabor Kiss-Vamosi
6d7bd355ed fix version lv_conf_template.h 2020-09-01 11:39:54 +02:00
Gabor Kiss-Vamosi
343605ebac prepare to release v7.4.0 2020-09-01 11:34:10 +02:00
Gabor Kiss-Vamosi
beec11565c update changelog 2020-09-01 11:29:08 +02:00
Gabor Kiss-Vamosi
beb3d40d24 fix conflicts 2020-09-01 10:47:39 +02:00
Gabor Kiss-Vamosi
26b36dfea1 release.py minor update to run in debugger 2020-09-01 10:45:27 +02:00
Gabor Kiss-Vamosi
289fd95c3d release.py: remove debug statements 2020-09-01 10:42:58 +02:00
Gabor Kiss-Vamosi
2f79133685 release.py: remove debug statements 2020-09-01 10:42:32 +02:00
Gabor Kiss-Vamosi
e42128e937 minor release related fixes 2020-09-01 10:18:35 +02:00
Gabor Kiss-Vamosi
de38ee4a21 fix typo 2020-09-01 09:40:16 +02:00
Gabor Kiss-Vamosi
612308f281 lv_img: check blend modes in cover check 2020-09-01 09:38:25 +02:00
Gabor Kiss-Vamosi
f545a24bbd gauge: allow not recoling the image needle 2020-09-01 09:38:25 +02:00
Gabor Kiss-Vamosi
1102cfdf82 lv_arc_set_value: be sure the 'fixed' angle is corerct 2020-09-01 09:38:25 +02:00
Gabor Kiss-Vamosi
775f1a59df lv_refr: take opa_scale into account in cover check 2020-09-01 09:38:25 +02:00
github-actions[bot]
1906a623fb Merge 35ae1a28d4 into dev 2020-09-01 07:27:19 +00:00
Gabor Kiss-Vamosi
35ae1a28d4 fixes in release.py 2020-09-01 09:26:41 +02:00
Gabor Kiss-Vamosi
842eb11448 release.py: add projec update 2020-08-31 19:48:59 +02:00
github-actions[bot]
ca9c36e081 Merge 5976973111 into dev 2020-08-31 12:18:35 +00:00
Alex-I-B
5976973111 Proposed fix for roller widget crash when LV_USE_GROUP=0 (#1761)
Removed LV_USE_GROUP guard macro for signals != LV_SIGNAL_CONTROL in signal functions of roller and spinbox to allow signal propagating to ancestors
2020-08-31 14:18:07 +02:00
github-actions[bot]
b7baa01bc1 Merge 91cfb70856 into dev 2020-08-31 12:10:04 +00:00
Gabor Kiss-Vamosi
91cfb70856 fix ci 2020-08-31 14:04:23 +02:00
github-actions[bot]
5ee4d14788 Merge 09ce595239 into dev 2020-08-31 12:03:15 +00:00
Gabor Kiss-Vamosi
09ce595239 fix ci 2020-08-31 14:02:43 +02:00
github-actions[bot]
5d02b27b1f Merge d4c3567f84 into dev 2020-08-31 12:01:26 +00:00
Gabor Kiss-Vamosi
d4c3567f84 install libpng for test 2020-08-31 14:00:49 +02:00
Gabor Kiss-Vamosi
39bf116e07 fix screenshot testing 2020-08-31 13:58:51 +02:00
Gabor Kiss-Vamosi
10eeeb2490 image cover check: minor reordering for better performance 2020-08-31 13:58:51 +02:00
github-actions[bot]
eb7f0d8eeb Merge 694d9eff19 into dev 2020-08-31 09:06:49 +00:00
Gabor Kiss-Vamosi
694d9eff19 Update ROADMAP.md 2020-08-31 11:06:04 +02:00
rockindy
075fe54537 Fix lv_page_glue_obj() interface for lv_binding_micropython. (#1759) 2020-08-31 10:15:42 +02:00
tgillbe
d4e40fce63 Fix position of 0 in special keyboard (#1758) 2020-08-31 10:15:16 +02:00
Gabor Kiss-Vamosi
67d268b3ee gird optimization 2020-08-31 09:33:44 +02:00
Gabor Kiss-Vamosi
03fa6b492c grid fuly works 2020-08-30 20:05:50 +02:00
Gabor Kiss-Vamosi
c801a2cfa2 basic grid working 2020-08-28 18:48:52 +02:00
github-actions[bot]
6e000c97f8 Merge 9b9cd36dc9 into dev 2020-08-28 14:00:44 +00:00
Gabor Kiss-Vamosi
9b9cd36dc9 fix roller width if selected text is larger than the normal 2020-08-28 16:00:04 +02:00
rabbitsaviola
8df8700bed Add async gpu wait interface (#1736)
Add async gpu wait interface
Closes #1708
2020-08-28 15:31:30 +02:00
Gabor Kiss-Vamosi
c17f2f7e84 fix conflicts 2020-08-28 10:25:34 +02:00
Gabor Kiss-Vamosi
c3953f478f fix conflicts 2020-08-28 10:20:34 +02:00
Gabor Kiss-Vamosi
adf65b6761 Fix _lv_txt_ins with zero length insert text
Closes #1754
2020-08-28 09:53:56 +02:00
Adam Martini
cb5faa64ac Add update_value private function to lv_arc to prevent set_value return checks in the event of… (#1748)
Add update_value to lv_arc to update the value on range change.
2020-08-27 09:51:11 +02:00
Gabor Kiss-Vamosi
832000ad34 Merge pull request #1743 from lvgl/dcache_cb
lv_disp: add `clean_dcache_cb` callback
2020-08-27 09:48:56 +02:00
Gabor Kiss-Vamosi
5d345c1d56 start grid 2020-08-27 09:39:32 +02:00
Gabor Kiss-Vamosi
43b706f2d4 add layout files 2020-08-26 15:25:35 +02:00
Gabor Kiss-Vamosi
77ed9003d9 merge master 2020-08-26 15:24:47 +02:00
Gabor Kiss-Vamosi
037d3d9090 run code formatter 2020-08-26 15:21:24 +02:00
github-actions[bot]
6772ceb7e2 Merge e7364f321d into dev 2020-08-25 13:22:04 +00:00
Gabor Kiss-Vamosi
e7364f321d update CHANGELOG 2020-08-25 15:21:25 +02:00
github-actions[bot]
d9afdb5316 Merge 14a2a60bf9 into dev 2020-08-25 13:19:24 +00:00
Gabor Kiss-Vamosi
14a2a60bf9 Fix btnmatrix to not send event when CLICK_TRIG = true and the cursor slid from a pressed button
Fixes: https://forum.lvgl.io/t/v7-3-register-button-in-button-matrix-only-after-touch-release-not-button-release/3117
2020-08-25 15:18:45 +02:00
Themba Dube
350269c3d4 Update CHANGELOG.md 2020-08-25 07:38:08 -04:00
Gabor Kiss-Vamosi
52c61b115f minor image zoom fixes 2020-08-25 11:54:12 +02:00
Themba Dube
7ca806ddff Use CMSIS cache functions if custom callback is not registered 2020-08-24 10:51:09 -04:00
Gabor Kiss-Vamosi
1da5984121 Merge branch 'master' into feat/new-fs-api 2020-08-24 16:05:20 +02:00
github-actions[bot]
c8be0df768 Merge 78f2451b2a into dev 2020-08-24 14:01:31 +00:00
Gabor Kiss-Vamosi
78f2451b2a imporve image zoom precision 2020-08-24 16:00:53 +02:00
Themba Dube
36433c2144 Rename function to lv_disp_clean_dcache and use currently refreshing display 2020-08-24 07:36:44 -04:00
github-actions[bot]
2224ce95cb Merge 54b3ba39fb into dev 2020-08-24 08:53:19 +00:00
Gabor Kiss-Vamosi
54b3ba39fb Fix deleting tabview with LEFT/RIGHT tab position 2020-08-24 10:52:48 +02:00
github-actions[bot]
9a2d2b5392 Merge ede6085429 into dev 2020-08-24 08:14:36 +00:00
Gabor Kiss-Vamosi
ede6085429 img: imporve zoom precision 2020-08-24 10:14:01 +02:00
github-actions[bot]
3ea4418727 Merge 961f295b94 into dev 2020-08-24 07:51:36 +00:00
Gabor Kiss-Vamosi
961f295b94 img: fix zooming and rotateing mosaic images 2020-08-24 09:50:52 +02:00
github-actions[bot]
12b1f1f590 Merge 848c468b06 into dev 2020-08-24 04:40:41 +00:00
Gabor Kiss-Vamosi
848c468b06 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-08-24 06:40:08 +02:00
Gabor Kiss-Vamosi
ba94b9cc94 fix croping of last column/row if an image is zoomed
Fixes #1742
2020-08-24 06:39:57 +02:00
Themba Dube
a1f47e9051 Add lv_arc_set_adjustable and lv_arc_get_adjustable 2020-08-23 07:46:00 -04:00
Themba Dube
ff357db938 Merge branch 'dev' into dcache_cb 2020-08-23 07:43:49 -04:00
github-actions[bot]
2f26d0a511 Merge 851493a188 into dev 2020-08-23 11:20:37 +00:00
Ali Rostami
851493a188 Update lv_obj_refresh_style description (#1746) 2020-08-23 07:20:07 -04:00
github-actions[bot]
5f35e46be8 Merge 7e4769e319 into dev 2020-08-23 06:50:03 +00:00
Gabor Kiss-Vamosi
7e4769e319 fix using LV_SCROLLBAR_UNHIDE after LV_SCROLLBAR_ON
Fixes https://forum.lvgl.io/t/lv-sb-mode-unhide-has-an-unsuitable-value/3081
2020-08-23 08:49:27 +02:00
github-actions[bot]
75a0a5e6d6 Merge c0f6ff4d42 into dev 2020-08-23 05:45:08 +00:00
Gabor Kiss-Vamosi
c0f6ff4d42 fix color bleeding on border drawing
Fixes https://forum.lvgl.io/t/border-dont-cover-calendar/3029/4
2020-08-23 07:44:34 +02:00
github-actions[bot]
fef3a069d6 Merge 35e09885fb into dev 2020-08-22 21:38:06 +00:00
Themba Dube
35e09885fb lv_arc: use rotation when calculating drag angle
fixes #1745
2020-08-22 17:37:29 -04:00
Themba Dube
24c2921c21 lv_disp: add clean_dcache_cb callback 2020-08-21 09:53:13 -04:00
github-actions[bot]
001fabbb18 Merge f4b4df8a17 into dev 2020-08-20 21:53:52 +00:00
Amir Gonnen
f4b4df8a17 lv_arc_set_reverse: remove prototype with no implementation (#1741)
Required for Micropython
2020-08-20 17:53:23 -04:00
github-actions[bot]
41d093ea76 Merge 953753263c into dev 2020-08-20 05:07:01 +00:00
Gabor Kiss-Vamosi
953753263c fix warning 2020-08-20 07:06:23 +02:00
github-actions[bot]
8990544b42 Merge 809497f707 into dev 2020-08-19 21:31:30 +00:00
Gabor Kiss-Vamosi
809497f707 release.py: fix blog post name 2020-08-19 23:30:57 +02:00
github-actions[bot]
148e6d12fd Merge 45cc51d48c into dev 2020-08-19 21:29:09 +00:00
Gabor Kiss-Vamosi
45cc51d48c release.py: publish blog post 2020-08-19 23:28:34 +02:00
Gabor Kiss-Vamosi
756522a64c add auto size 2020-08-19 20:16:20 +02:00
github-actions[bot]
187f4be2ee Merge 677ce48bea into dev 2020-08-18 15:03:21 +00:00
Gabor Kiss-Vamosi
677ce48bea tabview: fix press state style update
fixes: #1728
2020-08-18 17:02:42 +02:00
github-actions[bot]
6023bb4372 Merge d0cc9283e7 into dev 2020-08-18 09:58:04 +00:00
Gabor Kiss-Vamosi
d0cc9283e7 merge dev 2020-08-18 11:57:26 +02:00
Gabor Kiss-Vamosi
71e5618380 upadte release.py 2020-08-18 11:32:43 +02:00
Gabor Kiss-Vamosi
bcb6d02acf fix version 2020-08-18 10:54:43 +02:00
Gabor Kiss-Vamosi
f116073baf fix version 2020-08-18 10:54:10 +02:00
Gabor Kiss-Vamosi
6e884615d8 fix version 2020-08-18 10:53:37 +02:00
Gabor Kiss-Vamosi
d665294669 fix release script 2020-08-18 10:53:08 +02:00
Gabor Kiss-Vamosi
cc43762030 Update dev version 2020-08-18 10:45:41 +02:00
Gabor Kiss-Vamosi
9c7c395cc7 Merge branch 'dev' of https://github.com/lvgl/lvgl into dev 2020-08-18 10:45:36 +02:00
Gabor Kiss-Vamosi
9680d5bbb2 Update dev version 2020-08-18 10:43:47 +02:00
Gabor Kiss-Vamosi
96534d58e5 Merge branch 'master' into dev 2020-08-18 10:40:39 +02:00
Gabor Kiss-Vamosi
1088492449 prepare to release v7.3.1 2020-08-18 10:28:35 +02:00
github-actions[bot]
9b154d12c1 Merge e9ee46f302 into dev 2020-08-18 08:26:00 +00:00
Gabor Kiss-Vamosi
e9ee46f302 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-08-18 10:25:28 +02:00
Gabor Kiss-Vamosi
c0714d9c6b fix release script 2020-08-18 10:25:19 +02:00
Gabor Kiss-Vamosi
e728ba1928 remove debug statements from release.py 2020-08-18 10:22:02 +02:00
github-actions[bot]
b94ca2bf80 Merge 74aae39e4e into dev 2020-08-18 08:13:00 +00:00
Gabor Kiss-Vamosi
74aae39e4e Update CHANGELOG.md 2020-08-18 10:12:32 +02:00
github-actions[bot]
b9bd436b89 Merge 6eab2adfc1 into dev 2020-08-18 08:12:25 +00:00
Gabor Kiss-Vamosi
6eab2adfc1 Merge pull request #1732 from ali-rostami/gray_day_calendar
init disabled days to gray color in calendar
2020-08-18 10:11:56 +02:00
Gabor Kiss-Vamosi
209e1c4d38 fix conflicts 2020-08-18 08:50:31 +02:00
Gabor Kiss-Vamosi
056da0f922 fix color picker invalidation in rectangle mode 2020-08-18 08:47:08 +02:00
Gabor Kiss-Vamosi
e1a84f2cfe Merge pull request #1734 from daiyinger/dev
Reduced animation callback interface calls
2020-08-18 06:41:24 +02:00
Gabor Kiss-Vamosi
b77bd763c0 merge master 2020-08-18 06:36:42 +02:00
xiaobo
437e6d35eb Reduced animation callback interface calls 2020-08-18 11:25:40 +08:00
Gabor Kiss-Vamosi
3b06d4ab84 rewrite the release script 2020-08-17 23:51:23 +02:00
Ali Rostami
3a5ad7712e init disabled days to gray color in calendar
In ver6 we saw that disabled days in `calendar` were gray, which was a good thing and seemed was missed in new versions.
2020-08-17 16:10:44 +04:30
Gabor Kiss-Vamosi
28eb766904 comment updates 2020-08-17 09:20:35 +02:00
Gabor Kiss-Vamosi
4af6c62146 Merge pull request #1726 from upbeat27/lv_btnmatrix_set_one_check_fix
Fix `lv_btnmatrix_set_one_check` not forcing one button to be checked
2020-08-17 09:11:12 +02:00
Josh McAtee
96eba8e0ff Fix lv_btnmatrix_set_one_check not forcing one button to be checked 2020-08-14 09:06:44 -07:00
github-actions[bot]
95ccd877a8 Merge 1815ff4b99 into dev 2020-08-14 04:58:44 +00:00
Gabor Kiss-Vamosi
1815ff4b99 Limit extra button click area of button matrix's buttons. Fixes #1712 2020-08-14 06:58:00 +02:00
Gabor Kiss-Vamosi
c8cc9db7f0 table: fix typo 2020-08-14 06:58:00 +02:00
Gabor Kiss-Vamosi
b8ebca8d6c update CHANGELOG 2020-08-14 00:03:14 +02:00
Gabor Kiss-Vamosi
245a47a848 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-08-13 23:56:40 +02:00
Gabor Kiss-Vamosi
c46f12b97a fix conflicts 2020-08-13 23:55:48 +02:00
github-actions[bot]
db2ddd6033 Merge de1ccc269c into dev 2020-08-13 21:28:29 +00:00
Gabor Kiss-Vamosi
de1ccc269c Update README.md 2020-08-13 23:28:03 +02:00
Gabor Kiss-Vamosi
cd9f53c4b4 Merge pull request #1717 from fabiowguerra/feat/dynamic-font-loading
Feat/dynamic font loading
2020-08-13 22:46:23 +02:00
github-actions[bot]
25afed1d58 Merge f3e91634f8 into dev 2020-08-13 19:09:24 +00:00
Gabor Kiss-Vamosi
f3e91634f8 fix crash if 'lv_table_set_col_cnt' is called before 'lv_table_set_row_cnt' for the first time
Fixes #1716
2020-08-13 21:08:50 +02:00
Gabor Kiss-Vamosi
6980277aca Update CHANGELOG 2020-08-13 20:09:43 +02:00
Gabor Kiss-Vamosi
f59a206ab0 send gesture with dragging too.
User can test dragging manually with  lv_indev_is_dragging
2020-08-13 20:07:18 +02:00
Gabor Kiss-Vamosi
4eb3283342 Merge pull request #1592 from acumartini/feature/1568_lv_rotary
Feature/1568 lv rotary
2020-08-13 20:05:13 +02:00
Gabor Kiss-Vamosi
c2b5979e91 arc: fix event sending 2020-08-13 12:00:57 +02:00
Gabor Kiss-Vamosi
cfee7e8b8a arc knob invalidation fix 2020-08-13 11:03:04 +02:00
Fabio Guerra
6fcca7dd44 Better comments, explaining memory allocation strategy when parsing fonts. 2020-08-12 11:02:43 -03:00
Fabio Guerra
f1edd3a1ea Removing #ifdef for LVGL version 6 on binary font parser. 2020-08-12 11:02:43 -03:00
Gabor Kiss-Vamosi
d321e0e4fc fix tests 2020-08-12 14:29:50 +02:00
Gabor Kiss-Vamosi
8d89bf9ed0 fix CHANGELOG 2020-08-12 14:23:53 +02:00
Gabor Kiss-Vamosi
f8b991731f Merge branch 'dev' into feat/dynamic-font-loading 2020-08-12 14:20:47 +02:00
github-actions[bot]
77b57ba035 Merge 08684b31ee into dev 2020-08-12 04:58:43 +00:00
Ali Rostami
08684b31ee Patch 1 (#1714)
update comments
2020-08-12 06:58:15 +02:00
Gabor Kiss-Vamosi
977f6d210d Merge pull request #1715 from lvgl/checkbox_anim
Fade in checkmark for material theme
2020-08-12 06:22:21 +02:00
Fabio Guerra
e399b7a085 Code format with astyle. 2020-08-12 00:45:06 -03:00
Fabio Guerra
b3634790cd Implementing missing formats for font loading. 2020-08-12 00:11:02 -03:00
Themba Dube
3dad4c724e Fade in checkmark for material theme 2020-08-11 10:49:57 -04:00
Gabor Kiss-Vamosi
d95cf0a3d6 arc: rework knob to indicate the current positoin 2020-08-11 15:03:57 +02:00
Gabor Kiss-Vamosi
14a4c190c9 merge rotary to arc 2020-08-11 14:17:05 +02:00
Gabor Kiss-Vamosi
461619411d Merge branch 'dev' into acumartini-feature/1568_lv_rotary 2020-08-11 12:31:32 +02:00
Gabor Kiss-Vamosi
c36c8e11f7 Merge branch 'master' into acumartini-feature/1568_lv_rotary 2020-08-11 12:31:24 +02:00
github-actions[bot]
11a9dedbaa Merge 2068ab3211 into dev 2020-08-11 08:38:47 +00:00
Gabor Kiss-Vamosi
2068ab3211 bar, switch, slider: fix drawing background's 'value_str' twice 2020-08-11 10:38:16 +02:00
github-actions[bot]
d94bbd4f91 Merge 28807b6a77 into dev 2020-08-11 08:34:41 +00:00
Gabor Kiss-Vamosi
28807b6a77 lv_img_design: fix cover check if angle != 0 2020-08-11 10:34:04 +02:00
github-actions[bot]
d71f664fbb Merge f066f0b8d8 into dev 2020-08-11 08:10:17 +00:00
Gabor Kiss-Vamosi
f066f0b8d8 fix overflow in large image transformations 2020-08-11 10:09:41 +02:00
github-actions[bot]
e30055674d Merge d2e1094159 into dev 2020-08-10 18:14:00 +00:00
Sergei Kolotovchenkov
d2e1094159 Fix Visual Studio 2019 compile errors (#1711)
Fixed msvc 2019 compiler error C4576 when using the LVGL inside C++ code
2020-08-10 14:13:26 -04:00
github-actions[bot]
73a918ce13 Merge 6fd7bcf172 into dev 2020-08-10 09:37:17 +00:00
Gabor Kiss-Vamosi
6fd7bcf172 allow adding extra label to list buttons 2020-08-10 11:36:43 +02:00
github-actions[bot]
b88ee8e430 Merge ebaeb1bf7c into dev 2020-08-10 04:18:01 +00:00
Gabor Kiss-Vamosi
ebaeb1bf7c Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-08-10 06:17:17 +02:00
Gabor Kiss-Vamosi
bd8ac58b6b add missing background drawing and radius handling to image button 2020-08-10 06:17:03 +02:00
github-actions[bot]
fcca7fff60 Merge b6c18ed171 into dev 2020-08-09 10:41:53 +00:00
Gabor Kiss-Vamosi
b6c18ed171 Update ROADMAP.md 2020-08-09 12:41:25 +02:00
github-actions[bot]
872030fb77 Merge 90be42c493 into dev 2020-08-08 14:22:34 +00:00
Gabor Kiss-Vamosi
90be42c493 Fix setting local style property multiple times
Realted to https://forum.lvgl.io/t/how-to-change-button-object-color-on-demand/2922/2
2020-08-08 16:22:00 +02:00
Fabio Guerra
c4e7254aed Some changes to support binary fonts without the kernel table. 2020-08-07 10:56:37 -03:00
github-actions[bot]
1b40c2a495 Merge 81caeaa725 into dev 2020-08-07 11:32:00 +00:00
embeddedt
81caeaa725 Fix lv_obj_set_height_fit 2020-08-07 07:31:31 -04:00
github-actions[bot]
1ca9dc6c4e Merge 8af9e96299 into dev 2020-08-06 12:57:04 +00:00
Gabor Kiss-Vamosi
8af9e96299 Merge pull request #1706 from satirebird/code-fixes
Make several descriptor parameters const
2020-08-06 14:56:36 +02:00
github-actions[bot]
70ac65793f Merge 5d981f56ad into dev 2020-08-06 12:55:23 +00:00
Gabor Kiss-Vamosi
5d981f56ad remove unused variable 2020-08-06 14:54:51 +02:00
github-actions[bot]
e16eb8e830 Merge cda21694c4 into dev 2020-08-06 12:51:07 +00:00
Gabor Kiss-Vamosi
58d86cff71 Merge branch 'master' into code-fixes 2020-08-06 14:51:05 +02:00
Gabor Kiss-Vamosi
cda21694c4 Fix text decor (udnerline strikethrough) with older versions of font converter 2020-08-06 14:50:30 +02:00
Gabor Kiss-Vamosi
7af20516a5 add linemeter's mirror feature again
the drawing part was somehow removed
2020-08-06 14:50:30 +02:00
github-actions[bot]
2cab9d12d6 Merge 21985e9a14 into dev 2020-08-06 09:40:58 +00:00
Gabor Kiss-Vamosi
21985e9a14 Update FUNDING.yml 2020-08-06 11:40:30 +02:00
Gabor Kiss-Vamosi
5905e351a6 Merge branch 'master' into feat/new-scroll 2020-08-05 11:25:51 +02:00
Sven Krauß
7827d948d8 Fix evaluation of return value 2020-08-05 11:18:56 +02:00
Sven Krauß
3b7fa645fb Merge tag 'v7.3.0' into code-fixes
Conflicts:
	src/lv_draw/lv_draw_rect.c
2020-08-05 11:14:27 +02:00
Gabor Kiss-Vamosi
f739506ddd add linemeter's mirror feature again
the drawing part was somehow removed
2020-08-05 11:06:56 +02:00
Sven Krauß
28f74bd91d Make several descriptor parameters const, update parameter docs.
Making the descriptor const allows to use static initialized variables.
2020-08-05 10:53:03 +02:00
github-actions[bot]
0e1fda5c37 Merge 1f0a4918f2 into dev 2020-08-05 08:04:45 +00:00
Gabor Kiss-Vamosi
1f0a4918f2 Update ROADMAP.md 2020-08-05 10:04:16 +02:00
Fabio Guerra
004adac31d Adding changes to changelog and replacing line style comments with block comments. 2020-08-05 01:29:54 -03:00
Fabio Guerra
f58d97d990 Adding support to dynamic font loading. 2020-08-04 18:59:49 -03:00
github-actions[bot]
4b1a0d590f Merge bd4db19aee into dev 2020-08-04 16:53:12 +00:00
Gabor Kiss-Vamosi
bd4db19aee rename lv_chart_clear_serie to lv_chart_clear_series and lv_obj_align_origo to lv_obj_align_mid 2020-08-04 18:52:37 +02:00
github-actions[bot]
5c3640868c Merge b4955f0b6e into dev 2020-08-04 16:44:11 +00:00
Gabor Kiss-Vamosi
b4955f0b6e Fix drawing value string twice
Fixes #1704
2020-08-04 18:43:34 +02:00
github-actions[bot]
cdb99b3588 Merge acb46aaed1 into dev 2020-08-04 15:37:37 +00:00
Gabor Kiss-Vamosi
acb46aaed1 Update README.md 2020-08-04 17:37:07 +02:00
github-actions[bot]
525c3bd829 Merge 7caa2bf9ad into dev 2020-08-04 15:36:56 +00:00
Gabor Kiss-Vamosi
7caa2bf9ad Update README.md 2020-08-04 17:36:27 +02:00
Gabor Kiss-Vamosi
0a9cc2a3b5 update version number 2020-08-04 17:35:17 +02:00
Gabor Kiss-Vamosi
62f4ced294 update version number 2020-08-04 17:34:44 +02:00
github-actions[bot]
2a6815c451 Merge a0f338eb6f into dev 2020-08-04 15:34:16 +00:00
Gabor Kiss-Vamosi
a0f338eb6f update changlelog 2020-08-04 17:33:39 +02:00
Gabor Kiss-Vamosi
0f0d57d855 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-08-04 17:30:46 +02:00
github-actions[bot]
5d42f92c86 Merge 5810baa021 into dev 2020-08-04 15:12:23 +00:00
github-actions[bot]
42a7fda05d Merge f36f8fe253 into dev 2020-08-04 15:11:53 +00:00
Gabor Kiss-Vamosi
5810baa021 Update library.properties 2020-08-04 17:11:51 +02:00
Gabor Kiss-Vamosi
f36f8fe253 Update library.properties 2020-08-04 17:11:19 +02:00
github-actions[bot]
d56708b45e Merge d0b408d679 into dev 2020-08-04 15:09:01 +00:00
Gabor Kiss-Vamosi
d0b408d679 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-08-04 17:08:21 +02:00
Gabor Kiss-Vamosi
7e3739576f add back library.proeprties 2020-08-04 17:07:54 +02:00
Gabor Kiss-Vamosi
068260925f Merge branch 'master' into feat/new-fs-api 2020-08-04 16:41:52 +02:00
github-actions[bot]
565633828c Merge 061c6325b7 into dev 2020-08-04 12:59:36 +00:00
Gabor Kiss-Vamosi
061c6325b7 Merge pull request #1697 from Droup67/focus_padding
page: Use padding when focus an child item
2020-08-04 14:59:07 +02:00
github-actions[bot]
66c184a84d Merge e3a07ed58c into dev 2020-08-04 09:24:50 +00:00
Gabor Kiss-Vamosi
e3a07ed58c update release.py 2020-08-04 11:24:13 +02:00
github-actions[bot]
e1963a4a3d Merge eb76519d25 into dev 2020-08-04 08:08:03 +00:00
github-actions[bot]
05f6b67b5f Merge 48f8d83bdc into dev 2020-08-04 08:07:32 +00:00
Gabor Kiss-Vamosi
eb76519d25 Release v7.3.0 2020-08-04 10:07:30 +02:00
Gabor Kiss-Vamosi
7b0a0ef4a7 Run code formatter 2020-08-04 10:07:29 +02:00
Gabor Kiss-Vamosi
48f8d83bdc update release.py 2020-08-04 10:06:57 +02:00
github-actions[bot]
a728817fb5 Merge ad422250db into dev 2020-08-04 07:58:01 +00:00
Gabor Kiss-Vamosi
ad422250db update release.py 2020-08-04 09:57:29 +02:00
github-actions[bot]
243c448df9 Merge ec7397e4a0 into dev 2020-08-04 07:50:33 +00:00
Gabor Kiss-Vamosi
ec7397e4a0 update release.py 2020-08-04 09:49:57 +02:00
github-actions[bot]
245de140f4 Merge 0ec409f83e into dev 2020-08-04 07:28:49 +00:00
Gabor Kiss-Vamosi
0ec409f83e fix version nnumber 2020-08-04 09:28:16 +02:00
github-actions[bot]
cc505a3cb2 Merge b58f9c6021 into dev 2020-08-04 07:20:47 +00:00
Gabor Kiss-Vamosi
b58f9c6021 Add LV_USE_OUTLINE/PATTERN/VALUE_STR and LV_MEMCPY_MEMSET_STD 2020-08-04 09:19:59 +02:00
github-actions[bot]
4560a72c32 Merge 85d375b128 into dev 2020-08-03 11:40:16 +00:00
Gabor Kiss-Vamosi
85d375b128 Update ROADMAP.md 2020-08-03 13:39:51 +02:00
github-actions[bot]
99f49f9097 Merge a0e6f7f022 into dev 2020-08-03 11:37:40 +00:00
Gabor Kiss-Vamosi
a0e6f7f022 Update ROADMAP.md 2020-08-03 13:37:11 +02:00
Droup
1c3bbc9f6c Fix focus move
Signed-off-by: Droup <droup@pm.me>
2020-08-03 10:38:18 +02:00
Gabor Kiss-Vamosi
07cb113c0a add radius, border_side and boder_post to style cache 2020-08-03 09:37:01 +02:00
Gabor Kiss-Vamosi
61a5cb44b8 optimze style asking order in lv_obj_init_draw_xxx_dsc function 2020-08-03 07:17:21 +02:00
Gabor Kiss-Vamosi
6ccfd0101a style cache: add missing LV_STYLE_FONT_TEXT to cachable proeprties 2020-08-03 07:03:54 +02:00
Gabor Kiss-Vamosi
1b29814e1e improve style caching 2020-08-03 06:43:25 +02:00
Gabor Kiss-Vamosi
ae0e855d91 style cache fixes 2020-08-02 20:49:21 +02:00
github-actions[bot]
0aa4591021 Merge c85295b5ea into dev 2020-08-02 10:05:44 +00:00
Gabor Kiss-Vamosi
c85295b5ea update CHANGELOG 2020-08-02 12:05:00 +02:00
Gabor Kiss-Vamosi
28213adfa6 -fix using freed memory in _lv_style_list_remove_style
Fixes: #1694
2020-08-02 12:05:00 +02:00
Gabor Kiss-Vamosi
11cab40103 import style caching 2020-08-02 11:36:27 +02:00
Gabor Kiss-Vamosi
41fd83e1d3 implement caching on style lists 2020-08-02 10:14:29 +02:00
github-actions[bot]
25b0b994a0 Merge 2b60f4496f into dev 2020-08-01 17:36:31 +00:00
DefinPlusPlus
2b60f4496f Fixed infinite loop during calculation size of lv_list (#1700) 2020-08-01 13:36:07 -04:00
github-actions[bot]
1d714bfed7 Merge b7d7bf7dd5 into dev 2020-07-31 20:14:15 +00:00
Gabor Kiss-Vamosi
b7d7bf7dd5 Update README.md 2020-07-31 22:13:46 +02:00
Droup
373af97472 page: Use padding when focus an child item
Signed-off-by: Droup <droup@pm.me>
2020-07-31 14:32:17 +02:00
github-actions[bot]
3e9495a074 Merge 1072b71ea0 into dev 2020-07-30 09:12:45 +00:00
Gabor Kiss-Vamosi
1072b71ea0 gauge: fix image needle drawing 2020-07-30 11:11:54 +02:00
Sven Krauß
b0e3f11da1 Make lv_draw_line_dsc_t parameters constant 2020-07-28 17:08:21 +02:00
github-actions[bot]
cb0d6f40c9 Merge 0f69469eee into dev 2020-07-28 10:19:14 +00:00
Seth Itow
0f69469eee README.md: Update link to Micropython documentation (#1693) 2020-07-28 06:18:42 -04:00
github-actions[bot]
f2a59c23f1 Merge cac6f92964 into dev 2020-07-27 18:19:43 +00:00
Gabor Kiss-Vamosi
cac6f92964 fix warning 2020-07-27 20:19:02 +02:00
github-actions[bot]
0d2784a13e Merge 80a4c6ff14 into dev 2020-07-27 15:58:55 +00:00
Gabor Kiss-Vamosi
80a4c6ff14 update CHANGELOG 2020-07-27 17:58:10 +02:00
Gabor Kiss-Vamosi
013ae48221 Merge branch 'size_reduction' 2020-07-27 17:47:25 +02:00
github-actions[bot]
daec3626bc Merge fd695c9ad3 into dev 2020-07-27 15:47:05 +00:00
Gabor Kiss-Vamosi
fd695c9ad3 textarea: fix typo in lv_textarea_set_sscrollbar_mode
Fixes #1691
2020-07-27 17:46:10 +02:00
github-actions[bot]
88ce04cea3 Merge 06d7a6d006 into dev 2020-07-27 14:01:19 +00:00
Gabor Kiss-Vamosi
06d7a6d006 btnmatrix: hadle combined states of buttons (e.g. chacked + disabled) 2020-07-27 15:57:28 +02:00
github-actions[bot]
529fee1e20 Merge ca9dfb7063 into dev 2020-07-27 12:30:52 +00:00
Gabor Kiss-Vamosi
ca9dfb7063 Update FUNDING.yml 2020-07-27 14:30:22 +02:00
github-actions[bot]
83ca45e0c8 Merge fd411e200f into dev 2020-07-27 12:30:13 +00:00
Gabor Kiss-Vamosi
fd411e200f Update and rename _FUNDING.yml to FUNDING.yml 2020-07-27 14:29:41 +02:00
github-actions[bot]
3592a2ac17 Merge 8cc951202c into dev 2020-07-27 12:18:37 +00:00
Gabor Kiss-Vamosi
8cc951202c Rename FUNDING.yml to _FUNDING.yml 2020-07-27 14:17:58 +02:00
github-actions[bot]
ac89d1245b Merge 2172ec93a2 into dev 2020-07-27 12:16:37 +00:00
Gabor Kiss-Vamosi
2172ec93a2 material theme minor fix
Fixes #1689
2020-07-27 14:16:06 +02:00
Gabor Kiss-Vamosi
c173f28a3f add underline properties to the fonts 2020-07-27 12:47:07 +02:00
github-actions[bot]
a5a7329d41 Merge ed10c1da67 into dev 2020-07-26 19:15:06 +00:00
Gabor Kiss-Vamosi
ed10c1da67 Add LV_THEME_MATERIAL_FLAG_NO_TRANSITION and LV_THEME_MATERIAL_FLAG_NO_FOCUS flags 2020-07-26 21:14:10 +02:00
github-actions[bot]
bb730735f2 Merge 834b498aec into dev 2020-07-24 19:51:40 +00:00
Gabor Kiss-Vamosi
834b498aec Update ROADMAP.md 2020-07-24 21:51:08 +02:00
github-actions[bot]
2fb690b3b9 Merge 28a668ce09 into dev 2020-07-24 19:50:15 +00:00
Gabor Kiss-Vamosi
28a668ce09 Create ROADMAP.md 2020-07-24 21:49:44 +02:00
Gabor Kiss-Vamosi
86ebd874b7 make LV_FS_SEEK_... compatible with standard SEEK_... 2020-07-24 21:37:54 +02:00
Gabor Kiss-Vamosi
686483be89 first step to simplify FS API 2020-07-24 19:42:01 +02:00
github-actions[bot]
5a2cf28c54 Merge ed480e821c into dev 2020-07-24 14:32:06 +00:00
Gabor Kiss-Vamosi
ed480e821c Merge pull request #1684 from lvgl/pete-pjb-cpicker
Tidy up the edges of the colour picker widget.
2020-07-24 16:31:35 +02:00
Gabor Kiss-Vamosi
f11f7c5223 Merge branch 'master' into pete-pjb-cpicker 2020-07-24 16:30:39 +02:00
github-actions[bot]
3b4bff79c2 Merge f30dc5d186 into dev 2020-07-24 14:16:54 +00:00
Gabor Kiss-Vamosi
f30dc5d186 remove duplicated lines from lv_tabview_add_tab 2020-07-24 16:16:18 +02:00
pete-pjb
da5c9dd424 Add define and comment to explain magic number used in previous fix. 2020-07-24 13:50:35 +01:00
pete-pjb
89adfbc816 Fix ragged edge of Colour Picker. 2020-07-24 10:15:29 +01:00
pete-pjb
d125472e81 Update change log. 2020-07-23 14:24:28 +01:00
pete-pjb
28495b9eb9 Tidy up the edges of the colour picker widget. 2020-07-23 14:15:34 +01:00
github-actions[bot]
4fefa2ee28 Merge 00e93a5d30 into dev 2020-07-22 16:24:25 +00:00
Gabor Kiss-Vamosi
00e93a5d30 Update CHANGELOG.md 2020-07-22 18:23:56 +02:00
github-actions[bot]
95ef03baa8 Merge dae3ebdb66 into dev 2020-07-22 16:23:36 +00:00
Gabor Kiss-Vamosi
dae3ebdb66 Merge pull request #1679 from lvgl/embeddedt-patch-1
textarea: don't call LV_EVENT_INSERT too far before insertion
2020-07-22 18:22:57 +02:00
Gabor Kiss-Vamosi
fb3e6ec1f4 textarea: add insert handler functions 2020-07-22 16:28:03 +02:00
github-actions[bot]
bb4e4a9e53 Merge 4df27fc5b2 into dev 2020-07-22 14:26:22 +00:00
Gabor Kiss-Vamosi
4df27fc5b2 Update CHANGELOG.md 2020-07-22 16:25:42 +02:00
github-actions[bot]
f7870310dc Merge 3c3fe46447 into dev 2020-07-22 14:19:34 +00:00
Gabor Kiss-Vamosi
3c3fe46447 Update CHANGELOG.md 2020-07-22 16:18:49 +02:00
Gabor Kiss-Vamosi
2278fb3610 add styling to material theme 2020-07-21 22:12:13 +02:00
Gabor Kiss-Vamosi
0b78cbf937 scroll: minor fixes 2020-07-21 22:12:04 +02:00
Gabor Kiss-Vamosi
7a1d9e7753 scroll: handle scroll modes 2020-07-21 21:47:31 +02:00
Gabor Kiss-Vamosi
5cce6daa4a scroll: remove drag 2020-07-21 21:09:33 +02:00
embeddedt
806f3a9bbf textarea: don't call LV_EVENT_INSERT too far before insertion 2020-07-21 11:16:26 -04:00
github-actions[bot]
dca7cedb28 Merge 557342cc08 into dev 2020-07-21 14:39:50 +00:00
Gabor Kiss-Vamosi
557342cc08 Do not print for missing glyph if its height OR width is zero
Fixes: #1674
2020-07-21 16:39:04 +02:00
Gabor Kiss-Vamosi
eb725a3a68 add LV_USE_FONT_SUBPX option and draw_full_border() to avoid duplication in outline and border drawing 2020-07-21 16:06:14 +02:00
Gabor Kiss-Vamosi
53f002c3f8 Merge branch 'dev' into size_reduction 2020-07-21 16:03:54 +02:00
Gabor Kiss-Vamosi
b48120947f Merge branch 'master' into size_reduction 2020-07-21 14:44:11 +02:00
Gabor Kiss-Vamosi
4659289924 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-07-21 13:43:16 +02:00
Gabor Kiss-Vamosi
cc0ea22903 increment version number to v7.4-dev 2020-07-21 13:43:05 +02:00
github-actions[bot]
c0ca1a025b Merge 35b3a1f2a4 into dev 2020-07-21 11:42:42 +00:00
Gabor Kiss-Vamosi
35b3a1f2a4 merge dev 2020-07-21 13:42:02 +02:00
Gabor Kiss-Vamosi
6731e44503 Merge branch 'dev' 2020-07-21 13:40:36 +02:00
Gabor Kiss-Vamosi
7b68e6e426 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-07-21 13:38:24 +02:00
Gabor Kiss-Vamosi
c36a96914b fix release script 2020-07-21 13:38:04 +02:00
github-actions[bot]
ab6f93db24 Merge 57079452b0 into dev 2020-07-21 11:30:20 +00:00
Gabor Kiss-Vamosi
57079452b0 Release v7.2.0 2020-07-21 13:29:37 +02:00
Gabor Kiss-Vamosi
960bca7807 Run code formatter 2020-07-21 13:29:36 +02:00
github-actions[bot]
67400d1d72 Merge ecfef570ea into dev 2020-07-17 15:35:14 +00:00
Gabor Kiss-Vamosi
ecfef570ea Merge pull request #1672 from adamhan2/fix_issue_1671
fixes #1671 lv_cont_layout_grid() fails to calculate available space in a row
2020-07-17 17:34:43 +02:00
Adam Han
75875e244d fixes #1671 lv_cont_layout_grid() fails to calculate available space in a row
this issue results in space waste in right side of container
  the size of wasted space in each row is pad_left plus pad_inner
2020-07-17 15:51:09 +01:00
github-actions[bot]
1db33435c1 Merge 2d984da893 into dev 2020-07-17 12:09:30 +00:00
Gabor Kiss-Vamosi
2d984da893 improve mono theme when used with keyboard or encoder 2020-07-17 14:08:42 +02:00
github-actions[bot]
5b062a0d8d Merge c0a7cf76b9 into dev 2020-07-17 09:42:43 +00:00
Gabor Kiss-Vamosi
c0a7cf76b9 minor fixes with LV_COLOR_DEPTH == 1 2020-07-17 11:42:08 +02:00
github-actions[bot]
44e57aaaf5 Merge d06fe5100e into dev 2020-07-17 08:26:44 +00:00
Gabor Kiss-Vamosi
d06fe5100e Merge pull request #1670 from mentha/patch-1
Fix lv_canvas_set_buffer document
2020-07-17 10:26:00 +02:00
mentha
ae94302f4d Fix lv_canvas_set_buffer doc
Lines in canvas buffers are byte aligned so buffers might request larger size and contain unused bits.
The previous documented calc method would often result in a buffer size smaller than what was expected by LVGL, leading to memory corruption and program crash.
2020-07-17 16:09:24 +08:00
Themba Dube
b26b4435a5 Add LV_USE_FONT_COMPRESSED to lv_conf_template.h 2020-07-16 18:58:28 -04:00
Themba Dube
da9a5f58d0 Don't include blending code if LV_USE_BLEND_MODES is disabled 2020-07-16 18:55:35 -04:00
Themba Dube
a4774ccc72 Add LV_USE_FONT_COMPRESSED to control support for compressed fonts 2020-07-16 18:55:25 -04:00
github-actions[bot]
a6289f5e85 Merge dd56e9a013 into dev 2020-07-16 11:09:48 +00:00
Gabor Kiss-Vamosi
dd56e9a013 set the cursor object non clickable by default
Fixes: #1664
2020-07-16 13:09:09 +02:00
Gabor Kiss-Vamosi
01a78485aa scroll: set default style values 2020-07-16 13:06:32 +02:00
github-actions[bot]
e31993bdf2 Merge 6dac633235 into dev 2020-07-15 06:58:39 +00:00
Gabor Kiss-Vamosi
6dac633235 Merge pull request #1663 from diegoherranz/readme_typos
Fix README typos
2020-07-15 08:58:10 +02:00
Diego Herranz
1d5300e02f Fix README typos 2020-07-15 07:55:27 +01:00
Gabor Kiss-Vamosi
a86e03371f scroll: handle styles 2020-07-14 20:07:49 +02:00
github-actions[bot]
b646365e2c Merge 798f3177f2 into dev 2020-07-14 15:37:09 +00:00
Gabor Kiss-Vamosi
798f3177f2 Update README.md 2020-07-14 17:36:41 +02:00
github-actions[bot]
0921cf6e3b Merge ac5f1998e4 into dev 2020-07-14 15:16:11 +00:00
Gabor Kiss-Vamosi
ac5f1998e4 Update README.md 2020-07-14 17:15:30 +02:00
github-actions[bot]
433435889a Merge a66afca68e into dev 2020-07-14 15:07:16 +00:00
Gabor Kiss-Vamosi
a66afca68e Update README.md 2020-07-14 17:06:33 +02:00
Gabor Kiss-Vamosi
b1213dcc59 remove lv_event_queue_refresh_recursive
keep only the synchronous functions for refresh for easier maintanance
2020-07-14 15:25:56 +02:00
Gabor Kiss-Vamosi
f3a1028064 scroll: handle horizontayl scrolling 2020-07-14 15:23:20 +02:00
github-actions[bot]
f8c8c4040a Merge 2f33670b4f into dev 2020-07-14 11:37:37 +00:00
Gabor Kiss-Vamosi
2f33670b4f Merge pull request #1661 from tehkillerbee/master
Handle LV_EVENT_CANCEL in list/group
2020-07-14 13:37:10 +02:00
Johannes Linde
d8e10c41cf Handle ESC/Cancel event in list 2020-07-14 12:04:53 +02:00
Gabor Kiss-Vamosi
7e38ac68e3 Update CHANGELOG.md 2020-07-13 19:59:53 +02:00
Gabor Kiss-Vamosi
abff805509 Merge pull request #1653 from mibcat/tabview-set-tab-name
widget tableview: add new function lv_tabview_set_tab_name() to change a tab name during runtime
2020-07-13 19:57:25 +02:00
Michael Katzenberger
18072b3dd4 update CHANGELOG.md 2020-07-13 19:56:06 +02:00
github-actions[bot]
4640611758 Merge baeda1998f into dev 2020-07-13 13:31:40 +00:00
pete-pjb
baeda1998f Fix chart linked list free before use bug. 2020-07-13 14:26:04 +01:00
Gabor Kiss-Vamosi
e1a09551ce fix drawing on right border 2020-07-13 09:43:18 +02:00
Michael Katzenberger
ba7a86de74 implement review findings: use C-style comments 2020-07-12 14:22:09 +02:00
Michael Katzenberger
6cb79914a8 widget tableview: add function lv_tabview_set_tab_name() to change a tab name 2020-07-12 11:46:12 +02:00
github-actions[bot]
f1f0aa621a Merge 43a77d8699 into dev 2020-07-10 13:04:49 +00:00
Gabor Kiss-Vamosi
43a77d8699 linemeter: fix arc drawing if the value is close to max value 2020-07-10 15:04:02 +02:00
github-actions[bot]
58b88bf1fb Merge 96bc397821 into dev 2020-07-10 12:57:43 +00:00
Gabor Kiss-Vamosi
96bc397821 linemeter: fix conversation of current value to "level"
Related to #1648
2020-07-10 14:57:03 +02:00
github-actions[bot]
fd508065dd Merge 416ef9e251 into dev 2020-07-09 12:42:08 +00:00
Gabor Kiss-Vamosi
416ef9e251 fix chart series area invalidation 2020-07-09 14:41:24 +02:00
Gabor Kiss-Vamosi
09250d0a92 Delete queued refresh queries 2020-07-09 14:13:21 +02:00
Gabor Kiss-Vamosi
ce0fb2da4d scroll: add scroll chain 2020-07-08 20:07:10 +02:00
github-actions[bot]
822e06be39 Merge c07ef75ac5 into dev 2020-07-08 13:03:31 +00:00
Gabor Kiss-Vamosi
c07ef75ac5 update release script 2020-07-08 15:02:53 +02:00
github-actions[bot]
2a6f5d46ab Merge e3f6a3327d into dev 2020-07-08 12:59:42 +00:00
Gabor Kiss-Vamosi
0cea8b2c08 scroll: wip 2020-07-08 14:59:19 +02:00
Gabor Kiss-Vamosi
e3f6a3327d Update library.json 2020-07-08 14:59:02 +02:00
github-actions[bot]
6227aaee96 Merge 08591a8e8c into dev 2020-07-08 11:43:18 +00:00
Pete Bone
08591a8e8c Merge pull request #1646 from DaPa/master
Fix lv_page_get_height_grid comment
2020-07-08 12:42:51 +01:00
DaPa
106e023c80 Fix lv_page_get_height_grid comment 2020-07-08 14:36:13 +03:00
Gabor Kiss-Vamosi
9cfd399fb3 scroll: add scroll throw 2020-07-08 12:29:47 +02:00
Gabor Kiss-Vamosi
d813bbe5e2 Merge branch 'dev' into feat/new-scroll 2020-07-08 11:04:42 +02:00
Gabor Kiss-Vamosi
a5de71933b fix typoe in comments 2020-07-08 10:31:52 +02:00
github-actions[bot]
e85888908a Merge 1a3b6d4cb3 into dev 2020-07-08 07:36:08 +00:00
Gabor Kiss-Vamosi
1a3b6d4cb3 update lv_conf_internal.h 2020-07-08 09:35:25 +02:00
github-actions[bot]
e587ceb22e Merge b769463d39 into dev 2020-07-08 07:32:39 +00:00
Gabor Kiss-Vamosi
b769463d39 update CHANGELONG and lv_conf_internal.h 2020-07-08 09:31:52 +02:00
Gabor Kiss-Vamosi
cbc88285d3 change default fot to 14 px for better compatibility with small displays
Related to #1602
2020-07-08 09:31:52 +02:00
Gabor Kiss-Vamosi
ec64820272 tileview: fix navigation when not screen sized 2020-07-08 09:31:52 +02:00
Gabor Kiss-Vamosi
15b7ea6614 Add lv_event_send_refresh, lv_event_send_refresh_recursive, lv_event_queue_refresh_recursive
Used to easily send LV_EVENT_REFRESH to objects
2020-07-08 09:29:48 +02:00
Gabor Kiss-Vamosi
843555a4b1 Add lv_task_get_next 2020-07-08 09:29:48 +02:00
github-actions[bot]
5f4c26cb79 Merge 019042297d into dev 2020-07-08 04:27:23 +00:00
Gabor Kiss-Vamosi
019042297d Update library.json 2020-07-08 06:26:56 +02:00
github-actions[bot]
46a4469a9c Merge 646cb71a9d into dev 2020-07-07 18:41:18 +00:00
Gabor Kiss-Vamosi
646cb71a9d Update library.json 2020-07-07 20:40:33 +02:00
github-actions[bot]
ad262172de Merge 343b70b19c into dev 2020-07-07 11:09:52 +00:00
Gabor Kiss-Vamosi
343b70b19c Update auto-comment.yml 2020-07-07 13:09:26 +02:00
github-actions[bot]
b802e7e775 Merge 2cecd01b30 into dev 2020-07-07 11:07:33 +00:00
Gabor Kiss-Vamosi
2cecd01b30 Update auto-comment.yml 2020-07-07 13:07:02 +02:00
github-actions[bot]
2ba1fc625f Merge aff7a22ac5 into dev 2020-07-07 11:04:10 +00:00
Gabor Kiss-Vamosi
aff7a22ac5 Update auto-comment.yml 2020-07-07 13:03:30 +02:00
github-actions[bot]
5a23fd569b Merge 234e74202c into dev 2020-07-07 10:58:47 +00:00
Gabor Kiss-Vamosi
234e74202c image decoder open bug described in #1638 2020-07-07 12:58:13 +02:00
github-actions[bot]
914c874ada Merge a6793b2695 into dev 2020-07-07 10:45:11 +00:00
Gabor Kiss-Vamosi
a6793b2695 Update auto-comment.yml 2020-07-07 12:44:42 +02:00
Gabor Kiss-Vamosi
cae5132038 rotary: fix with low chg_rate 2020-07-07 12:35:23 +02:00
github-actions[bot]
45bf6a3862 Merge c599a59f05 into dev 2020-07-07 09:31:48 +00:00
github-actions[bot]
f00a6a118d Merge c97a0684cf into dev 2020-07-07 09:31:03 +00:00
Gabor Kiss-Vamosi
c599a59f05 Update README.md 2020-07-07 11:31:00 +02:00
Gabor Kiss-Vamosi
c97a0684cf Create auto-comment.yml 2020-07-07 11:30:35 +02:00
github-actions[bot]
418413e334 Merge faf56680f8 into dev 2020-07-07 09:30:07 +00:00
github-actions[bot]
815e0afdaf Merge b2d78dcca7 into dev 2020-07-07 09:29:50 +00:00
Gabor Kiss-Vamosi
faf56680f8 Delete auto-comment.yml 2020-07-07 11:29:41 +02:00
Gabor Kiss-Vamosi
b2d78dcca7 Create auto-comment.yml 2020-07-07 11:29:20 +02:00
Gabor Kiss-Vamosi
38e68eeb7a update version number 2020-07-07 10:06:49 +02:00
github-actions[bot]
0f69cbf087 Merge 039080fc26 into dev 2020-07-07 08:06:19 +00:00
Gabor Kiss-Vamosi
039080fc26 update changlog 2020-07-07 10:05:29 +02:00
Gabor Kiss-Vamosi
7e9cf858d6 update version number 2020-07-07 10:03:52 +02:00
Gabor Kiss-Vamosi
a740af4afb fix conflicts 2020-07-07 10:02:50 +02:00
Gabor Kiss-Vamosi
a117b3cead update relaese script 2020-07-07 10:01:28 +02:00
Gabor Kiss-Vamosi
e30efb716f Release v7.1.0 2020-07-07 09:37:00 +02:00
Gabor Kiss-Vamosi
43f5e4d2e0 Run code formatter 2020-07-07 09:36:59 +02:00
github-actions[bot]
e178bcc9f3 Merge d8585d2ea3 into dev 2020-07-07 07:32:59 +00:00
Gabor Kiss-Vamosi
d8585d2ea3 update release.py 2020-07-07 09:32:21 +02:00
Gabor Kiss-Vamosi
bb68dde55d scroll: start scrollbar 2020-07-07 09:02:41 +02:00
Gabor Kiss-Vamosi
96728e7ed9 rotary: minor refactoring 2020-07-06 11:51:26 +02:00
Adam Martini
83bdb6c347 Reverse angle delta logic 2020-07-05 14:44:11 -07:00
Adam Martini
085a6499a7 Comment updates for clarity 2020-07-05 13:59:03 -07:00
Adam Martini
b371bd3d05 Capture tick at drap start 2020-07-05 13:50:05 -07:00
Adam Martini
cf39677dfa Use tick elps 2020-07-05 13:30:07 -07:00
Adam Martini
a0bf57f529 tick type 2020-07-05 13:22:37 -07:00
Adam Martini
7a10b700e2 Remove use of tick_elaspe 2020-07-05 13:21:54 -07:00
Adam Martini
aea84d8d79 Cache timestamp for slew rate limit interation 2020-07-05 13:18:08 -07:00
Adam Martini
e3f4c11500 Remove previous thresholding and add creation defaults. Move angle caching to set value to cache last angel for type changes and external value setters. 2020-07-05 12:49:27 -07:00
Adam Martini
e256a27b5a Add slew rate limited angle delta based on threshold of degress/sec 2020-07-05 12:25:44 -07:00
github-actions[bot]
41c4c25315 Merge 9e56f750a7 into dev 2020-07-04 23:50:42 +00:00
Amir Gonnen
9e56f750a7 Prevent compiler warning in lv_draw_rect.c (#1637) 2020-07-04 19:50:14 -04:00
github-actions[bot]
4396196889 Merge e6fe8436f4 into dev 2020-07-04 11:30:45 +00:00
guoweilkd
e6fe8436f4 Fix #1634: bug in lv_tileview_scrl_signal (#1636) 2020-07-04 07:30:07 -04:00
github-actions[bot]
f3f1c606b6 Merge e9d3001dbf into dev 2020-07-03 12:49:29 +00:00
Gabor Kiss-Vamosi
e9d3001dbf img: improve hit test for transformed images 2020-07-03 14:48:54 +02:00
Gabor Kiss-Vamosi
fd186eeb15 roller: fix copy 2020-07-03 14:24:23 +02:00
Gabor Kiss-Vamosi
b091b676fe scroll: add animation and elastic scroll 2020-07-02 13:04:44 +02:00
Gabor Kiss-Vamosi
e7648f1c00 Merge branch 'dev' into feat/new-scroll 2020-07-02 09:27:04 +02:00
github-actions[bot]
25607ceaee Merge 4b2c3e560b into dev 2020-07-01 14:14:54 +00:00
Petri HARRI
4b2c3e560b lv_slider: add knob-only feature and fix bug with symmetrical slider (#1578) 2020-07-01 10:14:14 -04:00
Gabor Kiss-Vamosi
989016dff3 fix conflicts 2020-07-01 15:21:14 +02:00
Gabor Kiss-Vamosi
c54788fae4 fix conflicts 2020-07-01 15:19:29 +02:00
Themba Dube
c7fb2ad12c Merge branch 'master' into dev 2020-07-01 09:19:17 -04:00
Gabor Kiss-Vamosi
2fdeaf5599 fix conflicts 2020-07-01 15:18:48 +02:00
Gabor Kiss-Vamosi
1051e3f5a4 roller: fix copy. Closes #1628 2020-07-01 15:15:12 +02:00
Gabor Kiss-Vamosi
0b68c21840 Merge pull request #1627 from xiaogangly/master
Fix a memory leak bug in function "lv_objmask_remove_mask" .
2020-07-01 15:09:10 +02:00
jbamaral
ac26442ca6 Fix lv_textarea_add_char on big endian (#1620) 2020-07-01 09:08:45 -04:00
Pete Bone
b539e6dc46 Merge pull request #1630 from pete-pjb/dev
New functions for Check Box and a minor bug fix
2020-07-01 12:44:41 +01:00
pete-pjb
06603a9c84 New functions for Check Box and a minor bug fix
Remove use of c++ keyword 'new' from function parameter in
lv_theme_set_base() function.
Add function lv_checkbox_set_state(lv_obj_t * cb, lv_btn_state_t state).
Add function lv_checkbox_get_state(const lv_obj_t * cb)
Update Change log.
2020-07-01 12:13:46 +01:00
github-actions[bot]
6b45f3ade5 Merge 6b246b2fed into dev 2020-07-01 08:53:55 +00:00
Gabor Kiss-Vamosi
6b246b2fed fix default theme colors 2020-07-01 10:53:23 +02:00
xiaogangly
86f74e3da2 Fix a memory leak bug in function "lv_objmask_remove_mask" .
There is a little memory leak When you call function "lv_objmask_remove_mask" to remove a specified mask.
It's need free the memory of list's node.
2020-07-01 15:26:37 +08:00
Gabor Kiss-Vamosi
c4e7d7cb83 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-06-30 17:09:57 +02:00
github-actions[bot]
43b69a88a9 Merge 6d1da27b3c into dev 2020-06-30 07:44:39 +00:00
Gabor Kiss-Vamosi
6d1da27b3c Create merge-to-dev.yml 2020-06-30 09:43:58 +02:00
Gabor Kiss-Vamosi
bae04005d3 update old function name in comment 2020-06-29 20:47:55 +02:00
Gabor Kiss-Vamosi
edeca8c01b Merge pull request #1619 from liangyongxiang/master
Add conditional macro LV_USE_GROUP to more GROUP related singles:
2020-06-29 14:52:18 +02:00
Gabor Kiss-Vamosi
3aa35a77cb rotary: minor fixes on dragging 2020-06-28 22:03:20 +02:00
Gabor Kiss-Vamosi
069e24bdb2 add examples folder with arduio examples and move porting folder there 2020-06-28 20:37:32 +02:00
Gabor Kiss-Vamosi
d0db0bab5c add Arduino library files 2020-06-28 20:10:30 +02:00
Themba Dube
421f1b2c01 lv_gpu: fix #1617 by renaming internal macros
This avoids conflicts with STM32Cube.
2020-06-28 09:16:25 -04:00
Gabor Kiss-Vamosi
92027cc06f lv_hal_tick: revert using uint32_t as tick_irq_flag
uint8_t surely can be written in 1 instruction even on 16 bit MCUs
2020-06-28 13:32:40 +02:00
Gabor Kiss-Vamosi
ddbeb212b7 Add support to compressed fonts without pre-filter to gain some speed by sacrificing some memory 2020-06-28 13:29:01 +02:00
Gabor Kiss-Vamosi
e55500af5d scroll: add basic api 2020-06-28 13:19:28 +02:00
liangyongxiang
d055944ebb Add conditional macro LV_USE_GROUP to more GROUP related singles:
- LV_SIGNAL_CONTROL
- LV_SIGNAL_GET_EDITABLE
2020-06-28 12:48:37 +08:00
Amir Gonnen
40daa7195d lv_theme: add lv_theme_set_apply_cb (#1616) 2020-06-27 17:46:22 -04:00
Gabor Kiss-Vamosi
3e8b39c404 Merge pull request #1613 from 3096/lv_win-style-fix
material theme: fix lv_win uninitialed styles
2020-06-27 10:35:18 +02:00
3096
e06201f042 material theme: fix lv_win uninitialed styles 2020-06-26 22:27:52 -07:00
Gabor Kiss-Vamosi
2d7423100a fix conflicts 2020-06-27 06:57:28 +02:00
Gabor Kiss-Vamosi
6971d603d2 add lv_theme_copy 2020-06-27 06:54:47 +02:00
Adam Martini
3af55796d9 Remove uneeded point manupulaton 2020-06-26 19:39:10 -07:00
Adam Martini
200c1e788f Second pass at angle based drag. Working with proper threshold setting with knowledge of rotary range. 2020-06-26 16:54:36 -07:00
Amir Gonnen
aad9f4f0c1 Add lv_dpx inline function (#1612)
Identical to LV_DPX (no code additions)
2020-06-26 18:04:46 -04:00
Adam Martini
d271fd6108 Adjust click area extension 2020-06-26 12:35:41 -07:00
Gabor Kiss-Vamosi
76625adec2 fix typo in lv_obj_align_origo_x/y 2020-06-26 21:02:06 +02:00
Gabor Kiss-Vamosi
8b3f9f19f6 add lv_obj_align_origo_x() and lv_obj_align_origo_y() functions 2020-06-26 20:59:57 +02:00
Gabor Kiss-Vamosi
97f999ed9f add lv_obj_align_x() and lv_obj_align_y() functions 2020-06-26 20:52:21 +02:00
Gabor Kiss-Vamosi
e678a2c599 chart: add lv_chart_set_series_axis and lv_chart_set_y_range 2020-06-26 20:31:20 +02:00
Adam Martini
7e4b8aa49b Second attempt arc drag 2020-06-26 09:46:55 -07:00
Adam Martini
c36f731316 Only drag in one dimension because its too jumpy 2020-06-26 08:50:24 -07:00
Adam Martini
849d3d3255 Use point as last point 2020-06-26 08:48:12 -07:00
Adam Martini
ec4cc14bf9 Remove unsec x setter 2020-06-26 08:46:56 -07:00
Adam Martini
7de60867ef Set last drag point based on diffs 2020-06-26 08:45:41 -07:00
Adam Martini
4011d54668 Use the max x and y drag diff to control drag 2020-06-26 08:40:30 -07:00
Gabor Kiss-Vamosi
6056bc3b95 clraify the tricky loop in lv_tick_get 2020-06-26 14:35:30 +02:00
Gabor Kiss-Vamosi
91f64c8662 Add lv_theme_set_base() to allow easy extension of built-in (or any) themes 2020-06-26 14:05:34 +02:00
Gabor Kiss-Vamosi
274d0b522d Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-06-26 09:39:29 +02:00
Gabor Kiss-Vamosi
ac7527fecf minor optimization in lv_obj_init_draw_img_dsc 2020-06-26 09:39:19 +02:00
Adam Martini
8bcbceef08 Send event on if the value really does change 2020-06-25 23:05:48 -07:00
Adam Martini
7ce9a969c8 Rever drag limit integration as it makes rotary control too granular 2020-06-25 22:43:54 -07:00
Adam Martini
f836e90869 Account for indev drag limit 2020-06-25 22:40:03 -07:00
Adam Martini
6d07effbc3 Revert arc tracking 2020-06-25 21:39:19 -07:00
Adam Martini
a73b316681 Remove undeclared 2020-06-25 21:27:18 -07:00
Adam Martini
70a2287568 Remove undeclared 2020-06-25 21:24:19 -07:00
Adam Martini
9e3d8c9090 Remove undeclared 2020-06-25 21:23:14 -07:00
Adam Martini
2d4c709a88 Get area width using pointer 2020-06-25 21:22:37 -07:00
Adam Martini
92ecff3fc0 WIP: dragging on ring only using lv_atan 2020-06-25 21:18:42 -07:00
Gabor Kiss-Vamosi
2ed6b4e2f5 Merge pull request #1607 from jbamaral/fix-img-big-endian-pr
fix image demos on big endian systems
2020-06-25 17:11:46 +02:00
embeddedt
3761db65e0 Fix spelling issue 2020-06-25 07:32:45 -04:00
Gabor Kiss-Vamosi
eb006b3d39 finialze screen animations 2020-06-25 12:43:45 +02:00
Gabor Kiss-Vamosi
f10f94bea3 use void * as theme user data for backward compatibility 2020-06-25 12:43:44 +02:00
Gabor Kiss-Vamosi
710226c6db add user_data to themes 2020-06-25 12:43:44 +02:00
Gabor Kiss-Vamosi
44a96df9fb initial implementation of screen load animation 2020-06-25 12:43:44 +02:00
embeddedt
cd788da47a Fix #1610: don't assert an expected null pointer 2020-06-25 12:43:44 +02:00
Gabor Kiss-Vamosi
c4eec78a02 lv_textarea fix cursor alignment with empty textarea when the text alignment is center or right 2020-06-25 12:43:44 +02:00
Gabor Kiss-Vamosi
1e33359d0c fix build error 2020-06-25 12:43:44 +02:00
Gabor Kiss-Vamosi
cf8357e004 fix focusing/defocusing for pages 2020-06-25 12:43:44 +02:00
Gabor Kiss-Vamosi
8f243c01d5 style: minor fix on getting style attributes + formatting 2020-06-25 12:43:44 +02:00
Gabor Kiss-Vamosi
e2aa68394c update changelog 2020-06-25 12:43:44 +02:00
Gabor Kiss-Vamosi
2828582c7a lv_img: fix invalidation area when angle or zoom changes 2020-06-25 12:43:44 +02:00
jbamaral
f6a2c635fd Improve big endian support (#1599) 2020-06-25 12:43:44 +02:00
Gabor Kiss-Vamosi
db24bf1d18 In lv_init test if the the strings are UTF-8 encoded 2020-06-25 12:42:06 +02:00
Deon Marais
8c151a2d43 Add missing lv_font_montserrat_34
if you do not mind me asking, and on matters of fonts why was Roboto changed to Montserrat when V7 was released ?
2020-06-25 12:42:06 +02:00
Gabor Kiss-Vamosi
52cca1dd9b use void * as theme user data for backward compatibility 2020-06-25 06:38:17 +02:00
Gabor Kiss-Vamosi
859f72eb84 add user_data to themes 2020-06-25 06:25:40 +02:00
embeddedt
b77d484a27 Fix #1610: don't assert an expected null pointer 2020-06-24 12:25:16 -04:00
jbamaral
1733508e9a move bug logs to their right position in changelog 2020-06-24 10:01:42 -03:00
jbamaral
5f6c7743ad update internal configuration 2020-06-24 08:38:44 -03:00
jbamaral
2550368d30 fix image demos on big endian systems 2020-06-24 08:30:45 -03:00
Gabor Kiss-Vamosi
63aba1b3de lv_textarea fix cursor alignment with empty textarea when the text alignment is center or right 2020-06-24 11:36:35 +02:00
Gabor Kiss-Vamosi
42f79763e1 fix build error 2020-06-24 11:28:51 +02:00
Gabor Kiss-Vamosi
be19e91e91 fix focusing/defocusing for pages 2020-06-24 11:24:07 +02:00
Gabor Kiss-Vamosi
9561aa767d style: minor fix on getting style attributes + formatting 2020-06-24 10:45:32 +02:00
Gabor Kiss-Vamosi
4c629ec23f update changelog 2020-06-24 10:04:30 +02:00
Gabor Kiss-Vamosi
8864cd87ee lv_img: fix invalidation area when angle or zoom changes 2020-06-24 10:03:37 +02:00
Adam Martini
f75428e52b Match rotary_bg line width to indicator width 2020-06-23 23:06:56 -07:00
Adam Martini
b414aa755d int32 fix to mapping logic 2020-06-23 13:33:25 -07:00
Adam Martini
5961800fe0 Fix map contract 2020-06-23 12:56:07 -07:00
Adam Martini
663af3dfb3 Shift mapping math out of floating point 2020-06-23 12:54:06 -07:00
jbamaral
916f5b343a Improve big endian support (#1599) 2020-06-23 08:30:33 -04:00
Gabor Kiss-Vamosi
c0223977d1 roller: fix misaligned option after setting new options 2020-06-23 11:44:06 +02:00
Gabor Kiss-Vamosi
e1c5d8950f Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-06-23 11:11:57 +02:00
Gabor Kiss-Vamosi
20c46ca640 In lv_init test if the the strings are UTF-8 encoded 2020-06-23 11:11:45 +02:00
Adam Martini
0aeb49d28a Fix Set sym end angle 2020-06-22 22:53:58 -07:00
Adam Martini
83d05f945f Fix bg_end init 2020-06-22 22:49:23 -07:00
Adam Martini
f0cae00574 Rearrange type call for clarity. Fix symmetric arc setters 2020-06-22 22:47:01 -07:00
Adam Martini
46f7dff9e2 Fix statement declaration 2020-06-22 21:56:31 -07:00
Adam Martini
9ede4ba707 typo 2020-06-22 21:54:47 -07:00
Adam Martini
1c071530ad Remove sym references 2020-06-22 21:54:03 -07:00
Adam Martini
ba10671b2b Rotary types. Add symmetric value setter 2020-06-22 21:50:21 -07:00
Gabor Kiss-Vamosi
188205399b Merge pull request #1598 from DeonMarais64/patch-1
Add missing lv_font_montserrat_34
2020-06-22 10:08:22 +02:00
Adam Martini
af7134269e Force set_value handling in reverse 2020-06-21 11:15:48 -07:00
Adam Martini
19a1afbd89 Fix reverse mapping 2020-06-21 11:05:24 -07:00
Adam Martini
5359a762b8 Reverse min and max in mapping reverse 2020-06-21 10:59:41 -07:00
Themba Dube
0d0427f8bc Merge remote-tracking branch 'origin/master' into dev 2020-06-21 08:32:48 -04:00
Adam Martini
0d6b8a86d4 Try reverse mapping 2020-06-21 00:36:39 -07:00
Adam Martini
6c01490372 Use value setter for reverse start angle setting 2020-06-21 00:34:08 -07:00
Adam Martini
4ab8520bfb Use lv math abs 2020-06-21 00:29:03 -07:00
Adam Martini
d60a6cbc76 Add reverse value mapping and arc tracking 2020-06-21 00:26:20 -07:00
Adam Martini
4bedc57b7d Add setter for threshold 2020-06-21 00:08:49 -07:00
Adam Martini
e1761d50a1 Test threshold for value jupming 2020-06-21 00:05:09 -07:00
Adam Martini
856368284e Test sensitivity threshold for value jumping 2020-06-20 23:58:03 -07:00
Adam Martini
ad990994d0 Fix release drag hoping better checking for -1 last drag x 2020-06-20 23:54:25 -07:00
Adam Martini
247b5b6f0c Fix drag diff calc 2020-06-20 23:43:40 -07:00
Adam Martini
6836947e67 typo 2020-06-20 23:33:50 -07:00
Adam Martini
dc873966e9 Make sensitivity an int 2020-06-20 23:33:18 -07:00
Adam Martini
fe483e8e21 Add sensitivity default explicit 2020-06-20 23:26:22 -07:00
Adam Martini
3a31577592 Add sesitivty setter 2020-06-20 23:20:12 -07:00
Adam Martini
3721fc52a8 Typo 2020-06-20 17:25:14 -07:00
Adam Martini
a7350282f0 Use drag diff for value setting 2020-06-20 17:24:34 -07:00
Adam Martini
c93ef97ab9 Remove NULL comp 2020-06-20 17:18:53 -07:00
Adam Martini
866e088f98 Copy knob_area to ext 2020-06-20 17:16:57 -07:00
Adam Martini
15ec0f8e2f Remove value_to_set remnant. Do not override checked opacity 2020-06-20 17:15:09 -07:00
Adam Martini
fc14c2c01c Remove chechable and toggle 2020-06-20 17:11:12 -07:00
Adam Martini
71f8497ee6 Add knob_area ext 2020-06-20 16:47:23 -07:00
Adam Martini
5a0c0e2e97 Add value change event calls for dragging 2020-06-20 16:43:53 -07:00
Adam Martini
3e079a47ae Pull btn functionality out for now, make checked state make DEAFULT. Add dragging value setters. 2020-06-20 16:40:47 -07:00
Adam Martini
35c0cfcfea Use custom event as data is not transfered to CB 2020-06-20 12:23:24 -07:00
Adam Martini
fa8deb524d Mising ; 2020-06-20 12:18:53 -07:00
Adam Martini
f3773694bc Remove custom event in favor or NULL diff 2020-06-20 12:17:15 -07:00
Adam Martini
1860742c13 Fix missing ;. Add custom event last 2020-06-20 12:14:17 -07:00
Adam Martini
f6d75e759c Add btn like signal handling for knob part. Add custom event to distuinguish from VALUE_CHANGED 2020-06-20 12:12:42 -07:00
Adam Martini
9b38b35420 Static state setter 2020-06-20 11:13:37 -07:00
Adam Martini
b1afc3f34d Add rotary state 2020-06-20 11:11:26 -07:00
Adam Martini
1dfdabd638 Test btn extension 2020-06-20 11:06:06 -07:00
Deon Marais
f9512f55cc Add missing lv_font_montserrat_34
if you do not mind me asking, and on matters of fonts why was Roboto changed to Montserrat when V7 was released ?
2020-06-20 09:08:59 +02:00
Adam Martini
446b0b6429 Floats working fro value mapping 2020-06-19 18:05:55 -07:00
Adam Martini
cf4db99206 Test float for mapping 2020-06-19 18:01:15 -07:00
Adam Martini
c854670062 Test float for mapping 2020-06-19 18:00:28 -07:00
Adam Martini
e100565c67 Move map function to proper func to avoid recalc of slope 2020-06-19 17:49:02 -07:00
Adam Martini
f5d9e4bff4 Fix range mapping for value setter assuming left to right indic 2020-06-19 17:39:50 -07:00
Adam Martini
7a7e1668fa Make value setter indic mapping from arc start to bg end. 2020-06-19 17:15:15 -07:00
Adam Martini
4e13d6ae4d Cast ext 2020-06-19 15:59:04 -07:00
Gabor Kiss-Vamosi
201d38c574 Add theme->apply_cb to replace theme->apply_xcb to make it compatible with the Micropython binding 2020-06-20 00:01:33 +02:00
Gabor Kiss-Vamosi
75a27e4cc7 rotary: leave the default size from arc + fix style get 2020-06-19 23:41:29 +02:00
Gabor Kiss-Vamosi
95b07a2d23 rotary: clean up 2020-06-19 23:25:17 +02:00
Gabor Kiss-Vamosi
94a710a5e1 Merge branch 'feature/1568_lv_rotary' of https://github.com/acumartini/lvgl into acumartini-feature/1568_lv_rotary 2020-06-19 23:00:03 +02:00
Adam Martini
b9dc9e81de Missing ; 2020-06-19 11:44:29 -07:00
Adam Martini
1396fce961 Fix debug import 2020-06-19 11:42:55 -07:00
Adam Martini
884be64d17 Fix rotary type getter. 2020-06-19 11:38:22 -07:00
embeddedt
8dbd685a90 Fix #1596: typo in lv_api_map.h 2020-06-19 10:13:53 -04:00
Gabor Kiss-Vamosi
4345e05e32 test
Signed-off-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2020-06-19 15:12:17 +02:00
Gabor Kiss-Vamosi
24b1a7735a roller: allow setting different font for the selected text 2020-06-19 13:17:45 +02:00
Adam Martini
168a7c4c45 Add theme define 2020-06-18 22:46:30 -07:00
Adam Martini
a696aef959 Use rotary param in type getter 2020-06-18 22:43:38 -07:00
Adam Martini
6dddbde387 Add ifndef to internal conf 2020-06-18 22:27:51 -07:00
Adam Martini
b9d92236e3 Add rotary to build.py defines 2020-06-18 22:25:41 -07:00
Adam Martini
2dc14fc7e5 Add missing rotary widget import 2020-06-18 22:22:22 -07:00
Adam Martini
2908a74b42 Reduce knob pad get logic 2020-06-18 17:11:15 -07:00
Adam Martini
1a41f13fd6 Initial lv_rotary work extending lv_arc with stubbed signal handler. 2020-06-18 17:06:24 -07:00
Gabor Kiss-Vamosi
b16f3ff8e7 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-06-18 16:32:14 +02:00
Gabor Kiss-Vamosi
0f4aeede79 Update README.md 2020-06-18 16:29:18 +02:00
Gabor Kiss-Vamosi
5d4873aa95 Update README.md 2020-06-18 16:19:57 +02:00
Gabor Kiss-Vamosi
8ac337d515 Update README.md 2020-06-18 16:13:04 +02:00
Gabor Kiss-Vamosi
2678068a86 Update CONTRIBUTING.md 2020-06-18 16:09:07 +02:00
Gabor Kiss-Vamosi
64be5e2096 Update CONTRIBUTING.md 2020-06-18 16:08:17 +02:00
Pete Bone
6b3d7759cc Merge pull request #1587 from pete-pjb/dev
Finalise chart function updates
2020-06-18 14:59:19 +01:00
Pete Bone
765b6c4015 Update CHANGELOG.md 2020-06-18 14:38:07 +01:00
Gabor Kiss-Vamosi
1521d64784 _lv_img_buf_get_transformed_area: do not calculate trivial case 2020-06-18 15:17:03 +02:00
Amir Gonnen
25fbcea31a Ensure mem_max_size is only used on non custom mem (#1588) 2020-06-18 06:40:39 -04:00
Gabor Kiss-Vamosi
51e064d836 Update CHANGELOG.md 2020-06-18 12:37:02 +02:00
Gabor Kiss-Vamosi
6ae7f67ef5 Update CHANGELOG.md 2020-06-18 12:36:05 +02:00
Gabor Kiss-Vamosi
156a3c005d Update CHANGELOG.md 2020-06-18 12:35:38 +02:00
Gabor Kiss-Vamosi
295337ac7e Merge pull request #1590 from diegoherranz/lv_conf_checker
lv_conf_checker.py: change requirement of python 3.6 to >=3.6
2020-06-18 12:32:13 +02:00
Gabor Kiss-Vamosi
a39f51a571 Merge branch 'dev' into dev 2020-06-18 07:41:54 +02:00
Gabor Kiss-Vamosi
d050c99161 Merge branch 'dev' of https://github.com/littlevgl/lvgl into dev 2020-06-18 06:04:02 +02:00
Gabor Kiss-Vamosi
1523cc0634 fix typo 2020-06-18 06:03:52 +02:00
Diego Herranz
65d029279b lv_calendar: add option to start week on Monday (#1589) 2020-06-17 16:09:40 -04:00
Diego Herranz
d2d664a69b lv_conf_checker.py: change requirement of python 3.6 to >=3.6
Many current OSes ship newer versions (e.g. 3.8) and they work OK
for this, so I don't think 3.6 is required specifically.
Versions older than 3.6 wouldn't work, though, since f-strings
are used.
2020-06-17 21:04:46 +01:00
pete-pjb
4a953b9d9d Free memory for series_ll 2020-06-16 18:24:05 +01:00
pete-pjb
ae748cfffa Fix initialisation problem.
Found that new structure parmaeter ext_buf_assigned needs to be
initialised to false in lv_chart_add_series() as sometimes is set true
depending on what was previously in the heap where it was allocated.
2020-06-16 18:04:36 +01:00
PeterB
ad215c5b4b Finalise changes for new Chart Functions 2020-06-16 16:24:37 +01:00
Gabor Kiss-Vamosi
2dd84e6de1 Merge branch 'master' into dev 2020-06-16 16:52:18 +02:00
pete-pjb
05d249d5ee Merge branch 'master' into dev 2020-06-16 15:10:56 +01:00
Pete Bone
f746ac8542 Added functions to extend chart functionality (#1581) 2020-06-16 09:53:21 -04:00
Gabor Kiss-Vamosi
7af64df008 upadte version numer to v7.1.0-dev 2020-06-16 13:57:20 +02:00
Gabor Kiss-Vamosi
975ab3f4cc Merge branch 'dev' 2020-06-16 13:56:42 +02:00
Gabor Kiss-Vamosi
122ef1d862 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-06-16 13:56:00 +02:00
Gabor Kiss-Vamosi
4174ad844c relase.py minor fixes 2020-06-16 13:55:45 +02:00
Gabor Kiss-Vamosi
41e65d9df1 Run code formatter 2020-06-16 13:47:04 +02:00
Gabor Kiss-Vamosi
2d0480c03d Release v7.0.2 2020-06-16 13:42:34 +02:00
Gabor Kiss-Vamosi
b0c9c8778d CHANGELOG set v7.0.2 released 2020-06-16 13:38:37 +02:00
Gabor Kiss-Vamosi
91c98f147f Merge pull request #1580 from DaPa/master
Code comments spelling fixes
2020-06-16 13:36:36 +02:00
DaPa
0bdeb00838 Resolve conflict with 4668bc0 2020-06-16 14:27:08 +03:00
DaPa
eee2184d10 Revert part of last commit to keep _xcb naming into lv_task_create 2020-06-16 14:10:51 +03:00
Gabor Kiss-Vamosi
df9801eac3 Merge pull request #1584 from BesitzeRuf/dev
Fixes drawing of the image border
2020-06-16 13:10:36 +02:00
Gabor Kiss-Vamosi
eacc9d8ce7 chart: fix memory leak 2020-06-16 13:03:54 +02:00
Gabor Kiss-Vamosi
d6e7187d01 fix crash when drawing gradient to the same color 2020-06-16 12:47:09 +02:00
Gabor Kiss-Vamosi
f61f045135 CHANGELOG: fix typo 2020-06-16 12:05:13 +02:00
Gabor Kiss-Vamosi
4668bc0ee3 fix typo in the API 2020-06-16 12:03:32 +02:00
besitzeruf
ae93ee067c Merge branch 'dev-fix-Asymmetric-border-thickness-on-image-objects' into dev 2020-06-16 11:22:30 +02:00
besitzeruf
59165f077e - Fix when border of the image (bottom and right sides) are drawn with different width ( decreased by 1) 2020-06-16 11:18:45 +02:00
pete-pjb
832dbd644b Remove redundant assert 2020-06-16 09:31:37 +01:00
Gabor Kiss-Vamosi
00f8af0fb5 minor fixes 2020-06-16 10:28:10 +02:00
Themba Dube
10ee9e5e99 Merge branch 'dev' of github.com:littlevgl/lvgl into dev 2020-06-15 17:06:39 -04:00
DaPa
33de1ffdc7 Fixed @embeddedt's review comments
- change the wording to say "message box" and not "button matrix"
 - parameter name should be cb and not xcb due MicroPython
 - also corrected comment for lv_async_call in lv_async.h
2020-06-15 19:48:44 +03:00
pete-pjb
fe5663908c Fix unused variable 2020-06-15 17:29:33 +01:00
pete-pjb
f23873e3f5 Added Functions to extend chart functionality as follows:
/**
 * Set the index of the x-axis start point in the data array
 * @param chart             pointer to a chart object
 * @param ser 				pointer to a data series on 'chart'
 * @param id    			the index of the x point in the data array
 */
void lv_chart_set_x_start_point(lv_obj_t * chart, lv_chart_series_t *
ser, uint16_t id);

/**
 * Set an external array of data points to use for the chart
 * NOTE: It is the users responsibility to make sure the point_cnt
matches the external array size.
 * @param chart             pointer to a chart object
 * @param ser 				pointer to a data series on 'chart'
 * @param array				external array of points for chart
 */
void lv_chart_set_ext_array(lv_obj_t * chart, lv_chart_series_t * ser,
lv_coord_t array[], uint16_t point_cnt );

/**
 * Set an individual point value in the chart series directly based on
index
 * @param chart             pointer to a chart object
 * @param ser 				pointer to a data series on 'chart'
 * @param value				value to assign to array point
 * @param id				the index of the x point in the array
 */
void lv_chart_set_point_id(lv_obj_t * chart, lv_chart_series_t * ser,
lv_coord_t value, uint16_t id);


/**
 * get the current index of the x-axis start point in the data array
 * @param chart             pointer to a chart object
 * @param ser 				pointer to a data series on 'chart'
 * @return 					the index of the current x start point in the data array
 */
uint16_t lv_chart_get_x_start_point(lv_obj_t * chart, lv_chart_series_t
* ser);

/**
 * Get an individual point value in the chart series directly based on
index
 * @param chart             pointer to a chart object
 * @param ser 				pointer to a data series on 'chart'
 * @param id				the index of the x point in the array
 * @return					value of array point at index id
 */
lv_coord_t lv_chart_get_point_id(lv_obj_t * chart, lv_chart_series_t *
ser, uint16_t id);
2020-06-15 17:15:05 +01:00
DaPa
585bc329e6 Code comments spelling fixes
Also 2 files have tracing strings affected (shorter with 1 character):
 - lv_obj.c, 1078: LV_LOG_WARN
 - lv_hal_indev.c, 76: LV_LOG_WARN
2020-06-15 17:12:48 +03:00
Gabor Kiss-Vamosi
c20e62d472 lv_gaguge: make lv_gauge_get_angle_offset() offset the labels and needles too
Fixes #1579
2020-06-15 14:16:06 +02:00
Gabor Kiss-Vamosi
9260f9e0aa lv_btnm: fix sending events for hidden buttons 2020-06-14 21:07:42 +02:00
Gabor Kiss-Vamosi
8532bf80df Update CHANGELOG.md 2020-06-14 12:40:49 +02:00
Gabor Kiss-Vamosi
a2bb4099e6 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-06-14 12:39:35 +02:00
Gabor Kiss-Vamosi
182cbb1aa4 Update LV_OPA_MIN and LV_OPA_MAX to widien the opacity processed range
https://forum.lvgl.io/t/blending-fading-of-body-shadow/2466
2020-06-14 12:36:57 +02:00
nchurly
ccff331e3d Fix #1570: uninitialized variable in lv_draw_img.c (#1574) 2020-06-13 12:28:47 -04:00
OH1BDF
43cc512e5a Added functions to set multiple paddings and margins at once (#1565) 2020-06-12 07:28:11 -04:00
Carlos Diaz
a265165038 Add lv_win_add_btn_left (#1566)
Closes #1535
2020-06-12 07:26:59 -04:00
Themba Dube
8117a70608 Merge branch 'master' into dev 2020-06-12 07:23:47 -04:00
Gabor Kiss-Vamosi
dca12fcd7a Update CHANGELOG.md 2020-06-10 10:14:12 +02:00
Gabor Kiss-Vamosi
e2dabe167d Merge pull request #1562 from arturv2000/MaxMemUsed
Added max_used propriety to lv_mem_monitor_t struct
2020-06-10 10:13:34 +02:00
Gabor Kiss-Vamosi
14a359679a Update CHANGELOG.md 2020-06-09 13:41:24 +02:00
Gabor Kiss-Vamosi
3b111c794c Merge pull request #1561 from microwavesafe/master
Remove dependency on ST CubeMX Hal
2020-06-09 13:40:41 +02:00
Gabor Kiss-Vamosi
1ca1934dbe Merge pull request #1563 from C47D/update_spinner
lv_spinner: Replace remaining pre loader references with spinner
2020-06-09 13:28:53 +02:00
arturv2000
ce8d333407 Update src/lv_misc/lv_mem.c
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2020-06-09 09:46:42 +01:00
microwavesafe
71e23c4e13 Added example include defines 2020-06-09 09:45:12 +01:00
C47D
84776ca5f7 lv_spinner: Replace remaining pre loader references with spinner 2020-06-08 18:12:21 -05:00
arturv2000
91acf877c6 Attempt to correct error in tests 2020-06-08 21:00:12 +01:00
artur.vieira
0ebcf7e266 Added Max Used propriety to lv_mem_monitor_t struct 2020-06-08 20:22:06 +01:00
andrew
3c70a1b5a2 Fixed typo in include define
Added help in lv_conf_template.h
2020-06-08 18:36:30 +01:00
Gabor Kiss-Vamosi
4effebb3ea Update README.md 2020-06-08 16:41:06 +02:00
Gabor Kiss-Vamosi
9eff0d1cd8 Update CHANGELOG.md 2020-06-08 16:36:16 +02:00
Gabor Kiss-Vamosi
07ddc9bf8a Update CONTRIBUTING.md 2020-06-08 16:14:33 +02:00
Gabor Kiss-Vamosi
9048bcc6a0 Update README.md 2020-06-08 15:51:18 +02:00
Gabor Kiss-Vamosi
94b2e0f1a3 Update CHANGELOG.md 2020-06-08 14:16:25 +02:00
Gabor Kiss-Vamosi
a62b03743d Merge pull request #1560 from DeonMarais64/master
Add lv_btnmatrix_set/get_align capability
2020-06-08 14:15:49 +02:00
Gabor Kiss-Vamosi
4754935038 Update CHANGELOG.md 2020-06-08 14:15:14 +02:00
Gabor Kiss-Vamosi
ee44433f86 Merge pull request #1522 from fhorinek/encoder-buttons
Encoder input proc support for buttons
2020-06-08 14:14:32 +02:00
Gabor Kiss-Vamosi
9c8c8aee72 update CHANGLEOG 2020-06-08 14:13:33 +02:00
Gabor Kiss-Vamosi
2739753f20 Merge pull request #1509 from fhorinek/master
Added focus parent for v7
2020-06-08 14:11:40 +02:00
Gabor Kiss-Vamosi
14de809fa5 fix warings 2020-06-08 14:10:30 +02:00
Gabor Kiss-Vamosi
06fa5b3b8f fix conflicts 2020-06-08 14:02:04 +02:00
Gabor Kiss-Vamosi
1b9ccf9cc6 add the dev branch to CI 2020-06-08 13:56:45 +02:00
Gabor Kiss-Vamosi
36e825f093 Update README.md 2020-06-08 13:51:19 +02:00
Gabor Kiss-Vamosi
13a53d077d lv_textarea: fix character delete in password mode 2020-06-08 13:23:41 +02:00
Gabor Kiss-Vamosi
479851e968 : restructure to allow asserting in from too 2020-06-08 13:10:56 +02:00
andrew
0867f72cb9 Rename attribute define to match existing options style
Moved static array declaration to top of file
Added attribute define to template and checker headers
2020-06-08 08:40:50 +01:00
embeddedt
df08d0bd54 Fix old documentation link in lv_conf_template.h
https://forum.lvgl.io/t/lv-conf-template-h-font-usage-points-to-wrong-domain/2424
2020-06-05 17:08:00 -04:00
andrew
bb5c6437ff Added GPU init to lv_init
Changed blend buffer attr to more general LV_DMA_ATTR
Added define for CMSIS header
Fixed bug with turning on peripheral clock
2020-06-05 14:04:52 +01:00
Gabor Kiss-Vamosi
e1af20997d : fix if not the {0;0} tile is created first 2020-06-05 12:31:02 +02:00
andrew
cd9f34076e Modified DMA2D fill, copy and blend functions to use direct
register writes
2020-06-05 11:10:51 +01:00
andrew
0d897136c9 Added LV_BLEND_BUF_ATTR as blend_buf MUST be in DMA accessible RAM 2020-06-05 11:10:11 +01:00
Deon Marais
0e1b02e328 Add lv_btnmatrix_set/gett_align capability 2020-06-05 12:05:34 +02:00
Deon Marais
e3b5a14275 Add align-member and set/get functions 2020-06-05 11:58:33 +02:00
Gabor Kiss-Vamosi
643bc92958 fix warning 2020-06-05 11:06:32 +02:00
Gabor Kiss-Vamosi
1c88c1e8d4 lv_dropdown: fix missing event when used with encoder 2020-06-05 10:54:13 +02:00
Gabor Kiss-Vamosi
c3f051ac52 Add log in true double buffering mode with 2020-06-05 10:43:26 +02:00
Gabor Kiss-Vamosi
673c493694 include the version number in lv_conf_template.h
https://forum.lvgl.io/t/add-lvgl-version-to-lv-conf-h/2396/3
2020-06-05 10:36:16 +02:00
embeddedt
4f3dac6477 Fix #1557: use of uninitialized linked list 2020-06-04 09:51:26 -04:00
Gabor Kiss-Vamosi
d667e9d221 Update CHANGELOG.md 2020-06-04 11:58:32 +02:00
Gabor Kiss-Vamosi
21e4427e57 theme material: fix list button focus. 2020-06-04 11:56:57 +02:00
Gabor Kiss-Vamosi
7d29b40425 fix crash when text area cleared. Fixes #1556 2020-06-04 11:47:53 +02:00
Gabor Kiss-Vamosi
93055bc57c Do not call for transparent pixel 2020-06-04 11:47:53 +02:00
Gabor Kiss-Vamosi
d5a3b81737 fix gestures 2020-06-04 11:47:53 +02:00
Gabor Kiss-Vamosi
950ac3b993 Merge pull request #1553 from MiSimon/issue_deinit_log
Write to logfile before setting the log callback to NULL
2020-06-03 15:34:35 +02:00
MiSimon
beb496e3ed Write to logfile before setting the log callback to NULL 2020-06-03 12:37:43 +02:00
Pete Bone
822435748a Fix compiler waring in lv_ll.c (#1550) 2020-06-02 07:27:36 -04:00
Gabor Kiss-Vamosi
140904e201 fix build error 2020-06-02 11:03:00 +02:00
Gabor Kiss-Vamosi
25b4d9c34d Update README.md 2020-06-02 08:54:58 +02:00
Gabor Kiss-Vamosi
a49e7e8295 improve size rounding to 4 or 8 in lv_mem, and lv_ll 2020-06-02 08:51:22 +02:00
Gabor Kiss-Vamosi
542fa7e76d linked list: simplify settings next/prev node
https://forum.lvgl.io/t/data-abort-at-start-lvgl-v7-0-compiled-with-full-speed-optimisation-only/2286/25
2020-06-02 08:44:04 +02:00
Gabor Kiss-Vamosi
28f4092247 label: fix lv_label_get_letter_on if BIDI enabled 2020-06-02 07:13:41 +02:00
Gabor Kiss-Vamosi
6adcdda06a fix minor warings 2020-06-01 22:56:10 +02:00
Gabor Kiss-Vamosi
d953d2b9fe Update CHANGELOG.md 2020-06-01 22:44:46 +02:00
Gabor Kiss-Vamosi
7040084fbd Merge pull request #1545 from pete-pjb/32bit_idx
Change all text related indices from 16-bit to 32-bit integers throughout whole library.
2020-06-01 22:44:30 +02:00
Gabor Kiss-Vamosi
6921d872a3 remove debig code 2020-06-01 22:31:30 +02:00
Gabor Kiss-Vamosi
1544bd7b07 relase script: fix wontg file name (lv_version.h instead of lvgl.h) 2020-06-01 22:28:59 +02:00
Gabor Kiss-Vamosi
d28ac991ec update version number in lvgl.h 2020-06-01 22:25:28 +02:00
Gabor Kiss-Vamosi
9c90130fb3 Update CHANGELOG.md 2020-06-01 22:23:53 +02:00
Mike Fellows
765a97383a Fix visual studio compile errors in lv_anim code
unary negation operator was being applied to an usigned int in three
places.  I'm not sure what the other compilers are doing to accept
the current code , but I have cast the unsigned ints to a signed one
before applying the unary operator.
2020-06-01 22:23:53 +02:00
Gabor Kiss-Vamosi
5cb287c3c7 Update CHANGELOG.md 2020-06-01 22:23:53 +02:00
Gabor Kiss-Vamosi
32eebbbc0c Update CHANGELOG.md 2020-06-01 22:23:53 +02:00
Gabor Kiss-Vamosi
a535b43290 Release v7.0.1 2020-06-01 22:23:53 +02:00
Gabor Kiss-Vamosi
63b1f6805a lv_ta: fix wrong cursor positon when clicked after the last character 2020-06-01 22:23:53 +02:00
Gabor Kiss-Vamosi
884e00ee8f rename release_patch.py to release.py 2020-06-01 21:12:29 +02:00
Gabor Kiss-Vamosi
f3d8d98807 extend the release script with lv_examples and lv_drivers handling 2020-06-01 21:11:46 +02:00
Gabor Kiss-Vamosi
4d8ae98621 Merge pull request #1542 from MCF/vs-compile-error-fixes
Fix visual studio compile errors in lv_anim code
2020-06-01 21:06:36 +02:00
Gabor Kiss-Vamosi
e8a0413ad5 Update CHANGELOG.md 2020-06-01 20:39:59 +02:00
Gabor Kiss-Vamosi
ff7e8ea315 Update CHANGELOG.md 2020-06-01 20:39:03 +02:00
Gabor Kiss-Vamosi
91b997769e Release v7.0.1 2020-06-01 20:28:32 +02:00
Gabor Kiss-Vamosi
6654444e0f update release script 2020-06-01 20:23:07 +02:00
PeterB
3561d9e063 Changed all text related indices from 16 bit to 32 bit integers. 2020-06-01 17:51:47 +01:00
Themba Dube
c5c5b2a393 lv_printf: condition floating-point on value not definition 2020-06-01 12:08:48 -04:00
Themba Dube
0c4c6cf199 lv_printf: expose floating-point configuration option 2020-06-01 12:08:08 -04:00
PeterB
a0583f6feb Merge remote-tracking branch 'origin/master' into 32bit_idx 2020-06-01 12:31:14 +01:00
Themba Dube
0673dd0b12 Change dropdown to use 32-bit indexes 2020-06-01 07:18:31 -04:00
Gabor Kiss-Vamosi
ef1242f234 Update LICENCE.txt 2020-05-31 23:03:38 +02:00
Gabor Kiss-Vamosi
f8c7485d82 Update CHANGELOG.md 2020-05-31 22:54:40 +02:00
Gabor Kiss-Vamosi
88b54456ef Update README.md 2020-05-31 21:46:12 +02:00
Gabor Kiss-Vamosi
2be298fc3f Update README.md 2020-05-31 21:45:36 +02:00
Themba Dube
af812b0c55 keyboard: allow backspace to auto-repeat in numeric mode (lv_examples#58) 2020-05-31 08:33:21 -04:00
Mike Fellows
09fb1e60e3 Fix visual studio compile errors in lv_anim code
unary negation operator was being applied to an usigned int in three
places.  I'm not sure what the other compilers are doing to accept
the current code , but I have cast the unsigned ints to a signed one
before applying the unary operator.
2020-05-30 13:05:25 -07:00
Mike Fellows
4575fec915 Fix a few links in README (#1541)
* To some of the simulator/IDE github projects
* To the one of the STM32F7 github projects
2020-05-30 09:13:53 -04:00
Gabor Kiss-Vamosi
4c3db9e02f clarify the usage of template theme 2020-05-29 06:42:29 +02:00
embeddedt
99f1d1bc7a Remove duplicate docs link 2020-05-28 19:22:28 -04:00
Gabor Kiss-Vamosi
ec5b10142f add lv_obj_remove_style 2020-05-28 07:58:10 +02:00
Gabor Kiss-Vamosi
8d5dfa1ec2 chart: fix X tick drawing 2020-05-28 07:57:47 +02:00
Gabor Kiss-Vamosi
27ef3a1d07 fix chart x axix label drawing 2020-05-28 07:52:00 +02:00
Gabor Kiss-Vamosi
91f8b3060e fix verical dashed line 2020-05-28 07:52:00 +02:00
Gabor Kiss-Vamosi
86307c669f remove leftover code 2020-05-27 16:39:00 +02:00
Gabor Kiss-Vamosi
207ec2997f DMA2D: minor fix with double buffering 2020-05-27 16:21:35 +02:00
Gabor Kiss-Vamosi
65c9b64f9a Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-05-27 16:01:14 +02:00
Gabor Kiss-Vamosi
70162562b2 speed up true double buffering 2020-05-27 16:00:56 +02:00
tgillbe
25a5623e77 Fix lv_slider knob size off-by-one bug (#1531) 2020-05-27 09:19:54 -04:00
Gabor Kiss-Vamosi
4f386f19fe chart: fix y axis label drawing 2020-05-27 11:59:39 +02:00
Gabor Kiss-Vamosi
2be22d3bef list: leaving edit mode with encoder 2020-05-27 11:22:01 +02:00
Gabor Kiss-Vamosi
0a9d8a6133 remove memcpy from lv_ll 2020-05-27 10:36:24 +02:00
Gabor Kiss-Vamosi
6a35a384b8 Merge branch 'encoder-buttons' of https://github.com/fhorinek/lvgl into fhorinek-encoder-buttons 2020-05-27 10:35:58 +02:00
Gabor Kiss-Vamosi
a8904b39ea Merge pull request #1529 from lvgl/kisvegabor-patch-1
Update README.md - CLA test again
2020-05-27 10:09:32 +02:00
Gabor Kiss-Vamosi
08bd2ae669 Update README.md 2020-05-27 10:08:17 +02:00
Gabor Kiss-Vamosi
65a0046891 Merge pull request #1528 from lvgl/kisvegabor-patch-1
Update README.md - Test CLA
2020-05-27 10:03:08 +02:00
Gabor Kiss-Vamosi
421e1fc9f8 Update README.md 2020-05-27 10:01:51 +02:00
Gabor Kiss-Vamosi
306405bcff Merge branch 'master' into speed/shadow 2020-05-26 11:00:09 +02:00
Gabor Kiss-Vamosi
7fb49693f4 minor speed up on rectangle drawing 2020-05-26 10:59:49 +02:00
Gabor Kiss-Vamosi
19c3f9306f improve DMA2D blending dupport 2020-05-26 10:59:29 +02:00
Gabor Kiss-Vamosi
b056315410 add LV_COLOR_MIX_ROUND_OFS to adjust color mix to GPU's algorithms 2020-05-26 10:58:52 +02:00
František Horínek
691ce77800 Modified version for encoder input proc.
Now you can also pass buttons LEFT/RIGHT to emulate the encoder, good for joysticks or small keypads.
All other keys are passed trought.
2020-05-25 15:51:20 +02:00
Gabor Kiss-Vamosi
966b4b11f6 lv_color_mix_with_alpha: fix initialization 2020-05-25 12:44:54 +02:00
Gabor Kiss-Vamosi
b4de4c5ca1 remove dead code 2020-05-25 12:42:38 +02:00
Gabor Kiss-Vamosi
0072a2ade5 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-05-25 11:55:12 +02:00
Gabor Kiss-Vamosi
eda752ab94 add lv_theme_get_color_secondary 2020-05-25 11:49:04 +02:00
Gabor Kiss-Vamosi
89206c51c3 optimize shdow drawing 2020-05-25 11:13:13 +02:00
Gabor Kiss-Vamosi
21a172ca0d Update README.md 2020-05-25 09:29:17 +02:00
Gabor Kiss-Vamosi
2e64db0261 Update README.md 2020-05-25 08:29:57 +02:00
Gabor Kiss-Vamosi
b4b37b98aa Update README.md 2020-05-25 06:41:06 +02:00
Gabor Kiss-Vamosi
dfb7c6731c Update CODING_STYLE.md 2020-05-25 06:35:00 +02:00
Gabor Kiss-Vamosi
2078e4a01a Update CONTRIBUTING.md 2020-05-25 06:26:30 +02:00
Gabor Kiss-Vamosi
11c80b626c Update CONTRIBUTING.md 2020-05-25 06:26:04 +02:00
Gabor Kiss-Vamosi
e3f63e09cf Update CONTRIBUTING.md 2020-05-25 06:24:33 +02:00
Gabor Kiss-Vamosi
07efe31ff4 Update CONTRIBUTING.md 2020-05-25 06:23:12 +02:00
Gabor Kiss-Vamosi
3837988f2d README: change littlevgl to lvgl 2020-05-25 05:54:38 +02:00
Gabor Kiss-Vamosi
5ea142eaf0 Update config.yml 2020-05-25 05:44:24 +02:00
Gabor Kiss-Vamosi
38944883b1 Update config.yml 2020-05-25 05:44:01 +02:00
Gabor Kiss-Vamosi
ab6d69445e Create config.yml 2020-05-25 05:40:04 +02:00
Gabor Kiss-Vamosi
6c34280b66 Merge pull request #1520 from rene-dev/master
fixed RGB palette name in config template
2020-05-24 13:58:04 +02:00
Gabor Kiss-Vamosi
279e594d3e minor formatting 2020-05-24 13:14:42 +02:00
Gabor Kiss-Vamosi
a2c973bd5b fix warings 2020-05-24 13:13:07 +02:00
Rene Hopf
96ba7df9d3 fixed RGB palette name in config template 2020-05-24 01:38:05 +02:00
Gabor Kiss-Vamosi
7e4e5b7271 Merge branch 'master' of https://github.com/fhorinek/lvgl into fhorinek-master 2020-05-23 14:54:18 +02:00
Gabor Kiss-Vamosi
1666c8cb4f handle focus_parent in pointer indevs 2020-05-23 14:53:23 +02:00
Gabor Kiss-Vamosi
1c9830b715 Update README.md 2020-05-23 14:41:11 +02:00
Gabor Kiss-Vamosi
b10dece511 Update README.md 2020-05-23 14:14:02 +02:00
Gabor Kiss-Vamosi
d8a37e8fd8 update themes to avoid garbage collection of styles 2020-05-22 22:36:24 +02:00
Gabor Kiss-Vamosi
2ea96eaf83 fix warning 2020-05-22 22:05:51 +02:00
Gabor Kiss-Vamosi
a8a3c2a3c7 minor rework on button states 2020-05-22 21:45:11 +02:00
Gabor Kiss-Vamosi
ab4d8c9165 fix infinite roller with encoder 2020-05-22 21:36:22 +02:00
František Horínek
8f19010b17 Update src/lv_core/lv_obj.c
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2020-05-21 17:27:37 +02:00
Gabor Kiss-Vamosi
4fade082e5 Merge branch 'master' of https://github.com/fhorinek/lvgl into fhorinek-master 2020-05-21 15:17:19 +02:00
Gabor Kiss-Vamosi
2a78353ca4 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-05-21 15:17:07 +02:00
Gabor Kiss-Vamosi
efaf84f6f7 fix material theme init 2020-05-21 15:13:14 +02:00
Gabor Kiss-Vamosi
6f5b756786 update old function names 2020-05-21 15:01:34 +02:00
Gabor Kiss-Vamosi
bebe1f07df img_draw: fix releasing buffer with DMA2D 2020-05-21 14:23:03 +02:00
František Horínek
b23d945ed4 changed behavior to focus_parent flag 2020-05-21 14:09:56 +02:00
Gabor Kiss-Vamosi
82ad0f0c5c img drawing fixes with 32 bit color depth 2020-05-21 12:46:04 +02:00
Gabor Kiss-Vamosi
f248d47a36 fix typo 2020-05-21 11:33:07 +02:00
Gabor Kiss-Vamosi
fa58aed475 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-05-21 11:28:00 +02:00
Gabor Kiss-Vamosi
4eb2340f2a img: fix cover check 2020-05-21 11:27:52 +02:00
Gabor Kiss-Vamosi
474b8e0920 CJK: fix built-in SimSun font and wrong UTF-8 decoding in Arabic processor 2020-05-21 10:40:16 +02:00
Gabor Kiss-Vamosi
c77ab45dd3 add material theme to GC_ROOTS 2020-05-21 09:37:37 +02:00
Gabor Kiss-Vamosi
76ae5934ba Update library.json 2020-05-20 14:50:02 +02:00
Amir Gonnen
8233483477 Add missing LV_GC_INCLUDE (#1511) 2020-05-19 20:15:49 -04:00
František Horínek
10ca6d4215 replaced #ifdef to #if 2020-05-19 15:45:09 +02:00
František Horínek
2712f0aeaa Added macro LV_USE_GROUP_FOCUS_PARENT to automatic tests 2020-05-19 15:31:34 +02:00
František Horínek
aaa78ba949 Added focus parent for v7 2020-05-19 15:22:38 +02:00
Gabor Kiss-Vamosi
080d06b838 fix lv_misc.mk. Fixes: #1508 2020-05-19 14:56:14 +02:00
Gabor Kiss-Vamosi
00176b2c7e rename _mask_list to lv_draw_mask_list 2020-05-19 13:29:21 +02:00
Gabor Kiss-Vamosi
f2ff87f820 add LV_DC_ROOT prefix to _mask_list 2020-05-19 13:27:19 +02:00
Gabor Kiss-Vamosi
6a10f3e116 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-05-19 13:20:38 +02:00
Gabor Kiss-Vamosi
38ae98a565 move (draw) mask_list to gc roots 2020-05-19 13:20:29 +02:00
Gabor Kiss-Vamosi
f2be14868e Update README.md 2020-05-19 11:35:18 +02:00
Gabor Kiss-Vamosi
e6829f6d4b Update CHANGELOG.md 2020-05-19 10:59:21 +02:00
Gabor Kiss-Vamosi
469b676237 Update CHANGELOG.md 2020-05-19 10:57:50 +02:00
Gabor Kiss-Vamosi
5e4456335a Update README.md 2020-05-19 10:57:07 +02:00
Gabor Kiss-Vamosi
46376a4a11 set version number to 7.0.1-dev 2020-05-19 10:31:49 +02:00
Gabor Kiss-Vamosi
72c79b58a8 disable LV_MEM_JUNK 2020-05-19 10:31:13 +02:00
Gabor Kiss-Vamosi
de0d93c47e Update ccpp.yml 2020-05-18 19:05:48 +02:00
Gabor Kiss-Vamosi
e6f89ad799 Update CHANGELOG.md 2020-05-18 17:37:04 +02:00
Gabor Kiss-Vamosi
857ff5e8ed Update CHANGELOG.md 2020-05-18 17:36:36 +02:00
Gabor Kiss-Vamosi
ee6c5e3399 run code formatter 2020-05-18 16:57:23 +02:00
Gabor Kiss-Vamosi
5c7e9bb932 minor fixes 2020-05-18 16:52:23 +02:00
Gabor Kiss-Vamosi
0f95c5b29b comment update littlevgl -> lvgl 2020-05-18 14:55:39 +02:00
Gabor Kiss-Vamosi
382f428a0e keyboard: fix invalid assertatin 2020-05-18 11:46:02 +02:00
Gabor Kiss-Vamosi
a91041bcf7 suppress doxygen warnings 2020-05-18 11:03:10 +02:00
Gabor Kiss-Vamosi
4fb0a5da21 img: remove debug code 2020-05-18 11:02:45 +02:00
Gabor Kiss-Vamosi
f6b759dc71 Merge branch 'dev-7.0' of https://github.com/littlevgl/lvgl into dev-7.0 2020-05-18 10:48:21 +02:00
Themba Dube
6e1d53e11e Merge remote-tracking branch 'origin/master' into dev-7.0 2020-05-15 13:48:25 -04:00
Bill Hargen
7ac9388aed Fix #1498: lv_label_set_text() crash (#1499)
This routine tried to optimize a special case of setting the label text to the same address as previously set, but it did not consider whether the prior set was static and tried to realloc non-allocated memory.
2020-05-15 13:42:50 -04:00
Gabor Kiss-Vamosi
486197955b Update CONTRIBUTING.md 2020-05-15 15:00:10 +02:00
Gabor Kiss-Vamosi
69e2f32984 Update README.md 2020-05-15 14:44:25 +02:00
Gabor Kiss-Vamosi
5fe03c34f5 Update README.md 2020-05-15 14:43:45 +02:00
Gabor Kiss-Vamosi
af312fd2ba checkbox: set bullet size with padding 2020-05-14 11:29:49 +02:00
Gabor Kiss-Vamosi
ac52b502a2 Merge branch 'master' of https://github.com/littlevgl/lvgl 2020-05-14 11:14:43 +02:00
Gabor Kiss-Vamosi
f00d17b496 update the comments of lv_draw_label 2020-05-14 11:14:34 +02:00
Gabor Kiss-Vamosi
f252edb5c1 material theme, dropdown: enable corner clip on the list 2020-05-14 09:36:44 +02:00
Gabor Kiss-Vamosi
e45cd3c31c fix build error with dma2d 2020-05-13 14:47:33 +02:00
Gabor Kiss-Vamosi
0f8513bf77 Merge pull request #1496 from ValentiWorkLearning/dev-7.0
Fixed implicit casting from void* in lv_imgbuf.h
2020-05-13 14:19:55 +02:00
Gabor Kiss-Vamosi
97392f4fdf reduce API size: add underscore prefix to internal functions 2020-05-13 14:11:16 +02:00
Valentyn Korniienko
74a0b0dab2 Fixed implicit casting from void* in lv_imgbuf.h 2020-05-13 14:58:57 +03:00
Gabor Kiss-Vamosi
79329bdb45 revert font decompression optmiziation 2020-05-13 13:24:38 +02:00
Gabor Kiss-Vamosi
d7940734b8 page: fix scrollbar visibility 2020-05-13 01:09:29 +02:00
Gabor Kiss-Vamosi
d9ebf93836 Merge branch 'dev-7.0' of https://github.com/littlevgl/lvgl into dev-7.0 2020-05-13 01:06:10 +02:00
Gabor Kiss-Vamosi
eda4ef8042 optimize color fill with 16 color depth 2020-05-13 01:06:01 +02:00
Gabor Kiss-Vamosi
9b598ec306 fix typo 2020-05-12 21:37:01 +02:00
Gabor Kiss-Vamosi
93e8dd7a2c minor refactoring 2020-05-12 21:30:14 +02:00
Gabor Kiss-Vamosi
a78687ee5d add LV_USE_API_EXTENSION_V6 and LV_USE_IMG_TRANSFORM config options 2020-05-12 21:29:16 +02:00
Gabor Kiss-Vamosi
a1db29b9a2 img: clip corner fixes 2020-05-12 15:00:58 +02:00
Gabor Kiss-Vamosi
52644c2604 Merge branch 'dev-7.0' of https://github.com/littlevgl/lvgl into dev-7.0 2020-05-12 13:57:49 +02:00
Gabor Kiss-Vamosi
34b20b307b btn: lower deafult height 2020-05-12 13:57:43 +02:00
Gabor Kiss-Vamosi
42c5794a05 optimize image zoom 2020-05-12 13:56:40 +02:00
Gabor Kiss-Vamosi
d2a0fb8351 minor fixes 2020-05-12 12:17:15 +02:00
Gabor Kiss-Vamosi
48914aaa7c Merge branch 'dev-7.0' of https://github.com/littlevgl/lvgl into dev-7.0 2020-05-12 10:55:05 +02:00
Gabor Kiss-Vamosi
8f0418d194 dropdown: set list width to button 2020-05-12 10:54:51 +02:00
Gabor Kiss-Vamosi
ecc23babc5 Merge pull request #1495 from amirgon/dev-7.0
Replace lv_point_t* to lv_point_t[] to represent point array
2020-05-12 00:39:02 +02:00
Amir Gonnen
3f32911b90 Replace lv_point_t* to lv_point_t[] to represent point array
Needed for Micropython Bindings to identify the argument as an array instead of a pointer to a single lv_point_t
2020-05-12 01:08:50 +03:00
Themba Dube
6c1f784d25 Merge branch 'dev-7.0' of github.com:littlevgl/lvgl into dev-7.0 2020-05-11 12:59:07 -04:00
Georgi Momchilov
18834904ef Update lv_draw_label.c (#1494) 2020-05-11 08:35:49 -04:00
Gabor Kiss-Vamosi
ba5663d3d3 rename LV_DROPDOWN_PART_SCRLBAR to LV_DROPDOWN_PART_SCROLLBAR 2020-05-11 12:34:03 +02:00
Gabor Kiss-Vamosi
d819aa0e4e fix memory corruption in draw_label 2020-05-11 12:32:26 +02:00
Gabor Kiss-Vamosi
ecb5637d9d improve mono theme 2020-05-11 10:28:18 +02:00
Gabor Kiss-Vamosi
b933e5e1ba Merge branch 'dev-7.0' of https://github.com/littlevgl/lvgl into dev-7.0 2020-05-11 10:21:55 +02:00
Gabor Kiss-Vamosi
d6db1ed511 draw label fix huge memory usage 2020-05-11 10:21:37 +02:00
Gabor Kiss-Vamosi
eaeb362001 optimize lv_mem_buf uage 2020-05-11 10:21:23 +02:00
Kowalski Dark
61bafdb37f Fix typos in header comment (#1493) 2020-05-08 12:49:11 -04:00
embig71
a4ed5369c2 Correct computation from #1490 for vertically oriented slider (#1492) 2020-05-08 12:48:20 -04:00
Gabor Kiss-Vamosi
72988117d5 Merge branch 'dev-7.0' of https://github.com/littlevgl/lvgl into dev-7.0 2020-05-08 13:04:59 +02:00
Gabor Kiss-Vamosi
a760baa869 material theme minor improvements 2020-05-08 13:04:28 +02:00
Gabor Kiss-Vamosi
a026a5b61d fix assert during obj. creation 2020-05-08 12:39:10 +02:00
Gabor Kiss-Vamosi
25aadd4ae9 fix typo in e6f498a2 2020-05-08 12:38:54 +02:00
Gabor Kiss-Vamosi
38a42fa954 Merge branch 'dev-7.0' of https://github.com/littlevgl/lvgl into dev-7.0 2020-05-08 12:30:11 +02:00
Gabor Kiss-Vamosi
e6f498a2da lv_disp_drv_register: fix referencing uninitialized varaible 2020-05-08 12:29:59 +02:00
Gabor Kiss-Vamosi
2500c65506 dma2d fix 2020-05-08 12:09:57 +02:00
Gabor Kiss-Vamosi
f387e1af37 dma2d fixes for F4 2020-05-08 11:53:40 +02:00
Gabor Kiss-Vamosi
2b9608d128 optimize material theme for small displays 2020-05-08 11:53:28 +02:00
Gabor Kiss-Vamosi
341e99587b remove extra file created during merging 2020-05-08 10:25:53 +02:00
Gabor Kiss-Vamosi
9dd387b23e remove bidi.h from lvgl.h 2020-05-08 08:44:31 +02:00
Themba Dube
ceae45ed64 Merge branch 'dev-7.0' of github.com:littlevgl/lvgl into dev-7.0 2020-05-07 16:37:00 -04:00
Themba Dube
5f1b6bc281 Add lv_roller_set_fix_width to API map 2020-05-07 16:36:51 -04:00
Gabor Kiss-Vamosi
33df0e6470 merge master 2020-05-07 16:04:50 +02:00
Gabor Kiss-Vamosi
7aaa092efd Merge pull request #1490 from BillHargen/master
Correct computation of slider value while pressed
2020-05-07 16:03:43 +02:00
Gabor Kiss-Vamosi
232d22c148 fix conflicts 2020-05-07 16:01:48 +02:00
Gabor Kiss-Vamosi
9975036bb2 formatting 2020-05-07 15:56:07 +02:00
Bill Hargen
695c33147b Correct computation of slider value while pressed 2020-05-07 09:39:32 -04:00
Anton Konev
6a96e07f18 Minor fixes (#1488)
* lvgl/lv_onjx/lv_chart: fixed variable type (uint8_t was compared with 256)

* lvgl/lv_core/lv_refr: fixed double assignemnt

Co-authored-by: anton.konev <anton.konev@planarchel.ru>
2020-05-07 07:44:02 -04:00
Gabor Kiss-Vamosi
bc994c60ee minor fixes 2020-05-06 21:39:45 +02:00
Gabor Kiss-Vamosi
0c6d0d48a3 run code formater 2020-05-06 20:08:46 +02:00
Gabor Kiss-Vamosi
835ed44029 fix warnings 2020-05-06 20:05:53 +02:00
Gabor Kiss-Vamosi
d1f1332555 minor renames and fixes 2020-05-06 20:05:53 +02:00
Gabor Kiss-Vamosi
27621e0945 fix drawing of abnormal arcs 2020-05-06 20:05:53 +02:00
Gabor Kiss-Vamosi
d6b85d16cf page: copy styles in create 2020-05-06 10:55:33 +02:00
Gabor Kiss-Vamosi
64fdfbe13f bar: handle border_post style property 2020-05-06 10:55:21 +02:00
Gabor Kiss-Vamosi
18010c2eaa chart: fix overflow in tick drawing 2020-05-06 09:40:41 +02:00
Gabor Kiss-Vamosi
8e87fc4620 minor fixes 2020-05-06 09:27:38 +02:00
Gabor Kiss-Vamosi
12919453d3 free the buffer of font decompression 2020-05-06 09:27:28 +02:00
Themba Dube
adbc158a5c Merge branch 'dev-7.0' of github.com:littlevgl/lvgl into dev-7.0 2020-05-04 13:29:52 -04:00
fstengel
69b14a6146 indev_button_proc: fix crash if points array not set (#1486) 2020-05-04 09:56:13 -04:00
embeddedt
7d42f08431 Ensure table always updates if values change
https://forum.littlevgl.com/t/table-not-updating-values-v7-dev/2190
2020-05-04 08:40:01 -04:00
Themba Dube
95d5298ad9 Add some more 6.x compability macros 2020-05-02 18:36:52 -04:00
Amir Gonnen
1633b2e6db Guard USE AP prototypes with macro (#1485) 2020-05-02 18:23:52 -04:00
Gabor Kiss-Vamosi
1e59100ff2 fix build errors 2020-05-02 07:45:04 +02:00
Gabor Kiss-Vamosi
6337286959 image transform fixes 2020-05-01 20:48:16 +02:00
Gabor Kiss-Vamosi
ffa2970ae5 fixes with LV_COLOR_SCREEN_TRANSP 1 2020-05-01 20:30:28 +02:00
Gabor Kiss-Vamosi
fdb85fd9bd Merge branch 'dev-7.0' of https://github.com/littlevgl/lvgl into dev-7.0 2020-05-01 16:54:25 +02:00
Gabor Kiss-Vamosi
c3361a67b2 fix lv_color_t with LV_COLOR_DEPTH 1 2020-05-01 16:54:13 +02:00
Themba Dube
a7c1d97164 Fix GPU support with STM32F746 2020-05-01 09:45:53 -04:00
Gabor Kiss-Vamosi
aad8667a9f run code formatter 2020-05-01 11:17:43 +02:00
Gabor Kiss-Vamosi
bdc98b4e1f minor fixes 2020-05-01 11:14:10 +02:00
Gabor Kiss-Vamosi
a42629f947 theme fixes 2020-05-01 11:04:15 +02:00
Gabor Kiss-Vamosi
4494fc8a5d fix makefile 2020-05-01 10:58:04 +02:00
Gabor Kiss-Vamosi
41c435b808 update lv_conf.h 2020-05-01 10:56:00 +02:00
embeddedt
929bbcaee4 Fix misleading comment in lv_btnm
https://forum.littlevgl.com/t/comment-refers-to-nonexisting-function/2175
2020-04-30 10:36:54 -04:00
Gabor Kiss-Vamosi
013e6e9b21 Merge pull request #1481 from Wielebny666/master
Adjusting min and max values to the number format
2020-04-29 14:46:29 +02:00
Wielebny666
c2404c307c Adjusting min and max values to the number format 2020-04-29 13:24:07 +02:00
Wielebny666
5e9dd93e76 Merge pull request #1 from littlevgl/master
Update
2020-04-29 12:14:55 +02:00
Gabor Kiss-Vamosi
7260eb71f0 Merge pull request #1480 from Wielebny666/master
Missing scroll bar modifier in tab
2020-04-29 12:10:50 +02:00
Gabor Kiss-Vamosi
af5ed425c0 fix comment of lv_tabview_clean 2020-04-29 11:17:57 +02:00
Paweł Kurzawa
3c8c67a22e Missing scroll bar modifier in tab 2020-04-29 10:29:48 +02:00
Wielebny666
271ec3f6ee Fix error in indev driver template (#1476) 2020-04-25 12:11:10 -04:00
Wielebny666
f7f675afd8 Fix compile warning in lv_spinbox_set_style (#1473)
discards 'const' qualifier from pointer
2020-04-25 07:52:08 -04:00
769 changed files with 124053 additions and 81225 deletions

View File

@@ -1,7 +1,6 @@
[*.{c,h}]
[*.{c,h,ino}]
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

2
.github/FUNDING.yml vendored
View File

@@ -1 +1 @@
custom: ["https://littlevgl.com/donate"]
open_collective: lvgl

View File

@@ -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.

View File

@@ -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.
-->

14
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: Documentation
url: https://docs.lvgl.io
about: Be sure to read to documentation first
- name: Forum
url: https://forum.lvgl.io
about: For topics like How-to, Getting started, Feature request
- name: CONTIBUTING.md
url: https://github.com/lvgl/lvgl/blob/master/docs/CONTRIBUTING.md#faq-about-contributing
about: The basic rules of contributing
- name: CODING_STYLE.md
url: https://github.com/lvgl/lvgl/blob/master/docs/CODING_STYLE.md
about: Quick summary of LVGL's code style

View File

@@ -0,0 +1,29 @@
---
name: Development discussion
about: Discussion strictly related to the development 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
-->
### Introduce 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
-->

12
.github/auto-comment.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# Comment to a new issue.
pullRequestOpened: |
Thank you for raising your pull request.
To ensure that all licensing criteria is met all repositories of the LVGL project apply a process called DCO (Developer's Certificate of Origin).
The text of DCO can be read here: https://developercertificate.org/
For a more detailed description see the [Documentation](https://docs.lvgl.io/latest/en/html/contributing/index.html#developer-certification-of-origin-dco) site.
By contributing to any repositories of the LVGL project you state that your contribution corresponds with the DCO.
No further action is required if your contribution fulfills the DCO. If you are not sure about it feel free to ask us in a comment.

8
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,8 @@
### Description of the feature or fix
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](https://github.com/lvgl/lvgl/blob/master/docs/CHANGELOG.md)
- [ ] Update the documentation

17
.github/stale.yml vendored
View File

@@ -1,17 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 21
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- architecture
- pinned
# Label to use when marking an issue as 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
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

43
.github/workflows/build_micropython.yml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: Build Micropython with LVGL submodule
on:
push:
branches: [ master, dev ]
pull_request:
branches: [ master, dev ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Install SDL
run: |
sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu `lsb_release -sc` main universe restricted multiverse"
sudo apt-get update -y -qq
sudo apt-get install libsdl2-dev
- name: Clone lv_micropython
run: |
git clone https://github.com/lvgl/lv_micropython.git .
git checkout dev-8.0
- name: Update submodules
run: git submodule update --init --recursive
- name: Checkout LVGL submodule
working-directory: ./lib/lv_bindings/lvgl
run: |
git fetch --force ${{ github.event.repository.git_url }} "+refs/heads/*:refs/remotes/origin/*"
git fetch --force ${{ github.event.repository.git_url }} "+refs/pull/*:refs/remotes/origin/pr/*"
git checkout ${{ github.sha }} || git checkout ${{ github.event.pull_request.head.sha }}
git submodule update --init --recursive
- name: Build mpy-cross
run: make -j $(nproc) -C mpy-cross
- name: Build the unix port
run: make -j $(nproc) -C ports/unix
- name: Run advanced_demo
run: >
echo "import gc,utime;
utime.sleep(5);
gc.collect();
utime.sleep(5)" |
ports/unix/micropython -i lib/lv_bindings/examples/advanced_demo.py

View File

@@ -2,9 +2,9 @@ name: C/C++ CI
on:
push:
branches: [ dev-7.0 ]
branches: [ master, dev ]
pull_request:
branches: [ dev-7.0 ]
branches: [master, dev ]
jobs:
build:
@@ -13,5 +13,6 @@ jobs:
steps:
- uses: actions/checkout@v2
- uses: ammaraskar/gcc-problem-matcher@master
- name: Run tests
run: cd tests; python ./build.py
run: sudo apt-get install libpng-dev; cd tests; python ./build.py

20
.github/workflows/close_old_issues.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
name: 'Close stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
repo-token: ${{ secrets.LVGL_BOT_TOKEN }}
stale-issue-message: 'This issue is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 7 days.'
stale-pr-message: 'This PR is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 7 days.'
close-issue-message: 'This issue was closed because it has been stalled for 7 days with no activity.'
days-before-stale: 14
days-before-close: 7
exempt-issue-labels: 'pinned'
exempt-pr-labels: 'pinned'

91
.github/workflows/compile_docs.yml vendored Normal file
View File

@@ -0,0 +1,91 @@
name: Build docs
on:
push:
branches:
- master
- 'release/*'
env:
EM_VERSION: 2.0.4
EM_CACHE_FOLDER: 'emsdk-cache'
jobs:
build-and-deploy:
if: github.repository == 'lvgl/lvgl'
runs-on: ubuntu-latest
concurrency: docs-build-and-deploy
steps:
- name: Checkout
uses: actions/checkout@v2
with:
persist-credentials: false
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Cache Python packages
uses: actions/cache@v2
with:
# Cache the Python package environment, excluding pip and setuptools installed by setup-python
path: |
~/.cache/pip
${{ env.pythonLocation }}/bin/*
${{ env.pythonLocation }}/include
${{ env.pythonLocation }}/lib/python*/site-packages/*
!${{ env.pythonLocation }}/bin/pip*
!${{ env.pythonLocation }}/lib/python*/site-packages/pip*
!${{ env.pythonLocation }}/lib/python*/site-packages/setuptools*
key: ${{ env.pythonLocation }}-${{ hashFiles('docs/requirements.txt') }}
- name: Install Doxygen and Latex dependencies
run: sudo apt-get install doxygen texlive-xetex texlive-binaries texlive-lang-english latexmk fonts-freefont-otf
- name: Install requirements
run: |
pip install -r docs/requirements.txt
- name: Setup Emscripten cache
id: cache-system-libraries
uses: actions/cache@v2
with:
path: ${{env.EM_CACHE_FOLDER}}
key: ${{env.EM_VERSION}}-${{ runner.os }}
- uses: mymindstorm/setup-emsdk@v9
with:
version: ${{env.EM_VERSION}}
actions-cache-folder: ${{env.EM_CACHE_FOLDER}}
- name: ccache
uses: hendrikmuhs/ccache-action@v1
- name: Build examples (with cache)
run: scripts/build_html_examples.sh
- name: Build docs
run: docs/build.py
- name: Remove .doctrees
run: rm -rf out_html/.doctrees
- name: Retrieve version
run: |
echo "::set-output name=VERSION_NAME::$(scripts/find_version.sh)"
id: version
- name: Deploy
uses: JamesIves/github-pages-deploy-action@3.7.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ACCESS_TOKEN: ${{ secrets.LVGL_BOT_TOKEN }}
REPOSITORY_NAME: lvgl/docs
BRANCH: gh-pages # The branch the action should deploy to.
FOLDER: out_html # The folder the action should deploy.
TARGET_FOLDER: ${{ steps.version.outputs.VERSION_NAME }}
GIT_CONFIG_NAME: lvgl-bot
GIT_CONFIG_EMAIL: lvgl-bot@users.noreply.github.com
PRESERVE: true
SINGLE_COMMIT: true
- name: Deploy to master
if: github.ref == 'refs/heads/master'
uses: JamesIves/github-pages-deploy-action@3.7.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ACCESS_TOKEN: ${{ secrets.LVGL_BOT_TOKEN }}
REPOSITORY_NAME: lvgl/docs
BRANCH: gh-pages # The branch the action should deploy to.
FOLDER: out_html # The folder the action should deploy.
TARGET_FOLDER: master
GIT_CONFIG_NAME: lvgl-bot
GIT_CONFIG_EMAIL: lvgl-bot@users.noreply.github.com
PRESERVE: true
SINGLE_COMMIT: true

16
.github/workflows/main.yml vendored Normal file
View File

@@ -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"

27
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,27 @@
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
name: Create Release
jobs:
build:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
body: |
See the [CHANGELOG](https://github.com/lvgl/lvgl/blob/master/docs/CHANGELOG.md)
draft: false
prerelease: false

9
.gitignore vendored
View File

@@ -6,3 +6,12 @@ tags
docs/api_doc
scripts/cppcheck_res.txt
scripts/built_in_font/lv_font_*
docs/doxygen_html
docs/xml
docs/out_latex
docs/_static/built_lv_examples
docs/LVGL.pdf
docs/env
out_html
__pycache__
/emscripten_builder

View File

@@ -1,109 +0,0 @@
# Changelog
## v7.0.0 - under development
To try the new version use the `dev-7.0` branch of LVGL and the [Simulator](https://github.com/littlevgl/lv_sim_eclipse_sdl/tree/dev-7.0).
### Documentation
The docs for v7 is available at https://docs.littlevgl.com/v7/en/html/index.html
### Legal changes
*In progress*
The name of the project is changed to LVGL and the new website is on https://lvgl.io
LVGL remains free under the same conditions (MIT license) and a company is created to manage LVGL and offer services.
### New drawing system
Complete rework of LVGL's draw engine to use "masks" for more advanced and higher quality graphical effects.
A possible use-case of this system is to remove the overflowing content from the rounded edges.
It also allows drawing perfectly anti-aliased circles, lines, and arcs.
Internally, the drawings happen by defining masks (such as rounded rectangle, line, angle).
When something is drawn the currently active masks can make some pixels transparent.
For example, rectangle borders are drawn by using 2 rectangle masks: one mask removes the inner part and another the outer part.
The API in this regard remained the same but some new functions were added:
- `lv_img_set_zoom`: set image object's zoom factor
- `lv_img_set_angle`: set image object's angle without using canvas
- `lv_img_set_pivot`: set the pivot point of rotation
The new drawing engine brought new drawing features too. They are highlighted in the "style" section.
### New style system
The old style system is replaced with a new more flexible and lightweighted one.
It uses an approach similar to CSS: support cascading styles, inheriting properties and local style properties per object.
As part of these updates, a lot of objects were reworked and the APIs have been changed.
- more shadows options: *offset* and *spread*
- gradient stop position to shift the gradient area and horizontal gradient
- `LV_BLEND_MODE_NORMAL/ADDITIVE/SUBTRACTIVE` blending modes
- *clip corner*: crop the content on the rounded corners
- *text underline* and *strikethrough*
- dashed vertical and horizontal lines (*dash gap*, *dash_width*)
- *outline*: a border-like part drawn out of the background. Can have spacing to the background.
- *pattern*: display and image in the middle of the background or repeat it
- *value* display a text which is stored in the style. It can be used e.g. as a lighweighted text on buttons too.
- *margin*: similar to *padding* but used to keep space outside of the object
Read the [Style](https://docs.littlevgl.com/v7/en/html/overview/style.html) section of the documentation to learn how the new styles system works.
### GPU integration
To better utilize GPUs, from this version GPU usage can be integrated into LVGL. In `lv_conf.h` any supported GPUs can be enabled with a single configuration option.
Right now, only ST's DMA2D (Chrom-ART) is integrated. More will in the upcoming releases.
### Renames
The following object types are renamed:
- sw -> switch
- ta -> textarea
- cb -> checkbox
- lmeter -> linemeter
- mbox -> msgbox
- ddlist -> dropdown
- btnm -> btnmatrix
- kb -> keyboard
- preload -> spinner
- lv_objx folder -> lv_widgets
- LV_FIT_FILL -> LV_FIT_PARENT
- LV_FIT_FLOOD -> LV_FLOOD_MAX
- LV_LAYOUT_COL_L/M/R -> LV_LAYOUT_COLUMN_LEFT/MID/RIGHT
- LV_LAYOUT_ROW_T/M/B -> LV_LAYOUT_ROW_TOP/MID/BOTTOM
### Reworked and improved object
- `dropdown`: Completely reworked. Now creates a separate list when opened and can be dropped to down/up/left/right.
- `label`: `body_draw` is removed, instead, if its style has a visible background/border/shadow etc it will be drawn. Padding really makes the object larger (not just virtually as before)
- `arc`: can draw bacground too.
- `btn`: doesn't store styles for each state because it's done naturally in the new style system.
- `calendar`: highlight the pressed datum. The used styles are changed: use `LV_CALENDAR_PART_DATE` normal for normal dates, checked for highlighted, focused for today, pressed for the being pressed. (checked+pressed, focused+pressed also work)
- `chart`: only has `LINE` and `COLUMN` types because with new styles all the others can be described. LV_CHART_PART_SERIES sets the style of the series. bg_opa > 0 draws an area in LINE mode. `LV_CHART_PART_SERIES_BG` also added to set a different style for the series area. Padding in `LV_CHART_PART_BG` makes the series area smaller, and it ensures space for axis labels/numbers.
- `linemeter`, `gauge`: can have background if the related style properties are set. Padding makes the scale/lines smaller. scale_border_width and scale_end_border_width allow to draw an arc on the outer part of the scale lines.
- `gauge`: `lv_gauge_set_needle_img` allows use image as needle
- `canvas`: allow drawing to true color alpha and alpha only canvas, add `lv_canvas_blur_hor/ver` and rename `lv_canvas_rotate` to `lv_canvas_transform`
- `textarea`: If available in the font use bullet (`U+2022`) character in text area password
### New object types
- `lv_objmask`: masks can be added to it. The children will be masked accordingly.
### Others
- Change the built-in fonts to [Montserrat](https://fonts.google.com/specimen/Montserrat) and add built-in fonts from 12 px to 48 px for every 2nd size.
- Add example CJK and Arabic/Persian/Hebrew built-in font
- Add ° and "bullet" to the built-in fonts
- Add Arabic/Persian script support: change the character according to its position in the text.
- Add `playback_time` to animations.
- Add `repeat_count` to animations instead of the current "repeat forever".
- Replace `LV_LAYOUT_PRETTY` with `LV_LAYOUT_PRETTY_TOP/MID/BOTTOM`
### Demos
- [lv_examples](https://github.com/littlevgl/lv_examples) was reworked and new examples and demos were added
### New release policy
- Maintain this Changelog for every release
- Save old major version in new branches. E.g. `release/v6`
- Merge new features and fixes directly into `master` and release a patch or minor releases every 2 weeks.
### Migrating from v6 to v7
- First and foremost, create a new `lv_conf.h` based on `lv_conf_templ.h`.
- To try the new version it suggested using a simulator project and see the examples.
- If you have a running project, the most difficult part of the migration is updating to the new style system. Unfortunately, there is no better way than manually updating to the new format.
- The other parts are mainly minor renames and refactoring as described above.

99
CMakeLists.txt Normal file
View File

@@ -0,0 +1,99 @@
if(ESP_PLATFORM)
file(GLOB_RECURSE SOURCES src/*.c)
idf_component_register(SRCS ${SOURCES}
INCLUDE_DIRS . src ../
REQUIRES main)
target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_CONF_INCLUDE_SIMPLE")
if (CONFIG_LV_MEM_CUSTOM)
if (CONFIG_LV_MEM_CUSTOM_ALLOC)
target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_MEM_CUSTOM_ALLOC=${CONFIG_LV_MEM_CUSTOM_ALLOC}")
endif()
if (CONFIG_LV_MEM_CUSTOM_FREE)
target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_MEM_CUSTOM_FREE=${CONFIG_LV_MEM_CUSTOM_FREE}")
endif()
endif()
if (CONFIG_LV_TICK_CUSTOM)
if (CONFIG_LV_TICK_CUSTOM_SYS_TIME_EXPR)
target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_TICK_CUSTOM_SYS_TIME_EXPR=${CONFIG_LV_TICK_CUSTOM_SYS_TIME_EXPR}")
endif()
endif()
if (CONFIG_LV_USER_DATA_FREE)
target_compile_definitions(${COMPONENT_LIB} PUBLIC "-DLV_USER_DATA_FREE=${CONFIG_LV_USER_DATA_FREE}")
endif()
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()
file(GLOB_RECURSE SOURCES src/*.c)
add_library(lvgl STATIC ${SOURCES})
endif()
option(install "Enable install to system" OFF)
if(install)
include_directories(${CMAKE_SOURCE_DIR})
file(GLOB LVGL_PUBLIC_HEADERS
"${CMAKE_SOURCE_DIR}/lv_conf.h"
"${CMAKE_SOURCE_DIR}/lvgl.h")
if("${LIB_INSTALL_DIR}" STREQUAL "")
set(LIB_INSTALL_DIR "lib")
endif()
if("${INC_INSTALL_DIR}" STREQUAL "")
set(INC_INSTALL_DIR "include/lvgl")
endif()
install(DIRECTORY "${CMAKE_SOURCE_DIR}/src"
DESTINATION "${CMAKE_INSTALL_PREFIX}/${INC_INSTALL_DIR}/"
FILES_MATCHING
PATTERN "*.h")
set_target_properties(lvgl PROPERTIES
OUTPUT_NAME lvgl
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")
install(TARGETS lvgl
ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
endif(install)

714
Kconfig Normal file
View File

@@ -0,0 +1,714 @@
# Kconfig file for LVGL v8.0
menu "LVGL configuration"
config LV_ATTRIBUTE_FAST_MEM_USE_IRAM
bool "Set IRAM as LV_ATTRIBUTE_FAST_MEM"
help
Set this option to configure IRAM as LV_ATTRIBUTE_FAST_MEM
config LV_CONF_MINIMAL
bool "LVGL minimal configuration."
# Define CONFIG_LV_CONF_SKIP so we can use LVGL
# without lv_conf.h file, the lv_conf_internal.h and
# lv_conf_kconfig.h files are used instead.
config LV_CONF_SKIP
bool
default y
menu "Color settings"
choice
prompt "Color depth."
default LV_COLOR_DEPTH_16
help
Color depth to be used.
config LV_COLOR_DEPTH_32
bool "32: ARGB8888"
config LV_COLOR_DEPTH_16
bool "16: RGB565"
config LV_COLOR_DEPTH_8
bool "8: RGB232"
config LV_COLOR_DEPTH_1
bool "1: 1 byte per pixel"
endchoice
config LV_COLOR_DEPTH
int
default 1 if LV_COLOR_DEPTH_1
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 more complex drawing routines to manage screens transparency."
depends on LV_COLOR_DEPTH_32
help
Can be used if the UI is above another layer, e.g. an OSD menu or video player.
Requires `LV_COLOR_DEPTH = 32` colors and the screen's `bg_opa` should be set to
non LV_OPA_COVER value
config LV_COLOR_CHROMA_KEY_HEX
hex "Images pixels with this color will not be drawn (if they are chroma keyed)."
range 0x000000 0xFFFFFF
default 0x00FF00
help
See misc/lv_color.h for some color values examples.
endmenu
menu "Memory settings"
config LV_MEM_CUSTOM
bool "If true use custom malloc/free, otherwise use the built-in `lv_mem_alloc()` and `lv_mem_free()`"
config LV_MEM_SIZE_KILOBYTES
int "Size of the memory used by `lv_mem_alloc` in kilobytes (>= 2kB)"
range 2 128
default 32
depends on !LV_MEM_CUSTOM
config LV_MEM_CUSTOM_INCLUDE
string "Header to include for the custom memory function"
default "stdlib.h"
depends on LV_MEM_CUSTOM
config LV_MEMCPY_MEMSET_STD
bool "Use the standard memcpy and memset instead of LVGL's own functions"
endmenu
menu "HAL Settings"
config LV_DISP_DEF_REFR_PERIOD
int "Default display refresh period (ms)."
default 30
help
Can be changed in the display driver (`lv_disp_drv_t`).
config LV_INDEV_DEF_READ_PERIOD
int "Input device read period [ms]."
default 30
config LV_TICK_CUSTOM
bool
prompt "Use a custom tick source"
config LV_TICK_CUSTOM_INCLUDE
string
prompt "Header for the system time function"
default "Arduino.h"
depends on LV_TICK_CUSTOM
config LV_DPI_DEF
int "Default Dots Per Inch (in px)."
default 130
help
Used to initialize default sizes such as widgets sized, style paddings.
(Not so important, you can adjust it to modify default sizes and spaces)
endmenu
menu "Feature configuration"
menu "Drawing"
config LV_DRAW_COMPLEX
bool "Enable complex draw engine"
default y
help
Required to draw shadow, gradient, rounded corners, circles, arc, skew lines,
image transformations or any masks.
config LV_SHADOW_CACHE_SIZE
int "Allow buffering some shadow calculation"
depends on LV_DRAW_COMPLEX
default 0
help
LV_SHADOW_CACHE_SIZE is the max shadow size to buffer, where
shadow size is `shadow_width + radius`.
Caching has LV_SHADOW_CACHE_SIZE^2 RAM cost.
config LV_IMG_CACHE_DEF_SIZE
int "Default image cache size. 0 to disable caching."
default 0
help
If only the built-in image formats are used there is no real advantage of caching.
(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.
config LV_DISP_ROT_MAX_BUF
int "Maximum buffer size to allocate for rotation"
default 10240
help
Only used if software rotation is enabled in the display driver.
endmenu
menu "GPU"
config LV_USE_GPU_STM32_DMA2D
bool "Enable STM32 DMA2D (aka Chrom Art) GPU."
config LV_GPU_DMA2D_CMSIS_INCLUDE
string "include path of CMSIS header of target processor"
depends on LV_USE_GPU_STM32_DMA2D
default ""
help
Must be defined to include path of CMSIS header of target processor
e.g. "stm32f769xx.h" or "stm32f429xx.h"
config LV_USE_GPU_NXP_PXP
bool "Use NXP's PXP GPU iMX 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
lv_gpu_nxp_pxp_init() automatically during lv_init().
Note that symbol SDK_OS_FREE_RTOS has to be defined in order
to use FreeRTOS OSA, otherwise bare-metal implementation is
selected.
0: lv_gpu_nxp_pxp_init() has to be called manually before
lv_init().
config LV_USE_GPU_NXP_VG_LITE
bool "Use NXP's VG-Lite GPU iMX RTxxx platforms."
endmenu
menu "Logging"
config LV_USE_LOG
bool "Enable the log module"
choice
bool "Default log verbosity" if LV_USE_LOG
default LV_LOG_LEVEL_WARN
help
Specify how important log should be added.
config LV_LOG_LEVEL_TRACE
bool "A lot of logs to give detailed information"
config LV_LOG_LEVEL_INFO
bool "Log important events"
config LV_LOG_LEVEL_WARN
bool "Log if something unwanted happened but didn't cause a problem"
config LV_LOG_LEVEL_ERROR
bool "Only critical issues, when the system may fail"
config LV_LOG_LEVEL_USER
bool "Only logs added by the user"
config LV_LOG_LEVEL_NONE
bool "Do not log anything"
endchoice
config LV_LOG_LEVEL
int
default 0 if LV_LOG_LEVEL_TRACE
default 1 if LV_LOG_LEVEL_INFO
default 2 if LV_LOG_LEVEL_WARN
default 3 if LV_LOG_LEVEL_ERROR
default 4 if LV_LOG_LEVEL_USER
default 5 if LV_LOG_LEVEL_NONE
config LV_LOG_PRINTF
bool "Print the log with 'printf'" if LV_USE_LOG
help
Use printf for log output.
If not set the user needs to register a callback with `lv_log_register_print_cb`.
config LV_LOG_TRACE_MEM
bool "Enable/Disable LV_LOG_TRACE in mem module"
default y
depends on LV_USE_LOG
config LV_LOG_TRACE_TIMER
bool "Enable/Disable LV_LOG_TRACE in timer module"
default y
depends on LV_USE_LOG
config LV_LOG_TRACE_INDEV
bool "Enable/Disable LV_LOG_TRACE in indev module"
default y
depends on LV_USE_LOG
config LV_LOG_TRACE_DISP_REFR
bool "Enable/Disable LV_LOG_TRACE in disp refr module"
default y
depends on LV_USE_LOG
config LV_LOG_TRACE_EVENT
bool "Enable/Disable LV_LOG_TRACE in event module"
default y
depends on LV_USE_LOG
config LV_LOG_TRACE_OBJ_CREATE
bool "Enable/Disable LV_LOG_TRACE in obj create module"
default y
depends on LV_USE_LOG
config LV_LOG_TRACE_LAYOUT
bool "Enable/Disable LV_LOG_TRACE in layout module"
default y
depends on LV_USE_LOG
config LV_LOG_TRACE_ANIM
bool "Enable/Disable LV_LOG_TRACE in anim module"
default y
depends on LV_USE_LOG
endmenu
menu "Asserts"
config LV_USE_ASSERT_NULL
bool "Check if the parameter is NULL. (Very fast, recommended)"
default y if !LV_CONF_MINIMAL
config LV_USE_ASSERT_MALLOC
bool "Checks if the memory is successfully allocated or no. (Very fast, recommended)"
default y if !LV_CONF_MINIMAL
config LV_USE_ASSERT_STYLE
bool "Check if the styles are properly initialized. (Very fast, recommended)"
config LV_USE_ASSERT_MEM_INTEGRITY
bool "Check the integrity of `lv_mem` after critical operations. (Slow)"
config LV_USE_ASSERT_OBJ
bool "Check NULL, the object's type and existence (e.g. not deleted). (Slow)."
endmenu
menu "Others"
config LV_USE_PERF_MONITOR
bool "Show CPU usage and FPS count in the right bottom corner."
config LV_USE_MEM_MONITOR
bool "Show the used memory and the memory fragmentation in the left bottom corner. Requires LV_MEM_CUSTOM = 0"
config LV_USE_REFR_DEBUG
bool "Draw random colored rectangles over the redrawn areas."
config LV_SPRINTF_CUSTOM
bool "Change the built-in (v)snprintf functions"
config LV_SPRINTF_USE_FLOAT
bool "Enable float in built-in (v)snprintf functions"
depends on !LV_SPRINTF_CUSTOM
config LV_USE_USER_DATA
bool "Add a 'user_data' to drivers and objects."
default y
endmenu
menu "Compiler settings"
config LV_BIG_ENDIAN_SYSTEM
bool "For big endian systems set to 1"
config LV_USE_LARGE_COORD
bool "Extend the default -32k..32k coordinate range to -4M..4M by using int32_t for coordinates instead of int16_t"
endmenu
config LV_USE_USER_DATA_FREE
bool "Free the user data field upon object deletion"
depends on LV_USE_USER_DATA
config LV_USER_DATA_FREE_INCLUDE
string "Header for user data free function"
default "something.h"
depends on LV_USE_USER_DATA_FREE
config LV_USER_DATA_FREE
string "Invoking for user data free function. It has the lv_obj_t pointer as single parameter."
default "(user_data_free)"
depends on LV_USE_USER_DATA_FREE
config LV_USE_API_EXTENSION_V6
bool "Use the functions and types from the older (v6) API if possible."
default y if !LV_CONF_MINIMAL
config LV_USE_API_EXTENSION_V7
bool "Use the functions and types from the older (v7) API if possible."
default y if !LV_CONF_MINIMAL
endmenu
menu "Font usage"
menu "Enable built-in fonts"
config LV_FONT_MONTSERRAT_8
bool "Enable Montserrat 8"
config LV_FONT_MONTSERRAT_10
bool "Enable Montserrat 10"
config LV_FONT_MONTSERRAT_12
bool "Enable Montserrat 12"
config LV_FONT_MONTSERRAT_14
bool "Enable Montserrat 14"
default y if !LV_CONF_MINIMAL
config LV_FONT_MONTSERRAT_16
bool "Enable Montserrat 16"
config LV_FONT_MONTSERRAT_18
bool "Enable Montserrat 18"
config LV_FONT_MONTSERRAT_20
bool "Enable Montserrat 20"
config LV_FONT_MONTSERRAT_22
bool "Enable Montserrat 22"
config LV_FONT_MONTSERRAT_24
bool "Enable Montserrat 24"
config LV_FONT_MONTSERRAT_26
bool "Enable Montserrat 26"
config LV_FONT_MONTSERRAT_28
bool "Enable Montserrat 28"
config LV_FONT_MONTSERRAT_30
bool "Enable Montserrat 30"
config LV_FONT_MONTSERRAT_32
bool "Enable Montserrat 32"
config LV_FONT_MONTSERRAT_34
bool "Enable Montserrat 34"
config LV_FONT_MONTSERRAT_36
bool "Enable Montserrat 36"
config LV_FONT_MONTSERRAT_38
bool "Enable Montserrat 38"
config LV_FONT_MONTSERRAT_40
bool "Enable Montserrat 40"
config LV_FONT_MONTSERRAT_42
bool "Enable Montserrat 42"
config LV_FONT_MONTSERRAT_44
bool "Enable Montserrat 44"
config LV_FONT_MONTSERRAT_46
bool "Enable Montserrat 46"
config LV_FONT_MONTSERRAT_48
bool "Enable Montserrat 48"
config LV_FONT_UNSCII_8
bool "Enable UNSCII 8 (Perfect monospace font)"
default y if LV_CONF_MINIMAL
config LV_FONT_UNSCII_16
bool "Enable UNSCII 16 (Perfect monospace font)"
config LV_FONT_MONTSERRAT12SUBPX
bool "Enable Montserrat 12 sub-pixel"
config LV_FONT_MONTSERRAT28COMPRESSED
bool "Enable Montserrat 28 compressed"
config LV_FONT_DEJAVU_16_PERSIAN_HEBREW
bool "Enable Dejavu 16 Persian, Hebrew, Arabic letters"
config LV_FONT_SIMSUN_16_CJK
bool "Enable Simsun 16 CJK"
endmenu
config LV_FONT_FMT_TXT_LARGE
bool "Enable it if you have fonts with a lot of characters."
help
The limit depends on the font size, font face and bpp
but with > 10,000 characters if you see issues probably you
need to enable it.
config LV_USE_FONT_COMPRESSED
bool "Sets support for compressed fonts."
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.
choice LV_FONT_DEFAULT
prompt "Select theme default title font"
default LV_FONT_DEFAULT_MONTSERRAT_16 if !LV_CONF_MINIMAL
default LV_FONT_DEFAULT_UNSCII_8 if LV_CONF_MINIMAL
help
Select theme default title font
config LV_FONT_DEFAULT_MONTSERRAT_8
bool "Montserrat 8"
select LV_FONT_MONTSERRAT_8
config LV_FONT_DEFAULT_MONTSERRAT_12
bool "Montserrat 12"
select LV_FONT_MONTSERRAT_12
config LV_FONT_DEFAULT_MONTSERRAT_14
bool "Montserrat 14"
select LV_FONT_MONTSERRAT_14
config LV_FONT_DEFAULT_MONTSERRAT_16
bool "Montserrat 16"
select LV_FONT_MONTSERRAT_16
config LV_FONT_DEFAULT_MONTSERRAT_18
bool "Montserrat 18"
select LV_FONT_MONTSERRAT_18
config LV_FONT_DEFAULT_MONTSERRAT_20
bool "Montserrat 20"
select LV_FONT_MONTSERRAT_20
config LV_FONT_DEFAULT_MONTSERRAT_22
bool "Montserrat 22"
select LV_FONT_MONTSERRAT_22
config LV_FONT_DEFAULT_MONTSERRAT_24
bool "Montserrat 24"
select LV_FONT_MONTSERRAT_24
config LV_FONT_DEFAULT_MONTSERRAT_26
bool "Montserrat 26"
select LV_FONT_MONTSERRAT_26
config LV_FONT_DEFAULT_MONTSERRAT_28
bool "Montserrat 28"
select LV_FONT_MONTSERRAT_28
config LV_FONT_DEFAULT_MONTSERRAT_30
bool "Montserrat 30"
select LV_FONT_MONTSERRAT_30
config LV_FONT_DEFAULT_MONTSERRAT_32
bool "Montserrat 32"
select LV_FONT_MONTSERRAT_32
config LV_FONT_DEFAULT_MONTSERRAT_34
bool "Montserrat 34"
select LV_FONT_MONTSERRAT_34
config LV_FONT_DEFAULT_MONTSERRAT_36
bool "Montserrat 36"
select LV_FONT_MONTSERRAT_36
config LV_FONT_DEFAULT_MONTSERRAT_38
bool "Montserrat 38"
select LV_FONT_MONTSERRAT_38
config LV_FONT_DEFAULT_MONTSERRAT_40
bool "Montserrat 40"
select LV_FONT_MONTSERRAT_40
config LV_FONT_DEFAULT_MONTSERRAT_42
bool "Montserrat 42"
select LV_FONT_MONTSERRAT_42
config LV_FONT_DEFAULT_MONTSERRAT_44
bool "Montserrat 44"
select LV_FONT_MONTSERRAT_44
config LV_FONT_DEFAULT_MONTSERRAT_46
bool "Montserrat 46"
select LV_FONT_MONTSERRAT_46
config LV_FONT_DEFAULT_MONTSERRAT_48
bool "Montserrat 48"
select LV_FONT_MONTSERRAT_48
config LV_FONT_DEFAULT_UNSCII_8
bool "UNSCII 8 (Perfect monospace font)"
select LV_FONT_UNSCII_8
config LV_FONT_DEFAULT_UNSCII_16
bool "UNSCII 16 (Perfect monospace font)"
select LV_FONT_UNSCII_16
config LV_FONT_DEFAULT_MONTSERRAT12SUBPX
bool "Montserrat 12 sub-pixel"
select LV_FONT_MONTSERRAT12SUBPX
config LV_FONT_DEFAULT_MONTSERRAT28COMPRESSED
bool "Montserrat 28 compressed"
select LV_FONT_MONTSERRAT28COMPRESSED
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_16_CJK
bool "Simsun 16 CJK"
select LV_FONT_SIMSUN_16_CJK
endchoice
endmenu
menu "Themes"
config LV_USE_THEME_DEFAULT
bool "A simple, impressive and very complete theme"
default y
config LV_THEME_DEFAULT_PALETTE_LIGHT
bool "Yes to set light mode, No to set dark mode"
default y
depends on LV_USE_THEME_DEFAULT
config LV_THEME_DEFAULT_GROW
bool "Enable grow on press"
default y
depends on LV_USE_THEME_DEFAULT
config LV_THEME_DEFAULT_TRANSITION_TIME
int "Default transition time in [ms]"
default 80
depends on LV_USE_THEME_DEFAULT
config LV_USE_THEME_BASIC
bool "A very simple theme that is a good starting point for a custom theme"
default y
endmenu
menu "Text Settings"
choice LV_TXT_ENC
prompt "Select a character encoding for strings"
help
Select a character encoding for strings. Your IDE or editor should have the same character encoding.
default LV_TXT_ENC_UTF8 if !LV_CONF_MINIMAL
default LV_TXT_ENC_ASCII if LV_CONF_MINIMAL
config LV_TXT_ENC_UTF8
bool "UTF8"
config LV_TXT_ENC_ASCII
bool "ASCII"
endchoice
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'.
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.
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.
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
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
depends on LV_USE_BIDI
config LV_BIDI_DIR_LTR
bool "Left-to-Right"
config LV_BIDI_DIR_RTL
bool "Right-to-Left"
config LV_BIDI_DIR_AUTO
bool "Detect texts base direction"
endchoice
config LV_USE_ARABIC_PERSIAN_CHARS
bool "Enable Arabic/Persian processing"
help
In these languages characters should be replaced with
an other form based on their position in the text.
endmenu
menu "Widget usage"
config LV_USE_ARC
bool "Arc."
default y if !LV_CONF_MINIMAL
config LV_USE_BAR
bool "Bar."
default y if !LV_CONF_MINIMAL
config LV_USE_BTN
bool "Button."
default y if !LV_CONF_MINIMAL
config LV_USE_BTNMATRIX
bool "Button matrix."
default y if !LV_CONF_MINIMAL
config LV_USE_CANVAS
bool "Canvas. Dependencies: lv_img."
default y if !LV_CONF_MINIMAL
config LV_USE_CHECKBOX
bool "Check Box"
default y if !LV_CONF_MINIMAL
config LV_USE_CHART
bool "Chart."
default y if !LV_CONF_MINIMAL
config LV_USE_DROPDOWN
bool "Drop down list. Requires: lv_label."
select LV_USE_LABEL
default y if !LV_CONF_MINIMAL
config LV_USE_IMG
bool "Image. Requires: lv_label."
select LV_USE_LABEL
default y if !LV_CONF_MINIMAL
config LV_USE_LABEL
bool "Label."
default y if !LV_CONF_MINIMAL
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_LINE
bool "Line."
default y if !LV_CONF_MINIMAL
config LV_USE_METER
bool "Meter."
default y if !LV_CONF_MINIMAL
config LV_USE_ROLLER
bool "Roller. Requires: lv_label."
select LV_USE_LABEL
default y if !LV_CONF_MINIMAL
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. Requires: lv_bar."
select LV_USE_BAR
default y if !LV_CONF_MINIMAL
config LV_USE_SWITCH
bool "Switch. Dependencies: lv_slider."
select LV_USE_SLIDER
default y if !LV_CONF_MINIMAL
config LV_USE_TEXTAREA
bool "Text area. Requires: lv_label."
select LV_USE_LABEL
default y if !LV_CONF_MINIMAL
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."
default y if !LV_CONF_MINIMAL
endmenu
menu "Extra components"
config LV_USE_ANIMIMG
bool "Anim image."
select LV_USE_IMG
default y if !LV_CONF_MINIMAL
config LV_USE_CALENDAR
bool "Calendar."
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_CALENDAR_HEADER_ARROW
bool "Use calendar header arrow"
default y
config LV_USE_CALENDAR_HEADER_DROPDOWN
bool "Use calendar header dropdown"
default y
config LV_USE_COLORWHEEL
bool "Colorwheel."
config LV_USE_IMGBTN
bool "Imgbtn."
config LV_USE_KEYBOARD
bool "Keyboard."
config LV_USE_LED
bool "LED."
config LV_USE_LIST
bool "List."
config LV_USE_MSGBOX
bool "Msgbox."
config LV_USE_SPINBOX
bool "Spinbox."
config LV_USE_SPINNER
bool "Spinner."
config LV_USE_TABVIEW
bool "Tabview."
config LV_USE_TILEVIEW
bool "Tileview"
config LV_USE_WIN
bool "Win"
config LV_USE_SPAN
bool "span"
endmenu
menu "Layouts"
config LV_USE_FLEX
bool "A layout similar to Flexbox in CSS."
default y
config LV_USE_GRID
bool "A layout similar to Grid in CSS."
default y
endmenu
endmenu

View File

@@ -1,5 +1,5 @@
MIT licence
Copyright (c) 2016 Gábor Kiss-Vámosi
Copyright (c) 2020 LVGL LLC
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

454
README.md
View File

@@ -1,238 +1,131 @@
<h1 align="center"> LittlevGL - Open-source Embedded GUI Library</h1>
**The master branch now contains the test version of v8. For the last v7 version use the release/v7 branch.**
<h1 align="center"> LVGL - Light and Versatile Graphics Library</h1>
<p align="center">
<a href="https://github.com/littlevgl/lvgl/blob/master/LICENCE.txt"><img src="https://img.shields.io/badge/licence-MIT-blue.svg"></a>
<a href="https://github.com/littlevgl/lvgl/releases/tag/v6.1.2"><img src="https://img.shields.io/badge/version-6.1.2-blue.svg"></a>
<img src="https://lvgl.io/assets/images/img_1.png">
</p>
<p align="center">
<img src="https://littlevgl.com/github/cover_ori_reduced_2.gif">
</p>
<p align="center">
LittlevGL provides everything you need to create a Graphical User Interface (GUI) on embedded systems 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://littlevgl.com">Website </a> &middot;
<a href="https://littlevgl.com/live-demo">Live demo</a> &middot;
<a href="https://docs.littlevgl.com/en/html/get-started/pc-simulator.html">Simulator</a> &middot;
<a href="https://forum.littlevgl.com">Forum</a> &middot;
<a href="https://docs.littlevgl.com/">Docs</a> &middot;
<a href="https://blog.littlevgl.com/">Blog</a>
<a href="https://lvgl.io">Website </a> &middot;
<a href="https://lvgl.io/demos">Online demo</a> &middot;
<a href="https://lvgl.github.io/lv_examples/">Nightly demos</a> &middot;
<a href="https://docs.lvgl.io/">Docs</a> &middot;
<a href="https://forum.lvgl.io">Forum</a>
</h4>
---
- [Features](#features)
- [Supported devices](#supported-devices)
- [Quick start in a simulator](#quick-start-in-a-simulator)
- [Add LittlevGL to your project](#add-littlevgl-to-your-project)
- [Learn the basics](#learn-the-basics)
- [Examples](#examples)
- [Contributing](#contributing)
- [Donate](#donate)
## Features
* **Powerful building blocks** buttons, charts, lists, sliders, images, etc.
* **Advanced graphics** with animations, anti-aliasing, opacity, smooth scrolling
* **Simultaneously use various input devices** touchscreen, mouse, keyboard, encoder, buttons, etc.
* **Simultaneously use multiple displays** i.e. monochrome and color display
* **Multi-language support** with UTF-8 encoding
* **Fully customizable** graphical elements
* **Hardware independent** to use with any microcontroller or display
* **Scalable** to operate with little memory (64 kB Flash, 10 kB RAM)
* **OS, External memory and GPU** supported but not required
* **Single frame buffer** operation even with advances graphical effects
* **Written in C** for maximal compatibility
* **Micropython Binding** exposes [LittlevGL API in Micropython](https://blog.littlevgl.com/2019-02-20/micropython-bindings)
* **Simulator** to develop on PC without embedded hardware
* **Tutorials, examples, themes** for rapid development
* **Documentation** and API references
* Powerful [building blocks](https://docs.lvgl.io/latest/en/html/widgets/index.html): buttons, charts, lists, sliders, images, etc.
* Advanced graphics: animations, anti-aliasing, opacity, smooth scrolling
* Use [various input devices](https://docs.lvgl.io/latest/en/html/overview/indev.html): touchscreen, mouse, keyboard, encoder, buttons, etc.
* Use [multiple displays](https://docs.lvgl.io/latest/en/html/overview/display.html): e.g. monochrome and color display
* Hardware independent to use with any microcontroller or display
* Scalable to operate with little memory (64 kB Flash, 10 kB RAM)
* Multi-language support with UTF-8 handling, Bidirectional and Arabic script support
* Fully customizable graphical elements via [CSS-like styles](https://docs.lvgl.io/latest/en/html/overview/style.html)
* OS, External memory and GPU are supported but not required
* Smooth rendering even with a [single frame buffer](https://docs.lvgl.io/latest/en/html/porting/display.html)
* Written in C for maximal compatibility (C++ compatible)
* Micropython Binding exposes [LVGL API in Micropython](https://blog.lvgl.io/2019-02-20/micropython-bindings)
* [Simulator](https://docs.lvgl.io/latest/en/html/get-started/pc-simulator.html) to develop on PC without embedded hardware
* [Examples](lv_examples) and tutorials for rapid development
* [Documentation](http://docs.lvgl.io/) and API references
## Supported devices
Basically, every modern controller - which is able to drive a display - is suitable to run LittlevGL. The minimal requirements:
- 16, 32 or 64 bit microcontroller or processor
- &gt; 16 MHz clock speed is recommended
- Flash/ROM: &gt; 64 kB for the very essential components (&gt; 180 kB is recommended)
- RAM:
- Static RAM usage: ~8..16 kB depending on the used features and objects types
- Stack: &gt; 2kB (&gt; 4 kB is recommended)
- Dynamic data (heap): &gt; 4 KB (&gt; 16 kB is recommended if using several objects).
Set by `LV_MEM_SIZE` in *lv_conf.h*.
- Display buffer: &gt; *"Horizontal resolution"* pixels (&gt; 10 &times; *"Horizontal resolution"* is recommended)
- C99 or newer compiler
## Requirements
Basically, every modern controller (which is able to drive a display) is suitable to run LVGL. The minimal requirements are:
<table>
<tr>
<td> <strong>Name</strong> </td>
<td><strong>Minimal</strong></td>
<td><strong>Recommended</strong></td>
</tr>
<tr>
<td><strong>Architecture</strong></td>
<td colspan="2">16, 32 or 64 bit microcontroller or processor</td>
</tr>
<tr>
<td> <strong>Clock</strong></td>
<td> &gt; 16 MHz </td>
<td> &gt; 48 MHz</td>
</tr>
<tr>
<td> <strong>Flash/ROM</strong></td>
<td> &gt; 64 kB </td>
<td> &gt; 180 kB</td>
</tr>
<tr>
<td> <strong>Static RAM</strong></td>
<td> &gt; 2 kB </td>
<td> &gt; 4 kB</td>
</tr>
<tr>
<td> <strong>Stack</strong></td>
<td> &gt; 2 kB </td>
<td> &gt; 8 kB</td>
</tr>
<tr>
<td> <strong>Heap</strong></td>
<td> &gt; 2 kB </td>
<td> &gt; 8 kB</td>
</tr>
<tr>
<td> <strong>Display buffer</strong></td>
<td> &gt; 1 &times; <em>hor. res.</em> pixels </td>
<td> &gt; 10 &times; <em>hor. res.</em> pixels </td>
</tr>
<tr>
<td> <strong>Compiler</strong></td>
<td colspan="2"> C99 or newer </td>
</tr>
</table>
*Note that the memory usage might vary depending on the architecture, compiler and build options.*
Just to mention some **platforms**:
- STM32F1, STM32F3, [STM32F4](https://blog.littlevgl.com/2017-07-15/stm32f429_disco_port), [STM32F7](https://github.com/littlevgl/stm32f746_disco_no_os_sw4stm32)
Just to mention some platforms:
- STM32F1, STM32F3, STM32F4, STM32F7, STM32L4, STM32L5, STM32H7
- Microchip dsPIC33, PIC24, PIC32MX, PIC32MZ
- NXP Kinetis, LPC, iMX
- [Linux frame buffer](https://blog.littlevgl.com/2018-01-03/linux_fb) (/dev/fb)
- [Raspberry PI](http://www.vk3erw.com/index.php/16-software/63-raspberry-pi-official-7-touchscreen-and-littlevgl)
- [Espressif ESP32](https://github.com/littlevgl/lv_port_esp32)
- Nordic nrf52
- Quectell M66
- NXP: Kinetis, LPC, iMX, iMX RT
- [Linux frame buffer](https://blog.lvgl.io/2018-01-03/linux_fb) (/dev/fb)
- [Raspberry Pi](http://www.vk3erw.com/index.php/16-software/63-raspberry-pi-official-7-touchscreen-and-littlevgl)
- [Espressif ESP32](https://github.com/lvgl/lv_port_esp32)
- [Infineon Aurix](https://github.com/lvgl/lv_port_aurix)
- Nordic NRF52 Bluetooth modules
- Quectel modems
## Quick start in a simulator
The easiest way to get started with LittlevGL is to run it in a simulator on your PC without any embedded hardware.
## Get started
This list shows the recommended way of learning the library:
1. Check the [Online demos](https://lvgl.io/demos) to see LVGL in action (3 minutes)
2. Read the [Introduction](https://docs.lvgl.io/latest/en/html/intro/index.html) page of the documentation (5 minutes)
3. Get familiar with the basics on the [Quick overview](https://docs.lvgl.io/latest/en/html/get-started/quick-overview.html) page (15 minutes)
4. Set up a [Simulator](https://docs.lvgl.io/latest/en/html/get-started/pc-simulator.html) (10 minutes)
5. Try out some [Examples](https://github.com/lvgl/lv_examples/)
6. Port LVGL to a board. See the [Porting](https://docs.lvgl.io/latest/en/html/porting/index.html) guide or check the ready to use [Projects](https://github.com/lvgl?q=lv_port_&type=&language=)
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)
Choose a project with your favourite IDE:
## Examples
| Eclipse | CodeBlocks | Visual Studio | PlatformIO | Qt Creator |
|-------------|-------------|---------------|-----------|------------|
| [![Eclipse](https://littlevgl.com/logo/ide/eclipse.jpg)](https://github.com/littlevgl/pc_simulator_sdl_eclipse) | [![CodeBlocks](https://littlevgl.com/logo/ide/codeblocks.jpg)](https://github.com/littlevgl/pc_simulator_win_codeblocks) | [![VisualStudio](https://littlevgl.com/logo/ide/visualstudio.jpg)](https://github.com/littlevgl/visual_studio_2017_sdl_x64) | [![PlatformIO](https://littlevgl.com/logo/ide/platformio.jpg)](https://github.com/littlevgl/pc_simulator_sdl_platformio) | [![QtCreator](https://littlevgl.com/logo/ide/qtcreator.jpg)](https://blog.littlevgl.com/2019-01-03/qt-creator) |
| Cross-platform<br>with SDL<br>(Recommended on<br>Linux and Mac) | Native Windows | Windows<br>with SDL | Cross-platform<br>with SDL | Cross-platform<br>with SDL |
## Add LittlevGL to your project
The steps below show how to setup LittlevGL on an embedded system with a display and a touchpad.
You can use the [Simulators](https://docs.littlevgl.com/en/html/get-started/pc-simulator) to get ready to use projects which can be run on your PC.
1. [Download](https://littlevgl.com/download) or [Clone](https://github.com/littlevgl/lvgl) the library
2. Copy the `lvgl` folder into your project
3. Copy `lvgl/lv_conf_template.h` as `lv_conf.h` next to the `lvgl` folder and set at least `LV_HOR_RES_MAX`, `LV_VER_RES_MAX` and `LV_COLOR_DEPTH`. Don't forget to **change the `#if 0` statement near the top of the file to `#if 1`**, otherwise you will get compilation errors.
4. Include `lvgl/lvgl.h` where you need to use LittlevGL related functions.
5. Call `lv_tick_inc(x)` every `x` milliseconds **in a Timer or Task** (`x` should be between 1 and 10). It is required for the internal timing of LittlevGL.
6. Call `lv_init()`
7. Create a display buffer for LittlevGL
```c
static lv_disp_buf_t disp_buf;
static lv_color_t buf[LV_HOR_RES_MAX * 10]; /*Declare a buffer for 10 lines*/
lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); /*Initialize the display buffer*/
```
8. Implement and register a function which can **copy a pixel array** to an area of your display:
```c
lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/
lv_disp_drv_init(&disp_drv); /*Basic initialization*/
disp_drv.flush_cb = my_disp_flush; /*Set your driver function*/
disp_drv.buffer = &disp_buf; /*Assign the buffer to the display*/
lv_disp_drv_register(&disp_drv); /*Finally register the driver*/
void my_disp_flush(lv_disp_t * disp, const lv_area_t * area, lv_color_t * color_p)
{
int32_t x, y;
for(y = area->y1; y <= area->y2; y++) {
for(x = area->x1; x <= area->x2; x++) {
set_pixel(x, y, *color_p); /* Put a pixel to the display.*/
color_p++;
}
}
lv_disp_flush_ready(disp); /* Indicate you are ready with the flushing*/
}
```
9. Implement and register a function which can **read an input device**. E.g. for a touch pad:
```c
lv_indev_drv_init(&indev_drv); /*Descriptor of a input device driver*/
indev_drv.type = LV_INDEV_TYPE_POINTER; /*Touch pad is a pointer-like device*/
indev_drv.read_cb = my_touchpad_read; /*Set your driver function*/
lv_indev_drv_register(&indev_drv); /*Finally register the driver*/
bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data)
{
static lv_coord_t last_x = 0;
static lv_coord_t last_y = 0;
/*Save the state and save the pressed coordinate*/
data->state = touchpad_is_pressed() ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL;
if(data->state == LV_INDEV_STATE_PR) touchpad_get_xy(&last_x, &last_y);
/*Set the coordinates (if released use the last pressed coordinates)*/
data->point.x = last_x;
data->point.y = last_y;
return false; /*Return `false` because we are not buffering and no more data to read*/
}
```
10. Call `lv_task_handler()` periodically every few milliseconds in the main `while(1)` loop, in Timer interrupt or in an Operation system task.
It will redraw the screen if required, handle input devices etc.
## Learn the basics
### Objects (Widgets)
The graphical elements like Buttons, Labels, Sliders, Charts etc are called objects in LittelvGL. Go to [Object types](https://docs.littlevgl.com/en/html/object-types/index) to see the full list of available types.
Every object has a parent object. The child object moves with the parent and if you delete the parent the children will be deleted too. Children can be visible only on their parent.
The *screen* are the "root" parents. To get the current screen call `lv_scr_act()`.
You can create a new object with `lv_<type>_create(parent, obj_to_copy)`. It will return an `lv_obj_t *` variable which should be used as a reference to the object to set its parameters.
The first parameter is the desired *parent*, te second parameters can be an object to copy (`NULL` is unused).
For example:
```c
lv_obj_t * slider1 = lv_slider_create(lv_scr_act(), NULL);
```
To set some basic attribute `lv_obj_set_<paramters_name>(obj, <value>)` function can be used. For example:
```c
lv_obj_set_x(btn1, 30);
lv_obj_set_y(btn1, 10);
lv_obj_set_size(btn1, 200, 50);
```
The objects has type specific parameters too which can be set by `lv_<type>_set_<paramters_name>(obj, <value>)` functions. For example:
```c
lv_slider_set_value(slider1, 70, LV_ANIM_ON);
```
To see the full API visit the documentation of the object types or the related header file (e.g. `lvgl/src/lv_objx/lv_slider.h`).
### Styles
Styles can be assigned to the objects to changed their appearance. A style describes the appearance of rectangle-like objects (like a button or slider), texts, images and lines at once.
You can create a new style like this:
```c
static lv_style_t style1; /*Declare a new style. Should be `static`*/
lv_style_copy(&style1, &lv_style_plain); /*Copy a built-in style*/
style1.body.main_color = LV_COLOR_RED; /*Main color*/
style1.body.grad_color = lv_color_hex(0xffd83c) /*Gradient color (orange)*/
style1.body.radius = 3;
style1.text.color = lv_color_hex3(0x0F0) /*Label color (green)*/
style1.text.font = &lv_font_dejavu_22; /*Change font*/
...
```
To set a new style for an object use the `lv_<type>set_style(obj, LV_<TYPE>_STYLE_<NAME>, &my_style)` functions. For example:
```c
lv_slider_set_style(slider1, LV_SLIDER_STYLE_BG, &slider_bg_style);
lv_slider_set_style(slider1, LV_SLIDER_STYLE_INDIC, &slider_indic_style);
lv_slider_set_style(slider1, LV_SLIDER_STYLE_KNOB, &slider_knob_style);
```
If an object's style is `NULL` then it will inherit its parent's style. For example, the labels' style are `NULL` by default. If you place them on a button then they will use the `style.text` properties from the button's style.
Learn more in [Style overview](https://docs.littlevgl.com/en/html/overview/style) section.
### Events
Events are used to inform the user if something has happened with an object. You can assign a callback to an object which will be called if the object is clicked, released, dragged, being deleted etc. It should look like this:
```c
lv_obj_set_event_cb(btn, btn_event_cb); /*Assign a callback to the button*/
...
void btn_event_cb(lv_obj_t * btn, lv_event_t event)
{
if(event == LV_EVENT_CLICKED) {
printf("Clicked\n");
}
}
```
Learn more about the events in the [Event overview](https://docs.littlevgl.com/en/html/overview/event) section.
## Examples
For more examples see the [lv_examples](https://github.com/lvgl/lv_examples) repository.
### Button with label
```c
lv_obj_t * btn = lv_btn_create(lv_scr_act(), NULL); /*Add a button the current screen*/
lv_obj_t * btn = lv_btn_create(lv_scr_act(), NULL); /*Add a button to the current screen*/
lv_obj_set_pos(btn, 10, 10); /*Set its position*/
lv_obj_set_size(btn, 100, 50); /*Set its size*/
lv_obj_set_event_cb(btn, btn_event_cb); /*Assign a callback to the button*/
@@ -249,121 +142,10 @@ void btn_event_cb(lv_obj_t * btn, lv_event_t event)
}
}
```
![LittlevGL button with label example](https://docs.littlevgl.com/en/misc/simple_button_example.gif)
![LVGL button with label example](https://raw.githubusercontent.com/lvgl/docs/latest/misc/simple_button_example.gif)
### Button with styles
Add styles to the previously button from the previous example
```c
static lv_style_t style_btn_rel; /*A variable to store the released style*/
lv_style_copy(&style_btn_rel, &lv_style_plain); /*Initialize from a built-in style*/
style_btn_rel.body.border.color = lv_color_hex3(0x269);
style_btn_rel.body.border.width = 1;
style_btn_rel.body.main_color = lv_color_hex3(0xADF);
style_btn_rel.body.grad_color = lv_color_hex3(0x46B);
style_btn_rel.body.shadow.width = 4;
style_btn_rel.body.shadow.type = LV_SHADOW_BOTTOM;
style_btn_rel.body.radius = LV_RADIUS_CIRCLE;
style_btn_rel.text.color = lv_color_hex3(0xDEF);
static lv_style_t style_btn_pr; /*A variable to store the pressed style*/
lv_style_copy(&style_btn_pr, &style_btn_rel); /*Initialize from the released style*/
style_btn_pr.body.border.color = lv_color_hex3(0x46B);
style_btn_pr.body.main_color = lv_color_hex3(0x8BD);
style_btn_pr.body.grad_color = lv_color_hex3(0x24A);
style_btn_pr.body.shadow.width = 2;
style_btn_pr.text.color = lv_color_hex3(0xBCD);
lv_btn_set_style(btn, LV_BTN_STYLE_REL, &style_btn_rel); /*Set the button's released style*/
lv_btn_set_style(btn, LV_BTN_STYLE_PR, &style_btn_pr); /*Set the button's pressed style*/
```
![Stylsd button is LittelvGL](https://docs.littlevgl.com/en/misc/button_style_example.gif)
### Slider and object alignment
```c
lv_obj_t * label;
...
/* Create a slider in the center of the display */
lv_obj_t * slider = lv_slider_create(lv_scr_act(), NULL);
lv_obj_set_width(slider, 200); /*Set the width*/
lv_obj_align(slider, NULL, LV_ALIGN_CENTER, 0, 0); /*Align to the center of the parent (screen)*/
lv_obj_set_event_cb(slider, slider_event_cb); /*Assign an event function*/
/* Create a label below the slider */
label = lv_label_create(lv_scr_act(), NULL);
lv_label_set_text(label, "0");
lv_obj_set_auto_realign(slider, true);
lv_obj_align(label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
...
void slider_event_cb(lv_obj_t * slider, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) {
static char buf[4]; /* max 3 bytes for number plus 1 null terminating byte */
snprintf(buf, 4, "%u", lv_slider_get_value(slider));
lv_label_set_text(slider_label, buf); /*Refresh the text*/
}
}
```
![Slider example with LittlevGL](https://docs.littlevgl.com/en/misc/slider_example.gif)
### List and themes
```c
/*Texts of the list elements*/
const char * txts[] = {"First", "Second", "Third", "Forth", "Fifth", "Sixth", NULL};
/* Initialize and set a theme. `LV_THEME_NIGHT` needs to enabled in lv_conf.h. */
lv_theme_t * th = lv_theme_night_init(20, NULL);
lv_theme_set_current(th);
/*Create a list*/
lv_obj_t* list = lv_list_create(lv_scr_act(), NULL);
lv_obj_set_size(list, 120, 180);
lv_obj_set_pos(list, 10, 10);
/*Add buttons*/
uint8_t i;
for(i = 0; txts[i]; i++) {
lv_obj_t * btn = lv_list_add_btn(list, LV_SYMBOL_FILE, txts[i]);
lv_obj_set_event_cb(btn, list_event); /*Assign event function*/
lv_btn_set_toggle(btn, true); /*Enable on/off states*/
}
/* Initialize and set an other theme. `LV_THEME_MATERIAL` needs to enabled in lv_conf.h.
* If `LV_TEHE_LIVE_UPDATE 1` then the previous list's style will be updated too.*/
th = lv_theme_material_init(210, NULL);
lv_theme_set_current(th);
/*Create an other list*/
list = lv_list_create(lv_scr_act(), NULL);
lv_obj_set_size(list, 120, 180);
lv_obj_set_pos(list, 150, 10);
/*Add buttons with the same texts*/
for(i = 0; txts[i]; i++) {
lv_obj_t * btn = lv_list_add_btn(list, LV_SYMBOL_FILE, txts[i]);
lv_obj_set_event_cb(btn, list_event);
lv_btn_set_toggle(btn, true);
}
...
static void list_event(lv_obj_t * btn, lv_event_t e)
{
if(e == LV_EVENT_CLICKED) {
printf("%s\n", lv_list_get_btn_text(btn));
}
}
```
![List and theme example with LittlevGL](https://docs.littlevgl.com/en/misc/list_theme_example.gif)
### Use LittlevGL from Micropython
Learn more about [Micropython](https://docs.littlevgl.com/en/html/get-started/micropython).
### LVGL from Micropython
Learn more about [Micropython](https://docs.lvgl.io/latest/en/html/get-started/micropython.html).
```python
# Create a Button and a Label
scr = lv.obj()
@@ -377,22 +159,6 @@ lv.scr_load(scr)
```
## Contributing
To ask questions please use the [Forum](https://forum.littlevgl.com).
For development-related things (bug reports, feature suggestions) use [GitHub's Issue tracker](https://github.com/littlevgl/lvgl/issues).
LVGL is an open project and contribution is very welcome. There are many ways to contribute from simply speaking about your project, through writing examples, improving the documentation, fixing bugs to hosing your own project under in LVGL.
If you are interested in contributing to LittlevGL you can
- **Help others** in the [Forum](https://forum.littlevgl.com).
- **Inspire people** by speaking about your project in [My project](https://forum.littlevgl.com/c/my-projects) category in the Forum or add it to the [References](https://blog.littlevgl.com/2018-12-26/references) post
- **Improve and/or translate the documentation.** Go to the [Documentation](https://github.com/littlevgl/docs) repository to learn more
- **Write a blog post** about your experiences. See how to do it in the [Blog](https://github.com/littlevgl/blog) repository
- **Report and/or fix bugs** in [GitHub's issue tracker](https://github.com/littlevgl/lvgl/issues)
- **Help in the developement**. Check the [Open issues](https://github.com/littlevgl/lvgl/issues) especially the ones with [Help wanted](https://github.com/littlevgl/lvgl/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) label and tell your ideas about a topic or implement a feature.
It should be useful to read the
- [Contributing guide](https://blog.littlevgl.com/2018-12-06/contributing)
- [Coding style guide](https://github.com/littlevgl/lvgl/blob/master/docs/CODING_STYLE.md)
## Donate
If you are pleased with the library, found it useful, or you are happy with the support you got, please help its further development:
[![Donate](https://littlevgl.com/donate_dir/donate_btn.png)](https://littlevgl.com/donate)
For a detailed description of contribution opportunities visit the [Contributing](https://docs.lvgl.io/latest/en/html/contributing/index.html) section of the documentation.

34
component.mk Normal file
View File

@@ -0,0 +1,34 @@
# ESP-IDF component file for make based commands
COMPONENT_SRCDIRS := . \
src \
src/core \
src/draw \
src/extra \
src/font \
src/gpu \
src/hal \
src/misc \
src/widgets \
src/extra/layouts \
src/extra/layouts/flex \
src/extra/layouts/grid \
src/extra/themes \
src/extra/themes/basic \
src/extra/themes/default \
src/extra/widgets/calendar \
src/extra/widgets/colorwheel \
src/extra/widgets \
src/extra/widgets/imgbtn \
src/extra/widgets/keyboard \
src/extra/widgets/led \
src/extra/widgets/list \
src/extra/widgets/msgbox \
src/extra/widgets/spinbox \
src/extra/widgets/spinner \
src/extra/widgets/tabview \
src/extra/widgets/tileview \
src/extra/widgets/win
COMPONENT_ADD_INCLUDEDIRS := $(COMPONENT_SRCDIRS) .

594
docs/CHANGELOG.md Normal file
View File

@@ -0,0 +1,594 @@
# Changelog
## v8.0.2 (16.07.2021)
- fix(theme) improve button focus of keyboard
- fix(tabview) send LV_EVENT_VALUE_CHANGED only once
- fix(imgbtn) use the correct src in LV_EVENT_GET_SELF_SIZE
- fix(color) remove extraneous cast for 8-bit color
- fix(obj style) fix children reposition if the parent's padding changes.
- fix(color) remove extraneous _LV_COLOR_MAKE_TYPE_HELPER (#2372)
- fix(spinner) should not be clickable (#2373)
- fix(obj) improve how the focusing indev is determined
- fix(template) update indev template for v8
- fix(printf) skip defining attribute if pycparser is used
- refactor(printf) add printf-like function attribute to _lv_txt_set_text_vfmt and lv_label_set_text_fmt (#2332)
- fix(template) include lvgl.h in lv_port_*_template.c files
- fix(obj) detecting which indev sent LV_EVENT_FOCUS
- fix (span) fill LV_EVENT_GET_SELF_SIZE (#2360)
- fix(arc) disable LV_OBJ_FLAG_SCROLL_CHAIN by default
- fix (draw) fix arc bg image drawing with full arcs
- fix(disp) fix memory leak in lv_disp_remove (#2355)
- fix warnigs introduced by 3fb8baf5
- fix(widgets) use lv_obj_class for all the widgets
- fix(obj) move clean ups from lv_obj_del to lv_obj_destructor
- fix(roller) fix partial redraw of the selected area
- fix(roller) adjust the size of the selected area correctly
- fix(obj) delete useless type conversion (#2343)
- fix(lv_obj_scroll.h) typos (#2345)
- fix(scroll) fire LV_EVENT_SCROLL_BEGIN in the same spot for both axes
- fix(btnmatrix) fix button invalidation on focus change
- fix(textarea) style update in oneline mode + improve sroll to cursor
- fix(tlsf) do not use <assert.h>
- fix(imgbtn) consider width==LV_SIZE_CONTENT if only mid. img is set
- fix(refr) reduce the nesting level in lv_refr_area
- fix(txt) enhance the function of break_chars (#2327)
- fix(pxp): update RTOS macro for SDK 2.10
- fix(vglite): update for v8
- fix(pxp): update for v8
- fix(flex) fix layout update and invalidation issues
- fix(flex) fix NULL pointer dereference
- fix(obj, switch) do not send LV_EVENT_VALUE_CHANGED twice
- fix(color) overflow with 16 bit color depth
- fix(coords) fix using large coordinates
- fix(chart) fix crash if no series are added
- fix(chart) invalidation with LV_CHART_UPDATE_MODE_SHIFT
- fix(align) fix lv_obj_align_to G
- fix(table) invalidate the table on cell value change
- fix(label) remove dupliacted lv_obj_refresh_self_size
- fix(draw) underflow in subpixel font drawing
- fix (scroll) do not send unnecessary scroll end events
## v8.0.1 (14.06.2021)
- docs(filesystem) update to v8 <a href="https://github.com/lvgl/lvgl/commit/7971ade4">7971ade4</a>
- fix(msgbox) create modals on top layer instead of act screen <a href="https://github.com/lvgl/lvgl/commit/5cf6303e">5cf6303e</a>
- fix(colowheel) disable LV_OBJ_FLAG_SCROLL_CHAIN by default <a href="https://github.com/lvgl/lvgl/commit/48d1c292">48d1c292</a>
- docs(grid) typo fix (#2310) <a href="https://github.com/lvgl/lvgl/commit/69d109d2">69d109d2</a>
- fix(arduino) fix the prototype of my_touchpad_read in the LVGL_Arduino.ino <a href="https://github.com/lvgl/lvgl/commit/1a62f7a6">1a62f7a6</a>
- fix(meter) fix needle image invalidation <a href="https://github.com/lvgl/lvgl/commit/54d8e817">54d8e817</a>
- fix(mem) add lv_ prefix to tlsf functions and types <a href="https://github.com/lvgl/lvgl/commit/0d52b59c">0d52b59c</a>
- fix(calendar) fix the position calculation today <a href="https://github.com/lvgl/lvgl/commit/ad05e196">ad05e196</a>
- fix(typo) rename LV_OBJ_FLAG_SNAPABLE to LV_OBJ_FLAG_SNAPPABLE <a href="https://github.com/lvgl/lvgl/commit/e697807c">e697807c</a>
- docs(color) language fixes (#2302) <a href="https://github.com/lvgl/lvgl/commit/07ecc9f1">07ecc9f1</a>
- fix(tick) minor optmization on lv_tick_inc call test <a href="https://github.com/lvgl/lvgl/commit/b4305df5">b4305df5</a>
- Spelling and other language fixes to documentation (#2293) <a href="https://github.com/lvgl/lvgl/commit/d0aaacaf">d0aaacaf</a>
- fix(theme) show disabled state on buttons of btnmatrix, msgbox and kayboard <a href="https://github.com/lvgl/lvgl/commit/0be582b3">0be582b3</a>
- fix(scroll) keep the scroll position on object deleted <a href="https://github.com/lvgl/lvgl/commit/52edbb46">52edbb46</a>
- fix(msgbox) handle NULL btn map paramter <a href="https://github.com/lvgl/lvgl/commit/769c4a30">769c4a30</a>
- fix(group) allow refocusing obejcts <a href="https://github.com/lvgl/lvgl/commit/1520208b">1520208b</a>
- docs(overview) spelling fixes <a href="https://github.com/lvgl/lvgl/commit/d2efb8c6">d2efb8c6</a>
- Merge branch 'master' of https://github.com/lvgl/lvgl <a href="https://github.com/lvgl/lvgl/commit/45960838">45960838</a>
- feat(timer) check if lv_tick_inc is called <a href="https://github.com/lvgl/lvgl/commit/aa6641a6">aa6641a6</a>
- feat(docs) add view on GitHub link <a href="https://github.com/lvgl/lvgl/commit/a716ac6e">a716ac6e</a>
- fix(theme) fix the switch style in the default theme <a href="https://github.com/lvgl/lvgl/commit/0c0dc8ea">0c0dc8ea</a>
- docs fix typo <a href="https://github.com/lvgl/lvgl/commit/8ab80645">8ab80645</a>
- Merge branch 'master' of https://github.com/lvgl/lvgl <a href="https://github.com/lvgl/lvgl/commit/e796448f">e796448f</a>
- feat(event) pass the scroll aniamtion to LV_EVENT_SCROLL_BEGIN <a href="https://github.com/lvgl/lvgl/commit/ca54ecfe">ca54ecfe</a>
- fix(tabview) fix with left and right tabs <a href="https://github.com/lvgl/lvgl/commit/17c57449">17c57449</a>
- chore(docs) force docs rebuild <a href="https://github.com/lvgl/lvgl/commit/4a0f4139">4a0f4139</a>
- chore(docs) always deploy master to docs/master as well <a href="https://github.com/lvgl/lvgl/commit/6d05692d">6d05692d</a>
- fix(template) udpate lv_objx_template to v8 <a href="https://github.com/lvgl/lvgl/commit/38bb8afc">38bb8afc</a>
- docs(extra) add extra/README.md <a href="https://github.com/lvgl/lvgl/commit/8cd504d5">8cd504d5</a>
- Update CHANGELOG.md <a href="https://github.com/lvgl/lvgl/commit/48fd73d2">48fd73d2</a>
- Update quick-overview.md (#2295) <a href="https://github.com/lvgl/lvgl/commit/5616471c">5616471c</a>
- fix(pxp) change LV_COLOR_TRANSP to LV_COLOR_CHROMA_KEY to v8 compatibility <a href="https://github.com/lvgl/lvgl/commit/81f3068d">81f3068d</a>
- adding micropython examples (#2286) <a href="https://github.com/lvgl/lvgl/commit/c60ed68e">c60ed68e</a>
- docs(color) minor fix <a href="https://github.com/lvgl/lvgl/commit/ac8f4534">ac8f4534</a>
- fix(example) revert test code <a href="https://github.com/lvgl/lvgl/commit/77e2c1ff">77e2c1ff</a>
- fix(draw) with additive blending with 32 bit color depth <a href="https://github.com/lvgl/lvgl/commit/786db2af">786db2af</a>
- docs(color) update colors' docs <a href="https://github.com/lvgl/lvgl/commit/9056b5ee">9056b5ee</a>
- Merge branch 'master' of https://github.com/lvgl/lvgl <a href="https://github.com/lvgl/lvgl/commit/a711a1dd">a711a1dd</a>
- perf(refresh) optimize where to wait for lv_disp_flush_ready with 2 buffers <a href="https://github.com/lvgl/lvgl/commit/d0172f14">d0172f14</a>
- docs(lv_obj_style) update add_style and remove_style function headers (#2287) <a href="https://github.com/lvgl/lvgl/commit/60f7bcbf">60f7bcbf</a>
- fix memory leak of spangroup (#2285) <a href="https://github.com/lvgl/lvgl/commit/33e0926a">33e0926a</a>
- fix make lv_img_cache.h public becasue cache invalidation is public <a href="https://github.com/lvgl/lvgl/commit/38ebcd81">38ebcd81</a>
- Merge branch 'master' of https://github.com/lvgl/lvgl <a href="https://github.com/lvgl/lvgl/commit/2b292495">2b292495</a>
- fix(btnmamatrix) fix focus event handling <a href="https://github.com/lvgl/lvgl/commit/3b58ef14">3b58ef14</a>
- Merge pull request #2280 from lvgl/dependabot/pip/docs/urllib3-1.26.5 <a href="https://github.com/lvgl/lvgl/commit/a2f45b26">a2f45b26</a>
- fix(label) calculating the clip area <a href="https://github.com/lvgl/lvgl/commit/57e211cc">57e211cc</a>
- chore(deps): bump urllib3 from 1.26.4 to 1.26.5 in /docs <a href="https://github.com/lvgl/lvgl/commit/b2f77dfc">b2f77dfc</a>
- fix(docs) add docs about the default group <a href="https://github.com/lvgl/lvgl/commit/29bfe604">29bfe604</a>
## v8.0.0 (01.06.2021)
v8.0 brings many new features like simplified and more powerful scrolling, new layouts inspired by CSS Flexbox and Grid, simplified and improved widgets, more powerful events, hookable drawing, and more.
v8 is a major change and therefore it's not backward compatible with v7.
### Directory structure
- The `lv_` prefix is removed from the folder names
- The `docs` is moved to the `lvgl` repository
- The `examples` are moved to the `lvgl` repository
- Create an `src/extra` folder for complex widgets:
- It makes the core LVGL leaner
- In `extra` we can have a lot and specific widgets
- Good place for contributions
### Widget changes
- `lv_cont` removed, layout features are moved to `lv_obj`
- `lv_page` removed, scroll features are moved to `lv_obj`
- `lv_objmask` the same can be achieved by events
- `lv_meter` added as the unioin of `lv_linemeter` and `lv_gauge`
- `lv_span` new widget mimicing HTML `<span>`
- `lv_animing` new widget for simple slideshow animations
- \+ many minor changes and improvements
### New scrolling
- Support "elastic" scrolling when scrolled in
- Support scroll chaining among any objects types (not only `lv_pages`s)
- Remove `lv_drag`. Similar effect can be achieved by setting the position in `LV_EVENT_PRESSING`
- Add snapping
- Add snap stop to scroll max 1 snap point
### New layouts
- [CSS Grid](https://css-tricks.com/snippets/css/a-guide-to-grid/)-like layout support
- [CSS Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)-like layout support
### Styles
- Optimize and simplify styles
- State is saved in the object instead of the style property
- Object size and position can be set in styles too
### Events
- Allow adding multiple events to an object
- A `user_data` can be attached to the added events
### Driver changes
- `lv_disp_drv_t`, `lv_indev_drv_t`, `lv_fs_drv_t` needs to be `static`
- `...disp_buf...` is renamed to `draw_buf`. See an initialization example [here](https://github.com/lvgl/lv_sim_eclipse_sdl/blob/e164e3591c3e1e3bf3464d19e0dcdc67b2e6a791/main.c#L87-L97).
- No partial update if two screen sized buffers are set
- `disp_drv->full_refresh = 1` makes always the whole display redraw.
- `hor_res` and `ver_res` need to be set in `disp_drv`
- `indev_read_cb` returns `void`. To indicate that there is more that to read set `data->continue_reading = 1` in the `read_cb`
### Other changes
- Remove the copy parameter from create functions
- Simplified File system interface API
- Use a more generic inheritance
- The built-in themes are reworked
- `lv_obj_align` now saved the alignment and realigns the object automatically but can't be used to align to other than the parent
- `lv_obj_align_to` can align to an object but doesn't save the alignment
- `lv_pct(x)` can be used to set the size and position in percentage
- There are many other changes in widgets that are not detailed here. Please refer to the documentation of the widgets.
### New release policy
- We will follow [Release branches with GitLab flow](https://docs.gitlab.com/ee/topics/gitlab_flow.html#release-branches-with-gitlab-flow)
- Minor releases are expected in every 3-4 month
- `master` will always contain the latest changes
### Migrating from v7 to v8
- First and foremost, create a new `lv_conf.h` based on `lv_conf_template.h`.
- To try the new version it's recommended to use a simulator project and see the examples.
- When migrating your project to v8
- Update the drivers are described above
- Update the styles
- Update the events
- Use the new layouts instead of `lv_cont` features
- Use `lv_obj` instead of `lv_page`
- The other parts are mainly minor renames and refactoring. See the functions' documentation for descriptions.
## v7.11.0 (16.03.2021)
### New features
- Add better screen orientation management with software rotation support
- Decide text animation's direction based on base_dir (when using LV_USE_BIDI)
### Bugfixes
- fix(gauge) fix needle invalidation
- fix(bar) correct symmetric handling for vertical sliders
## v7.10.1 (16.02.2021)
### Bugfixes
- fix(draw) overlap outline with background to prevent aliasing artifacts
- fix(indev) clear the indev's `act_obj` in `lv_indev_reset`
- fix(text) fix out of bounds read in `_lv_txt_get_width`
- fix(list) scroll list when button is focused using LV_KEY_NEXT/PREV
- fix(text) improve Arabic contextual analysis by adding hyphen processing and proper handling of lam-alef sequence
- fix(delete) delete animation after the children are deleted
- fix(gauge) consider paddings for needle images
## v7.10.0 (02.02.2021)
### New features
- feat(indev) allow input events to be passed to disabled objects
- feat(spinbox) add inline get_step function for MicroPython support
### Bugfixes
- fix(btnmatrix) fix lv_btnmatrix_get_active_btn_text() when used in a group
## v7.9.1 (19.01.2021)
### Bugfixes
- fix(cpicker) fix division by zero
- fix(dropdown) fix selecting options after the last one
- fix(msgbox) use the animation time provided
- fix(gpu_nxp_pxp) fix incorrect define name
- fix(indev) don't leave edit mode if there is only one object in the group
- fix(draw_rect) fix draw pattern stack-use-after-scope error
## v7.9.0 (05.01.2021)
### New features
- feat(chart) add lv_chart_remove_series and lv_chart_hide_series
- feat(img_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
- fix(win) arabic process the title of the window
- fix(dropdown) arabic process the option in lv_dropdown_add_option
- fix(textarea) buffer overflow in password mode with UTF-8 characters
- fix(textarea) cursor position after hiding character in password mode
- fix(linemeter) draw critical lines with correct color
- fix(lv_conf_internal) be sure Kconfig defines are always uppercase
- fix(kconfig) handle disable sprintf float correctly.
- fix(layout) stop layout after recursion threshold is reached
- fix(gauge) fix redraw with image needle
## v7.8.1 (15.12.2020)
### Bugfixes
- fix(lv_scr_load_anim) fix when multiple screen are loaded at tsame time with delay
- fix(page) fix LV_SCOLLBAR_MODE_DRAG
## v7.8.0 (01.12.2020)
### New features
- make DMA2D non blocking
- add unscii-16 built-in font
- add KConfig
- add lv_refr_get_fps_avg()
### Bugfixes
- fix(btnmatrix) handle arabic texts in button matrices
- fix(indev) disabled object shouldn't absorb clicks but let the parent to be clicked
- fix(arabic) support processing again already processed texts with _lv_txt_ap_proc
- fix(textarea) support Arabic letter connections
- fix(dropdown) support Arabic letter connections
- fix(value_str) support Arabic letter connections in value string property
- fix(indev) in LV_INDEV_TYPE_BUTTON recognize 1 cycle long presses too
- fix(arc) make arc work with encoder
- fix(slider) adjusting the left knob too with encoder
- fix reference to LV_DRAW_BUF_MAX_NUM in lv_mem.c
- fix(polygon draw) join adjacent points if they are on the same coordinate
- fix(linemeter) fix invalidation when setting new value
- fix(table) add missing invalidation when changing cell type
- refactor(roller) rename LV_ROLLER_MODE_INIFINITE -> LV_ROLLER_MODE_INFINITE
## v7.7.2 (17.11.2020)
### Bugfixes
- fix(draw_triangle): fix polygon/triangle drawing when the order of points is counter-clockwise
- fix(btnmatrix): fix setting the same map with modified pointers
- fix(arc) fix and improve arc dragging
- label: Repair calculate back `dot` character logical error which cause infinite loop.
- fix(theme_material): remove the bottom border from tabview header
- fix(imgbtn) guess a the closest available state with valid src
- fix(spinbox) update cursor position in lv_spinbox_set_step
## v7.7.1 (03.11.2020)
### Bugfixes
- Respect btnmatrix's `one_check` in `lv_btnmatrix_set_btn_ctrl`
- Gauge: make the needle images to use the styles from `LV_GAUGE_PART_PART`
- Group: fix in `lv_group_remove_obj` to handle deleting hidden obejcts correctly
## v7.7.0 (20.10.2020)
### New features
- Add PXP GPU support (for NXP MCUs)
- Add VG-Lite GPU support (for NXP MCUs)
- Allow max. 16 cell types for table
- Add `lv_table_set_text_fmt()`
- Use margin on calendar header to set distances and padding to the size of the header
- Add `text_sel_bg` style property
### Bugfixes
- Theme update to support text selection background
- Fix imgbtn state change
- Support RTL in table (draw columns right to left)
- Support RTL in pretty layout (draw columns right to left)
- Skip objects in groups if they are in disabled state
- Fix dropdown selection with RTL basedirection
- Fix rectangle border drawing with large width
- Fix `lv_win_clean()`
## v7.6.1 (06.10.2020)
### Bugfixes
- Fix BIDI support in dropdown list
- Fix copying base dir in `lv_obj_create`
- Handle sub pixel rendering in font loader
- Fix transitions with style caching
- Fix click focus
- Fix imgbtn image switching with empty style
- Material theme: do not set the text font to allow easy global font change
## v7.6.0 (22.09.2020)
### New features
- Check whether any style property has changed on a state change to decide if any redraw is required
### Bugfixes
- Fix selection of options with non-ASCII letters in dropdown list
- Fix font loader to support LV_FONT_FMT_TXT_LARGE
## v7.5.0 (15.09.2020)
### New features
- Add `clean_dcache_cb` and `lv_disp_clean_dcache` to enable users to use their own cache management function
- Add `gpu_wait_cb` to wait until the GPU is working. It allows to run CPU a wait only when the rendered data is needed.
- Add 10px and 8ox built in fonts
### Bugfixes
- Fix unexpected DEFOCUS on lv_page when clicking to bg after the scrollable
- Fix `lv_obj_del` and `lv_obj_clean` if the children list changed during deletion.
- Adjust button matrix button width to include padding when spanning multiple units.
- Add rounding to btnmatrix line height calculation
- Add `decmopr_buf` to GC roots
- Fix divisioin by zero in draw_pattern (lv_draw_rect.c) if the image or letter is not found
- Fix drawing images with 1 px height or width
## v7.4.0 (01.09.2020)
The main new features of v7.4 are run-time font loading, style caching and arc knob with value setting by click.
### New features
- Add `lv_font_load()` function - Loads a `lv_font_t` object from a binary font file
- Add `lv_font_free()` function - Frees the memory allocated by the `lv_font_load()` function
- Add style caching to reduce access time of properties with default value
- arc: add set value by click feature
- arc: add `LV_ARC_PART_KNOB` similarly to slider
- send gestures event if the object was dragged. User can check dragging with `lv_indev_is_dragging(lv_indev_act())` in the event function.
### Bugfixes
- Fix color bleeding on border drawing
- Fix using 'LV_SCROLLBAR_UNHIDE' after 'LV_SCROLLBAR_ON'
- Fix croping of last column/row if an image is zoomed
- Fix zooming and rotateing mosaic images
- Fix deleting tabview with LEFT/RIGHT tab position
- Fix btnmatrix to not send event when CLICK_TRIG = true and the cursor slid from a pressed button
- Fix roller width if selected text is larger than the normal
## v7.3.1 (18.08.2020)
### Bugfixes
- Fix drawing value string twice
- Rename `lv_chart_clear_serie` to `lv_chart_clear_series` and `lv_obj_align_origo` to `lv_obj_align_mid`
- Add linemeter's mirror feature again
- Fix text decor (udnerline strikethrough) with older versions of font converter
- Fix setting local style property multiple times
- Add missing background drawing and radius handling to image button
- Allow adding extra label to list buttons
- Fix crash if `lv_table_set_col_cnt` is called before `lv_table_set_row_cnt` for the first time
- Fix overflow in large image transformations
- Limit extra button click area of button matrix's buttons. With large paddings it was counter intuitive. (Gaps are mapped to button when clicked).
- Fix `lv_btnmatrix_set_one_check` not forcing exactly one button to be checked
- Fix color picker invalidation in rectangle mode
- Init disabled days to gray color in calendar
## v7.3.0 (04.08.2020)
### New features
- Add `lv_task_get_next`
- Add `lv_event_send_refresh`, `lv_event_send_refresh_recursive` to easily send `LV_EVENT_REFRESH` to object
- Add `lv_tabview_set_tab_name()` function - used to change a tab's name
- Add `LV_THEME_MATERIAL_FLAG_NO_TRANSITION` and `LV_THEME_MATERIAL_FLAG_NO_FOCUS` flags
- Reduce code size by adding: `LV_USE_FONT_COMPRESSED` and `LV_FONT_USE_SUBPX` and applying some optimization
- Add `LV_MEMCPY_MEMSET_STD` to use standard `memcpy` and `memset`
### Bugfixes
- Do not print warning for missing glyph if its height OR width is zero.
- Prevent duplicated sending of `LV_EVENT_INSERT` from text area
- Tidy outer edges of cpicker widget.
- Remove duplicated lines from `lv_tabview_add_tab`
- btnmatrix: hadle combined states of buttons (e.g. chacked + disabled)
- textarea: fix typo in lv_textarea_set_sscrollbar_mode
- gauge: fix image needle drawing
- fix using freed memory in _lv_style_list_remove_style
## v7.2.0 (21.07.2020)
### New features
- Add screen transitions with `lv_scr_load_anim()`
- Add display background color, wallpaper and opacity. Shown when the screen is transparent. Can be used with `lv_disp_set_bg_opa/color/image()`.
- Add `LV_CALENDAR_WEEK_STARTS_MONDAY`
- Add `lv_chart_set_x_start_point()` function - Set the index of the x-axis start point in the data array
- Add `lv_chart_set_ext_array()` function - Set an external array of data points to use for the chart
- Add `lv_chart_set_point_id()` function - Set an individual point value in the chart series directly based on index
- Add `lv_chart_get_x_start_point()` function - Get the current index of the x-axis start point in the data array
- Add `lv_chart_get_point_id()` function - Get an individual point value in the chart series directly based on index
- Add `ext_buf_assigned` bit field to `lv_chart_series_t` structure - it's true if external buffer is assigned to series
- Add `lv_chart_set_series_axis()` to assign series to primary or secondary axis
- Add `lv_chart_set_y_range()` to allow setting range of secondary y axis (based on `lv_chart_set_range` but extended with an axis parameter)
- Allow setting different font for the selected text in `lv_roller`
- Add `theme->apply_cb` to replace `theme->apply_xcb` to make it compatible with the MicroPython binding
- Add `lv_theme_set_base()` to allow easy extension of built-in (or any) themes
- Add `lv_obj_align_x()` and `lv_obj_align_y()` functions
- Add `lv_obj_align_origo_x()` and `lv_obj_align_origo_y()` functions
### Bugfixes
- `tileview` fix navigation when not screen sized
- Use 14px font by default to for better compatibility with smaller displays
- `linemeter` fix conversation of current value to "level"
- Fix drawing on right border
- Set the cursor image non clickable by default
- Improve mono theme when used with keyboard or encoder
## v7.1.0 (07.07.2020)
### New features
- Add `focus_parent` attribute to `lv_obj`
- Allow using buttons in encoder input device
- Add lv_btnmatrix_set/get_align capability
- DMA2D: Remove dependency on ST CubeMX HAL
- Added `max_used` propriety to `lv_mem_monitor_t` struct
- In `lv_init` test if the strings are UTF-8 encoded.
- Add `user_data` to themes
- Add LV_BIG_ENDIAN_SYSTEM flag to lv_conf.h in order to fix displaying images on big endian systems.
- Add inline function lv_checkbox_get_state(const lv_obj_t * cb) to extend the checkbox functionality.
- Add inline function lv_checkbox_set_state(const lv_obj_t * cb, lv_btn_state_t state ) to extend the checkbox functionality.
### Bugfixes
- `lv_img` fix invalidation area when angle or zoom changes
- Update the style handling to support Big endian MCUs
- Change some methods to support big endian hardware.
- remove use of c++ keyword 'new' in parameter of function lv_theme_set_base().
- Add LV_BIG_ENDIAN_SYSTEM flag to lv_conf.h in order to fix displaying images on big endian systems.
- Fix inserting chars in text area in big endian hardware.
## v7.0.2 (16.06.2020)
### Bugfixes
- `lv_textarea` fix wrong cursor position when clicked after the last character
- Change all text related indices from 16-bit to 32-bit integers throughout whole library. #1545
- Fix gestures
- Do not call `set_px_cb` for transparent pixel
- Fix list button focus in material theme
- Fix crash when the a text area is cleared with the backspace of a keyboard
- Add version number to `lv_conf_template.h`
- Add log in true double buffering mode with `set_px_cb`
- `lv_dropdown`: fix missing `LV_EVENT_VALUE_CHANGED` event when used with encoder
- `lv_tileview`: fix if not the {0;0} tile is created first
- `lv_debug`: restructure to allow asserting in from `lv_misc` too
- add assert if `_lv_mem_buf_get()` fails
- `lv_textarea`: fix character delete in password mode
- Update `LV_OPA_MIN` and `LV_OPA_MAX` to widen the opacity processed range
- `lv_btnm` fix sending events for hidden buttons
- `lv_gaguge` make `lv_gauge_set_angle_offset` offset the labels and needles too
- Fix typo in the API `scrllable` -> `scrollable`
- `tabview` by default allow auto expanding the page only to right and bottom (#1573)
- fix crash when drawing gradient to the same color
- chart: fix memory leak
- `img`: improve hit test for transformed images
## v7.0.1 (01.06.2020)
### Bugfixes
- Make the Microptyhon working by adding the required variables as GC_ROOT
- Prefix some internal API functions with `_` to reduce the API of LVGL
- Fix built-in SimSun CJK font
- Fix UTF-8 encoding when `LV_USE_ARABIC_PERSIAN_CHARS` is enabled
- Fix DMA2D usage when 32 bit images directly blended
- Fix lv_roller in infinite mode when used with encoder
- Add `lv_theme_get_color_secondary()`
- Add `LV_COLOR_MIX_ROUND_OFS` to adjust color mixing to make it compatible with the GPU
- Improve DMA2D blending
- Remove memcpy from `lv_ll` (caused issues with some optimization settings)
- `lv_chart` fix X tick drawing
- Fix vertical dashed line drawing
- Some additional minor fixes and formattings
## v7.0.0 (18.05.2020)
### Documentation
The docs for v7 is available at https://docs.littlevgl.com/v7/en/html/index.html
### Legal changes
The name of the project is changed to LVGL and the new website is on https://lvgl.io
LVGL remains free under the same conditions (MIT license) and a company is created to manage LVGL and offer services.
### New drawing system
Complete rework of LVGL's draw engine to use "masks" for more advanced and higher quality graphical effects.
A possible use-case of this system is to remove the overflowing content from the rounded edges.
It also allows drawing perfectly anti-aliased circles, lines, and arcs.
Internally, the drawings happen by defining masks (such as rounded rectangle, line, angle).
When something is drawn the currently active masks can make some pixels transparent.
For example, rectangle borders are drawn by using 2 rectangle masks: one mask removes the inner part and another the outer part.
The API in this regard remained the same but some new functions were added:
- `lv_img_set_zoom`: set image object's zoom factor
- `lv_img_set_angle`: set image object's angle without using canvas
- `lv_img_set_pivot`: set the pivot point of rotation
The new drawing engine brought new drawing features too. They are highlighted in the "style" section.
### New style system
The old style system is replaced with a new more flexible and lightweighted one.
It uses an approach similar to CSS: support cascading styles, inheriting properties and local style properties per object.
As part of these updates, a lot of objects were reworked and the APIs have been changed.
- more shadows options: *offset* and *spread*
- gradient stop position to shift the gradient area and horizontal gradient
- `LV_BLEND_MODE_NORMAL/ADDITIVE/SUBTRACTIVE` blending modes
- *clip corner*: crop the content on the rounded corners
- *text underline* and *strikethrough*
- dashed vertical and horizontal lines (*dash gap*, *dash_width*)
- *outline*: a border-like part drawn out of the background. Can have spacing to the background.
- *pattern*: display and image in the middle of the background or repeat it
- *value* display a text which is stored in the style. It can be used e.g. as a lighweighted text on buttons too.
- *margin*: similar to *padding* but used to keep space outside of the object
Read the [Style](https://docs.littlevgl.com/v7/en/html/overview/style.html) section of the documentation to learn how the new styles system works.
### GPU integration
To better utilize GPUs, from this version GPU usage can be integrated into LVGL. In `lv_conf.h` any supported GPUs can be enabled with a single configuration option.
Right now, only ST's DMA2D (Chrom-ART) is integrated. More will in the upcoming releases.
### Renames
The following object types are renamed:
- sw -> switch
- ta -> textarea
- cb -> checkbox
- lmeter -> linemeter
- mbox -> msgbox
- ddlist -> dropdown
- btnm -> btnmatrix
- kb -> keyboard
- preload -> spinner
- lv_objx folder -> lv_widgets
- LV_FIT_FILL -> LV_FIT_PARENT
- LV_FIT_FLOOD -> LV_FLOOD_MAX
- LV_LAYOUT_COL_L/M/R -> LV_LAYOUT_COLUMN_LEFT/MID/RIGHT
- LV_LAYOUT_ROW_T/M/B -> LV_LAYOUT_ROW_TOP/MID/BOTTOM
### Reworked and improved object
- `dropdown`: Completely reworked. Now creates a separate list when opened and can be dropped to down/up/left/right.
- `label`: `body_draw` is removed, instead, if its style has a visible background/border/shadow etc it will be drawn. Padding really makes the object larger (not just virtually as before)
- `arc`: can draw bacground too.
- `btn`: doesn't store styles for each state because it's done naturally in the new style system.
- `calendar`: highlight the pressed datum. The used styles are changed: use `LV_CALENDAR_PART_DATE` normal for normal dates, checked for highlighted, focused for today, pressed for the being pressed. (checked+pressed, focused+pressed also work)
- `chart`: only has `LINE` and `COLUMN` types because with new styles all the others can be described. LV_CHART_PART_SERIES sets the style of the series. bg_opa > 0 draws an area in LINE mode. `LV_CHART_PART_SERIES_BG` also added to set a different style for the series area. Padding in `LV_CHART_PART_BG` makes the series area smaller, and it ensures space for axis labels/numbers.
- `linemeter`, `gauge`: can have background if the related style properties are set. Padding makes the scale/lines smaller. scale_border_width and scale_end_border_width allow to draw an arc on the outer part of the scale lines.
- `gauge`: `lv_gauge_set_needle_img` allows use image as needle
- `canvas`: allow drawing to true color alpha and alpha only canvas, add `lv_canvas_blur_hor/ver` and rename `lv_canvas_rotate` to `lv_canvas_transform`
- `textarea`: If available in the font use bullet (`U+2022`) character in text area password
### New object types
- `lv_objmask`: masks can be added to it. The children will be masked accordingly.
### Others
- Change the built-in fonts to [Montserrat](https://fonts.google.com/specimen/Montserrat) and add built-in fonts from 12 px to 48 px for every 2nd size.
- Add example CJK and Arabic/Persian/Hebrew built-in font
- Add ° and "bullet" to the built-in fonts
- Add Arabic/Persian script support: change the character according to its position in the text.
- Add `playback_time` to animations.
- Add `repeat_count` to animations instead of the current "repeat forever".
- Replace `LV_LAYOUT_PRETTY` with `LV_LAYOUT_PRETTY_TOP/MID/BOTTOM`
### Demos
- [lv_examples](https://github.com/littlevgl/lv_examples) was reworked and new examples and demos were added
### New release policy
- Maintain this Changelog for every release
- Save old major version in new branches. E.g. `release/v6`
- Merge new features and fixes directly into `master` and release a patch or minor releases every 2 weeks.
### Migrating from v6 to v7
- First and foremost, create a new `lv_conf.h` based on `lv_conf_template.h`.
- To try the new version it suggested using a simulator project and see the examples.
- If you have a running project, the most difficult part of the migration is updating to the new style system. Unfortunately, there is no better way than manually updating to the new format.
- The other parts are mainly minor renames and refactoring as described above.

View File

@@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [atom@github.com](mailto:atom@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team using the [contact form](https://lvgl.io/about). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

View File

@@ -1,31 +1,33 @@
# Coding style
## File format
Use [lv_misc/lv_templ.c](https://github.com/littlevgl/lvgl/blob/master/src/lv_misc/lv_templ.c) and [lv_misc/lv_templ.h](https://github.com/littlevgl/lvgl/blob/master/src/lv_misc/lv_templ.h)
Use [misc/lv_templ.c](https://github.com/lvgl/lvgl/blob/master/src/misc/lv_templ.c) and [misc/lv_templ.h](https://github.com/lvgl/lvgl/blob/master/src/misc/lv_templ.h)
## Naming conventions
* Words are separated by '_'
* In variable and function names use only lower case letters (e.g. *height_tmp*)
* In enums and defines use only upper case letters (e.g. *e.g. MAX_LINE_NUM*)
* Global names (API):
* starts with *lv*
* start 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:
* Use abbreviations on public names only if they become longer than 32 characters
* Use only very straightforward (e.g. pos: position) or well-established (e.g. pr: press) abbreviations
* 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)
## Coding guide
* Functions:
* Try to write function shorter than is 50 lines
* Always shorter than 100 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)
* Declare variables when needed (not all at function start)
* Declare variables where needed (not all at function start)
* Use the smallest required scope
* Variables in a file (outside functions) are always *static*
* Do not use global variables (use functions to set/get static variables)
@@ -39,17 +41,17 @@ 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`
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:
`x++; /*Because of closing '\0' of the string */`
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*/`
@@ -64,31 +66,24 @@ Here is example to show bracket placing and using of white spaces:
* @param text '\0' terminated character string. NULL to refresh with the current text.
*/
void lv_label_set_text(lv_obj_t * label, const char * text)
{ /* Main brackets of functions in new line*/
{ /*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 */
/*Comment before a section*/
if(text == ext->txt || text == NULL) { /*Bracket of statements start inline*/
lv_label_refr_text(label);
return;
return;
}
...
}
```
Use 4 spaces indentation instead of tab.
You can use **astyle** to format the code. The required config flies are: `docs/astyle_c` and `docs/astyle_h`.
To format the source files:
`$ find . -type f -name "*.c" | xargs astyle --options=docs/astyle_c`
To format the header files:
`$ find . -type f -name "*.h" | xargs astyle --options=docs/astyle_h`
Append `-n` to the end to skip creation of backup file OR use `$ find . -type f -name "*.bak" -delete` (for source file's backups) and `find . -type f -name "*.orig" -delete` (for header file's backups)
You can use **astyle** to format the code. Run `code-formatter.sh` from the `scrips` folder.

View File

@@ -1,111 +1,236 @@
# Contributing to Littlev Graphics Library
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/CONTRIBUTING.md
```
**Do you have some free time to spend with programming?
Are you working on an Embedded GUI project with LittlevGL?
See how can you help to improve the graphics library!**
# Contributing
There are many ways to join the community. If you have some time to work with us I'm sure you will find something that fits you! You can:
- help others in the [Forum](https://forum.littlevgl.com/)
- improve and/or translate the documentation
- write a blog post about your experiences
- report and/or fix bugs
- suggest and/or implement new features
## Introduction
But first, start with the most Frequently Asked Questions.
Join LVGL's community and leave your footprint in the library!
# FAQ about contributing
There are a lot of ways to contribute to LVGL even if you are are new to the library or even new to programming.
## Where can I write my question and remarks?
It might be scary to make the first step but you have nothing to be afraid of.
A friendly and helpful community is waiting for you. Get to know like-minded people and make something great together.
We use the [Forum](https://forum.littlevgl.com/) to ask and answer questions and [GitHub's issue tracker](https://github.com/littlevgl/lvgl/issues) for development-related discussion.
So let's find which contribution option fits you the best and help you join the development of LVGL!
We have some simple rules:
- Be kind and friendly.
- Speak about one thing in one issue/topic.
Before getting started here are some guidelines to make contribution smoother:
- Be kind and friendly.
- Be sure to read the relevant part of the documentation before posting a question.
- Ask questions in the [Forum](https://forum.lvgl.io/) and use [GitHub](https://github.com/lvgl/) for development-related discussions.
- Always fill out the post or issue templates in the Forum or GitHub (or at least provide equivalent information). It makes understanding your contribution or issue easier and you will get a useful response faster.
- If possible send an absolute minimal but buildable code example in order to reproduce the issue. Be sure it contains all the required variable declarations, constants, and assets (images, fonts).
- Use [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) to format your posts. You can learn it in 10 minutes.
- Speak about one thing in one issue or topic. It makes your post easier to find later for someone with the same question.
- Give feedback and close the issue or mark the topic as solved if your question is answered.
- Tell what you experience or expect. _"The button is not working"_ is not enough info to get help.
- If possible send an absolute minimal code example in order to reproduce the issue
- Use [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) to format your post.
- For non-trivial fixes and features, it's better to open an issue first to discuss the details instead of sending a pull request directly.
- Please read and follow the <a href="https://github.com/lvgl/lvgl/blob/master/docs/CODING_STYLE.md">Coding style</a> guide.
## How can I send fixes and improvements?
## Pull request
Merging new code happens via Pull Requests. If you are still not familiar with the Pull Requests (PR for short) here is a quick guide:
1. **Fork** the [lvgl repository](https://github.com/littlevgl/lvgl). To do this click the "Fork" button in the top right corner. It will "copy" the `lvgl` repository to your GitHub account (`https://github.com/your_name?tab=repositories`)
2. **Clone** the forked repository and add your changes
3. **Create a PR** on GitHub from the page of your `lvgl` repository (`https://github.com/your_name/lvgl`) by hitting the "New pull request" button
4. **Set the base branch**. It means where you want to merge your update. Fixes go to `master`, new features to the actual `dev-x.y` branch.
5. **Describe** what is in the update. An example code is welcome if applicable.
Merging new code into the lvgl, documentation, blog, examples, and other repositories happen via *Pull requests* (PR for short).
A PR is a notification like "Hey, I made some updates to your project. Here are the changes, you can add them if you want."
To do this you need a copy (called fork) of the original project under your account, make some changes there, and notify the original repository about your updates.
You can see what it looks like on GitHub for LVGL here: [https://github.com/lvgl/lvgl/pulls](https://github.com/lvgl/lvgl/pulls).
Some advice:
- If you are not sure about your fix or feature it's better to open an issue first and discuss the details there.
- Maybe your fix or update won't be perfect at first. Don't be afraid, just improve it and push the new commits. The PR will be updated accordingly.
- If your update needs some extra work it's okay to say: _"I'm busy now and I will improve it soon"_ or _"Sorry, I don't have time to improve it, I hope it helps in this form too"_.
So it's better to say don't have time to continue than saying nothing.
- Please read and follow this [guide about the coding style](https://github.com/littlevgl/lvgl/blob/master/docs/CODING_STYLE.md)
To add your changes you can edit files online on GitHub and send a new Pull request from there (recommended for small changes) or
add the updates in your favorite editor/IDE and use git to publish the changes (recommended for more complex updates).
### From GitHub
1. Navigate to the file you want to edit.
2. Click the Edit button in the top right-hand corner.
3. Add your changes to the file.
4. Add a commit message on the bottom of the page.
5. Click the *Propose changes* button.
### From command line
The instructions describe the main `lvgl` repository but it works the same way for the other repositories.
1. Fork the [lvgl repository](https://github.com/lvgl/lvgl). To do this click the "Fork" button in the top right corner.
It will "copy" the `lvgl` repository to your GitHub account (`https://github.com/<YOUR_NAME>?tab=repositories`)
2. Clone your forked repository.
3. Add your changes. You can create a *feature branch* from *master* for the updates: `git checkout -b the-new-feature`
4. Commit and push your changes to the forked `lvgl` repository.
5. Create a PR on GitHub from the page of your `lvgl` repository (`https://github.com/<YOUR_NAME>/lvgl`) by clicking the *"New pull request"* button. Don't forget to select the branch where you added your changes.
7. Set the base branch. It means where you want to merge your update. In the `lvgl` repo fixes go to `master`, new features to `dev` branch.
8. Describe what is in the update. An example code is welcome if applicable.
9. If you need to make more changes, just update your forked `lvgl` repo with new commits. They will automatically appear in the PR.
## Developer Certification of Origin (DCO)
### Overview
To ensure all licensing criteria are met for every repository of the LVGL project, we apply a process called DCO (Developer's Certificate of Origin).
The text of DCO can be read here: [https://developercertificate.org/](https://developercertificate.org/).
By contributing to any repositories of the LVGL project you agree that your contribution complies with the DCO.
If your contribution fulfills the requirements of the DCO no further action is needed. If you are unsure feel free to ask us in a comment.
### Accepted licenses and copyright notices
To make the DCO easier to digest, here are some practical guides about specific cases:
#### Your own work
The simplest case is when the contribution is solely your own work.
In this case you can just send a Pull Request without worrying about any licensing issues.
#### Use code from online source
If the code you would like to add is based on an article, post or comment on a website (e.g. StackOverflow) the license and/or rules of that site should be followed.
For example in case of StackOwerflow a notice like this can be used:
```
/* The original version of this code-snippet was published on StackOverflow.
* Post: http://stackoverflow.com/questions/12345
* Author: http://stackoverflow.com/users/12345/username
* The following parts of the snippet were changed:
* - Check this or that
* - Optimize performance here and there
*/
... code snippet here ...
```
#### Use MIT licensed code
As LVGL is MIT licensed, other MIT licensed code can be integrated without issues.
The MIT license requires a copyright notice be added to the derived work. Any derivative work based on MIT licensed code must copy the original work's license file or text.
#### Use GPL licensed code
The GPL license is not compatible with the MIT license. Therefore, LVGL can not accept GPL licensed code.
## Ways to contribute
Even if you're just getting started with LVGL there are plenty of ways to get your feet wet.
Most of these options don't even require knowing a single line of LVGL code.
Below we have collected some opportunities about the ways you can contribute to LVGL.
### Give LVGL a Star
Show that you like LVGL by giving it star on GitHub!
<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
<!-- Place this tag where you want the button to render. -->
<a class="github-button" href="https://github.com/lvgl/lvgl" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star lvgl/lvgl on GitHub">Star</a>
This simple click makes LVGL more visible on GitHub and makes it more attractive to other people.
So with this, you already helped a lot!
### Tell what you have achieved
Have you already started using LVGL in a [Simulator](/get-started/pc-simulator), a development board, or on your custom hardware?
Was it easy or were there some obstacles? Are you happy with the result?
Showing your project to others is a win-win situation because it increases your and LVGL's reputation at the same time.
You can post about your project on Twitter, Facebook, LinkedIn, create a YouTube video, and so on.
Only one thing: On social media don't forget to add a link to `https://lvgl.io` or `https://github.com/lvgl` and use the hashtag `#lvgl`. Thank you! :)
You can also open a new topic in the [My projects](https://forum.lvgl.io/c/my-projects/10) category of the Forum.
The [LVGL Blog](https://blog.lvgl.io) welcomes posts from anyone.
It's a good place to talk about a project you created with LVGL, write a tutorial, or share some nice tricks.
The latest blog posts are shown on the [homepage of LVGL](https://lvgl.io) to make your work more visible.
The blog is hosted on GitHub. If you add a post GitHub automatically turns it into a website.
See the [README](https://github.com/lvgl/blog) of the blog repo to see how to add your post.
Any of these help to spread the word and familiarize new developers with LVGL.
If you don't want to speak about your project publicly, feel free to use [Contact form](https://lvgl.io/#contact) on lvgl.io to private message to us.
### Write examples
As you learn LVGL you will probably play with the features of widgets. Why not publish your experiments?
Each widgets' documentation contains examples. For instance, here are the examples of the [Drop-down list](/widgets/core/dropdown#examples) widget.
The examples are directly loaded from the [lvgl/examples](https://github.com/lvgl/lvgl/tree/master/examples) folder.
So all you need to do is send a [Pull request](#pull-request) to the [lvgl](https://github.com/lvgl/lvgl) repository and follow some conventions:
- Name the examples like `lv_example_<widget_name>_<index>`.
- Make the example as short and simple as possible.
- Add comments to explain what the example does.
- Use 320x240 resolution.
- Update `index.rst` in the example's folder with your new example. To see how other examples are added, look in the [lvgl/examples/widgets](https://github.com/lvgl/lvgl/tree/master/examples/widgets) folder.
### Improve the docs
As you read the documentation you might see some typos or unclear sentences. All the documentation is located in the [lvgl/docs](https://github.com/lvgl/lvgl/tree/master/docs) folder.
For typos and straightforward fixes, you can simply edit the file on GitHub.
Note that the documentation is also formatted in [Markdown](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).
### Report bugs
As you use LVGL you might find bugs. Before reporting them be sure to check the relevant parts of the documentation.
If it really seems like a bug feel free to open an [issue on GitHub](https://github.com/lvgl/lvgl/issues).
When filing the issue be sure to fill out the template. It helps find the root of the problem while avoiding extensive questions and exchanges with other developers.
### Send fixes
The beauty of open-source software is you can easily dig in to it to understand how it works. You can also fix or adjust it as you wish.
If you found and fixed a bug don't hesitate to send a [Pull request](#pull-request) with the fix.
In your Pull request please also add a line to [`CHANGELOG.md`](https://github.com/lvgl/lvgl/blob/master/CHANGELOG.md).
### Join the conversations in the Forum
It feels great to know you are not alone if something is not working. It's even better to help others when they struggle with something.
While you were learning LVGL you might have had questions and used the Forum to get answers. As a result, you probably have more knowledge about how LVGL works.
One of the best ways to give back is to use the Forum and answer the questions of newcomers - like you were once.
Just read the titles and if you are familiar with the topic don't hesitate to share your thoughts and suggestions.
Participating in the discussions is one of the best ways to become part of the project and get to know like-minded people!
### Add features
We collect the planned features in GitHub on the [Roadmap](/ROADMAP) page. If you are interested in any of them feel free to share your opinion and/or participate in the the implementation.
Other features which are (still) not on the road map are listed in the [Feature request](https://forum.lvgl.io/c/feature-request/9) category of the Forum.
If you have a feature idea for LVGL please use the Forum to share it!
Make sure to check that there isn't an existing post; if there is, you should comment on it to show that there is increased interest in an existing request.
When adding a new features the followings also needs to be updated:
- Add a line to [CHANGELOG.md](https://github.com/lvgl/lvgl/blob/master/CHANGELOG.md).
- Update the documentation.
- Add an example if applicable. See this [guide](#write-examples).
### Become a maintainer
If you want to become part of the core development team, you can become a maintainer of a repository.
By becoming a maintainer:
- You get write access to that repo:
- Add code directly without sending a pull request
- Accept pull requests
- Close/reopen/edit issues
- Your input has higher impact when we are making decisions
You can become a maintainer by invitation, however the following conditions need to met
1. Have > 50 replies in the Forum. You can look at your stats [here](https://forum.lvgl.io/u?period=all)
2. Send > 5 non-trivial pull requests to the repo where you would like to be a maintainer
## Where is the documentation?
If you are interested, just send a message (e.g. from the Forum) to the current maintainers of the repository. They will check if the prerequisites are met.
Note that meeting the prerequisites is not a guarantee of acceptance, i.e. if the conditions are met you won't automatically become a maintainer.
It's up to the current maintainers to make the decision.
You can read the documentation here: <https://docs.littlevgl.com/>
You can edit the documentation here: <https://github.com/littlevgl/doc>
### Move your project repository under LVGL organization
Besides the core `lvgl` repository there are other repos for ports to development boards, IDEs or other environment.
If you ported LVGL to a new platform we can host it under the LVGL organization among the other repos.
## Where is the blog?
This way your project will become part of the whole LVGL project and can get more visibility.
If you are interested in this opportunity just open an [issue in lvgl repo](https://github.com/lvgl/lvgl/issues) and tell what you have!
You can read the blog here: <https://blog.littlevgl.com/>
You can edit the blog here: <https://github.com/littlevgl/blog>
If we agree that your port fit well into the LVGL organization, we will open a repository for your project where you will have admin rights.
# So how and where can you contribute?
## Help others in the Forum
It's a great way to contribute to the library if you already use it.
Just go to [https://forum.littlevgl.com/](https://forum.littlevgl.com/) a register (Google and GitHub login also works).
Log in, read the titles and if you are already familiar with a topic, don't be shy, and write your suggestion.
## Improving and/or translating the documentation
If you would like to contribute to LittlevGL the documentation is the best place to start.
### Fix typos, add missing parts
If you find a typo, an obscure sentence or something which is not explained well enough in the [English documentation](https://docs.littlevgl.com/en/html/index.html)
click the *"Edit on GitHub"* button in the top right corner and fix the issue by sending a Pull Request.
### Translate the documentation
If you have time and interest you can translate the documentation to your native language or any language you speak.
You can join others to work on an already existing language or you can start a new one.
To translate the documentation we use [Zanata](https://zanata.org) which is an online translation platform.
You will find the LittlevGL project here: [LittlevGL on Zanata](https://translate.zanata.org/iteration/view/littlevgl-docs/v6.0-doc1?dswid=3430)
To get started you need to:
- register at [Zanata](https://zanata.org) which is an online translation platform.
- comment to [this post](https://forum.littlevgl.com/t/translate-the-documentation/238?u=kisvegabor)
- tell your username at *Zanata* and your selected language(s) to get permission the edit the translations
Note that a translation will be added to the documentation only if at least the [Porting section](https://docs.littlevgl.com/en/html/porting/index.html) is translated.
## Writing a blog post about your experiences
Have you ported LittlevGL to a new platform? Have you created a fancy GUI? Do you know a great trick?
You can share your knowledge on LittlevGL's blog! It's super easy to add your own post:
- Fork and clone the [blog repository](https://github.com/littlevgl/blog)
- Add your post in Markdown to the `_posts` folder.
- Store the images and other resources in a dedicated folder in `assets`
- Create a Pull Request
The blog uses [Jekyll](https://jekyllrb.com/) to convert the `.md` files to a webpage. You can easily [run Jekyll offline](https://jekyllrb.com/docs/) to check your post before creating the Pull request
## Reporting and/or fixing bugs
For simple bugfixes (typos, missing error handling, fixing a warning) is fine to send a Pull request directly. However, for more complex bugs it's better to open an issue first. In the issue, you should describe how to reproduce the bug and even add the minimal code snippet.
## Suggesting and/or implementing new features
If you have a good idea don't hesitate to share with us. It's even better if you have time to deal with its implementation. Don't be afraid if you still don't know LittlevGL well enough. We will help you to get started.
During the implementation don't forget the [Code style guide](https://github.com/littlevgl/lvgl/blob/master/docs/CODING_STYLE.md).
# Summary
I hope you have taken a liking to contribute to LittlevGL. A helpful and friendly community is waiting for you! :)
To make this concept sustainable there a few rules to follow:
- You need to add a README to your repo.
- We expect to maintain the repo to some extent:
- Follow at least the major versions of LVGL
- Respond to the issues (in a reasonable time)
- If there is no activity in a repo for 1 year it will be archived

63
docs/ROADMAP.md Normal file
View File

@@ -0,0 +1,63 @@
# Roadmap
This is a summary for planned new features and a collection of ideas.
This list indicates only the current intention and it can be changed.
## v8.X
- `lv_snapshot`: buffer a widget and all of its children into an image. he source widget can be on a different screen too. The result image can be transformed.
- Add radio button support
- 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
- 9-patch support for `lv_imgbtn`.
- Handle stride. See [#1858](https://github.com/lvgl/lvgl/issues/1858)
- Optimize line and circle drawing and masking
## Ideas
- Reconsider color format management for run time color format setting, and custom color format usage. (Also [RGB888](https://github.com/lvgl/lvgl/issues/1722))
- Make gradients more versatile
- Make image transformations more versatile
- Switch to RGBA colors in styles
- Consider direct binary font format support
- Simplify `group`s. Discussion is [here](https://forum.lvgl.io/t/lv-group-tabindex/2927/3).
- 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)
- Optimize font decompression
- Need coverage report for tests
- 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)
---
## v8
- Create an `extra` folder for complex widgets
- It makes the core LVGL leaner
- In `extra` we can have a lot and specific widgets
- Good place for contributions
- New scrolling:
- See [feat/new-scroll](https://github.com/lvgl/lvgl/tree/feat/new-scroll) branch and [#1614](https://github.com/lvgl/lvgl/issues/1614)) issue.
- Remove `lv_page` and support scrolling on `lv_obj`
- Support "elastic" scrolling when scrolled in
- Support scroll chaining among any objects types (not only `lv_pages`s)
- Remove `lv_drag`. Similar effect can be achieved by setting the position in `LV_EVENT_PRESSING`
- Add snapping
- Add snap stop to scroll max 1 snap point
- Already working
- New layouts:
- See [#1615](https://github.com/lvgl/lvgl/issues/1615) issue
- [CSS Grid](https://css-tricks.com/snippets/css/a-guide-to-grid/)-like layout support
- [CSS Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/)-like layout support
- Remove `lv_cont` and support layouts on `lv_obj`
- 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 parameter from 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)
- Allow adding multiple events to an obejct

50
docs/_ext/lv_example.py Normal file
View File

@@ -0,0 +1,50 @@
import os
from docutils import nodes
from docutils.parsers.rst import Directive
from docutils.parsers.rst.directives.images import Image
from sphinx.directives.code import LiteralInclude
class LvExample(Directive):
required_arguments = 3
def run(self):
example_path = self.arguments[0]
example_name = os.path.split(example_path)[1]
language = self.arguments[2]
node_list = []
env = self.state.document.settings.env
if self.arguments[2] == 'py':
paragraph_node = nodes.raw(text=f"Click to try in the simulator!<br/><a target='_blank' href='https://sim.lvgl.io/v7/micropython/ports/javascript/bundle_out/index.html?script_startup=https://raw.githubusercontent.com/lvgl/lv_examples/{env.config.example_commit_hash}/src/header.py&script=https://raw.githubusercontent.com/lvgl/lv_examples/{env.config.built_example_commit_hash}/{example_name}/{example_name}.py'><img alt='{example_name}' src='https://raw.githubusercontent.com/lvgl/lv_examples/{env.config.built_example_commit_hash}/{example_name}/{example_name}.png'/></a>", format='html')
else:
paragraph_node = nodes.raw(text=f"<iframe class='lv-example' src='/{env.config.version}/_static/built_lv_examples?example={example_name}&w=320&h=240'></iframe>", format='html')
toggle = nodes.container('', literal_block=False, classes=['toggle'])
header = nodes.container('', literal_block=False, classes=['header'])
toggle.append(header)
example_file = os.path.abspath("../examples/" + example_path + "." + self.arguments[2])
try:
with open(example_file) as f:
contents = f.read()
except FileNotFoundError:
contents = 'Error encountered while trying to open ' + example_file
literal_list = nodes.literal_block(contents, contents)
literal_list['language'] = language
toggle.append(literal_list)
header.append(nodes.raw(text=f"<p>code &nbsp; <a class='fa fa-github' href='https://github.com/lvgl/lvgl/blob/{env.config.repo_commit_hash}/examples/{example_path}.{language}'>&nbsp; view on GitHub</a></p>", format='html'))
if env.app.tags.has('html'):
node_list.append(paragraph_node)
node_list.append(toggle)
return node_list
def setup(app):
app.add_directive("lv_example", LvExample)
app.add_config_value("repo_commit_hash", "", "env")
return {
'version': '0.1',
'parallel_read_safe': True,
'parallel_write_safe': True,
}

74
docs/_static/css/custom.css vendored Normal file
View File

@@ -0,0 +1,74 @@
table, th, td {
border: 1px solid #bbb;
padding: 10px;
}
td {
text-align:center;
}
span.pre
{
padding-right:8px;
}
span.pre:first-child
{
padding-right:0px;
}
code.sig-name
{
//margin-left:8px;
}
.toggle .header {
display: block;
clear: both;
cursor: pointer;
font-weight: bold;
}
.toggle .header:before {
font-family: FontAwesome, "Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;
content: "\f0da \00a0 Show ";
display: inline-block;
font-size: 1.1em;
}
.toggle .header.open:before {
content: "\f0d7 \00a0 Hide ";
}
.header p {
display: inline-block;
font-size: 1.1em;
margin-bottom: 8px;
}
.wy-side-nav-search {
background-color: #f5f5f5;
}
.wy-side-nav-search>div.version {
color: #333;
display: none; /*replaced by dropdown*/
}
.home-img {
width:32%;
transition: transform .3s ease-out;
}
.home-img:hover {
transform: translate(0, -10px);
}
.lv-example {
border: none;
outline: none;
padding: none;
display: block;
width: 320px;
height: 240px;
}

5
docs/_static/css/fontawesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

BIN
docs/_static/img/home_1.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/_static/img/home_2.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
docs/_static/img/home_3.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
docs/_static/img/home_4.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
docs/_static/img/home_5.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/_static/img/home_6.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/_static/img/home_banner.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

31
docs/_templates/layout.html vendored Normal file
View File

@@ -0,0 +1,31 @@
{% extends "!layout.html" %}
{%- block extrahead %}
{{ super() }}
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-78811084-3"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-78811084-3', { 'anonymize_ip': true });
</script>
{% endblock %}
{% block footer %}
{{ super() }}
<div class="footer">This page uses <a href="https://analytics.google.com/">
Google Analytics</a> to collect statistics. You can disable it by blocking
the JavaScript coming from www.google-analytics.com.
<script type="text/javascript">
(function() {
var ga = document.createElement('script');
ga.src = ('https:' == document.location.protocol ?
'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
</script>
</div>
{% endblock %}

53
docs/_templates/page.html vendored Normal file
View File

@@ -0,0 +1,53 @@
{% extends "!page.html" %}
{% block footer %}
<style>
.wy-side-nav-search > div[role="search"] {
color: black;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
$(".toggle > *").hide();
$(".toggle .header").show();
$(".toggle .header").click(function() {
$(this).parent().children().not(".header").toggle(400);
$(this).parent().children(".header").toggleClass("open");
})
});
</script>
<script type="text/javascript">
function add_version_selector()
{
return fetch("https://raw.githubusercontent.com/lvgl/docs_compiled/gh-pages/versionlist.txt")
.then(res => res.text())
.then(text => {
const versions = text.split("\n").filter(version => version.trim().length > 0);
let p = document.getElementById("rtd-search-form").parentElement;
p.innerHTML = `
<select name="versions" id="versions" onchange="ver_sel()" style="border-radius:5px; margin-bottom:15px">
${versions.map(version => {
const versionName = "v" + ((version.indexOf(".") != -1) ? version : (version + " (latest minor)"));
return `<option value="${version}">${versionName}</option>`;
})}
</select>` + p.innerHTML;
});
}
function ver_sel()
{
var x = document.getElementById("versions").value;
window.location.href = window.location.protocol + "//" + window.location.host + "/" + x + "/";
}
document.addEventListener('DOMContentLoaded', (event) => {
add_version_selector().then(() => {
var value = window.location.pathname.split('/')[1];
document.getElementById("versions").value = value;
});
})
</script>
{% endblock %}

75
docs/build.py Executable file
View File

@@ -0,0 +1,75 @@
#!/usr/bin/env python3
import sys
import os
import subprocess
import re
langs = ['en']
# Change to script directory for consistency
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
def cmd(s):
print("")
print(s)
print("-------------------------------------")
r = os.system(s)
if r != 0:
print("Exit build due to previous error")
exit(-1)
# Get the current branch name
status, br = subprocess.getstatusoutput("git branch | grep '*'")
_, gitcommit = subprocess.getstatusoutput("git rev-parse HEAD")
br = re.sub('\* ', '', br)
urlpath = re.sub('release/', '', br)
# Be sure the github links point to the right branch
f = open("header.rst", "w")
f.write(".. |github_link_base| replace:: https://github.com/lvgl/lvgl/blob/" + gitcommit + "/docs")
f.close()
base_html = "html_baseurl = 'https://docs.lvgl.io/" + urlpath + "/en/html/'"
os.system("sed -i \"s|html_baseurl = .*|" + base_html +"|\" conf.py")
clean = 0
trans = 0
skip_latex = False
args = sys.argv[1:]
if len(args) >= 1:
if "clean" in args: clean = 1
if "skip_latex" in args: skip_latex = True
lang = "en"
print("")
print("****************")
print("Building")
print("****************")
if clean:
cmd("rm -rf " + lang)
cmd("mkdir " + lang)
print("Running doxygen")
cmd("cd ../scripts && doxygen Doxyfile")
# BUILD PDF
if not skip_latex:
# Silly workarond to include the more or less correct PDF download link in the PDF
#cmd("cp -f " + lang +"/latex/LVGL.pdf LVGL.pdf | true")
cmd("sphinx-build -b latex . out_latex")
# Generate PDF
cmd("cd out_latex && latexmk -pdf 'LVGL.tex'")
# Copy the result PDF to the main directory to make it avaiable for the HTML build
cmd("cd out_latex && cp -f LVGL.pdf ../LVGL.pdf")
else:
print("skipping latex build as requested")
# BULD HTML
cmd("sphinx-build -b html . ../out_html")

239
docs/conf.py Normal file
View File

@@ -0,0 +1,239 @@
#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
#
# LVGL documentation build configuration file, created by
# sphinx-quickstart on Wed Jun 12 16:38:40 2019.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os
import sys
import subprocess
sys.path.insert(0, os.path.abspath('./_ext'))
import recommonmark
from recommonmark.transform import AutoStructify
from sphinx.builders.html import StandaloneHTMLBuilder
from subprocess import Popen, PIPE
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = ['sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',
'recommonmark',
'sphinx_markdown_tables',
'breathe',
'sphinx_sitemap',
'lv_example'
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The default language to highlight source code in. The default is 'python'.
# The value should be a valid Pygments lexer name, see Showing code examples for more details.
highlight_language = 'c'
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
source_suffix = ['.rst', '.md']
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = 'LVGL'
copyright = '2020, LVGL LLC'
author = 'LVGL community'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
# embeddedt: extract using scripts/find_version.sh
version = subprocess.run(["../scripts/find_version.sh"], capture_output=True).stdout.decode("utf-8").strip()
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ['_build', 'doxygen_html', 'Thumbs.db', '.DS_Store',
'README.md', 'lv_examples', 'out_html' ]
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = True
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'sphinx_rtd_theme'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
html_theme_options = {
'collapse_navigation' : False,
'logo_only': True,
}
# For site map generation
html_baseurl = 'https://docs.lvgl.io/' + version + "/"
sitemap_url_scheme = "{link}"
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# This is required for the alabaster theme
# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
html_sidebars = {
'**': [
'relations.html', # needs 'show_related': True theme option to display
'searchbox.html',
]
}
html_favicon = 'favicon.png'
html_logo = 'logo_lvgl.png'
# -- Options for HTMLHelp output ------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'LVGLdoc'
html_last_updated_fmt = ''
# -- Options for LaTeX output ---------------------------------------------
latex_engine = 'xelatex'
latex_use_xindy = False
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
'inputenc': '',
'utf8extra': '',
'classoptions': ',openany,oneside',
'babel': '\\usepackage{babel}',
'passoptionstopackages': r'''
\PassOptionsToPackage{bookmarksdepth=5}{hyperref}% depth of pdf bookmarks
''',
'preamble': r'''
\usepackage{fontspec}
\setmonofont{DejaVu Sans Mono}
\usepackage{silence}
\WarningsOff*
''',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'LVGL.tex', 'LVGL Documentation ' + version,
'LVGL community', 'manual'),
]
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'lvgl', 'LVGL Documentation ' + version,
[author], 1)
]
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'LVGL', 'LVGL Documentation ' + version,
author, 'Contributors of LVGL', 'One line description of project.',
'Miscellaneous'),
]
breathe_projects = {
"lvgl":"xml/",
}
StandaloneHTMLBuilder.supported_image_types = [
'image/svg+xml',
'image/gif', #prefer gif over png
'image/png',
'image/jpeg'
]
smartquotes = False
_, repo_commit_hash = subprocess.getstatusoutput("git rev-parse HEAD")
# Example configuration for intersphinx: refer to the Python standard library.
def setup(app):
app.add_config_value('recommonmark_config', {
'enable_eval_rst': True,
'enable_auto_toc_tree': 'True',
}, True)
app.add_transform(AutoStructify)
app.add_css_file('css/custom.css')
app.add_css_file('css/fontawesome.min.css')

BIN
docs/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

View File

@@ -0,0 +1,77 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/get-started/arduino.md
```
# Arduino
The [core LVGL library](https://github.com/lvgl/lvgl) and the [examples](https://github.com/lvgl/lv_examples) are directly available as Arduino libraries.
Note that you need to choose a powerful enough board to run LVGL and your GUI. See the [requirements of LVGL](https://docs.lvgl.io/latest/en/html/intro/index.html#requirements).
For example ESP32 is a good candidate to create your UI with LVGL.
## Get the LVGL Ardunio library
LVGL can be installed via the Arduino IDE Library Manager or as a .ZIP library.
It will also install [lv_exmaples](https://github.com/lvgl/lv_examples) which contains a lot of examples and demos to try LVGL.
## Set up drivers
To get started it's recommended to use [TFT_eSPI](https://github.com/Bodmer/TFT_eSPI) library as a TFT driver to simplify testing.
To make it work setup `TFT_eSPI` according to your TFT display type via editing either
- `User_Setup.h`
- or by selecting a configuration in the `User_Setup_Select.h`
Both files are located in `TFT_eSPI` library's folder.
## Configure LVGL
LVGL has its own configuration file called `lv_conf.h`. When LVGL is installed the followings needs to be done to configure it:
1. Go to directory of the installed Arduino libraries
2. Go to `lvgl` and copy `lv_conf_template.h` as `lv_conf.h` into the Arduino Libraries directory next to the `lvgl` library folder.
3. Open `lv_conf.h` and change the first `#if 0` to `#if 1`
4. Set the resolution of your display in `LV_HOR_RES_MAX` and `LV_VER_RES_MAX`
5. Set the color depth of you display in `LV_COLOR_DEPTH`
6. Set `LV_TICK_CUSTOM 1`
## Configure the examples
`lv_examples` can be configures similarly to LVGL but it's configuration file is called `lv_ex_conf.h`.
1. Go to directory of the installed Arduino libraries
2. Go to `lv_examples` and copy `lv_ex_template.h` as `lv_ex_conf.h` next to the `lv_examples` folder.
3. Open `lv_ex_conf.h` and change the first `#if 0` to `#if 1`
4. Enable the demos you want to use. (The small examples starting with `lv_ex_...()` are always enabled.)
## Initialize LVGL and run an example
Take a look at [LVGL_Arduino.ino](https://github.com/lvgl/lvgl/blob/master/examples/LVGL_Arduino.ino) to see how to initialize LVGL.
TFT_eSPI is used as the display driver.
In the INO file you can see how to register a display and a touch pad for LVGL and call an example.
Note that, there is no dedicated INO file for every example but you can call functions like `lv_ex_btn1()` or `lv_ex_slider1()` to run an example.
For the full list of examples see the [README of lv_examples](https://github.com/lvgl/lv_examples/blob/master/README.md).
## Debugging and logging
In case of trouble LVGL can display debug information.
In the `LVGL_Arduino.ino` example there is `my_print` method, which allow to send this debug information to the serial interface.
To enable this feature you have to edit `lv_conf.h` file and enable logging in the section `log settings`:
```c
/*Log settings*/
#define USE_LV_LOG 1 /*Enable/disable the log module*/
#if LV_USE_LOG
/* How important log should be added:
* LV_LOG_LEVEL_TRACE A lot of logs to give detailed information
* LV_LOG_LEVEL_INFO Log important events
* LV_LOG_LEVEL_WARN Log if something unwanted happened but didn't cause a problem
* LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail
* LV_LOG_LEVEL_NONE Do not log anything
*/
# define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
```
After enabling the log module and setting LV_LOG_LEVEL accordingly the output log is sent to the `Serial` port @ 115200 bps.

View File

@@ -0,0 +1,47 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/get-started/espressif.md
```
# Espressif (ESP32)
Since v7.7.1 LVGL includes a Kconfig file, so LVGL can be used as an ESP-IDF v4 component.
## Get the LVGL demo project for ESP32
We've created [lv_port_esp32](https://github.com/lvgl/lv_port_esp32), a project using ESP-IDF and LVGL to show one of the demos from [lv_examples](https://github.com/lvgl/lv_examples).
You are able to configure the project to use one of the many supported display controllers, see [lvgl_esp32_drivers](https://github.com/lvgl/lvgl_esp32_drivers) for a complete list
of supported display and indev (touch) controllers.
## Use LVGL in your ESP32 project
### Prerequisites
ESP-IDF v4 framework is the suggested version to use.
### Get LVGL
You are suggested to add LVGL as a "component". This component can be located inside a directory named "components" on your project root directory.
When your project is a git repository you can include LVGL as a git submodule:
```c
git submodule add https://github.com/lvgl/lvgl.git components/lvgl
```
The above command will clone LVGL's main repository into the `components/lvgl` directory. LVGL includes a `CMakeLists.txt` file that sets some configuration options so you can use LVGL right away.
When you are ready to configure LVGL launch the configuration menu with `idf.py menuconfig` on your project root directory, go to `Component config` and then `LVGL configuration`.
## Use lvgl_esp32_drivers in your project
You are suggested to add `lvgl_esp32_drivers` as a "component". This component can be located inside a directory named "components" on your project root directory.
When your project is a git repository you can include `lvgl_esp32_drivers` as a git submodule:
```c
git submodule add https://github.com/lvgl/lvgl_esp32_drivers.git components/lvgl_esp32_drivers
```
### Support for ESP32-S2
Basic support for ESP32-S2 has been added into the `lvgl_esp32_drivers` repository.

34
docs/get-started/index.md Normal file
View File

@@ -0,0 +1,34 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/get-started/index.md
```
# Get started
There are several ways to get your feet wet with LVGL. Here is one recommended order of documents to read and things to play with when you are learning to use LVGL:
1. Check the [Online demos](https://lvgl.io/demos) to see LVGL in action (3 minutes)
2. Read the [Introduction](https://docs.lvgl.io/latest/en/html/intro/index.html) page of the documentation (5 minutes)
3. Read the [Quick overview](https://docs.lvgl.io/latest/en/html/get-started/quick-overview.html) page of the documentation (15 minutes)
4. Set up a [Simulator](https://docs.lvgl.io/latest/en/html/get-started/pc-simulator.html) (10 minutes)
5. Try out some [Examples](https://github.com/lvgl/lv_examples/)
6. Port LVGL to a board. See the [Porting](https://docs.lvgl.io/latest/en/html/porting/index.html) guide or check the ready to use [Projects](https://github.com/lvgl?q=lv_port_&type=&language=)
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 got 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)
```eval_rst
.. toctree::
:maxdepth: 2
:hidden:
quick-overview
pc-simulator
stm32
nxp
espressif
arduino
micropython
nuttx
```

View File

@@ -0,0 +1,96 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/get-started/micropython.md
```
# Micropython
## What is Micropython?
[Micropython](http://micropython.org/) is Python for microcontrollers.
Using Micropython, you can write Python3 code and run it even on a bare metal architecture with limited resources.
### Highlights of Micropython
- **Compact** - Fits and runs within just 256k of code space and 16k of RAM. No OS is needed, although you can also run it with an OS, if you want.
- **Compatible** - Strives to be as compatible as possible with normal Python (known as CPython).
- **Versatile** - Supports many architectures (x86, x86-64, ARM, ARM Thumb, Xtensa).
- **Interactive** - No need for the compile-flash-boot cycle. With the REPL (interactive prompt) you can type commands and execute them immediately, run scripts etc.
- **Popular** - Many platforms are supported. The user base is growing bigger. Notable forks: [MicroPython](https://github.com/micropython/micropython), [CircuitPython](https://github.com/adafruit/circuitpython), [MicroPython_ESP32_psRAM_LoBo](https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo)
- **Embedded Oriented** - Comes with modules specifically for embedded systems, such as the [machine module](https://docs.micropython.org/en/latest/library/machine.html#classes) for accessing low-level hardware (I/O pins, ADC, UART, SPI, I2C, RTC, Timers etc.)
---
## Why Micropython + LVGL?
Currently, Micropython [does not have a good high-level GUI library](https://forum.micropython.org/viewtopic.php?f=18&t=5543) by default. LVGL is an [Object Oriented Component Based](https://blog.lvgl.io/2018-12-13/extend-lvgl-objects) high-level GUI library, which seems to be a natural candidate to map into a higher level language, such as Python. LVGL is implemented in C and its APIs are in C.
### Here are some advantages of using LVGL in Micropython:
- Develop GUI in Python, a very popular high level language. Use paradigms such as Object Oriented Programming.
- Usually, GUI development requires multiple iterations to get things right. With C, each iteration consists of **`Change code` > `Build` > `Flash` > `Run`**.
In Micropython it's just **`Change code` > `Run`** ! You can even run commands interactively using the [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) (the interactive prompt)
### Micropython + LVGL could be used for:
- Fast prototyping GUI.
- Shortening the cycle of changing and fine-tuning the GUI.
- Modelling the GUI in a more abstract way by defining reusable composite objects, taking advantage of Python's language features such as Inheritance, Closures, List Comprehension, Generators, Exception Handling, Arbitrary Precision Integers and others.
- Make LVGL accessible to a larger audience. No need to know C in order to create a nice GUI on an embedded system.
This goes well with [CircuitPython vision](https://learn.adafruit.com/welcome-to-circuitpython/what-is-circuitpython). CircuitPython was designed with education in mind, to make it easier for new or unexperienced users to get started with embedded development.
- Creating tools to work with LVGL at a higher level (e.g. drag-and-drop designer).
---
## So what does it look like?
> TL;DR:
> It's very much like the C API, but Object Oriented for LVGL components.
Let's dive right into an example!
### A simple example
```python
import lvgl as lv
lv.init()
scr = lv.obj()
btn = lv.btn(scr)
btn.align(lv.scr_act(), lv.ALIGN.CENTER, 0, 0)
label = lv.label(btn)
label.set_text("Button")
lv.scr_load(scr)
```
## How can I use it?
### Online Simulator
If you want to experiment with LVGL + Micropython without downloading anything - you can use our online simulator!
It's a fully functional LVGL + Micropython that runs entirely in the browser and allows you to edit a python script and run it.
[Click here to experiment on the online simulator](https://sim.lvgl.io/)
[Hello World](https://sim.lvgl.io/v7/micropython/ports/javascript/bundle_out/index.html?script=https://gist.githubusercontent.com/amirgon/51299ce9b6448328a855826149482ae6/raw/0f235c6d40462fd2f0e55364b874f14fe3fd613c/lvgl_hello_world.py&script_startup=https://gist.githubusercontent.com/amirgon/7bf15a66ba6d959bbf90d10f3da571be/raw/8684b5fa55318c184b1310663b187aaab5c65be6/init_lv_mp_js.py)
Note: the online simulator is available for lvgl v6 and v7.
### PC Simulator
Micropython is ported to many platforms. One notable port is "unix", which allows you to build and run Micropython (+LVGL) on a Linux machine. (On a Windows machine you might need Virtual Box or WSL or MinGW or Cygwin etc.)
[Click here to know more information about building and running the unix port](https://github.com/lvgl/lv_micropython)
### Embedded platform
In the end, the goal is to run it all on an embedded platform.
Both Micropython and LVGL can be used on many embedded architectures, such as stm32, ESP32 etc.
You would also need display and input drivers. We have some sample drivers (ESP32+ILI9341, as well as some other examples), but chances are you would want to create your own input/display drivers for your specific hardware.
Drivers can be implemented either in C as a Micropython module, or in pure Micropython!
## Where can I find more information?
- In this [Blog Post](https://blog.lvgl.io/2019-02-20/micropython-bindings)
- `lv_micropython` [README](https://github.com/lvgl/lv_micropython)
- `lv_binding_micropython` [README](https://github.com/lvgl/lv_binding_micropython)
- The [LVGL micropython forum](https://forum.lvgl.io/c/micropython) (Feel free to ask anything!)
- At Micropython: [docs](http://docs.micropython.org/en/latest/) and [forum](https://forum.micropython.org/)

101
docs/get-started/nuttx.md Normal file
View File

@@ -0,0 +1,101 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/get-started/nuttx.md
```
# NuttX RTOS
## What is NuttX?
[NuttX](https://nuttx.apache.org/) is a mature and secure real-time operating system (RTOS) with an emphasis on technical standards compliance and small size.
It is scalable from 8-bit to 64-bit microcontrollers and microprocessors and compliant with the Portable Operating System Interface (POSIX) and the American National Standards Institute (ANSI) standards and with many Linux-like subsystems.
The best way to think about NuttX is to think of it as a small Unix/Linux for microcontrollers.
### Highlights of NuttX
- **Small** - Fits and runs in microcontrollers as small as 32KB Flash and 8KB of RAM.
- **Compliant** - Strives to be as compatible as possible with POSIX and Linux.
- **Versatile** - Supports many architectures (ARM, ARM Thumb, AVR, MIPS, OpenRISC, RISC-V 32-bit and 64-bit, RX65N, x86-64, Xtensa, Z80/Z180, etc).
- **Modular** - Its modular design allows developers to select only what really matters and use modules to include new features.
- **Popular** - NuttX is used by many companies around the world. Probably you already used a product with NuttX without knowing it was running NuttX.
- **Predictable** - NuttX is a preemptible Realtime kernel, so you can use it to create predictable applications for realtime control.
---
## Why NuttX + LVGL?
Although NuttX has its own graphic library called [NX](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=139629474), LVGL is a good alternative because users could find more eye-candy demos and they can reuse code from previous projects.
LVGL is an [Object Oriented Component Based](https://blog.lvgl.io/2018-12-13/extend-lvgl-objects) high-level GUI library, that could fit very well for a RTOS with advanced features like NuttX.
LVGL is implemented in C and its APIs are in C.
### Here are some advantages of using LVGL in NuttX
- Develop GUI in Linux first and when it is done just compile it for NuttX. Nothing more, no wasting of time.
- Usually, GUI development for low level RTOS requires multiple iterations to get things right, where each iteration consists of **`Change code` > `Build` > `Flash` > `Run`**.
Using LVGL, Linux and NuttX you can reduce this process and just test everything on your computer and when it is done, compile it on NuttX and that is it.
### NuttX + LVGL could be used for
- GUI demos to demonstrate your board graphics capacities.
- Fast prototyping GUI for MVP (Minimum Viable Product) presentation.
- visualize sensor data directly and easily on the board without using a computer.
- Final products with a GUI without a touchscreen (i.e. 3D Printer Interface using Rotary Encoder to Input data).
- Final products with a touchscreen (and all sorts of bells and whistles).
---
## How to get started with NuttX and LVGL?
There are many boards in the NuttX mainline (https://github.com/apache/incubator-nuttx) with support for LVGL.
Let's use the [STM32F429IDISCOVERY](https://www.st.com/en/evaluation-tools/32f429idiscovery.html) as example because it is a very popular board.
### First you need to install the pre-requisite on your system
Let's use the [Windows Subsystem for Linux](https://acassis.wordpress.com/2018/01/10/how-to-build-nuttx-on-windows-10/)
```shell
$ sudo apt-get install automake bison build-essential flex gcc-arm-none-eabi gperf git libncurses5-dev libtool libusb-dev libusb-1.0.0-dev pkg-config kconfig-frontends openocd
```
### Now let's to create a workspace to save our files
```shell
$ mkdir ~/nuttxspace
$ cd ~/nuttxspace
```
### Clone the NuttX and Apps repositories:
```shell
$ git clone https://github.com/apache/incubator-nuttx nuttx
$ git clone https://github.com/apache/incubator-nuttx-apps apps
```
### Configure NuttX to use the stm32f429i-disco board and the LVGL Demo
```shell
$ ./tools/configure.sh stm32f429i-disco:lvgl
$ make
```
If everything went fine you should have now the file `nuttx.bin` to flash on your board:
```shell
$ ls -l nuttx.bin
-rwxrwxr-x 1 alan alan 287144 Jun 27 09:26 nuttx.bin
```
### Flashing the firmware in the board using OpenOCD:
```shell
$ sudo openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg -c init -c "reset halt" -c "flash write_image erase nuttx.bin 0x08000000"
```
Reset the board and using the 'NSH>' terminal start the LVGL demo:
```shell
nsh> lvgldemo
```
## Where can I find more information?
- This blog post: [LVGL on LPCXpresso54628](https://acassis.wordpress.com/2018/07/19/running-nuttx-on-lpcxpresso54628-om13098/)
- NuttX mailing list: [Apache NuttX Mailing List](http://nuttx.incubator.apache.org/community/)

73
docs/get-started/nxp.md Normal file
View File

@@ -0,0 +1,73 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/get-started/nxp.md
```
# NXP
NXP has integrated LVGL into the MCUXpresso SDK packages for several of their general
purpose and crossover microcontrollers, allowing easy evaluation and migration into your
product design. [Download an SDK for a supported board](https://www.nxp.com/design/software/embedded-software/littlevgl-open-source-graphics-library:LITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY?&tid=vanLITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY)
today and get started with your next GUI application.
## Creating new project with LVGL
Downloading the MCU SDK example project is recommended as a starting point. It comes fully
configured with LVGL (and with PXP support if module is present), no additional integration
work is required.
## Adding HW acceleration for NXP iMX RT platforms using PXP (PiXel Pipeline) engine for existing projects
Several drawing features in LVGL can be offloaded to PXP engine. In order to use CPU time while PXP
is running, RTOS is required to block the LVGL drawing thread and switch to another task, or simply to
idle task, where CPU could be suspended to save power.
#### Features supported:
- RGB565 color format
- Area fill + optional transparency
- BLIT (BLock Image Transfer) + optional transparency
- Color keying + optional transparency
- Recoloring (color tint) + optional transparency
- RTOS integration layer
- Default FreeRTOS and bare metal code provided
#### Basic configuration:
- Select NXP PXP engine in lv_conf.h: Set `LV_USE_GPU_NXP_PXP` to 1
- Enable default implementation for interrupt handling, PXP start function and automatic initialization: Set `LV_USE_GPU_NXP_PXP_AUTO_INIT` to 1
- If `FSL_RTOS_FREE_RTOS` symbol is defined, FreeRTOS implementation will be used, otherwise bare metal code will be included
#### Basic initialization:
- If `LV_USE_GPU_NXP_PXP_AUTO_INIT` is enabled, no user code is required; PXP is initialized automatically in `lv_init()`
- For manual PXP initialization, default configuration structure for callbacks can be used. Initialize PXP before calling `lv_init()`
```c
#if LV_USE_GPU_NXP_PXP
#include "lv_gpu/lv_gpu_nxp_pxp.h"
#include "lv_gpu/lv_gpu_nxp_pxp_osa.h"
#endif
. . .
#if LV_USE_GPU_NXP_PXP
if (lv_gpu_nxp_pxp_init(&pxp_default_cfg) != LV_RES_OK) {
PRINTF("PXP init error. STOP.\n");
for ( ; ; ) ;
}
#endif
```
#### Project setup:
- Add PXP related files to project:
- lv_gpu/lv_gpu_nxp.c, lv_gpu/lv_gpu_nxp.h: low level drawing calls for LVGL
- lv_gpu/lv_gpu_nxp_osa.c, lv_gpu/lv_gpu_osa.h: default implementation of OS-specific functions (bare metal and FreeRTOS only)
- optional, required only if `LV_USE_GPU_NXP_PXP_AUTO_INIT` is set to 1
- PXP related code depends on two drivers provided by MCU SDK. These drivers need to be added to project:
- fsl_pxp.c, fsl_pxp.h: PXP driver
- fsl_cache.c, fsl_cache.h: CPU cache handling functions
#### Advanced configuration:
- Implementation depends on multiple OS-specific functions. Structure `lv_nxp_pxp_cfg_t` with callback pointers is used
as a parameter for `lv_gpu_nxp_pxp_init()` function. Default implementation for FreeRTOS and baremetal is provided in lv_gpu_nxp_osa.c
- `pxp_interrupt_init()`: Initialize PXP interrupt (HW setup, OS setup)
- `pxp_interrupt_deinit()`: Deinitialize PXP interrupt (HW setup, OS setup)
- `pxp_run()`: Start PXP job. Use OS-specific mechanism to block drawing thread. PXP must finish drawing before leaving this function.
- There are configurable area thresholds which are used to decide whether the area will be processed by CPU, or by PXP. Areas smaller than
defined value will be processed by CPU, areas bigger than the threshold will be processed by PXP. These thresholds may be defined as a
preprocessor variables. Default values are defined lv_gpu/lv_gpu_nxp_pxp.h
- `GPU_NXP_PXP_BLIT_SIZE_LIMIT`: size threshold for image BLIT, BLIT with color keying, and BLIT with recolor (OPA > LV_OPA_MAX)
- `GPU_NXP_PXP_BLIT_OPA_SIZE_LIMIT`: size threshold for image BLIT and BLIT with color keying with transparency (OPA < LV_OPA_MAX)
- `GPU_NXP_PXP_FILL_SIZE_LIMIT`: size threshold for fill operation (OPA > LV_OPA_MAX)
- `GPU_NXP_PXP_FILL_OPA_SIZE_LIMIT`: size threshold for fill operation with transparency (OPA < LV_OPA_MAX)

View File

@@ -0,0 +1,98 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/get-started/pc-simulator.md
```
# Simulator on PC
You can try out LVGL **using only your PC** (i.e. without any development boards). LVGL will run on a simulator environment on the PC where anyone can write and experiment the real LVGL applications.
Using the simulator on the PC has the following advantages:
- Hardware independent - Write code, run it on the PC and see the result on the PC monitor.
- Cross-platform - Any Windows, Linux or MacOS system can run the PC simulator.
- Portability - the written code is portable, which means you can simply copy it when using an embedded hardware.
- Easy Validation - The simulator is also very useful to report bugs because it means common platform for every user. So it's a good idea to reproduce a bug in the simulator and use the code snippet in the [Forum](https://forum.lvgl.io).
## Select an IDE
The simulator is ported to various IDEs (Integrated Development Environments). Choose your favorite IDE, read its README on GitHub, download the project, and load it to the IDE.
- [Eclipse with SDL driver](https://github.com/lvgl/lv_sim_eclipse_sdl): Recommended on Linux and Mac
- [CodeBlocks](https://github.com/lvgl/lv_sim_codeblocks_win): Recommended on Windows
- [VisualStudio with SDL driver](https://github.com/lvgl/lv_sim_visual_studio_sdl): For Windows
- [VSCode with SDL driver](https://github.com/lvgl/lv_sim_vscode_sdl): Recommended on Linux and Mac
- [PlatformIO with SDL driver](https://github.com/lvgl/lv_platformio): Recommended on Linux and Mac
You can use any IDE for the development but, for simplicity, the configuration for Eclipse CDT is what we'll focus on in this tutorial.
The following section describes the set-up guide of Eclipse CDT in more details.
**Note: If you are on Windows, it's usually better to use the Visual Studio or CodeBlocks projects instead. They work out of the box without requiring extra steps.**
## Set-up Eclipse CDT
### Install Eclipse CDT
[Eclipse CDT](https://eclipse.org/cdt/) is a C/C++ IDE.
Eclipse is a Java based software therefore be sure **Java Runtime Environment** is installed on your system.
On Debian-based distros (e.g. Ubuntu): `sudo apt-get install default-jre`
Note: If you are using other distros, then please refer and install 'Java Runtime Environment' suitable to your distro.
Note: If you are using macOS and get a "Failed to create the Java Virtual Machine" error, uninstall any other Java JDK installs and install Java JDK 8u. This should fix the problem.
You can download Eclipse's CDT from: [https://www.eclipse.org/cdt/downloads.php](https://www.eclipse.org/cdt/downloads.php). Start the installer and choose *Eclipse CDT* from the list.
### Install SDL 2
The PC simulator uses the [SDL 2](https://www.libsdl.org/download-2.0.php) cross platform library to simulate a TFT display and a touch pad.
#### Linux
On **Linux** you can easily install SDL2 using a terminal:
1. Find the current version of SDL2: `apt-cache search libsdl2 (e.g. libsdl2-2.0-0)`
2. Install SDL2: `sudo apt-get install libsdl2-2.0-0` (replace with the found version)
3. Install SDL2 development package: `sudo apt-get install libsdl2-dev`
4. If build essentials are not installed yet: `sudo apt-get install build-essential`
#### Windows
If you are using **Windows** firstly you need to install MinGW ([64 bit version](http://mingw-w64.org/doku.php/download)). After installing MinGW, do the following steps to add SDL2:
1. Download the development libraries of SDL.
Go to [https://www.libsdl.org/download-2.0.php](https://www.libsdl.org/download-2.0.php) and download _Development Libraries: SDL2-devel-2.0.5-mingw.tar.gz_
2. Decompress the file and go to _x86_64-w64-mingw32_ directory (for 64 bit MinGW) or to _i686-w64-mingw32_ (for 32 bit MinGW)
3. Copy _..._mingw32/include/SDL2_ folder to _C:/MinGW/.../x86_64-w64-mingw32/include_
4. Copy _..._mingw32/lib/_ content to _C:/MinGW/.../x86_64-w64-mingw32/lib_
5. Copy _..._mingw32/bin/SDL2.dll_ to _{eclipse_worksapce}/pc_simulator/Debug/_. Do it later when Eclipse is installed.
Note: If you are using **Microsoft Visual Studio** instead of Eclipse then you don't have to install MinGW.
#### OSX
On **OSX** you can easily install SDL2 with brew: `brew install sdl2`
If something is not working, then please refer [this tutorial](http://lazyfoo.net/tutorials/SDL/01_hello_SDL/index.php) to get started with SDL.
### Pre-configured project
A pre-configured graphics library project (based on the latest release) is always available to get started easily.
You can find the latest one on [GitHub](https://github.com/lvgl/lv_sim_eclipse_sdl).
(Please note that, the project is configured for Eclipse CDT).
### Add the pre-configured project to Eclipse CDT
Run Eclipse CDT. It will show a dialogue about the **workspace path**. Before accepting the path, check that path and copy (and unzip) the downloaded pre-configured project there. After that, you can accept the workspace path. Of course you can modify this path but, in that case copy the project to the corresponding location.
Close the start up window and go to **File-&gt;Import** and choose **General-&gt;Existing project into Workspace**. **Browse the root directory** of the project and click **Finish**
On **Windows** you have to do two additional things:
- Copy the **SDL2.dll** into the project's Debug folder
- Right click on the project -&gt; Project properties -&gt; C/C++ Build -&gt; Settings -&gt; Libraries -&gt; Add ... and add _mingw32_ above SDLmain and SDL. (The order is important: mingw32, SDLmain, SDL)
### Compile and Run
Now you are ready to run LVGL on your PC. Click on the Hammer Icon on the top menu bar to Build the project. If you have done everything right, then you will not get any errors. Note that on some systems additional steps might be required to "see" SDL 2 from Eclipse but, in most of cases the configurations in the downloaded project is enough.
After a success build, click on the Play button on the top menu bar to run the project. Now a window should appear in the middle of your screen.
Now you are ready to use LVGL and begin development on your PC.

View File

@@ -0,0 +1,270 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/get-started/quick-overview.md
```
# Quick overview
Here you can learn the most important things about LVGL.
You should read this first to get a general impression and read the detailed [Porting](/porting/index) and [Overview](/overview/index) sections after that.
## Get started in a simulator
Instead of porting LVGL to embedded hardware straight away, it's highly recommended to get started in a simulator first.
LVGL is ported to many IDEs to be sure you will find your favorite one.
Go to the [Simulators](/get-started/pc-simulator) section to get ready-to-use projects that can be run on your PC.
This way you can save the time of porting for now and get some experience with LVGL immediately.
## Add LVGL into your project
If you would rather try LVGL on your own project follow these steps:
- [Download](https://github.com/lvgl/lvgl/archive/master.zip) or clone the library from GitHub with `git clone https://github.com/lvgl/lvgl.git`.
- Copy the `lvgl` folder into your project.
- Copy `lvgl/lv_conf_template.h` as `lv_conf.h` next to the `lvgl` folder, change the first `#if 0` to `1` to enable the file's content and set the `LV_COLOR_DEPTH` defines.
- Include `lvgl/lvgl.h` in files where you need to use LVGL related functions.
- Call `lv_tick_inc(x)` every `x` milliseconds in a Timer or Task (`x` should be between 1 and 10). It is required for the internal timing of LVGL.
Alternatively, configure `LV_TICK_CUSTOM` (see `lv_conf.h`) so that LVGL can retrieve the current time directly.
- Call `lv_init()`
- Create a draw buffer: LVGL will render the graphics here first, and send the rendered image to the display.
The buffer size can be set freely but 1/10 screen size is a good starting point.
```c
static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf1[DISP_HOR_RES * DISP_VER_RES / 10]; /*Declare a buffer for 1/10 screen size*/
lv_disp_draw_buf_init(&draw_buf, buf1, NULL, MY_DISP_HOR_RES * MY_DISP_VER_SER / 10); /*Initialize the display buffer.*/
```
- Implement and register a function which can copy the rendered image to an area of your display:
```c
static lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/
lv_disp_drv_init(&disp_drv); /*Basic initialization*/
disp_drv.flush_cb = my_disp_flush; /*Set your driver function*/
disp_drv.buffer = &draw_buf; /*Assign the buffer to the display*/
disp_drv.hor_res = MY_DISP_HOR_RES; /*Set the horizontal resolution of the display*/
disp_drv.ver_res = MY_DISP_VER_RES; /*Set the vertical resolution of the display*/
lv_disp_drv_register(&disp_drv); /*Finally register the driver*/
void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)
{
int32_t x, y;
/*It's a very slow but simple implementation.
*`set_pixel` needs to be written by you to a set pixel on the screen*/
for(y = area->y1; y <= area->y2; y++) {
for(x = area->x1; x <= area->x2; x++) {
set_pixel(x, y, *color_p);
color_p++;
}
}
lv_disp_flush_ready(disp); /* Indicate you are ready with the flushing*/
}
```
- Implement and register a function which can read an input device. E.g. for a touch pad:
```c
static lv_indev_drv_t indev_drv; /*Descriptor of a input device driver*/
lv_indev_drv_init(&indev_drv); /*Basic initialization*/
indev_drv.type = LV_INDEV_TYPE_POINTER; /*Touch pad is a pointer-like device*/
indev_drv.read_cb = my_touchpad_read; /*Set your driver function*/
lv_indev_drv_register(&indev_drv); /*Finally register the driver*/
void my_touchpad_read(lv_indev_t * indev, lv_indev_data_t * data)
{
/*`touchpad_is_pressed` and `touchpad_get_xy` needs to be implemented by you*/
if(touchpad_is_pressed()) {
data->state = LV_INDEV_STATE_PRESSED;
touchpad_get_xy(&data->point.x, &data->point.y);
} else {
data->state = LV_INDEV_STATE_RELEASED;
}
}
```
- Call `lv_timer_handler()` periodically every few milliseconds in the main `while(1)` loop or in an operating system task.
It will redraw the screen if required, handle input devices, animation etc.
For a more detailed guide go to the [Porting](/porting/index) section.
## Learn the basics
### Widgets
The graphical elements like Buttons, Labels, Sliders, Charts etc. are called objects or widgets. Go to [Widgets](/widgets/index) to see the full list of available widgets.
Every object has a parent object where it is created. For example if a label is created on a button, the button is the parent of label.
The child object moves with the parent and if the parent is deleted the children will be deleted too.
Children can be visible only on their parent. It other words, the parts of the children outside of the parent are clipped.
A Screen is the "root" parent. You can have any number of screens.
To get the current screen call `lv_scr_act()`, and to load a screen use `lv_scr_load(scr1)`.
You can create a new object with `lv_<type>_create(parent)`. It will return an `lv_obj_t *` variable that can be used as a reference to the object to set its parameters.
For example:
```c
lv_obj_t * slider1 = lv_slider_create(lv_scr_act());
```
To set some basic attributes `lv_obj_set_<parameter_name>(obj, <value>)` functions can be used. For example:
```c
lv_obj_set_x(btn1, 30);
lv_obj_set_y(btn1, 10);
lv_obj_set_size(btn1, 200, 50);
```
The widgets have type specific parameters too which can be set by `lv_<widget_type>_set_<parameter_name>(obj, <value>)` functions. For example:
```c
lv_slider_set_value(slider1, 70, LV_ANIM_ON);
```
To see the full API visit the documentation of the widgets or the related header file (e.g. [lvgl/src/widgets/lv_slider.h](https://github.com/lvgl/lvgl/blob/master/src/widgets/lv_slider.h)).
### Events
Events are used to inform the user that something has happened with an object.
You can assign one or more callbacks to an object which will be called if the object is clicked, released, dragged, being deleted etc.
A callback is assigned like this:
```c
lv_obj_add_event_cb(btn, btn_event_cb, LV_EVENT_CLICKED, NULL); /*Assign a callback to the button*/
...
void btn_event_cb(lv_event_t * e)
{
printf("Clicked\n");
}
```
Instead of `LV_EVENT_CLICKED` `LV_EVENT_ALL` can be used too to call the callback for any event.
From `lv_event_t * e` the current event code can be get with
```c
lv_event_code_t code = lv_event_get_code(e);
```
The object that triggered the event can be retrieved with
```c
lv_obj_t * obj = lv_event_get_target(e);
```
To learn all features of the events go to the [Event overview](/overview/event) section.
### Parts
Widgets might be built from one or more *parts*. For example a button has only one part called `LV_PART_MAIN`.
However, a [Slider](/widgets/core/slider) has `LV_PART_MAIN`, `LV_PART_INDICATOR` and `LV_PART_KNOB`.
By using parts you can apply different styles to different parts. (See below)
To learn which parts are used by which object read the widgets' documentation.
### States
The objects can be in a combination of the following states:
- `LV_STATE_DEFAULT` Normal, released state
- `LV_STATE_CHECKED` Toggled or checked state
- `LV_STATE_FOCUSED` Focused via keypad or encoder or clicked via touchpad/mouse
- `LV_STATE_FOCUS_KEY` Focused via keypad or encoder but not via touchpad/mouse
- `LV_STATE_EDITED` Edit by an encoder
- `LV_STATE_HOVERED` Hovered by mouse (not supported now)
- `LV_STATE_PRESSED` Being pressed
- `LV_STATE_SCROLLED` Being scrolled
- `LV_STATE_DISABLED` Disabled
For example, if you press an object it will automatically go to `LV_STATE_FOCUSED` and `LV_STATE_PRESSED` state and when you release it, the `LV_STATE_PRESSED` state will be removed.
To check if an object is in a given state use `lv_obj_has_state(obj, LV_STATE_...)`. It will return `true` if the object is in that state at that time.
To manually add or remove states use
```c
lv_obj_add_state(obj, LV_STATE_...);
lv_obj_clear_state(obj, LV_STATE_...);
```
### Styles
Styles contains properties such as background color, border width, font, etc to describe the appearance of the objects.
The styles are `lv_style_t` variables. Only their pointer is saved in the objects so they need to be static or global.
Before using a style it needs to be initialized with `lv_style_init(&style1)`. After that properties can be added. For example:
```
static lv_style_t style1;
lv_style_init(&style1);
lv_style_set_bg_color(&style1, lv_color_hex(0xa03080))
lv_style_set_border_width(&style1, 2))
```
See the full list of properties [here](/overview/style.html#properties).
The styles are assigned to an object's part and state. For example to *"Use this style on the slider's indicator when the slider is pressed"*:
```c
lv_obj_add_style(slider1, &style1, LV_PART_INDICATOR | LV_STATE_PRESSED);
```
If the *part* is `LV_PART_MAIN` it can be omitted:
```c
lv_obj_add_style(btn1, &style1, LV_STATE_PRESSED); /*Equal to LV_PART_MAIN | LV_STATE_PRESSED*/
```
Similarly, `LV_STATE_DEFAULT` can be omitted too:
```c
lv_obj_add_style(slider1, &style1, LV_PART_INDICATOR); /*Equal to LV_PART_INDICATOR | LV_STATE_DEFAULT*/
```
For `LV_STATE_DEFAULT` and `LV_PART_MAIN` simply write `0`:
```c
lv_obj_add_style(btn1, &style1, 0); /*Equal to LV_PART_MAIN | LV_STATE_DEFAULT*/
```
The styles can be cascaded (similarly to CSS). It means you can add more styles to a part of an object.
For example `style_btn` can set a default button appearance, and `style_btn_red` can overwrite the background color to make the button red:
```c
lv_obj_add_style(btn1, &style_btn, 0);
lv_obj_add_style(btn1, &style1_btn_red, 0);
```
If a property is not set on for the current state the style with `LV_STATE_DEFAULT` will be used. If the property is not defined even in the default state a default value is used.
Some properties (typically the text-related ones) can be inherited. It means if a property is not set in an object it will be searched in its parents too.
For example, you can set the font once in the screen's style and all text on that screen will inherit it by default.
Local style properties also can be added to the objects. It creates a style which resides inside the object and which is used only by the object:
```c
lv_obj_set_style_bg_color(slider1, lv_color_hex(0x2080bb), LV_PART_INDICATOR | LV_STATE_PRESSED);
```
To learn all the features of styles see the [Style overview](/overview/style) section.
### Themes
Themes are the default styles of the objects.
The styles from the themes are applied automatically when the objects are created.
You can select the theme to use in `lv_conf.h`.
## Examples
```eval_rst
.. include:: ../../examples/get_started/index.rst
```
## Micropython
Learn more about [Micropython](/get-started/micropython).
```python
# Create a Button and a Label
scr = lv.obj()
btn = lv.btn(scr)
btn.align(lv.scr_act(), lv.ALIGN.CENTER, 0, 0)
label = lv.label(btn)
label.set_text("Button")
# Load the screen
lv.scr_load(scr)
```

View File

@@ -0,0 +1,8 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/get-started/stm32.md
```
# STM32
TODO

1
docs/header.rst Normal file
View File

@@ -0,0 +1 @@
.. |github_link_base| replace:: https://github.com/lvgl/docs/blob/master

39
docs/index.md Normal file
View File

@@ -0,0 +1,39 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/index.md
```
```eval_rst
PDF version: :download:`LVGL.pdf <LVGL.pdf>`
```
# Welcome to the documentation of LVGL!
<img src="_static/img/home_banner.jpg" style="width:100%">
<div style="margin-bottom:48px">
<a href="intro/index.html"><img class="home-img" src="_static/img/home_1.png" alt="Get familiar with the LVGL project"></a>
<a href="get-started/index.html"><img class="home-img" src="_static/img/home_2.png" alt="Learn the basic of LVGL and its usage on various platforms"></a>
<a href="porting/index.html"><img class="home-img" src="_static/img/home_3.png" alt="See how to port LVGL to any platform"></a>
<a href="overview/index.html"><img class="home-img" src="_static/img/home_4.png" alt="Learn the how LVGL works in more detail"></a>
<a href="widgets/index.html"><img class="home-img" src="_static/img/home_5.png" alt="Take a look at the description of the available widgets"></a>
<a href="CONTRIBUTING.html"><img class="home-img" src="_static/img/home_6.png" alt="Be part of the development of LVGL"></a>
</div>
```eval_rst
.. toctree::
:maxdepth: 2
intro/index
get-started/index
porting/index
overview/index
widgets/index
layouts/index
CONTRIBUTING
CHANGELOG
ROADMAP
```

212
docs/intro/index.md Normal file
View File

@@ -0,0 +1,212 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/intro/index.md
```
# Introduction
LVGL (Light and Versatile Graphics Library) is a free and open-source graphics library providing everything you need to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and a low memory footprint.
## Key features
- Powerful building blocks such as buttons, charts, lists, sliders, images, etc.
- Advanced graphics with animations, anti-aliasing, opacity, smooth scrolling
- Various input devices such as touchpad, mouse, keyboard, encoder, etc.
- Multi-language support with UTF-8 encoding
- Multi-display support, i.e. use multiple TFT, monochrome displays simultaneously
- Fully customizable graphic elements with CSS-like styles
- Hardware independent: use with any microcontroller or display
- Scalable: able to operate with little memory (64 kB Flash, 16 kB RAM)
- OS, external memory and GPU supported but not required
- Single frame buffer operation even with advanced graphic effects
- Written in C for maximal compatibility (C++ compatible)
- Simulator to start embedded GUI design on a PC without embedded hardware
- Binding to MicroPython
- Tutorials, examples, themes for rapid GUI design
- Documentation is available online and PDF
- Free and open-source under MIT license
## Requirements
Basically, every modern controller  (which is able to drive a display) is suitable to run LVGL. The minimal requirements are:
<ul>
<li> 16, 32 or 64 bit microcontroller or processor</li>
<li>&gt; 16 MHz clock speed is recommended</li>
<li> Flash/ROM: &gt; 64 kB for the very essential components (&gt; 180 kB is recommended)</li>
<li> RAM:
<ul>
<li> Static RAM usage: ~2 kB depending on the used features and objects types</li>
<li> Stack: &gt; 2kB (&gt; 8 kB is recommended)</li>
<li> Dynamic data (heap): &gt; 4 KB (&gt; 32 kB is recommended if using several objects).
    Set by <em>LV_MEM_SIZE</em> in <em>lv_conf.h</em>. </li>
<li> Display buffer:  &gt; <em>"Horizontal resolution"</em> pixels (&gt; 10 &times; <em>"Horizontal resolution"</em> is recommended) </li>
<li> One frame buffer in the MCU or in external display controller</li>
</ul>
</li>
<li> C99 or newer compiler</li>
<li> Basic C (or C++) knowledge:
<a href="https://www.tutorialspoint.com/cprogramming/c_pointers.htm">pointers</a>,
<a href="https://www.tutorialspoint.com/cprogramming/c_structures.htm">structs</a>,
<a href="https://www.geeksforgeeks.org/callbacks-in-c/">callbacks</a>.</li>
</ul>
<em>Note that memory usage may vary depending on architecture, compiler and build options.</em>
## License
The LVGL project (including all repositories) is licensed under [MIT license](https://github.com/lvgl/lvgl/blob/master/LICENCE.txt).
It means you can use it even in commercial projects.
It's not mandatory but we highly appreciate it if you write a few words about your project in the [My projects](https://forum.lvgl.io/c/my-projects/10) category of the forum or a private message to [lvgl.io](https://lvgl.io/#contact).
Although you can get LVGL for free there is a massive amount of work behind it. It's created by a group of volunteers who made it available for you in their free time.
To make the LVGL project sustainable, please consider [contributing](/CONTRIBUTING) to the project.
You can choose from [many different ways of contributing](/CONTRIBUTING) such as simply writing a tweet about you are using LVGL, fixing bugs, translating the documentation, or even becoming a maintainer.
## Repository layout
All repositories of the LVGL project are hosted on GitHub: https://github.com/lvgl
You will find these repositories there:
- [lvgl](https://github.com/lvgl/lvgl) The library itself with many [examples](https://github.com/lvgl/lvgl/blob/master/examples/).
- [lv_demos](https://github.com/lvgl/lv_demos) Demos created with LVGL.
- [lv_drivers](https://github.com/lvgl/lv_drivers) Display and input device drivers
- [blog](https://github.com/lvgl/blog) Source of the blog's site (https://blog.lvgl.io)
- [sim](https://github.com/lvgl/sim) Source of the online simulator's site (https://sim.lvgl.io)
- [lv_sim_...](https://github.com/lvgl?q=lv_sim&type=&language=) Simulator projects for various IDEs and platforms
- [lv_port_...](https://github.com/lvgl?q=lv_port&type=&language=) LVGL ports to development boards
- [lv_binding_..](https://github.com/lvgl?q=lv_binding&type=&language=l) Bindings to other languages
- [lv_...](https://github.com/lvgl?q=lv_&type=&language=) Ports to other platforms
## Release policy
The core repositories follow the rules of [Semantic versioning](https://semver.org/):
- Major versions for incompatible API changes. E.g. v5.0.0, v6.0.0
- Minor version for new but backward-compatible functionalities. E.g. v6.1.0, v6.2.0
- Patch version for backward-compatible bug fixes. E.g. v6.1.1, v6.1.2
Tags like `vX.Y.Z` are created for every release.
### Release cycle
- Bugfixes: Released on demand even weekly
- Minor releases: Every 3-4 months
- Major releases: Approximatelly yearly
### Branches
The core repositories have at least the following branches:
- `master` latest version, patches are merged directly here.
- `release/vX.Y` stable versions of the minor releases
- `fix/some-description` temporal branches for bug fixes
- `feat/some-description` temporal branches for features
### Changelog
The changes are recorded in [CHANGELOG.md](/CHANGELOG).
### Version support
Before v8 every minor release of major releases is supported for 1 year.
From v8 every minor release is supported for 1 year.
| Version | Release date | Support end | Active |
|---------|--------------|-------------|--------|
| v5.3 | Feb 1, 2019 |Feb 1, 2020 | No |
| v6.1 | Nov 26, 2019 |Nov 26, 2020 | No |
| v7.11 | Mar 16, 2021 |Mar 16, 2022 | Yes |
| v8.0 | In progress | | |
## FAQ
### Where can I ask questions?
You can ask questions in the forum: [https://forum.lvgl.io/](https://forum.lvgl.io/).
We use [GitHub issues](https://github.com/lvgl/lvgl/issues) for development related discussion.
So you should use them only if your question or issue is tightly related to the development of the library.
### Is my MCU/hardware supported?
Every MCU which is capable of driving a display via Parallel port, SPI, RGB interface or anything else and fulfills the [Requirements](#requirements) is supported by LLVGL.
This includes:
- "Common" MCUs like STM32F, STM32H, NXP Kinetis, LPC, iMX, dsPIC33, PIC32 etc.
- Bluetooth, GSM, WiFi modules like Nordic NRF and Espressif ESP32
- Linux with frame buffer device such as /dev/fb0. This includes Single-board computers like the Raspberry Pi
- And anything else with a strong enough MCU and a periphery to drive a display
### Is my display supported?
LVGL needs just one simple driver function to copy an array of pixels into a given area of the display.
If you can do this with your display then you can use that display with LVGL.
Some examples of the supported display types:
- TFTs with 16 or 24 bit color depth
- Monitors with HDMI port
- Small monochrome displays
- Gray-scale displays
- even LED matrices
- or any other display where you can control the color/state of the pixels
See the [Porting](/porting/display) section to learn more.
### Nothing happens, my display driver is not called. What have I missed?
Be sure you are calling `lv_tick_inc(x)` in an interrupt and `lv_timer_handler()` in your main `while(1)`.
Learn more in the [Tick](/porting/tick) and [Task handler](/porting/task-handler) section.
### Why is the display driver called only once? Only the upper part of the display is refreshed.
Be sure you are calling `lv_disp_flush_ready(drv)` at the end of your "*display flush callback*".
### Why do I see only garbage on the screen?
Probably there a bug in your display driver. Try the following code without using LVGL. You should see a square with red-blue gradient.
```c
#define BUF_W 20
#define BUF_H 10
lv_color_t buf[BUF_W * BUF_H];
lv_color_t * buf_p = buf;
uint16_t x, y;
for(y = 0; y &lt; BUF_H; y++) {
    lv_color_t c = lv_color_mix(LV_COLOR_BLUE, LV_COLOR_RED, (y * 255) / BUF_H);
    for(x = 0; x &lt; BUF_W; x++){
        (*buf_p) =  c;
        buf_p++;
    }
}
lv_area_t a;
a.x1 = 10;
a.y1 = 40;
a.x2 = a.x1 + BUF_W - 1;
a.y2 = a.y1 + BUF_H - 1;
my_flush_cb(NULL, &a, buf);
```
### Why I see nonsense colors on the screen?
Probably LVGL's color format is not compatible with your displays color format. Check `LV_COLOR_DEPTH` in *lv_conf.h*.
If you are using 16 bit colors with SPI (or other byte-oriented interface) probably you need to set `LV_COLOR_16_SWAP  1` in *lv_conf.h*.
It swaps the upper and lower bytes of the pixels.
### How to speed up my UI?
- Turn on compiler optimization and enable cache if your MCU has
- Increase the size of the display buffer
- Use 2 display buffers and flush the buffer with DMA (or similar periphery) in the background
- Increase the clock speed of the SPI or Parallel port if you use them to drive the display
- If your display has SPI port consider changing to a model with parallel because it has much higher throughput
- Keep the display buffer in the internal RAM (not in external SRAM) because LVGL uses it a lot and it should have a small access time
 
### How to reduce flash/ROM usage?
You can disable all the unused features (such as animations, file system, GPU etc.) and object types in *lv_conf.h*.
If you are using GCC you can add
- `-fdata-sections -ffunction-sections` compiler flags
- `--gc-sections` linker flag
to remove unused functions and variables from the final binary
### How to reduce the RAM usage
- Lower the size of the *Display buffer*
- Reduce `LV_MEM_SIZE` in *lv_conf.h*. This memory used when you create objects like buttons, labels, etc.
- To work with lower `LV_MEM_SIZE` you can create the objects only when required and deleted them when they are not required anymore
 
### How to work with an operating system?
To work with an operating system where tasks can interrupt each other (preemptive) you should protect LVGL related function calls with a mutex.
See the [Operating system and interrupts](/porting/os) section to learn more.

113
docs/layouts/flex.md Normal file
View File

@@ -0,0 +1,113 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/layouts/flex.md
```
# Flex
## Overview
The Flexbox (or Flex for short) is a subset of [CSS Flexbox](https://css-tricks.com/snippets/css/a-guide-to-flexbox/).
It can arrange items into rows or columns (tracks), handle wrapping, adjust the spacing between the items and tracks, handle *grow* to make the item(s) fill the remaining space with respect to min/max width and height.
To make an object flex container call `lv_obj_set_layout(obj, LV_LAYOUT_FLEX)`.
Note that the flex layout feature of LVGL needs to be globally enabled with `LV_USE_FLEX` in `lv_conf.h`.
## Terms
- tracks: the rows or columns
- main direction: row or column, the direction in which the items are placed
- cross direction: perpendicular to the main direction
- wrap: if there there is no more space in the track a new track is started
- grow: if set on an item it will grow to fill the remaining space on the track.
The available space will be distributed among items respective to the their grow value (larger value means more space)
- gap: the space between the rows and columns or the items on a track
## Simple interface
With the following functions you can set a Flex layout on any parent.
### Flex flow
`lv_obj_set_flex_flow(obj, flex_flow)`
The possible values for `flex_flow` are:
- `LV_FLEX_FLOW_ROW` Place the children in a row without wrapping
- `LV_FLEX_FLOW_COLUMN` Place the children in a column without wrapping
- `LV_FLEX_FLOW_ROW_WRAP` Place the children in a row with wrapping
- `LV_FLEX_FLOW_COLUMN_WRAP` Place the children in a column with wrapping
- `LV_FLEX_FLOW_ROW_REVERSE` Place the children in a row without wrapping but in reversed order
- `LV_FLEX_FLOW_COLUMN_REVERSE` Place the children in a column without wrapping but in reversed order
- `LV_FLEX_FLOW_ROW_WRAP_REVERSE` Place the children in a row without wrapping but in reversed order
- `LV_FLEX_FLOW_COLUMN_WRAP_REVERSE` Place the children in a column without wrapping but in reversed order
### Flex align
To manage the placement of the children use `lv_obj_set_flex_align(obj, main_place, cross_place, track_cross_place)`
- `main_place` determines how to distribute the items in their track on the main axis. E.g. flush the items to the right on `LV_FLEX_FLOW_ROW_WRAP`. (It's called `justify-content` in CSS)
- `cross_place` determines how to distribute the items in their track on the cross axis. E.g. if the items have different height place them to the bottom of the track. (It's called `align-items` in CSS)
- `track_cross_place` determines how to distribute the tracks (It's called `align-content` in CSS)
The possible values are:
- `LV_FLEX_ALIGN_START` means left on a horizontally and top vertically. (default)
- `LV_FLEX_ALIGN_END` means right on a horizontally and bottom vertically
- `LV_FLEX_ALIGN_CENTER` simply center
- `LV_FLEX_ALIGN_SPACE_EVENLY` items are distributed so that the spacing between any two items (and the space to the edges) is equal. Does not apply to `track_cross_place`.
- `LV_FLEX_ALIGN_SPACE_AROUND` items are evenly distributed in the track with equal space around them.
Note that visually the spaces arent equal, since all the items have equal space on both sides.
The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing that applies. Not applies to `track_cross_place`.
- `LV_FLEX_ALIGN_SPACE_BETWEEN` items are evenly distributed in the track: first item is on the start line, last item on the end line. Not applies to `track_cross_place`.
### Flex grow
Flex grow can be used to make one or more children fill the available space on the track. If more children has grow the available space will be distributed proportionally to the grow values.
For example let's there is 400 px remaining space and 4 object with grow:
- `A` with grow = 1
- `B` with grow = 1
- `C` with grow = 2
`A` and `B` will have 100 px size, and `C` will have 200 px size.
Flex grow can be set on a child with `lv_obj_set_flex_flow(child, value)`. `value` needs to be &gt; 1 or 0 to disable grow on the child.
## Style interface
All the Flex-related values are style properties under the hood and you can use them similarly to any other style property. The following flex related style properties exist:
- `FLEX_FLOW`
- `FLEX_MAIN_PLACE`
- `FLEX_CROSS_PLACE`
- `FLEX_TRACK_PLACE`
- `FLEX_GROW`
## Other features
### RTL
If the base direction of the container is set the `LV_BASE_DIR_RTL` the meaning of `LV_FLEX_ALIGN_START` and `LV_FLEX_ALIGN_END` is swapped on `ROW` layouts. I.e. `START` will mean right.
The items on `ROW` layouts, and tracks of `COLUMN` layouts will be placed from right to left.
### New track
You can force Flex to put an item into a new line with `lv_obj_add_flag(child, LV_OBJ_FLAG_FLEX_IN_NEW_TRACK)`.
## Example
```eval_rst
.. include:: ../../examples/layouts/flex/index.rst
```
## API
```eval_rst
.. doxygenfile:: lv_flex.h
:project: lvgl
```

110
docs/layouts/grid.md Normal file
View File

@@ -0,0 +1,110 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/layouts/grid.md
```
# Grid
## Overview
The Grid layout is a subset of [CSS Flexbox](https://css-tricks.com/snippets/css/complete-guide-grid/).
It can arrange items into 2D "table" that has rows or columns (tracks). The item can span through multiple columns or rows.
The track's size can be set in pixel, to the largest item (`LV_GRID_CONTENT`) or in "Free unit" (FR) to distribute the free space proportionally.
To make an object a grid container call `lv_obj_set_layout(obj, LV_LAYOUT_GRID)`.
Note that the grid layout feature of LVGL needs to be globally enabled with `LV_USE_GRID` in `lv_conf.h`.
## Terms
- tracks: the rows or columns
- free unit (FR): if set on track's size is set in `FR` it will grow to fill the remaining space on the parent.
- gap: the space between the rows and columns or the items on a track
## Simple interface
With the following functions you can easily set a Grid layout on any parent.
### Grid descriptors
First you need to describe the size of rows and columns. It can be done by declaring 2 arrays and the track sizes in them. The last element must be `LV_GRID_TEMPLATE_LAST`.
For example:
```
static lv_coord_t column_dsc[] = {100, 400, LV_GRID_TEMPLATE_LAST}; /*2 columns with 100 and 400 ps width*/
static lv_coord_t row_dsc[] = {100, 100, 100, LV_GRID_TEMPLATE_LAST}; /*3 100 px tall rows*/
```
To set the descriptors on a parent use `lv_obj_set_grid_dsc_array(obj, col_dsc, row_dsc)`.
Besides simple settings the size in pixel you can use two special values:
- `LV_GRID_CONTENT` set the width to the largest children on this track
- `LV_GRID_FR(X)` tell what portion of the remaining space should be used by this track. Larger value means larger space.
### Grid items
By default the children are not added to the grid. They need to be added manually to a cell.
To do this call `lv_obj_set_grid_cell(child, column_align, column_pos, column_span, row_align, row_pos, row_span)`.
`column_align` and `row_align` determine how to align the children in its cell. The possible values are:
- `LV_GRID_ALIGN_START` means left on a horizontally and top vertically. (default)
- `LV_GRID_ALIGN_END` means right on a horizontally and bottom vertically
- `LV_GRID_ALIGN_CENTER` simply center
`colum_pos` and `row_pos` means the zero based index of the cell into the item should be placed.
`colum_span` and `row_span` means how many tracks should the item involve from the start cell. Must be &gt; 1.
### Grid align
If there are some empty space the track can be aligned several ways:
- `LV_GRID_ALIGN_START` means left on a horizontally and top vertically. (default)
- `LV_GRID_ALIGN_END` means right on a horizontally and bottom vertically
- `LV_GRID_ALIGN_CENTER` simply center
- `LV_GRID_ALIGN_SPACE_EVENLY` items are distributed so that the spacing between any two items (and the space to the edges) is equal. Not applies to `track_cross_place`.
- `LV_GRID_ALIGN_SPACE_AROUND` items are evenly distributed in the track with equal space around them.
Note that visually the spaces arent equal, since all the items have equal space on both sides.
The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing that applies. Not applies to `track_cross_place`.
- `LV_GRID_ALIGN_SPACE_BETWEEN` items are evenly distributed in the track: first item is on the start line, last item on the end line. Not applies to `track_cross_place`.
To set the track's alignment use `lv_obj_set_grid_align(obj, column_align, row_align)`.
## Style interface
All the Grid related values are style properties under the hood and you can use them similarly to any other style properties. The following Grid related style properties exist:
- `GRID_COLUMN_DSC_ARRAY`
- `GRID_ROW_DSC_ARRAY`
- `GRID_COLUMN_ALIGN`
- `GRID_ROW_ALIGN`
- `GRID_CELL_X_ALIGN`
- `GRID_CELL_COLUMN_POS`
- `GRID_CELL_COLUMN_SPAN`
- `GRID_CELL_Y_ALIGN`
- `GRID_CELL_ROW_POS`
- `GRID_CELL_ROW_SPAN`
## Other features
### RTL
If the base direction of the container is set to `LV_BASE_DIR_RTL`, the meaning of `LV_GRID_ALIGN_START` and `LV_GRID_ALIGN_END` is swapped. I.e. `START` will mean right-most.
The columns will be placed from right to left.
## Example
```eval_rst
.. include:: ../../examples/layouts/grid/index.rst
```
## API
```eval_rst
.. doxygenfile:: lv_grid.h
:project: lvgl
```

15
docs/layouts/index.md Normal file
View File

@@ -0,0 +1,15 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/layouts/index.md
```
# Layouts
```eval_rst
.. toctree::
:maxdepth: 2
flex
grid
```

BIN
docs/logo_lvgl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
docs/misc/align.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
docs/misc/bidi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
docs/misc/boxmodel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
docs/misc/codeblocks.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
docs/misc/eclipse.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
docs/misc/layers.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

BIN
docs/misc/par_child1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 973 B

BIN
docs/misc/par_child2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

BIN
docs/misc/par_child3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 B

BIN
docs/misc/platformio.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
docs/misc/qtcreator.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
docs/misc/symbols.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
docs/misc/sys.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
docs/misc/visualstudio.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

122
docs/overview/animation.md Normal file
View File

@@ -0,0 +1,122 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/animation.md
```
# Animations
You can automatically change the value of a variable between a start and an end value using animations.
The animation will happen by periodically calling an "animator" function with the corresponding value parameter.
The *animator* functions have the following prototype:
```c
void func(void * var, lv_anim_var_t value);
```
This prototype is compatible with the majority of the *set* functions of LVGL. For example `lv_obj_set_x(obj, value)` or `lv_obj_set_width(obj, value)`
## Create an animation
To create an animation an `lv_anim_t` variable has to be initialized and configured with `lv_anim_set_...()` functions.
```c
/* INITIALIZE AN ANIMATION
*-----------------------*/
lv_anim_t a;
lv_anim_init(&a);
/* MANDATORY SETTINGS
*------------------*/
/*Set the "animator" function*/
lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) lv_obj_set_x);
/*Set the "animator" function*/
lv_anim_set_var(&a, obj);
/*Length of the animation [ms]*/
lv_anim_set_time(&a, duration);
/*Set start and end values. E.g. 0, 150*/
lv_anim_set_values(&a, start, end);
/* OPTIONAL SETTINGS
*------------------*/
/*Time to wait before starting the animation [ms]*/
lv_anim_set_delay(&a, delay);
/*Set path (curve). Default is linear*/
lv_anim_set_path(&a, lv_anim_path_ease_in);
/*Set a callback to call when animation is ready.*/
lv_anim_set_ready_cb(&a, ready_cb);
/*Set a callback to call when animation is started (after delay).*/
lv_anim_set_start_cb(&a, start_cb);
/*Play the animation backward too with this duration. Default is 0 (disabled) [ms]*/
lv_anim_set_playback_time(&a, wait_time);
/*Delay before playback. Default is 0 (disabled) [ms]*/
lv_anim_set_playback_delay(&a, wait_time);
/*Number of repetitions. Default is 1. LV_ANIM_REPEAT_INFINIT for infinite repetition*/
lv_anim_set_repeat_count(&a, wait_time);
/*Delay before repeat. Default is 0 (disabled) [ms]*/
lv_anim_set_repeat_delay(&a, wait_time);
/*true (default): apply the start vale immediately, false: apply start vale after delay when then anim. really starts. */
lv_anim_set_early_apply(&a, true/false);
/* START THE ANIMATION
*------------------*/
lv_anim_start(&a); /*Start the animation*/
```
You can apply multiple different animations on the same variable at the same time.
For example, animate the x and y coordinates with `lv_obj_set_x` and `lv_obj_set_y`. However, only one animation can exist with a given variable and function pair.
Therefore `lv_anim_start()` will delete the already existing variable-function animations.
## Animation path
You can determinate the path of animation. The most simple case is linear, meaning the current value between *start* and *end* is changed with fixed steps.
A *path* is a function which calculates the next value to set based on the current state of the animation. Currently, there are the following built-in paths functions:
- `lv_anim_path_linear` linear animation
- `lv_anim_path_step` change in one step at the end
- `lv_anim_path_ease_in` slow at the beginning
- `lv_anim_path_ease_out` slow at the end
- `lv_anim_path_ease_in_out` slow at the beginning and at the end
- `lv_anim_path_overshoot` overshoot the end value
- `lv_anim_path_bounce` bounce back a little from the end value (like hitting a wall)
## Speed vs time
By default, you set the animation time. But in some cases, setting the animation speed is more practical.
The `lv_anim_speed_to_time(speed, start, end)` function calculates the required time in milliseconds to reach the end value from a start value with the given speed.
The speed is interpreted in _unit/sec_ dimension. For example, `lv_anim_speed_to_time(20,0,100)` will yield 5000 milliseconds. For example, in case of `lv_obj_set_x` *unit* is pixels so *20* means *20 px/sec* speed.
## Delete animations
You can delete an animation with `lv_anim_del(var, func)` if you provide the animated variable and its animator function.
## Examples
```eval_rst
.. include:: ../../examples/anim/index.rst
```
## API
```eval_rst
.. doxygenfile:: lv_anim.h
:project: lvgl
```

157
docs/overview/color.md Normal file
View File

@@ -0,0 +1,157 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/color.md
```
# Colors
The color module handles all color-related functions like changing color depth, creating colors from hex code, converting between color depths, mixing colors, etc.
`lv_color_t` is used to store a color, its fileds are set according to `LV_COLOR_DEPTH` in `lv_conf.h`. (See below)
You may set `LV_COLOR_16_SWAP` in `lv_conf.h` to swap the bytes of *RGB565* colors. You may need this to send the 16-bit colors via a byte-oriented interface like SPI. As 16-bit numbers are stored in Little Endian format (lower byte on the lower address), the interface will send the lower byte first. However, displays usually need the higher byte first. A mismatch in the byte order will result in highly distorted colors.
## Creating colors
### RGB
Create colors from Red, Green and Blue channel values
```c
//All channels are 0-255
lv_color_t c = lv_color_make(red, green, blue);
//From hex code 0x000000..0xFFFFFF interpreted as RED + GREEN + BLUE
lv_color_t c = lv_color_hex(0x123456);
//From 3 digits. Same as lv_color_hex(0x112233)
lv_color_t c = lv_color_hex3(0x123);
```
### HSV
Create colors from Hue, Saturation and Value values
```c
//h = 0..359, s = 0..100, v = 0..100
lv_color_t c = lv_color_hsv_to_rgb(h, s, v);
//All channels are 0-255
lv_color_hsv_t c_hsv = lv_color_rgb_to_hsv(r, g, b);
//From lv_color_t variable
lv_color_hsv_t c_hsv = lv_color_to_hsv(color);
```
### Palette
LVGL includes [material design's palette](https://vuetifyjs.com/en/styles/colors/#material-colors). In this all color have a main as well as four darker and five lighter variants.
The names of the colors are as follows:
- `LV_PALETTE_RED`
- `LV_PALETTE_PINK`
- `LV_PALETTE_PURPLE`
- `LV_PALETTE_DEEP_PURPLE`
- `LV_PALETTE_INDIGO`
- `LV_PALETTE_BLUE`
- `LV_PALETTE_LIGHT_BLUE`
- `LV_PALETTE_CYAN`
- `LV_PALETTE_TEAL`
- `LV_PALETTE_GREEN`
- `LV_PALETTE_LIGHT_GREEN`
- `LV_PALETTE_LIME`
- `LV_PALETTE_YELLOW`
- `LV_PALETTE_AMBER`
- `LV_PALETTE_ORANGE`
- `LV_PALETTE_DEEP_ORANGE`
- `LV_PALETTE_BROWN`
- `LV_PALETTE_BLUE_GREY`
- `LV_PALETTE_GREY`
To get the main color use `lv_color_t c = lv_palette_main(LV_PALETTE_...)`.
For the lighter variants of a palette color use `lv_color_t c = lv_palette_lighten(LV_PALETTE_..., v)`. `v` can be 1..5.
For the darker variants of a palette color use `lv_color_t c = lv_palette_darken(LV_PALETTE_..., v)`. `v` can be 1..4.
### Modify and mix colors
The following functions can modify a color:
```c
// Lighten a color. 0: no change, 255: white
lv_color_t c = lv_color_lighten(c, lvl);
// Darken a color. 0: no change, 255: black
lv_color_t c = lv_color_darken(lv_color_t c, lv_opa_t lvl);
// Lighten or darken a color. 0: black, 128: no change 255: black
lv_color_t c = lv_color_change_lightness(lv_color_t c, lv_opa_t lvl);
// Mix 2 colors with a given ratio 0: full c2, 255: full c1, 128: half c1 and half c2
lv_color_t c = lv_color_mix(c1, c2, ratio);
```
### Built-in colors
`lv_color_white()` and `lv_color_black()` return `0xFFFFFF` and `0x000000` respectively.
## Opacity
To describe opacity the `lv_opa_t` type is created as a wrapper to `uint8_t`. Some defines are also introduced:
- `LV_OPA_TRANSP` Value: 0, means the opacity makes the color completely transparent
- `LV_OPA_10` Value: 25, means the color covers only a little
- `LV_OPA_20 ... OPA_80` come logically
- `LV_OPA_90` Value: 229, means the color near completely covers
- `LV_OPA_COVER` Value: 255, means the color completely covers
You can also use the `LV_OPA_*` defines in `lv_color_mix()` as a *ratio*.
## Color types
The following variable types are defined by the color module:
- `lv_color1_t` Monochrome color. Also has R, G, B fields for compatibility but they are always the same value (1 byte)
- `lv_color8_t` A structure to store R (3 bit),G (3 bit),B (2 bit) components for 8-bit colors (1 byte)
- `lv_color16_t` A structure to store R (5 bit),G (6 bit),B (5 bit) components for 16-bit colors (2 byte)
- `lv_color32_t` A structure to store R (8 bit),G (8 bit), B (8 bit) components for 24-bit colors (4 byte)
- `lv_color_t` Equal to `lv_color1/8/16/24_t` depending on current color depth setting
- `lv_color_int_t` `uint8_t`, `uint16_t` or `uint32_t` depending on color depth setting. Used to build color arrays from plain numbers.
- `lv_opa_t` A simple `uint8_t` type to describe opacity.
The `lv_color_t`, `lv_color1_t`, `lv_color8_t`, `lv_color16_t` and `lv_color32_t` types have four fields:
- `ch.red` red channel
- `ch.green` green channel
- `ch.blue` blue channel
- `full*` red + green + blue as one number
You can set the current color depth in *lv_conf.h*, by setting the `LV_COLOR_DEPTH` define to 1 (monochrome), 8, 16 or 32.
### Convert color
You can convert a color from the current color depth to another. The converter functions return with a number, so you have to use the `full` field:
```c
lv_color_t c;
c.red = 0x38;
c.green = 0x70;
c.blue = 0xCC;
lv_color1_t c1;
c1.full = lv_color_to1(c); /*Return 1 for light colors, 0 for dark colors*/
lv_color8_t c8;
c8.full = lv_color_to8(c); /*Give a 8 bit number with the converted color*/
lv_color16_t c16;
c16.full = lv_color_to16(c); /*Give a 16 bit number with the converted color*/
lv_color32_t c24;
c32.full = lv_color_to32(c); /*Give a 32 bit number with the converted color*/
```
## API
```eval_rst
.. doxygenfile:: lv_color.h
:project: lvgl
```

368
docs/overview/coords.md Normal file
View File

@@ -0,0 +1,368 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/coords.md
```
# Positions, sizes, and layouts
## Overview
Similarly to many other parts of LVGL, the concept of setting the coordinates was inspired by CSS. By no means a complete implementation of the standard but subsets of CSS were implemented (sometimes with minor adjustments).
In shorts this means:
- the set coordinates (size, position, layouts, etc) are stored in styles
- support min-width, max-width, min-height, max-height
- have pixel, percentage, and "content" units
- x=0; y=0 coordinate means the to top-left corner of the parent plus the left/top padding plus border width
- width/height means the full size, the "content area" is smaller with padding and border width
- a subset of flexbox and grid layouts are supported
### Units
- pixel: Simply a position in pixels. A simple integer always means pixel. E.g. `lv_obj_set_x(btn, 10)`
- percentage: The percentage of the size of the object or its parent (depending on the property). The `lv_pct(value)` converts a value to percentage. E.g. `lv_obj_set_width(btn, lv_pct(50))`
- `LV_SIZE_CONTENT`: Special value to set the width/height of an object to involve all the children. Its similar to `auto` in CSS. E.g. `lv_obj_set_width(btn, LV_SIZE_CONTENT)`.
### Boxing model
LVGL follows CSS's [border-box](https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing) model.
An object's "box" is built from the following parts:
- bounding box: the width/height of the elements.
- border width: the width of the border.
- padding: space between the sides of the object and its children.
- content: the content area which size if the bounding box reduced by the border width and the size of the paddings.
![The box models of LVGL: The content area is smaller then the bounding box with the padding and border width](/misc/boxmodel.png)
The border is drawn inside the bounding box. Inside the border LVGL keeps "padding size" to place the children.
The outline is drawn outside of the bounding box.
### Important notes
This section describes special cases in which LVGL's behavior might be unexpected.
#### Postponed coordinate calculation
LVGL doesn't recalculate all the coordinate changes immediately. This is done to improve performance.
Instead, the objects are marked as "dirty" and before redrawing the screen LVGL checks if there are any "dirty" objects. If so it refreshes their position, size and layout.
In other words, if you need to get the any coordinate of an object and it the coordinates were just changed LVGL's needs to be forced to recalculate the coordinates.
To do this call `lv_obj_update_layout(obj)`.
The size and position might depend on the parent or layout. Therefore `lv_obj_update_layout` recalculates the coordinates of all objects on the screen of `obj`.
#### Removing styles
As it's described in the [Using styles](#using-styles) section the coordinates can be set via style properties too.
To be more precise under the hood every style coordinate related property is stored as style a property. If you use `lv_obj_set_x(obj, 20)` LVGL saves `x=20` in the local style of the object.
It's an internal mechanism and doesn't matter much as you use LVGL. However, there is one case in which you need to aware of that. If the style(s) of an object are removed by
```c
lv_obj_remove_style_all(obj)
```
or
```c
lv_obj_remove_style(obj, NULL, LV_PART_MAIN);
```
the earlier set coordinates will be removed as well.
For example:
```c
/*The size of obj1 will be set back to the default in the end*/
lv_obj_set_size(obj1, 200, 100); /*Now obj1 has 200;100 size*/
lv_obj_remove_style_all(obj1); /*It removes the set sizes*/
/*obj2 will have 200;100 size in the end */
lv_obj_remove_style_all(obj2);
lv_obj_set_size(obj2, 200, 100);
```
## Position
### Simple way
To simple set the x and y coordinates of an object use
```c
lv_obj_set_x(obj, 10);
lv_obj_set_y(obj, 20);
lv_obj_set_pos(obj, 10, 20); //Or in one function
```
By default the the x and y coordinates are measured from the top left corner of the parent's content area.
For example if the parent has 5 pixels padding on every side, the above code will place `obj` at (15, 25) because the content area starts after the padding.
If percentage values are calculated from the parents content area size.
```c
lv_obj_set_x(btn, lv_pct(10)); //x = 10 % of parant content area width
```
### Align
In some cases it's convenient to change the origin of the positioning from the the default top left. If the origin is changed e.g. to bottom-right, the (0,0) position means: align to the bottom-right corner.
To change the origin use:
```c
lv_obj_set_align(obj, align);
```
To change the alignment and set new coordinates:
```c
lv_obj_align(obj, align, x, y);
```
The following alignment options can be used:
- `LV_ALIGN_TOP_LEFT`
- `LV_ALIGN_TOP_MID`
- `LV_ALIGN_TOP_RIGHT`
- `LV_ALIGN_BOTTOM_LEFT`
- `LV_ALIGN_BOTTOM_MID`
- `LV_ALIGN_BOTTOM_RIGHT`
- `LV_ALIGN_LEFT_MID`
- `LV_ALIGN_RIGHT_MID`
- `LV_ALIGN_CENTER`
It quite common to align a children to the center of its parent, there fore is a dedicated function for it:
```c
lv_obj_center(obj);
//Has the same effect
lv_obj_align(obj, LV_ALIGN_CENTER, 0, 0);
```
If the parent's size changes the set alignment and position of the children is applied again automatically.
The functions introduced above aligns the object to its parent. However it's also possible to align an object to an arbitrary object.
```c
lv_obj_align_to(obj_to_align, reference_obj, align, x, y);
```
Besides the alignments options above the following can be used to align the object outside of the reference object:
- `LV_ALIGN_OUT_TOP_LEFT`
- `LV_ALIGN_OUT_TOP_MID`
- `LV_ALIGN_OUT_TOP_RIGHT`
- `LV_ALIGN_OUT_BOTTOM_LEFT`
- `LV_ALIGN_OUT_BOTTOM_MID`
- `LV_ALIGN_OUT_BOTTOM_RIGHT`
- `LV_ALIGN_OUT_LEFT_TOP`
- `LV_ALIGN_OUT_LEFT_MID`
- `LV_ALIGN_OUT_LEFT_BOTTOM`
- `LV_ALIGN_OUT_RIGHT_TOP`
- `LV_ALIGN_OUT_RIGHT_MID`
- `LV_ALIGN_OUT_RIGHT_BOTTOM`
For example to align a label above a button and center the label horizontally:
```c
lv_obj_align_to(label, btn, LV_ALIGN_OUT_TOP_MID, 0, -10);
```
Note that - unlike with `lv_obj_align()` - `lv_obj_align_to()` can not realign the object if its coordinates or the reference object's coordinates changes.
## Size
### Simple way
The width and the height of an object can be set easily as well:
```c
lv_obj_set_width(obj, 200);
lv_obj_set_height(obj, 100);
lv_obj_set_size(obj, 200, 100); //Or in one function
```
Percentage values are calculated based on the parent's content area size. For example to set the object's height to the screen height:
```c
lv_obj_set_height(obj, lv_pct(100));
```
Size setting supports a value: `LV_SIZE_CONTENT`. It means the object's size in the respective direction will be set to the size of its children.
Note that only children on the right and bottom will be considered and children on the top and left remain cropped. This limitation makes the behavior more predictable.
Objects with `LV_OBJ_FLAG_HIDDEN` or `LV_OBJ_FLAG_FLOATING` will be ignored by the `LV_SIZE_CONTENT` calculation.
The above functions set the size of the bounding box of the object but the size of the content area can be set as well. It means the object's bounding box will be larger with the paddings than the set size.
```c
lv_obj_set_content_width(obj, 50); //The actual width: padding left + 50 + padding right
lv_obj_set_content_height(obj, 30); //The actual width: padding top + 30 + padding bottom
```
The size of the bounding box and the content area can be get with the following functions:
```c
lv_coord_t w = lv_obj_get_width(obj);
lv_coord_t h = lv_obj_get_height(obj);
lv_coord_t content_w = lv_obj_get_content_width(obj);
lv_coord_t content_h = lv_obj_get_content_height(obj);
```
## Using styles
Under the hood the position, size and alignment properties are style properties.
The above described "simple functions" hide the style related code for the sake of simplicity and set the position, size, and alignment properties in the local styles of the obejct.
However, using styles as to set the coordinates has some great advantages:
- It makes it easy to set the width/height/etc for several objects together. E.g. make all the sliders 100x10 pixels sized.
- It also makes possible to modify the values in one place.
- The values can be overwritten by other styles. For example `style_btn` makes the object `100x50` by default but adding `style_full_width` overwrites only the width of the object.
- The object can have different position or size in different state. E.g. 100 px wide in `LV_STATE_DEFAULT` but 120 px in `LV_STATE_PRESSED`.
- Style transitions can be used to make the coordinate changes smooth.
Here are some examples to set an object's size using a style:
```c
static lv_style_t style;
lv_style_init(&style);
lv_style_set_width(&style, 100);
lv_obj_t * btn = lv_btn_create(lv_scr_act());
lv_obj_add_style(btn, &style, LV_PART_MAIN);
```
As you will see below there are some other great features of size and position setting.
However, to keep the LVGL's API lean only the most common coordinate setting features have a "simple" version and the more complex features can be used via styles.
## Translation
Let's say the there are 3 buttons next to each other. Their position is set as described above.
Now you want to move a buttons up a little when it's pressed.
One way to achieve this is setting a new Y coordinate for pressed state:
```c
static lv_style_t style_normal;
lv_style_init(&style_normal);
lv_style_set_y(&style_normal, 100);
static lv_style_t style_pressed;
lv_style_init(&style_pressed);
lv_style_set_y(&style_pressed, 80);
lv_obj_add_style(btn1, &style_normal, LV_STATE_DEFAULT);
lv_obj_add_style(btn1, &style_pressed, LV_STATE_PRESSED);
lv_obj_add_style(btn2, &style_normal, LV_STATE_DEFAULT);
lv_obj_add_style(btn2, &style_pressed, LV_STATE_PRESSED);
lv_obj_add_style(btn3, &style_normal, LV_STATE_DEFAULT);
lv_obj_add_style(btn3, &style_pressed, LV_STATE_PRESSED);
```
It works but it's not really flexible because the pressed coordinate is hard-coded. If the buttons are not at y=100 `style_pressed` won't work as expected. To solve this translations can be used:
```c
static lv_style_t style_normal;
lv_style_init(&style_normal);
lv_style_set_y(&style_normal, 100);
static lv_style_t style_pressed;
lv_style_init(&style_pressed);
lv_style_set_translate_y(&style_pressed, -20);
lv_obj_add_style(btn1, &style_normal, LV_STATE_DEFAULT);
lv_obj_add_style(btn1, &style_pressed, LV_STATE_PRESSED);
lv_obj_add_style(btn2, &style_normal, LV_STATE_DEFAULT);
lv_obj_add_style(btn2, &style_pressed, LV_STATE_PRESSED);
lv_obj_add_style(btn3, &style_normal, LV_STATE_DEFAULT);
lv_obj_add_style(btn3, &style_pressed, LV_STATE_PRESSED);
```
Translation is applied from the current position of the object.
Percentage values can be used in translations as well. The percentage is relative to the size of the object (and not to the size of the parent). For example `lv_pct(50)` will move the object with half of its width/height.
The translation is applied after the layouts are calculated. Therefore, even the layouted objects' position can be translated.
The translation actually moves the object. It means it makes the scrollbars and `LV_SIZE_CONTENT` sized objects react to the position change.
## Transformation
Similarly to the position the size can be changed relative to the current size as well.
The transformed width and height are added on both sides of the object. This means 10 px transformed width makes the object 2x10 pixel wider.
Unlike position translation, the size transformation doesn't make the object "really" larger. In other words scrollbars, layouts, `LV_SIZE_CONTENT` will not consider the transformed size.
Hence size transformation if "only" a visual effect.
This code makes the a button larger when it's pressed:
```c
static lv_style_t style_pressed;
lv_style_init(&style_pressed);
lv_style_set_transform_width(&style_pressed, 10);
lv_style_set_transform_height(&style_pressed, 10);
lv_obj_add_style(btn, &style_pressed, LV_STATE_PRESSED);
```
### Min and Max size
Similarly to CSS, LVGL also support `min-width`, `max-width`, `min-height` and `max-height`. These are limits preventing an object's size to be smaller/larger then these values.
They are especially useful if the size is set by percentage or `LV_SIZE_CONTENT`.
```c
static lv_style_t style_max_height;
lv_style_init(&style_max_height);
lv_style_set_y(&style_max_height, 200);
lv_obj_set_height(obj, lv_pct(100));
lv_obj_add_style(obj, &style_max_height, LV_STATE_DEFAULT); //Limit the height to 200 px
```
Percentage values can be used as well which are relative to the size of the parent's content area size.
```c
static lv_style_t style_max_height;
lv_style_init(&style_max_height);
lv_style_set_y(&style_max_height, lv_pct(50));
lv_obj_set_height(obj, lv_pct(100));
lv_obj_add_style(obj, &style_max_height, LV_STATE_DEFAULT); //Limit the height to half parent height
```
## Layout
### Overview
Layouts can update the position and size of an object's children. They can be used to automatically arrange the children into a line or column, or in much more complicated forms.
The position and size set by the layout overwrites the "normal" x, y, width, and height settings.
There is only one function that is the same for every layout: `lv_obj_set_layout(obj, <LAYOUT_NAME>)` sets the layout on an object.
For the further settings of the parent and children see the documentations of the given layout.
### Built-in layout
LVGL comes with two very powerful layouts:
- Flexbox
- Grid
Both are heavily inspired by the CSS layouts with the same name.
### Flags
There are some flags that can be used on object to affect how they behave with layouts:
- `LV_OBJ_FLAG_HIDDEN` Hidden object are ignored from layout calculations.
- `LV_OBJ_FLAG_IGNORE_LAYOUT` The object is simply ignored by the layouts. Its coordinates can be set as usual.
- `LV_OBJ_FLAG_FLOATING` Same as `LV_OBJ_FLAG_IGNORE_LAYOUT` but the object with `LV_OBJ_FLAG_FLOATING` will be ignored from `LV_SIZE_CONTENT` calculations.
These flags can be added/removed with `lv_obj_add/clear_flag(obj, FLAG);`
### Adding new layouts
LVGL can be freely extended by a custom layouts like this:
```c
uint32_t MY_LAYOUT;
...
MY_LAYOUT = lv_layout_register(my_layout_update, &user_data);
...
void my_layout_update(lv_obj_t * obj, void * user_data)
{
/*Will be called automatically if required to reposition/resize the children of "obj" */
}
```
Custom style properties can be added too that can be get and used in the update callback. For example:
```c
uint32_t MY_PROP;
...
LV_STYLE_MY_PROP = lv_style_register_prop();
...
static inline void lv_style_set_my_prop(lv_style_t * style, uint32_t value)
{
lv_style_value_t v = {
.num = (int32_t)value
};
lv_style_set_prop(style, LV_STYLE_MY_PROP, v);
}
```
## Examples

108
docs/overview/display.md Normal file
View File

@@ -0,0 +1,108 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/display.md
```
# Displays
``` important:: The basic concept of *display* in LVGL is explained in the [Porting](/porting/display) section. So before reading further, please read the [Porting](/porting/display) section first.
```
## Multiple display support
In LVGL, you can have multiple displays, each with their own driver and objects. The only limitation is that every display needs to be have same color depth (as defined in `LV_COLOR_DEPTH`).
If the displays are different in this regard the rendered image can be converted to the correct format in the drivers `flush_cb`.
Creating more displays is easy: just initialize more display buffers and register another driver for every display.
When you create the UI, use `lv_disp_set_default(disp)` to tell the library on which display to create objects.
Why would you want multi-display support? Here are some examples:
- Have a "normal" TFT display with local UI and create "virtual" screens on VNC on demand. (You need to add your VNC driver).
- Have a large TFT display and a small monochrome display.
- Have some smaller and simple displays in a large instrument or technology.
- Have two large TFT displays: one for a customer and one for the shop assistant.
### Using only one display
Using more displays can be useful but in most cases it's not required. Therefore, the whole concept of multi-display is completely hidden if you register only one display.
By default, the lastly created (and only) display is used.
`lv_scr_act()`, `lv_scr_load(scr)`, `lv_layer_top()`, `lv_layer_sys()`, `LV_HOR_RES` and `LV_VER_RES` are always applied on the most recently created (default) screen.
If you pass `NULL` as `disp` parameter to display related function, usually the default display will be used.
E.g. `lv_disp_trig_activity(NULL)` will trigger a user activity on the default screen. (See below in [Inactivity](#Inactivity)).
### Mirror display
To mirror the image of the display to another display, you don't need to use the multi-display support. Just transfer the buffer received in `drv.flush_cb` to the other display too.
### Split image
You can create a larger display from smaller ones. You can create it as below:
1. Set the resolution of the displays to the large display's resolution.
2. In `drv.flush_cb`, truncate and modify the `area` parameter for each display.
3. Send the buffer's content to each display with the truncated area.
## Screens
Every display has each set of [Screens](overview/object#screen-the-most-basic-parent) and the object on the screens.
Be sure not to confuse displays and screens:
* **Displays** are the physical hardware drawing the pixels.
* **Screens** are the high-level root objects associated with a particular display. One display can have multiple screens associated with it, but not vice versa.
Screens can be considered the highest level containers which have no parent.
The screen's size is always equal to its display and size their position is (0;0). Therefore, the screens coordinates can't be changed, i.e. `lv_obj_set_pos()`, `lv_obj_set_size()` or similar functions can't be used on screens.
A screen can be created from any object type but the two most typical types are the [Base object](/widgets/obj) and the [Image](/widgets/core/img) (to create a wallpaper).
To create a screen, use `lv_obj_t * scr = lv_<type>_create(NULL, copy)`. `copy` can be an other screen to copy it.
To load a screen, use `lv_scr_load(scr)`. To get the active screen, use `lv_scr_act()`. These functions works on the default display. If you want to to specify which display to work on, use `lv_disp_get_scr_act(disp)` and `lv_disp_load_scr(disp, scr)`. Screen can be loaded with animations too. Read more [here](object.html#load-screens).
Screens can be deleted with `lv_obj_del(scr)`, but ensure that you do not delete the currently loaded screen.
### Transparent screens
Usually, the opacity of the screen is `LV_OPA_COVER` to provide a solid background for its children. If it's not the case (opacity &lt; 100%) the display's background color or image will be visible.
See the [Display background](#display-background) section for more details. If the display's background opacity is also not `LV_OPA_COVER` LVGL has no solid background to draw.
This configuration (transparent screen and display) could be used to create for example OSD menus where a video is played on a lower layer, and a menu is overlayed on an upper layer.
To handle transparent displays special (slower) color mixing algorithms need to be used by LVGL so this feature needs to enabled with `LV_COLOR_SCREEN_TRANSP` in `lv_conf.h`.
As this mode operates on the Alpha channel of the pixels `LV_COLOR_DEPTH = 32` is also required. The Alpha channel of 32-bit colors will be 0 where there are no objects and 255 where there are solid objects.
In summary, to enable transparent screen and displays to create OSD menu-like UIs:
- Enable `LV_COLOR_SCREEN_TRANSP` in `lv_conf.h`
- Be sure to use `LV_COLOR_DEPTH 32`
- Set the screens opacity to `LV_OPA_TRANSP` e.g. with `lv_obj_set_style_local_bg_opa(lv_scr_act(), LV_OBJMASK_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP)`
- Set the display opacity to `LV_OPA_TRANSP` with `lv_disp_set_bg_opa(NULL, LV_OPA_TRANSP);`
## Features of displays
### Inactivity
The user's inactivity is measured on each display. Every use of an [Input device](/overview/indev) (if [associated with the display](/porting/indev#other-features)) counts as an activity.
To get time elapsed since the last activity, use `lv_disp_get_inactive_time(disp)`. If `NULL` is passed, the overall smallest inactivity time will be returned from all displays (**not the default display**).
You can manually trigger an activity using `lv_disp_trig_activity(disp)`. If `disp` is `NULL`, the default screen will be used (**and not all displays**).
### Background
Every display has background color, a background image and background opacity properties. They become visible when the current screen is transparent or not positioned to cover the whole display.
Background color is a simple color to fill the display. It can be adjusted with `lv_disp_set_bg_color(disp, color)`;
Background image is a path to a file or a pointer to an `lv_img_dsc_t` variable (converted image) to be used as wallpaper. It can be set with `lv_disp_set_bg_color(disp, &my_img)`;
If the background image is set (not `NULL`) the background won't be filled with `bg_color`.
The opacity of the background color or image can be adjusted with `lv_disp_set_bg_opa(disp, opa)`.
The `disp` parameter of these functions can be `NULL` to refer it to the default display.
## API
```eval_rst
.. doxygenfile:: lv_disp.h
:project: lvgl
```

206
docs/overview/drawing.md Normal file
View File

@@ -0,0 +1,206 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/drawing.md
```
# Drawing
With LVGL, you don't need to draw anything manually. Just create objects (like buttons, labels, arc, etc), move and change them, and LVGL will refresh and redraw what is required.
However, it might be useful to have a basic understanding of how drawing happens in LVGL to add customization, make it easier to find bugs or just out of curiosity.
The basic concept is to not draw directly to the screen, but draw to an internal draw buffer first. When drawing (rendering) is ready, that buffer is copied to the screen.
The draw buffer can be smaller than the screen's size. LVGL will simply render in "tiles" that fit into the given draw buffer.
This approach has two main advantages compared to directly drawing to the screen:
1. It avoids flickering while the layers of the UI are drawn. For example, if LVGL drawn directly into the display, when drawing a *background + button + text*, each "stage" would be visible for a short time .
2. It's faster to modify a buffer in internal RAM and finally write one pixel only once than reading/writing the display directly on each pixel access.
(e.g. via a display controller with SPI interface).
Note that this concept is different from "traditional" double buffering where there are 2 screen sized frame buffers:
one holds the current image to show on the display, and rendering happens to the other (inactive) frame buffer, and they are swapped when the rendering is finished.
The main difference is that with LVGL you don't have to store 2 frame buffers (which usually requires external RAM) but only smaller draw buffer(s) that can easily fit into the internal RAM too.
## Mechanism of screen refreshing
Be sure to get familiar with the [Buffering modes of LVGL](/porting/display) first.
LVGL refreshes the screen in the following steps:
1. Something happens on the UI which requires redrawing. For example, a button is pressed, a chart is changed, an animation happened, etc.
2. LVGL saves the changed object's old and new area into a buffer, called an *Invalid area buffer*. For optimization, in some cases, objects are not added to the buffer:
- Hidden objects are not added.
- Objects completely out of their parent are not added.
- Areas partially out of the parent are cropped to the parent's area.
- The objects on other screens are not added.
3. In every `LV_DISP_DEF_REFR_PERIOD` (set in `lv_conf.h`) the followings happen:
- LVGL checks the invalid areas and joins the adjacent or intersecting areas.
- Takes the first joined area, if it's smaller than the *draw buffer*, then simply render the area's content into the *draw buffer*.
If the area doesn't fit into the buffer, draw as many lines as possible to the *draw buffer*.
- When the area is rendered, call `flush_cb` from the display driver to refresh the display.
- If the area was larger than the buffer, render the remaining parts too.
- Do the same with all the joined areas.
When an area is redrawn, the library searches the top most object which covers that area, and starts drawing from that object.
For example, if a button's label has changed, the library will see that it's enough to draw the button under the text, and that it's not required to draw the screen under the button too.
The difference between buffering modes regarding the drawing mechanism is the following:
1. **One buffer** - LVGL needs to wait for `lv_disp_flush_ready()` (called from `flush_cb`) before starting to redraw the next part.
2. **Two buffers** - LVGL can immediately draw to the second buffer when the first is sent to `flush_cb` because the flushing should be done by DMA (or similar hardware) in the background.
3. **Double buffering** - `flush_cb` should only swap the address of the frame buffer.
## Masking
*Masking* is the basic concept of LVGL's draw engine.
To use LVGL it's not required to know about the mechanisms described here, but you might find interesting to know how drawing works under hood.
Knowing about masking comes in handy if you want to customize drawing.
To learn masking let's learn the steps of drawing first.
LVGL performs the following steps to render any shape, image or text. It can be considered as a drawing pipeline.
1. **Prepare the draw descriptors** Create a draw descriptor from an object's styles (e.g. `lv_draw_rect_dsc_t`). This gives us the parameters for drawing, for example the colors, widths, opacity, fonts, radius, etc.
2. **Call the draw function** Call the draw function with the draw descriptor and some other parameters (e.g. `lv_draw_rect()`). It renders the primitive shape to the current draw buffer.
3. **Create masks** If the shape is very simple and doesn't require masks go to #5. Else create the required masks (e.g. a rounded rectangle mask)
4. **Calculate all the added mask**. It creates 0..255 values into a *mask buffer* with the "shape" of the created masks.
E.g. in case of a "line mask" according to the parameters of the mask, keep one side of the buffer as it is (255 by default) and set the rest to 0 to indicate that this side should be removed.
5. **Blend a color or image** During blending masks (make some pixels transparent or opaque), blending modes (additive, subtractive, etc) and opacity are handled.
LVGL has the following built-in mask types which can be calculated and applied real-time:
- `LV_DRAW_MASK_TYPE_LINE` Removes a side from a line (top, bottom, left or right). `lv_draw_line` uses 4 of it.
Essentially, every (skew) line is bounded with 4 line masks by forming a rectangle.
- `LV_DRAW_MASK_TYPE_RADIUS` Removes the inner or outer parts of a rectangle which can have radius. It's also used to create circles by setting the radius to large value (`LV_RADIUS_CIRCLE`)
- `LV_DRAW_MASK_TYPE_ANGLE` Removes a circle sector. It is used by `lv_draw_arc` to remove the "empty" sector.
- `LV_DRAW_MASK_TYPE_FADE` Create a vertical fade (change opacity)
- `LV_DRAW_MASK_TYPE_MAP` The mask is stored in an array and the necessary parts are applied
Masks are used the create almost every basic primitives:
- **letters** Create a mask from the letter and draw a rectangle with the letter's color considering the mask.
- **line** Created from 4 "line masks", to mask out the left, right, top and bottom part of the line to get perfectly perpendicular line ending.
- **rounded rectangle** A mask is created real-time to add radius to the corners.
- **clip corner** To clip to overflowing content (usually children) on the rounded corners also a rounded rectangle mask is applied.
- **rectangle border** Same as a rounded rectangle, but inner part is masked out too.
- **arc drawing** A circle border is drawn, but an arc mask is applied too.
- **ARGB images** The alpha channel is separated into a mask and the image is drawn as a normal RGB image.
## Hook drawing
Although widgets can be very well customized by styles there might be cases when something really custom is required.
To ensure a great level of flexibility LVGL sends a lot events during drawing with parameters that tell what LVGL is about to draw.
Some fields of these parameters can be modified to draw something else or any custom drawing can be added manually.
A good use case for it is the [Button matrix](/widgets/core/btnmatrix) widget. By default its buttons can be styled in different states but you can't style the buttons one by one.
However, an event is sent for every button and you can for example tell LVGL to use different colors on a specific button or to manually draw an image on some buttons.
Below each of these events are described in detail.
### Main drawing
These events are related to the actual drawing of the object. E.g. drawing of buttons, texts, etc happens here.
`lv_event_get_clip_area(event)` can be used to get the current clip area. The clip area is required in draw functions to make them draw only on a limited area.
#### LV_EVENT_DRAW_MAIN_BEGIN
Sent before starting to draw an object. This is a good place to add masks manually. E.g. add a line mask that "removes" the right side of an object.
#### LV_EVENT_DRAW_MAIN
The actual drawing of the object happens in this event. E.g. a rectangle for a button is drawn here. First, the widgets' internal events are called to perform drawing and after that you can draw anything on top of them.
For example you can add a custom text or an image.
#### LV_EVENT_DRAW_MAIN_END
Called when the main drawing is finished. You can draw anything here as well and it's also good place to remove the masks created in `LV_EVENT_DRAW_MAIN_BEGIN`.
### Post drawing
Post drawing events are called when all the children of an object are drawn. For example LVGL use the post drawing phase to draw the scrollbars because they should be above all the children.
`lv_event_get_clip_area(event)` can be used to get the current clip area.
#### LV_EVENT_DRAW_POST_BEGIN
Sent before starting the post draw phase. Masks can be added here too to mask out the post drawn content.
#### LV_EVENT_DRAW_POST
The actual drawing should happen here.
#### LV_EVENT_DRAW_POST_END
Called when post drawing has finished. If the masks were not removed in `LV_EVENT_DRAW_MAIN_END` they should be removed here.
### Part drawing
When LVGL draws a part of an object (e.g. a slider's indicator, a table's cell or a button matrix's button) it sends events before and after drawing that part with some context of the drawing.
It allows changing the parts on a very low level with masks, extra drawing, or changing the parameters that LVGL is planning to use for drawing.
In these events an `lv_obj_draw_part_t` structure is used to describe the context of the drawing. Not all fields are set for every part and widget.
To see which fields are set for a widget see the widget's documentation.
`lv_obj_draw_part_t` has the following fields:
```c
// Always set
const lv_area_t * clip_area; // The current clip area, required if you need to draw something in the event
uint32_t part; // The current part for which the event is sent
uint32_t id; // The index of the part. E.g. a button's index on button matrix or table cell index.
// Draw desciptors, set only if related
lv_draw_rect_dsc_t * rect_dsc; // A draw descriptor that can be modified to changed what LVGL will draw. Set only for rectangle-like parts
lv_draw_label_dsc_t * label_dsc; // A draw descriptor that can be modified to changed what LVGL will draw. Set only for text-like parts
lv_draw_line_dsc_t * line_dsc; // A draw descriptor that can be modified to changed what LVGL will draw. Set only for line-like parts
lv_draw_img_dsc_t * img_dsc; // A draw descriptor that can be modified to changed what LVGL will draw. Set only for image-like parts
lv_draw_arc_dsc_t * arc_dsc; // A draw descriptor that can be modified to changed what LVGL will draw. Set only for arc-like parts
// Other paramters
lv_area_t * draw_area; // The area of the part being drawn
const lv_point_t * p1; // A point calculated during drawing. E.g. a point of chart or the center of an arc.
const lv_point_t * p2; // A point calculated during drawing. E.g. a point of chart.
char text[16]; // A text calculated during drawing. Can be modified. E.g. tick labels on a chart axis.
lv_coord_t radius; // E.g. the radius of an arc (not the corner radius).
int32_t value; // A value calculated during drawing. E.g. Chart's tick line value.
const void * sub_part_ptr; // A pointer the identifies something in the part. E.g. chart series.
```
`lv_event_get_draw_part_dsc(event)` can be used to get a pointer to `lv_obj_draw_part_t`.
#### LV_EVENT_DRAW_PART_BEGIN
Start the drawing of a part. This is a good place to modify the draw descriptors (e.g. `rect_dsc`), or add masks.
#### LV_EVENT_DRAW_PART_END
Finish the drawing of a part. This is a good place to draw extra content on the part, or remove the masks added in `LV_EVENT_DRAW_PART_BEGIN`.
### Others
#### LV_EVENT_COVER_CHECK
This event is used to check whether an object fully covers an area or not.
`lv_event_get_cover_area(event)` returns an pointer to an area to check and `lv_event_set_cover_res(event, res)` can be used to set one of these results:
- `LV_COVER_RES_COVER` the areas is fully covered by the object
- `LV_COVER_RES_NOT_COVER` the areas is not covered by the object
- `LV_COVER_RES_MASKED` there is a mask on the object so it can not cover the area
Here are some reasons why an object would be unable to fully cover an area:
- It's simply not fully in area
- It has a radius
- It has not 100% background opacity
- It's an ARGB or chroma keyed image
- It does not have normal blending mode. In this case LVGL needs to know the colors under the object to do the blending properly
- It's a text, etc
In short if for any reason the area below the object is visible than it doesn't cover that area.
Before sending this event LVGL checks if at least the widget's coordinates fully cover the area or not. If not the event is not called.
You need to check only the drawing you have added. The existing properties known by widget are handled in the widget's internal events.
E.g. if a widget has &gt; 0 radius it might not cover an area but you need to handle `radius` only if you will modify it and the widget can't know about it.
#### LV_EVENT_REFR_EXT_DRAW_SIZE
If you need to draw outside of a widget LVGL needs to know about it to provide the extra space for drawing.
Let's say you create an event the writes the current value of a slider above its knob. In this case LVGL needs to know that the slider's draw area should be larger with the size required for the text.
You can simple set the required draw area with `lv_event_set_ext_draw_size(e, size)`.

168
docs/overview/event.md Normal file
View File

@@ -0,0 +1,168 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/event.md
```
# Events
Events are triggered in LVGL when something happens which might be interesting to the user, e.g. when an object
- is clicked
- is scrolled
- has its value changed
- is redrawn, etc.
## Add events to the object
The user can assign callback functions to an object to see its events. In practice, it looks like this:
```c
lv_obj_t * btn = lv_btn_create(lv_scr_act());
lv_obj_add_event_cb(btn, my_event_cb, LV_EVENT_CLICKED, NULL); /*Assign an event callback*/
...
static void my_event_cb(lv_event_t * event)
{
printf("Clicked\n");
}
```
In the example `LV_EVENT_CLICKED` means that only the click event will call `my_event_cb`. See the [list of event codes](#event-codes) for all the options.
`LV_EVENT_ALL` can be used to receive all the events.
The last parameter of `lv_obj_add_event_cb` is a pointer to any custom data that will be available in the event. It will be described later in more detail.
More events can be added to an object, like this:
```c
lv_obj_add_event_cb(obj, my_event_cb_1, LV_EVENT_CLICKED, NULL);
lv_obj_add_event_cb(obj, my_event_cb_2, LV_EVENT_PRESSED, NULL);
lv_obj_add_event_cb(obj, my_event_cb_3, LV_EVENT_ALL, NULL); /*No filtering, receive all events*/
```
Even the same event callback can be used on an object with different `user_data`. For example:
```c
lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num1);
lv_obj_add_event_cb(obj, increment_on_click, LV_EVENT_CLICKED, &num2);
```
The events will be called in the order as they were added.
More objects can use the same *event callback*.
## Remove event(s) from an object
Events can be removed from an object with the `lv_obj_remove_event_cb(obj, event_cb)` function or `lv_obj_remove_event_dsc(obj, event_dsc)`. `event_dsc` is a pointer returned by `lv_obj_add_event_cb`.
## Event codes
The event codes can be grouped into these categories:
- Input device events
- Drawing events
- Other events
- Special events
- Custom events
All objects (such as Buttons/Labels/Sliders etc.) regardless their type receive the *Input device*, *Drawing* and *Other* events.
However the *Special events* are specific to a particular widget type. See the [widgets' documentation](/widgets/index) to learn when they are sent,
*Custom events* are added by the user and therefore these are never sent by LVGL.
The following event codes exist:
### Input device events
- `LV_EVENT_PRESSED` The object has been pressed
- `LV_EVENT_PRESSING` The object is being pressed (called continuously while pressing)
- `LV_EVENT_PRESS_LOST` The object is still being pressed but slid cursor/finger off of the object
- `LV_EVENT_SHORT_CLICKED` The object was pressed for a short period of time, then released it. Not called if scrolled.
- `LV_EVENT_LONG_PRESSED` Object has been pressed for at least the `long_press_time` specified in the input device driver. Not called if scrolled.
- `LV_EVENT_LONG_PRESSED_REPEAT` Called after `long_press_time` in every `long_press_repeat_time` ms. Not called if scrolled.
- `LV_EVENT_CLICKED` Called on release if the object did not scroll (regardless of long press)
- `LV_EVENT_RELEASED` Called in every case when the object has been released
- `LV_EVENT_SCROLL_BEGIN` Scrolling begins. The event paramter is `NULL` or an `lv_anim_t *` with the scroll animation descriptor to modify if required.
- `LV_EVENT_SCROLL_END` Scrolling ends.
- `LV_EVENT_SCROLL` The object was scrolled
- `LV_EVENT_GESTURE` A gesture is detected. Get the gesture with `lv_indev_get_gesture_dir(lv_indev_get_act());`
- `LV_EVENT_KEY` A key is sent to the object. Get the key with `lv_indev_get_key(lv_indev_get_act());`
- `LV_EVENT_FOCUSED` The object is focused
- `LV_EVENT_DEFOCUSED` The object is defocused
- `LV_EVENT_LEAVE` The object is defocused but still selected
- `LV_EVENT_HIT_TEST` Perform advanced hit-testing. Use `lv_hit_test_info_t * a = lv_event_get_hit_test_info(e)` and check if `a->point` can click the object or not. If not set `a->res = false`
### Drawing events
- `LV_EVENT_COVER_CHECK` Check if the object fully covers an area. The event parameter is `lv_cover_check_info_t *`.
- `LV_EVENT_REFR_EXT_DRAW_SIZE` Get the required extra draw area around the object (e.g. for shadow). The event parameter is `lv_coord_t *` to store the size. Overwrite it only with a larger value.
- `LV_EVENT_DRAW_MAIN_BEGIN` Starting the main drawing phase.
- `LV_EVENT_DRAW_MAIN` Perform the main drawing
- `LV_EVENT_DRAW_MAIN_END` Finishing the main drawing phase
- `LV_EVENT_DRAW_POST_BEGIN` Starting the post draw phase (when all children are drawn)
- `LV_EVENT_DRAW_POST` Perform the post draw phase (when all children are drawn)
- `LV_EVENT_DRAW_POST_END` Finishing the post draw phase (when all children are drawn)
- `LV_EVENT_DRAW_PART_BEGIN` Starting to draw a part. The event parameter is `lv_obj_draw_dsc_t *`. Learn more [here](/overview/drawing).
- `LV_EVENT_DRAW_PART_END` Finishing to draw a part. The event parameter is `lv_obj_draw_dsc_t *`. Learn more [here](/overview/drawing).
### Other events
- `LV_EVENT_DELETE` Object is being deleted
- `LV_EVENT_CHILD_CHANGED` Child was removed/added
- `LV_EVENT_SIZE_CHANGED` Object coordinates/size have changed
- `LV_EVENT_STYLE_CHANGED` Object's style has changed
- `LV_EVENT_BASE_DIR_CHANGED` The base dir has changed
- `LV_EVENT_GET_SELF_SIZE` Get the internal size of a widget
### Special events
- `LV_EVENT_VALUE_CHANGED` The object's value has changed (i.e. slider moved)
- `LV_EVENT_INSERT` A text is being inserted to the object. The event data is `char *` being inserted.
- `LV_EVENT_REFRESH` Notify the object to refresh something on it (for the user)
- `LV_EVENT_READY` A process has finished
- `LV_EVENT_CANCEL` A process has been canceled
### Custom events
Any custom event codes can be registered by `uint32_t MY_EVENT_1 = lv_event_register_id();`
And can be sent to any object with `lv_event_send(obj, MY_EVENT_1, &some_data)`
## Sending events
To manually send events to an object, use `lv_event_send(obj, <EVENT_CODE> &some_data)`.
For example, this can be used to manually close a message box by simulating a button press (although there are simpler ways to do this):
```c
/*Simulate the press of the first button (indexes start from zero)*/
uint32_t btn_id = 0;
lv_event_send(mbox, LV_EVENT_VALUE_CHANGED, &btn_id);
```
### Refresh event
`LV_EVENT_REFRESH` is special event because it's designed to be used by the user to notify an object to refresh itself. Some examples:
- notify a label to refresh its text according to one or more variables (e.g. current time)
- refresh a label when the language changes
- enable a button if some conditions are met (e.g. the correct PIN is entered)
- add/remove styles to/from an object if a limit is exceeded, etc
## Fields of lv_event_t
`lv_event_t` is the only parameter passed to event callback and it contains all the data about the event. The following values can be gotten from it:
- `lv_event_get_code(e)` get the event code
- `lv_event_get_target(e)` get the object to which the event is sent
- `lv_event_get_original_target(e)` get the object to which the event is sent originally sent (different from `lv_event_get_target` if [event bubbling](#event-bubbling) is enabled)
- `lv_event_get_user_data(e)` get the pointer passed as the last parameter of `lv_obj_add_event_cb`.
- `lv_event_get_param(e)` get the parameter passed as the last parameter of `lv_event_send`
## Event bubbling
If `lv_obj_add_flag(obj, LV_OBJ_FLAG_EVENT_BUBBLE)` is enabled all events will be sent to the object's parent too. If the parent also has `LV_OBJ_FLAG_EVENT_BUBBLE` enabled the event will be sent to its parent too, and so on.
The *target* parameter of the event is always the current target object, not the original object. To get the original target call `lv_event_get_original_target(e)` in the event handler.
## Examples
```eval_rst
.. include:: ../../examples/event/index.rst
```

View File

@@ -0,0 +1,133 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/file-system.md
```
# File system
LVGL has a 'File system' abstraction module that enables you to attach any type of file system.
The file system is identified by a drive letter.
For example, if the SD card is associated with the letter `'S'`, a file can be reached like `"S:path/to/file.txt"`.
## Ready to use drivers
The [lv_fs_if](https://github.com/lvgl/lv_fs_if) repository contains ready to use drivers using POSIX, standard C and [FATFS](http://elm-chan.org/fsw/ff/00index_e.html) API.
See it's [README](https://github.com/lvgl/lv_fs_if#readme) for the details.
## Add a driver
### Registering a driver
To add a driver, `lv_fs_drv_t` needs to be initialized like below. `lv_fs_drv_t` needs to be static, global or dynamically allocated and not a local varaible.
```c
static lv_fs_drv_t drv; /*Needs to be static or global*/
lv_fs_drv_init(&drv); /*Basic initialization*/
drv.letter = 'S'; /*An uppercase letter to identify the drive */
drv.ready_cb = my_ready_cb; /*Callback to tell if the drive is ready to use */
drv.open_cb = my_open_cb; /*Callback to open a file */
drv.close_cb = my_close_cb; /*Callback to close a file */
drv.read_cb = my_read_cb; /*Callback to read a file */
drv.write_cb = my_write_cb; /*Callback to write a file */
drv.seek_cb = my_seek_cb; /*Callback to seek in a file (Move cursor) */
drv.tell_cb = my_tell_cb; /*Callback to tell the cursor position */
drv.dir_open_cb = my_dir_open_cb; /*Callback to open directory to read its content */
drv.dir_read_cb = my_dir_read_cb; /*Callback to read a directory's content */
drv.dir_close_cb = my_dir_close_cb; /*Callback to close a directory */
drv.user_data = my_user_data; /*Any custom data if required*/
lv_fs_drv_register(&drv); /*Finally register the drive*/
```
Any of the callbacks can be `NULL` to indicate that operation is not supported.
### Implementing the callbacks
#### Open callback
The prototype of `open_cb` looks like this:
```c
void * (*open_cb)(lv_fs_drv_t * drv, const char * path, lv_fs_mode_t mode);
```
`path` is path after the driver letter (e.g. "S:path/to/file.txt" -> "path/to/file.txt"). `mode` can be `LV_FS_MODE_WR` or `LV_FS_MODE_RD` to open for write or read.
The return value is a pointer the *file object* the describes the opened file or `NULL` if there were any issues (e.g. the file wasn't found).
The returned file object will be passed to to other file system related callbacks. (see below)
### Other callbacks
The other callbacks are quite similar. For example `write_cb` looks like this:
```c
lv_fs_res_t (*write_cb)(lv_fs_drv_t * drv, void * file_p, const void * buf, uint32_t btw, uint32_t * bw);
```
As `file_p` LVGL passes the return value of `open_cb`, `buf` is the data to write, `btw` is the Bytes To Write, `bw` is the actually written bytes.
For a template to the callbacks see [lv_fs_template.c](https://github.com/lvgl/lvgl/blob/master/examples/porting/lv_port_fs_template.c).
## Usage example
The example below shows how to read from a file:
```c
lv_fs_file_t f;
lv_fs_res_t res;
res = lv_fs_open(&f, "S:folder/file.txt", LV_FS_MODE_RD);
if(res != LV_FS_RES_OK) my_error_handling();
uint32_t read_num;
uint8_t buf[8];
res = lv_fs_read(&f, buf, 8, &read_num);
if(res != LV_FS_RES_OK || read_num != 8) my_error_handling();
lv_fs_close(&f);
```
*The mode in `lv_fs_open` can be `LV_FS_MODE_WR` to open for write or `LV_FS_MODE_RD | LV_FS_MODE_WR` for both*
This example shows how to read a directory's content. It's up to the driver how to mark the directories, but it can be a good practice to insert a `'/'` in front of the directory name.
```c
lv_fs_dir_t dir;
lv_fs_res_t res;
res = lv_fs_dir_open(&dir, "S:/folder");
if(res != LV_FS_RES_OK) my_error_handling();
char fn[256];
while(1) {
res = lv_fs_dir_read(&dir, fn);
if(res != LV_FS_RES_OK) {
my_error_handling();
break;
}
/*fn is empty, if not more files to read*/
if(strlen(fn) == 0) {
break;
}
printf("%s\n", fn);
}
lv_fs_dir_close(&dir);
```
## Use drivers for images
[Image](/widgets/core/img) objects can be opened from files too (besides variables stored in the flash).
To use files in image widgets the following callbacks are required:
- open
- close
- read
- seek
- tell
## API
```eval_rst
.. doxygenfile:: lv_fs.h
:project: lvgl
```

254
docs/overview/font.md Normal file
View File

@@ -0,0 +1,254 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/font.md
```
# Fonts
In LVGL fonts are collections of bitmaps and other information required to render the images of the letters (glyph).
A font is stored in a `lv_font_t` variable and can be set in a style's *text_font* field. For example:
```c
lv_style_set_text_font(&my_style, LV_STATE_DEFAULT, &lv_font_montserrat_28); /*Set a larger font*/
```
The fonts have a **bpp (bits per pixel)** property. It shows how many bits are used to describe a pixel in the font. The value stored for a pixel determines the pixel's opacity.
This way, with higher *bpp*, the edges of the letter can be smoother. The possible *bpp* values are 1, 2, 4 and 8 (higher value means better quality).
The *bpp* also affects the required memory size to store the font. For example, *bpp = 4* makes the font nearly 4 times larger compared to *bpp = 1*.
## Unicode support
LVGL supports **UTF-8** encoded Unicode characters.
Your editor needs to be configureed to save your code/text as UTF-8 (usually this the default) and be sure that, `LV_TXT_ENC` is set to `LV_TXT_ENC_UTF8` in *lv_conf.h*. (This is the default value)
To test it try
```c
lv_obj_t * label1 = lv_label_create(lv_scr_act(), NULL);
lv_label_set_text(label1, LV_SYMBOL_OK);
```
If all works well, a ✓ character should be displayed.
## Built-in fonts
There are several built-in fonts in different sizes, which can be enabled in `lv_conf.h` by *LV_FONT_...* defines.
### Normal fonts
Containing all the ASCII characters, the degree symbol (U+00B0), the bullet symbol (U+2022) and the built-in symbols (see below).
- `LV_FONT_MONTSERRAT_12` 12 px font
- `LV_FONT_MONTSERRAT_14` 14 px font
- `LV_FONT_MONTSERRAT_16` 16 px font
- `LV_FONT_MONTSERRAT_18` 18 px font
- `LV_FONT_MONTSERRAT_20` 20 px font
- `LV_FONT_MONTSERRAT_22` 22 px font
- `LV_FONT_MONTSERRAT_24` 24 px font
- `LV_FONT_MONTSERRAT_26` 26 px font
- `LV_FONT_MONTSERRAT_28` 28 px font
- `LV_FONT_MONTSERRAT_30` 30 px font
- `LV_FONT_MONTSERRAT_32` 32 px font
- `LV_FONT_MONTSERRAT_34` 34 px font
- `LV_FONT_MONTSERRAT_36` 36 px font
- `LV_FONT_MONTSERRAT_38` 38 px font
- `LV_FONT_MONTSERRAT_40` 40 px font
- `LV_FONT_MONTSERRAT_42` 42 px font
- `LV_FONT_MONTSERRAT_44` 44 px font
- `LV_FONT_MONTSERRAT_46` 46 px font
- `LV_FONT_MONTSERRAT_48` 48 px font
### Special fonts
- `LV_FONT_MONTSERRAT_12_SUBPX` Same as normal 12 px font but with [subpixel rendering](#subpixel-rendering)
- `LV_FONT_MONTSERRAT_28_COMPRESSED` Same as normal 28 px font but [compressed font](#compress-fonts) with 3 bpp
- `LV_FONT_DEJAVU_16_PERSIAN_HEBREW` 16 px font with normal range + Hebrew, Arabic, Persian letters and all their forms
- `LV_FONT_SIMSUN_16_CJK`16 px font with normal range + 1000 most common CJK radicals
- `LV_FONT_UNSCII_8` 8 px pixel perfect font with only ASCII characters
- `LV_FONT_UNSCII_16` 16 px pixel perfect font with only ASCII characters
The built-in fonts are **global variables** with names like `lv_font_montserrat_16` for a 16 px hight font. To use them in a style, just add a pointer to a font variable like shown above.
The built-in fonts with *bpp = 4* contain the ASCII characters and use the [Montserrat](https://fonts.google.com/specimen/Montserrat) font.
In addition to the ASCII range, the following symbols are also added to the built-in fonts from the [FontAwesome](https://fontawesome.com/) font.
![](/misc/symbols.png "Built-in Symbols in LVGL")
The symbols can be used as:
```c
lv_label_set_text(my_label, LV_SYMBOL_OK);
```
Or with together with strings:
```c
lv_label_set_text(my_label, LV_SYMBOL_OK "Apply");
```
Or more symbols together:
```c
lv_label_set_text(my_label, LV_SYMBOL_OK LV_SYMBOL_WIFI LV_SYMBOL_PLAY);
```
## Special features
### Bidirectional support
Most of the languages use Left-to-Right (LTR for short) writing direction, however some languages (such as Hebrew, Persian or Arabic) uses Right-to-Left (RTL for short) direction.
LVGL not only supports RTL texts but supports mixed (a.k.a. bidirectional, BiDi) text rendering too. Some examples:
![](/misc/bidi.png "Bidirectional text examples")
BiDi support is enabled by `LV_USE_BIDI` in *lv_conf.h*
All texts have a base direction (LTR or RTL) which determines some rendering rules and the default alignment of the text (Left or Right).
However, in LVGL, base direction is applied not only for labels. It's a general property which can be set for every object.
If unset then it will be inherited from the parent.
So it's enough to set the base direction of the screen and every object will inherit it.
The default base direction of screen can be set by `LV_BIDI_BASE_DIR_DEF` in *lv_conf.h* and other objects inherit the base direction from their parent.
To set an object's base direction use `lv_obj_set_base_dir(obj, base_dir)`. The possible base direction are:
- `LV_BIDI_DIR_LTR`: Left to Right base direction
- `LV_BIDI_DIR_RTL`: Right to Left base direction
- `LV_BIDI_DIR_AUTO`: Auto detect base direction
- `LV_BIDI_DIR_INHERIT`: Inherit the base direction from the parent (default for non-screen objects)
This list summarizes the effect of RTL base direction on objects:
- Create objects by default on the right
- `lv_tabview`: displays tabs from right to left
- `lv_checkbox`: Show the box on the right
- `lv_btnmatrix`: Show buttons from right to left
- `lv_list`: Show the icon on the right
- `lv_dropdown`: Align the options to the right
- The texts in `lv_table`, `lv_btnmatrix`, `lv_keyboard`, `lv_tabview`, `lv_dropdown`, `lv_roller` are "BiDi processed" to be displayed correctly
### Arabic and Persian support
There are some special rules to display Arabic and Persian characters: the *form* of the character depends on their position in the text.
A different form of the same letter needs to be used if it isolated, start, middle or end position. Besides these some conjunction rules also should be taken into account.
LVGL supports to apply these rules if `LV_USE_ARABIC_PERSIAN_CHARS` is enabled.
However, there some limitations:
- Only displaying texts is supported (e.g. on labels), text inputs (e.g. text area) don't support this feature.
- Static text (i.e. const) is not processed. E.g. texts set by `lv_label_set_text()` will be "Arabic processed" but `lv_lable_set_text_static()` won't.
- Text get functions (e.g. `lv_label_get_text()`) will return the processed text.
### Subpixel rendering
Subpixel rendering allows for tripling the horizontal resolution by rendering on Red, Green and Blue channel instead of pixel level. This takes advantage of the position of physical color channels of each pixel, resulting in higher quality letter anti-aliasing. Learn more [here](https://en.wikipedia.org/wiki/Subpixel_rendering).
For subpixel rendering the fonts need to be generated with special settings:
- In the online converter tick the `Subpixel` box
- In the command line tool use `--lcd` flag. Note that the generated font needs about 3 times more memory.
Subpixel rendering works only if the color channels of the pixels have a horizontal layout. That is the R, G, B channels are next each other and not above each other.
The order of color channels also needs to match with the library settings. By default LVGL assumes `RGB` order, however this can be swapped by setting `LV_SUBPX_BGR 1` in *lv_conf.h*.
### Compress fonts
The bitmaps of the fonts can be compressed by
- ticking the `Compressed` check box in the online converter
- not passing `--no-compress` flag to the offline converter (compression is applied by default)
The compression is more effective with larger fonts and higher bpp. However, it's about 30% slower to render the compressed fonts.
Therefore it's recommended to compress only the largest fonts of user interface, because
- they need the most memory
- they can be compressed better
- and probably they are used less frequently then the medium sized fonts, so the performance cost is smaller.
## Add new font
There are several ways to add a new font to your project:
1. The simplest method is to use the [Online font converter](https://lvgl.io/tools/fontconverter). Just set the parameters, click the *Convert* button, copy the font to your project and use it. **Be sure to carefully read the steps provided on that site or you will get an error while converting.**
2. Use the [Offline font converter](https://github.com/lvgl/lv_font_conv). (Requires Node.js to be installed)
3. If you want to create something like the built-in fonts (Roboto font and symbols) but in different size and/or ranges, you can use the `built_in_font_gen.py` script in `lvgl/scripts/built_in_font` folder.
(This requires Python and `lv_font_conv` to be installed)
To declare the font in a file, use `LV_FONT_DECLARE(my_font_name)`.
To make the fonts globally available (like the builtin fonts), add them to `LV_FONT_CUSTOM_DECLARE` in *lv_conf.h*.
## Add new symbols
The built-in symbols are created from the [FontAwesome](https://fontawesome.com/) font.
1. Search symbol on [https://fontawesome.com](https://fontawesome.com). For example the [USB symbol](https://fontawesome.com/icons/usb?style=brands). Copy it's Unicode ID which is `0xf287` in this case.
2. Open the [Online font converter](https://lvgl.io/tools/fontconverter). Add Add [FontAwesome.woff](https://lvgl.io/assets/others/FontAwesome5-Solid+Brands+Regular.woff). .
3. Set the parameters such as Name, Size, BPP. You'll use this name to declare and use the font in your code.
4. Add the Unicode ID of the symbol to the range field. E.g.` 0xf287` for the USB symbol. More symbols can be enumerated with `,`.
5. Convert the font and copy it to your project. Make sure to compile the .c file of your font.
6. Declare the font using `extern lv_font_t my_font_name;` or simply `LV_FONT_DECLARE(my_font_name);`.
**Using the symbol**
1. Convert the Unicode value to UTF8, for example on [this site](http://www.ltg.ed.ac.uk/~richard/utf-8.cgi?input=f287&mode=hex). For `0xf287` the *Hex UTF-8 bytes* are `EF 8A 87`.
2. Create a `define` from the UTF8 values: `#define MY_USB_SYMBOL "\xEF\x8A\x87"`
3. Create a label and set the text. Eg. `lv_label_set_text(label, MY_USB_SYMBOL)`
Note - `lv_label_set_text(label, MY_USB_SYMBOL)` searches for this symbol in the font defined in `style.text.font` properties. To use the symbol you may need to change it. Eg ` style.text.font = my_font_name`
## Load font at run-time
`lv_font_load` can be used to load a font from a file. The font to load needs to have a special binary format. (Not TTF or WOFF).
Use [lv_font_conv](https://github.com/lvgl/lv_font_conv/) with `--format bin` option to generate an LVGL compatible font file.
Note that to load a font [LVGL's filesystem](/overview/file-system) needs to be enabled and a driver needs to be added.
Example
```c
lv_font_t * my_font;
my_font = lv_font_load(X/path/to/my_font.bin);
/*Use the font*/
/*Free the font if not required anymore*/
lv_font_free(my_font);
```
## Add a new font engine
LVGL's font interface is designed to be very flexible.
But even so you don't need to use LVGL's internal font engine: you can add your own.
For example, use [FreeType](https://www.freetype.org/) to real-time render glyphs from TTF fonts or use an external flash to store the font's bitmap and read them when the library needs them.
A ready to use FreeType can be found in [lv_freetype](https://github.com/lvgl/lv_lib_freetype) repository.
To do this a custom `lv_font_t` variable needs to be created:
```c
/*Describe the properties of a font*/
lv_font_t my_font;
my_font.get_glyph_dsc = my_get_glyph_dsc_cb; /*Set a callback to get info about gylphs*/
my_font.get_glyph_bitmap = my_get_glyph_bitmap_cb; /*Set a callback to get bitmap of a glyp*/
my_font.line_height = height; /*The real line height where any text fits*/
my_font.base_line = base_line; /*Base line measured from the top of line_height*/
my_font.dsc = something_required; /*Store any implementation specific data here*/
my_font.user_data = user_data; /*Optionally some extra user data*/
...
/* Get info about glyph of `unicode_letter` in `font` font.
* Store the result in `dsc_out`.
* The next letter (`unicode_letter_next`) might be used to calculate the width required by this glyph (kerning)
*/
bool my_get_glyph_dsc_cb(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next)
{
/*Your code here*/
/* Store the result.
* For example ...
*/
dsc_out->adv_w = 12; /*Horizontal space required by the glyph in [px]*/
dsc_out->box_h = 8; /*Height of the bitmap in [px]*/
dsc_out->box_w = 6; /*Width of the bitmap in [px]*/
dsc_out->ofs_x = 0; /*X offset of the bitmap in [pf]*/
dsc_out->ofs_y = 3; /*Y offset of the bitmap measured from the as line*/
dsc_out->bpp = 2; /*Bits per pixel: 1/2/4/8*/
return true; /*true: glyph found; false: glyph was not found*/
}
/* Get the bitmap of `unicode_letter` from `font`. */
const uint8_t * my_get_glyph_bitmap_cb(const lv_font_t * font, uint32_t unicode_letter)
{
/* Your code here */
/* The bitmap should be a continuous bitstream where
* each pixel is represented by `bpp` bits */
return bitmap; /*Or NULL if not found*/
}
```

330
docs/overview/image.md Normal file
View File

@@ -0,0 +1,330 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/image.md
```
# Images
An image can be a file or variable which stores the bitmap itself and some metadata.
## Store images
You can store images in two places
- as a variable in the internal memory (RAM or ROM)
- as a file
### Variables
The images stored internally in a variable are composed mainly of an `lv_img_dsc_t` structure with the following fields:
- **header**
- *cf* Color format. See [below](#color-format)
- *w* width in pixels (<= 2048)
- *h* height in pixels (<= 2048)
- *always zero* 3 bits which need to be always zero
- *reserved* reserved for future use
- **data** pointer to an array where the image itself is stored
- **data_size** length of `data` in bytes
These are usually stored within a project as C files. They are linked into the resulting executable like any other constant data.
### Files
To deal with files you need to add a *Drive* to LVGL. In short, a *Drive* is a collection of functions (*open*, *read*, *close*, etc.) registered in LVGL to make file operations.
You can add an interface to a standard file system (FAT32 on SD card) or you create your simple file system to read data from an SPI Flash memory.
In every case, a *Drive* is just an abstraction to read and/or write data to memory.
See the [File system](/overview/file-system) section to learn more.
Images stored as files are not linked into the resulting executable, and must be read to RAM before being drawn. As a result, they are not as resource-friendly as variable images. However, they are easier to replace without needing to recompile the main program.
## Color formats
Various built-in color formats are supported:
- **LV_IMG_CF_TRUE_COLOR** Simply stores the RGB colors (in whatever color depth LVGL is configured for).
- **LV_IMG_CF_TRUE_COLOR_ALPHA** Like `LV_IMG_CF_TRUE_COLOR` but it also adds an alpha (transparency) byte for every pixel.
- **LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED** Like `LV_IMG_CF_TRUE_COLOR` but if a pixel has `LV_COLOR_TRANSP` (set in *lv_conf.h*) color the pixel will be transparent.
- **LV_IMG_CF_INDEXED_1/2/4/8BIT** Uses a palette with 2, 4, 16 or 256 colors and stores each pixel in 1, 2, 4 or 8 bits.
- **LV_IMG_CF_ALPHA_1/2/4/8BIT** **Only stores the Alpha value on 1, 2, 4 or 8 bits.** The pixels take the color of `style.image.color` and the set opacity. The source image has to be an alpha channel. This is ideal for bitmaps similar to fonts (where the whole image is one color but you'd like to be able to change it).
The bytes of the `LV_IMG_CF_TRUE_COLOR` images are stored in the following order.
For 32-bit color depth:
- Byte 0: Blue
- Byte 1: Green
- Byte 2: Red
- Byte 3: Alpha
For 16-bit color depth:
- Byte 0: Green 3 lower bit, Blue 5 bit
- Byte 1: Red 5 bit, Green 3 higher bit
- Byte 2: Alpha byte (only with LV_IMG_CF_TRUE_COLOR_ALPHA)
For 8-bit color depth:
- Byte 0: Red 3 bit, Green 3 bit, Blue 2 bit
- Byte 2: Alpha byte (only with LV_IMG_CF_TRUE_COLOR_ALPHA)
You can store images in a *Raw* format to indicate that it's not encoded with one of the built-in color formats and an external [Image decoder](#image-decoder) needs to be used to decode the image.
- **LV_IMG_CF_RAW** Indicates a basic raw image (e.g. a PNG or JPG image).
- **LV_IMG_CF_RAW_ALPHA** Indicates that the image has alpha and an alpha byte is added for every pixel.
- **LV_IMG_CF_RAW_CHROME_KEYED** Indicates that the image is chroma-keyed as described in `LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED` above.
## Add and use images
You can add images to LVGL in two ways:
- using the online converter
- manually create images
### Online converter
The online Image converter is available here: https://lvgl.io/tools/imageconverter
Adding an image to LVGL via online converter is easy.
1. You need to select a *BMP*, *PNG* or *JPG* image first.
2. Give the image a name that will be used within LVGL.
3. Select the [Color format](#color-formats).
4. Select the type of image you want. Choosing a binary will generate a `.bin` file that must be stored separately and read using the [file support](#files). Choosing a variable will generate a standard C file that can be linked into your project.
5. Hit the *Convert* button. Once the conversion is finished, your browser will automatically download the resulting file.
In the converter C arrays (variables), the bitmaps for all the color depths (1, 8, 16 or 32) are included in the C file, but only the color depth that matches `LV_COLOR_DEPTH` in *lv_conf.h* will actually be linked into the resulting executable.
In case of binary files, you need to specify the color format you want:
- RGB332 for 8-bit color depth
- RGB565 for 16-bit color depth
- RGB565 Swap for 16-bit color depth (two bytes are swapped)
- RGB888 for 32-bit color depth
### Manually create an image
If you are generating an image at run-time, you can craft an image variable to display it using LVGL. For example:
```c
uint8_t my_img_data[] = {0x00, 0x01, 0x02, ...};
static lv_img_dsc_t my_img_dsc = {
.header.always_zero = 0,
.header.w = 80,
.header.h = 60,
.data_size = 80 * 60 * LV_COLOR_DEPTH / 8,
.header.cf = LV_IMG_CF_TRUE_COLOR, /*Set the color format*/
.data = my_img_data,
};
```
If the color format is `LV_IMG_CF_TRUE_COLOR_ALPHA` you can set `data_size` like `80 * 60 * LV_IMG_PX_SIZE_ALPHA_BYTE`.
Another (possibly simpler) option to create and display an image at run-time is to use the [Canvas](/widgets/core/canvas) object.
### Use images
The simplest way to use an image in LVGL is to display it with an [lv_img](/widgets/core/img) object:
```c
lv_obj_t * icon = lv_img_create(lv_scr_act(), NULL);
/*From variable*/
lv_img_set_src(icon, &my_icon_dsc);
/*From file*/
lv_img_set_src(icon, "S:my_icon.bin");
```
If the image was converted with the online converter, you should use `LV_IMG_DECLARE(my_icon_dsc)` to declare the image in the file where you want to use it.
## Image decoder
As you can see in the [Color formats](#color-formats) section, LVGL supports several built-in image formats. In many cases, these will be all you need. LVGL doesn't directly support, however, generic image formats like PNG or JPG.
To handle non-built-in image formats, you need to use external libraries and attach them to LVGL via the *Image decoder* interface.
The image decoder consists of 4 callbacks:
- **info** get some basic info about the image (width, height and color format).
- **open** open the image: either store the decoded image or set it to `NULL` to indicate the image can be read line-by-line.
- **read** if *open* didn't fully open the image this function should give some decoded data (max 1 line) from a given position.
- **close** close the opened image, free the allocated resources.
You can add any number of image decoders. When an image needs to be drawn, the library will try all the registered image decoders until it finds one which can open the image, i.e. one which knows that format.
The `LV_IMG_CF_TRUE_COLOR_...`, `LV_IMG_INDEXED_...` and `LV_IMG_ALPHA_...` formats (essentially, all non-`RAW` formats) are understood by the built-in decoder.
### Custom image formats
The easiest way to create a custom image is to use the online image converter and set `Raw`, `Raw with alpha` or `Raw with chroma-keyed` format. It will just take every byte of the binary file you uploaded and write it as the image "bitmap". You then need to attach an image decoder that will parse that bitmap and generate the real, renderable bitmap.
`header.cf` will be `LV_IMG_CF_RAW`, `LV_IMG_CF_RAW_ALPHA` or `LV_IMG_CF_RAW_CHROME_KEYED` accordingly. You should choose the correct format according to your needs: fully opaque image, use alpha channel or use chroma keying.
After decoding, the *raw* formats are considered *True color* by the library. In other words, the image decoder must decode the *Raw* images to *True color* according to the format described in [#color-formats](Color formats) section.
If you want to create a custom image, you should use `LV_IMG_CF_USER_ENCODED_0..7` color formats. However, the library can draw the images only in *True color* format (or *Raw* but finally it's supposed to be in *True color* format).
The `LV_IMG_CF_USER_ENCODED_...` formats are not known by the library and therefore they should be decoded to one of the known formats from [#color-formats](Color formats) section.
It's possible to decode the image to a non-true color format first (for example: `LV_IMG_INDEXED_4BITS`) and then call the built-in decoder functions to convert it to *True color*.
With *User encoded* formats, the color format in the open function (`dsc->header.cf`) should be changed according to the new format.
### Register an image decoder
Here's an example of getting LVGL to work with PNG images.
First, you need to create a new image decoder and set some functions to open/close the PNG files. It should looks like this:
```c
/*Create a new decoder and register functions */
lv_img_decoder_t * dec = lv_img_decoder_create();
lv_img_decoder_set_info_cb(dec, decoder_info);
lv_img_decoder_set_open_cb(dec, decoder_open);
lv_img_decoder_set_close_cb(dec, decoder_close);
/**
* Get info about a PNG image
* @param decoder pointer to the decoder where this function belongs
* @param src can be file name or pointer to a C array
* @param header store the info here
* @return LV_RES_OK: no error; LV_RES_INV: can't get the info
*/
static lv_res_t decoder_info(lv_img_decoder_t * decoder, const void * src, lv_img_header_t * header)
{
/*Check whether the type `src` is known by the decoder*/
if(is_png(src) == false) return LV_RES_INV;
/* Read the PNG header and find `width` and `height` */
...
header->cf = LV_IMG_CF_RAW_ALPHA;
header->w = width;
header->h = height;
}
/**
* Open a PNG image and return the decided image
* @param decoder pointer to the decoder where this function belongs
* @param dsc pointer to a descriptor which describes this decoding session
* @return LV_RES_OK: no error; LV_RES_INV: can't get the info
*/
static lv_res_t decoder_open(lv_img_decoder_t * decoder, lv_img_decoder_dsc_t * dsc)
{
/*Check whether the type `src` is known by the decoder*/
if(is_png(src) == false) return LV_RES_INV;
/*Decode and store the image. If `dsc->img_data` is `NULL`, the `read_line` function will be called to get the image data line-by-line*/
dsc->img_data = my_png_decoder(src);
/*Change the color format if required. For PNG usually 'Raw' is fine*/
dsc->header.cf = LV_IMG_CF_...
/*Call a built in decoder function if required. It's not required if`my_png_decoder` opened the image in true color format.*/
lv_res_t res = lv_img_decoder_built_in_open(decoder, dsc);
return res;
}
/**
* Decode `len` pixels starting from the given `x`, `y` coordinates and store them in `buf`.
* Required only if the "open" function can't open the whole decoded pixel array. (dsc->img_data == NULL)
* @param decoder pointer to the decoder the function associated with
* @param dsc pointer to decoder descriptor
* @param x start x coordinate
* @param y start y coordinate
* @param len number of pixels to decode
* @param buf a buffer to store the decoded pixels
* @return LV_RES_OK: ok; LV_RES_INV: failed
*/
lv_res_t decoder_built_in_read_line(lv_img_decoder_t * decoder, lv_img_decoder_dsc_t * dsc, lv_coord_t x,
lv_coord_t y, lv_coord_t len, uint8_t * buf)
{
/*With PNG it's usually not required*/
/*Copy `len` pixels from `x` and `y` coordinates in True color format to `buf` */
}
/**
* Free the allocated resources
* @param decoder pointer to the decoder where this function belongs
* @param dsc pointer to a descriptor which describes this decoding session
*/
static void decoder_close(lv_img_decoder_t * decoder, lv_img_decoder_dsc_t * dsc)
{
/*Free all allocated data*/
/*Call the built-in close function if the built-in open/read_line was used*/
lv_img_decoder_built_in_close(decoder, dsc);
}
```
So in summary:
- In `decoder_info`, you should collect some basic information about the image and store it in `header`.
- In `decoder_open`, you should try to open the image source pointed by `dsc->src`. Its type is already in `dsc->src_type == LV_IMG_SRC_FILE/VARIABLE`.
If this format/type is not supported by the decoder, return `LV_RES_INV`.
However, if you can open the image, a pointer to the decoded *True color* image should be set in `dsc->img_data`.
If the format is known but you don't want to decode the entire image (e.g. no memory for it) set `dsc->img_data = NULL` to call `read_line` to get the pixels.
- In `decoder_close` you should free all the allocated resources.
- `decoder_read` is optional. Decoding the whole image requires extra memory and some computational overhead.
However, if can decode one line of the image without decoding the whole image, you can save memory and time.
To indicate that the *line read* function should be used, set `dsc->img_data = NULL` in the open function.
### Manually use an image decoder
LVGL will use the registered image decoder automatically if you try and draw a raw image (i.e. using the `lv_img` object) but you can use them manually too. Create a `lv_img_decoder_dsc_t` variable to describe the decoding session and call `lv_img_decoder_open()`.
```c
lv_res_t res;
lv_img_decoder_dsc_t dsc;
res = lv_img_decoder_open(&dsc, &my_img_dsc, LV_COLOR_WHITE);
if(res == LV_RES_OK) {
/*Do something with `dsc->img_data`*/
lv_img_decoder_close(&dsc);
}
```
## Image caching
Sometimes it takes a lot of time to open an image.
Continuously decoding a PNG image or loading images from a slow external memory would be inefficient and detrimental to the user experience.
Therefore, LVGL caches a given number of images. Caching means some images will be left open, hence LVGL can quickly access them from `dsc->img_data` instead of needing to decode them again.
Of course, caching images is resource-intensive as it uses more RAM (to store the decoded image). LVGL tries to optimize the process as much as possible (see below), but you will still need to evaluate if this would be beneficial for your platform or not. If you have a deeply embedded target which decodes small images from a relatively fast storage medium, image caching may not be worth it.
### Cache size
The number of cache entries can be defined in `LV_IMG_CACHE_DEF_SIZE` in *lv_conf.h*. The default value is 1 so only the most recently used image will be left open.
The size of the cache can be changed at run-time with `lv_img_cache_set_size(entry_num)`.
### Value of images
When you use more images than cache entries, LVGL can't cache all of the images. Instead, the library will close one of the cached images (to free space).
To decide which image to close, LVGL uses a measurement it previously made of how long it took to open the image. Cache entries that hold slower-to-open images are considered more valuable and are kept in the cache as long as possible.
If you want or need to override LVGL's measurement, you can manually set the *time to open* value in the decoder open function in `dsc->time_to_open = time_ms` to give a higher or lower value. (Leave it unchanged to let LVGL set it.)
Every cache entry has a *"life"* value. Every time an image opening happens through the cache, the *life* value of all entries is decreased to make them older.
When a cached image is used, its *life* value is increased by the *time to open* value to make it more alive.
If there is no more space in the cache, the entry with the smallest life value will be closed.
### Memory usage
Note that the cached image might continuously consume memory. For example, if 3 PNG images are cached, they will consume memory while they are open.
Therefore, it's the user's responsibility to be sure there is enough RAM to cache even the largest images at the same time.
### Clean the cache
Let's say you have loaded a PNG image into a `lv_img_dsc_t my_png` variable and use it in an `lv_img` object. If the image is already cached and you then change the underlying PNG file, you need to notify LVGL to cache the image again. Otherwise, there is no easy way of detecting that the underlying file changed and LVGL will still draw the old image.
To do this, use `lv_img_cache_invalidate_src(&my_png)`. If `NULL` is passed as a parameter, the whole cache will be cleaned.
## API
### Image buffer
```eval_rst
.. doxygenfile:: lv_img_buf.h
:project: lvgl
```

118
docs/overview/indev.md Normal file
View File

@@ -0,0 +1,118 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/indev.md
```
# Input devices
An input device usually means:
- Pointer-like input device like touchpad or mouse
- Keypads like a normal keyboard or simple numeric keypad
- Encoders with left/right turn and push options
- External hardware buttons which are assigned to specific points on the screen
``` important:: Before reading further, please read the [Porting](/porting/indev) section of Input devices
```
## Pointers
Pointer input devices (like a mouse) can have a cursor.
```c
...
lv_indev_t * mouse_indev = lv_indev_drv_register(&indev_drv);
LV_IMG_DECLARE(mouse_cursor_icon); /*Declare the image file.*/
lv_obj_t * cursor_obj = lv_img_create(lv_scr_act(), NULL); /*Create an image object for the cursor */
lv_img_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*/
```
Note that the cursor object should have `lv_obj_set_click(cursor_obj, false)`.
For images, *clicking* is disabled by default.
## Keypad and encoder
You can fully control the user interface without touchpad or mouse using a keypad or encoder(s). It works similar to the *TAB* key on the PC to select the element in an application or a web page.
### Groups
The objects, you want to control with keypad or encoder, needs to be added to a *Group*.
In every group, there is exactly one focused object which receives the pressed keys or the encoder actions.
For example, if a [Text area](/widgets/core/textarea) is focused and you press some letter on a keyboard, the keys will be sent and inserted into the text area.
Similarly, if a [Slider](/widgets/core/slider) is focused and you press the left or right arrows, the slider's value will be changed.
You need to associate an input device with a group. An input device can send the keys to only one group but, a group can receive data from more than one input device too.
To create a group use `lv_group_t * g = lv_group_create()` and to add an object to the group use `lv_group_add_obj(g, obj)`.
To associate a group with an input device use `lv_indev_set_group(indev, g)`, where `indev` is the return value of `lv_indev_drv_register()`
#### Keys
There are some predefined keys which have special meaning:
- **LV_KEY_NEXT** Focus on the next object
- **LV_KEY_PREV** Focus on the previous object
- **LV_KEY_ENTER** Triggers `LV_EVENT_PRESSED/CLICKED/LONG_PRESSED` etc. events
- **LV_KEY_UP** Increase value or move upwards
- **LV_KEY_DOWN** Decrease value or move downwards
- **LV_KEY_RIGHT** Increase value or move the the right
- **LV_KEY_LEFT** Decrease value or move the the left
- **LV_KEY_ESC** Close or exit (E.g. close a [Drop down list](/widgets/core/dropdown))
- **LV_KEY_DEL** Delete (E.g. a character on the right in a [Text area](/widgets/core/textarea))
- **LV_KEY_BACKSPACE** Delete a character on the left (E.g. in a [Text area](/widgets/core/textarea))
- **LV_KEY_HOME** Go to the beginning/top (E.g. in a [Text area](/widgets/core/textarea))
- **LV_KEY_END** Go to the end (E.g. in a [Text area](/widgets/core/textarea)))
The most important special keys are `LV_KEY_NEXT/PREV`, `LV_KEY_ENTER` and `LV_KEY_UP/DOWN/LEFT/RIGHT`.
In your `read_cb` function, you should translate some of your keys to these special keys to navigate in the group and interact with the selected object.
Usually, it's enough to use only `LV_KEY_LEFT/RIGHT` because most of the objects can be fully controlled with them.
With an encoder, you should use only `LV_KEY_LEFT`, `LV_KEY_RIGHT`, and `LV_KEY_ENTER`.
#### Edit and navigate mode
Since a keypad has plenty of keys, it's easy to navigate between the objects and edit them using the keypad. But the encoders have a limited number of "keys" and hence it is difficult to navigate using the default options. *Navigate* and *Edit* are created to avoid this problem with the encoders.
In *Navigate* mode, the encoders `LV_KEY_LEFT/RIGHT` is translated to `LV_KEY_NEXT/PREV`. Therefore the next or previous object will be selected by turning the encoder.
Pressing `LV_KEY_ENTER` will change to *Edit* mode.
In *Edit* mode, `LV_KEY_NEXT/PREV` is usually used to edit the object.
Depending on the object's type, a short or long press of `LV_KEY_ENTER` changes back to *Navigate* mode.
Usually, an object which can not be pressed (like a [Slider](/widgets/core/slider)) leaves *Edit* mode on short click. But with objects where short click has meaning (e.g. [Button](/widgets/core/btn)), a long press is required.
#### Default group
Interactive widgets - such as buttons, checkboxes, sliders, etc - can be automatically added to a default group.
Just create a group with `lv_group_t * g = lv_group_create();` and set the default group with `lv_group_set_default(g);`
Don't forget to assign the input device(s) to the default group with ` lv_indev_set_group(my_indev, g);`.
### Styling
If an object is focused either by clicking it via touchpad, or focused via an encoder or keypad it goes to `LV_STATE_FOCUSED`. Hence focused styles will be applied on it.
If the object goes to edit mode it goes to `LV_STATE_FOCUSED | LV_STATE_EDITED` state so these style properties will be shown.
For a more detaild description read the [Style](https://docs.lvgl.io/v7/en/html/overview/style.html) section.
## API
### Input device
```eval_rst
.. doxygenfile:: lv_indev.h
:project: lvgl
```
### Groups
```eval_rst
.. doxygenfile:: lv_group.h
:project: lvgl
```

32
docs/overview/index.md Normal file
View File

@@ -0,0 +1,32 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/index.md
```
# Overview
```eval_rst
.. toctree::
:maxdepth: 2
object
coords
style
style-props
scroll
layer
event
indev
display
color
font
image
file-system
animation
timer
drawing
new_widget
```

60
docs/overview/layer.md Normal file
View File

@@ -0,0 +1,60 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/layer.md
```
# Layers
## Order of creation
By default, LVGL draws new objects on top of old objects.
For example, assume we added a button to a parent object named button1 and then another button named button2. Then button1 (with its child object(s)) will be in the background and can be covered by button2 and its children.
![](/misc/layers.png "Creating graphical objects in Littlev Graphics Library")
```c
/*Create a screen*/
lv_obj_t * scr = lv_obj_create(NULL, NULL);
lv_scr_load(scr); /*Load the screen*/
/*Create 2 buttons*/
lv_obj_t * btn1 = lv_btn_create(scr, NULL); /*Create a button on the screen*/
lv_btn_set_fit(btn1, true, true); /*Enable to automatically set the size according to the content*/
lv_obj_set_pos(btn1, 60, 40); /*Set the position of the button*/
lv_obj_t * btn2 = lv_btn_create(scr, btn1); /*Copy the first button*/
lv_obj_set_pos(btn2, 180, 80); /*Set the position of the button*/
/*Add labels to the buttons*/
lv_obj_t * label1 = lv_label_create(btn1, NULL); /*Create a label on the first button*/
lv_label_set_text(label1, "Button 1"); /*Set the text of the label*/
lv_obj_t * label2 = lv_label_create(btn2, NULL); /*Create a label on the second button*/
lv_label_set_text(label2, "Button 2"); /*Set the text of the label*/
/*Delete the second label*/
lv_obj_del(label2);
```
## Bring to the foreground
There are several ways to bring an object to the foreground:
- Use `lv_obj_set_top(obj, true)`. If `obj` or any of its children is clicked, then LVGL will automatically bring the object to the foreground.
It works similarly to a typical GUI on a PC. When a window in the background is clicked, it will come to the foreground automatically.
- Use `lv_obj_move_foreground(obj)` to explicitly tell the library to bring an object to the foreground. Similarly, use `lv_obj_move_background(obj)` to move to the background.
- When `lv_obj_set_parent(obj, new_parent)` is used, `obj` will be on the foreground on the `new_parent`.
## Top and sys layers
LVGL uses two special layers named as `layer_top` and `layer_sys`.
Both are visible and common on all screens of a display. **They are not, however, shared among multiple physical displays.** The `layer_top` is always on top of the default screen (`lv_scr_act()`), and `layer_sys` is on top of `layer_top`.
The `layer_top` can be used by the user to create some content visible everywhere. For example, a menu bar, a pop-up, etc. If the `click` attribute is enabled, then `layer_top` will absorb all user click and acts as a modal.
```c
lv_obj_set_click(lv_layer_top(), true);
```
The `layer_sys` is also used for similar purposes on LVGL. For example, it places the mouse cursor above all layers to be sure it's always visible.

View File

@@ -0,0 +1,7 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/new_widget.md
```
# New widget

218
docs/overview/object.md Normal file
View File

@@ -0,0 +1,218 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/object.md
```
# Objects
In LVGL the **basic building blocks** of a user interface are the objects, also called *Widgets*.
For example a [Button](/widgets/core/btn), [Label](/widgets/core/label), [Image](/widgets/core/img), [List](/widgets/extra/list), [Chart](/widgets/extra/chart) or [Text area](/widgets/core/textarea).
You can see all the [Object types](/widgets/index) here.
All objects are referenced using an `lv_obj_t` pointer as a handle. This pointer can later be used to set or get the attributes of the object.
## Attributes
### Basic attributes
All object types share some basic attributes:
- Position
- Size
- Parent
- Styles
- Event handlers
- Etc
You can set/get these attributes with `lv_obj_set_...` and `lv_obj_get_...` functions. For example:
```c
/*Set basic object attributes*/
lv_obj_set_size(btn1, 100, 50); /*Set a button's size*/
lv_obj_set_pos(btn1, 20,30); /*Set a button's position*/
```
To see all the available functions visit the [Base object's documentation](/widgets/obj).
### Specific attributes
The object types have special attributes too. For example, a slider has
- Minimum and maximum values
- Current value
For these special attributes, every object type may have unique API functions. For example for a slider:
```c
/*Set slider specific attributes*/
lv_slider_set_range(slider1, 0, 100); /*Set the min. and max. values*/
lv_slider_set_value(slider1, 40, LV_ANIM_ON); /*Set the current value (position)*/
```
The API of the widgets is described in their [Documentation](/widgets/index) but you can also check the respective header files (e.g. *widgets/lv_slider.h*)
## Working mechanisms
### Parent-child structure
A parent object can be considered as the container of its children. Every object has exactly one parent object (except screens), but a parent can have any number of children.
There is no limitation for the type of the parent but, there are typical parent (e.g. button) and typical child (e.g. label) objects.
### Moving together
If the position of the parent changes the children will move with the parent.
Therefore all positions are relative to the parent.
![](/misc/par_child1.png "Objects are moving together 1")
```c
lv_obj_t * parent = lv_obj_create(lv_scr_act()); /*Create a parent object on the current screen*/
lv_obj_set_size(parent, 100, 80); /*Set the size of the parent*/
lv_obj_t * obj1 = lv_obj_create(parent); /*Create an object on the previously created parent object*/
lv_obj_set_pos(obj1, 10, 10); /*Set the position of the new object*/
```
Modify the position of the parent:
![](/misc/par_child2.png "Graphical objects are moving together 2")
```c
lv_obj_set_pos(parent, 50, 50); /*Move the parent. The child will move with it.*/
```
(For simplicity the adjusting of colors of the objects is not shown in the example.)
### Visibility only on the parent
If a child is partially or fully out of its parent then the parts outside will not be visible.
![](/misc/par_child3.png "A graphical object is visible on its parent")
```c
lv_obj_set_x(obj1, -30); /*Move the child a little bit off the parent*/
```
### Create and delete objects
In LVGL objects can be created and deleted dynamically in run time. It means only the currently created (existing) objects consume RAM.
This allows for the creation of a screen just when a button is clicked to open it, and for deletion of screens when a new screen is loaded.
UIs can be created based on the current environment of the device. For example one can create meters, charts, bars and sliders based on the currently attached sensors.
Every widget has its own **create** function with a prototype like this:
```c
lv_obj_t * lv_<widget>_create(lv_obj_t * parent, <other paramaters if any>);
```
In most of the cases the create functions have only a *parent* parameter that tells on which object create the new widget.
The return value is a pointer to the created object with `lv_obj_t *` type.
There is a common **delete** function for all object types. It deletes the object and all of its children.
```c
void lv_obj_del(lv_obj_t * obj);
```
`lv_obj_del` will delete the object immediately.
If for any reason you can't delete the object immediately you can use `lv_obj_del_async(obj)` that will perform the deletion on the next call of `lv_timer_handler()`.
This is useful e.g. if you want to delete the parent of an object in the child's `LV_EVENT_DELETE` handler.
You can remove all the children of an object (but not the object itself) using `lv_obj_clean(obj)`.
## Screens
### Create screens
The screens are special objects which have no parent object. So they can be created like:
```c
lv_obj_t * scr1 = lv_obj_create(NULL);
```
Screens can be created with any object type. For example, a [Base object](/widgets/obj) or an image to make a wallpaper.
### Get the active screen
There is always an active screen on each display. By default, the library creates and loads a "Base object" as a screen for each display.
To get the currently active screen use the `lv_scr_act()` function.
### Load screens
To load a new screen, use `lv_scr_load(scr1)`.
### Layers
There are two automatically generated layers:
- top layer
- system layer
They are independent of the screens and they will be shown on every screen. The *top layer* is above every object on the screen and the *system layer* is above the *top layer* too.
You can add any pop-up windows to the *top layer* freely. But, the *system layer* is restricted to system-level things (e.g. mouse cursor will be placed here in `lv_indev_set_cursor()`).
The `lv_layer_top()` and `lv_layer_sys()` functions return pointers to the top and system layers respectively.
Read the [Layer overview](/overview/layer) section to learn more about layers.
#### Load screen with animation
A new screen can be loaded with animation too using `lv_scr_load_anim(scr, transition_type, time, delay, auto_del)`. The following transition types exist:
- `LV_SCR_LOAD_ANIM_NONE`: switch immediately after `delay` milliseconds
- `LV_SCR_LOAD_ANIM_OVER_LEFT/RIGHT/TOP/BOTTOM` move the new screen over the current towards the given direction
- `LV_SCR_LOAD_ANIM_MOVE_LEFT/RIGHT/TOP/BOTTOM` move both the current and new screens towards the given direction
- `LV_SCR_LOAD_ANIM_FADE_ON` fade the new screen over the old screen
Setting `auto_del` to `true` will automatically delete the old screen when the animation is finished.
The new screen will become active (returned by `lv_scr_act()`) when the animations starts after `delay` time.
### Handling multiple displays
Screens are created on the currently selected *default display*.
The *default display* is the last registered display with `lv_disp_drv_register` or you can explicitly select a new default display using `lv_disp_set_default(disp)`.
`lv_scr_act()`, `lv_scr_load()` and `lv_scr_load_anim()` operate on the default screen.
Visit [Multi-display support](/overview/display) to learn more.
## Parts
The widgets are built from multiple parts. For example a [Base object](/widgets/obj) uses the main and scrollbar parts but a [Slider](/widgets/core/slider) uses the main, the indicator and the knob parts.
Parts are similar to *pseudo elements* in CSS.
The following predefined parts exist in LVGL:
- `LV_PART_MAIN` A background like rectangle*/``
- `LV_PART_SCROLLBAR` The scrollbar(s)
- `LV_PART_INDICATOR` Indicator, e.g. for slider, bar, switch, or the tick box of the checkbox
- `LV_PART_KNOB` Like a handle to grab to adjust the value*/
- `LV_PART_SELECTED` Indicate the currently selected option or section
- `LV_PART_ITEMS` Used if the widget has multiple similar elements (e.g. tabel cells)*/
- `LV_PART_TICKS` Ticks on scales e.g. for a chart or meter
- `LV_PART_CURSOR` Mark a specific place e.g. text area's or chart's cursor
- `LV_PART_CUSTOM_FIRST` Custom parts can be added from here.
The main purpose of parts to allow styling the "components" of the widgets.
Therefore the parts are described in more detail in the [Style overview](/overview/style) section.
## States
The object can be in a combination of the following states:
- `LV_STATE_DEFAULT` Normal, released state
- `LV_STATE_CHECKED` Toggled or checked state
- `LV_STATE_FOCUSED` Focused via keypad or encoder or clicked via touchpad/mouse
- `LV_STATE_FOCUS_KEY` Focused via keypad or encoder but not via touchpad/mouse
- `LV_STATE_EDITED` Edit by an encoder
- `LV_STATE_HOVERED` Hovered by mouse (not supported now)
- `LV_STATE_PRESSED` Being pressed
- `LV_STATE_SCROLLED` Being scrolled
- `LV_STATE_DISABLED` Disabled state
- `LV_STATE_USER_1` Custom state
- `LV_STATE_USER_2` Custom state
- `LV_STATE_USER_3` Custom state
- `LV_STATE_USER_4` Custom state
The states are usually automatically changed by the library as the user presses, releases, focuses etc an object.
However, the states can be changed manually too.
To set or clear given state (but leave the other states untouched) use `lv_obj_add/clear_state(obj, LV_STATE_...)`
In both cases ORed state values can be used as well. E.g. `lv_obj_add_state(obj, part, LV_STATE_PRESSED | LV_PRESSED_CHECKED)`.
To learn more about the states read the related section of the [Style overview](/overview/style).

169
docs/overview/scroll.md Normal file
View File

@@ -0,0 +1,169 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/scroll.md
```
# Scroll
## Overview
In LVGL scrolling works very intuitively: if an object is out of its parent content area (the size without paddings), the parent becomes scrollable and scrollbar(s) will appear. That's it.
Any object can be scrollable including `lv_obj_t`, `lv_img`, `lv_btn`, `lv_meter`, etc
The object can either be scrolled either horizontally or vertically in one stroke; diagonal scrolling is not possible.
### Scrollbar
#### Mode
The scrollbars are displayed according to the set `mode`. The following `mode`s exist:
- `LV_SCROLLBAR_MODE_OFF` Never show the scrollbars
- `LV_SCROLLBAR_MODE_ON` Always show the scrollbars
- `LV_SCROLLBAR_MODE_ACTIVE` Show scroll bars while object is being scrolled
- `LV_SCROLLBAR_MODE_AUTO` Show scroll bars when the content is large enough to be scrolled
`lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_...)` set the scrollbar mode on an object.
#### Styling
The scrollbars have their own dedicated part, called `LV_PART_SCROLLBAR`. For example a scrollbar can turned to red like this:
```c
static lv_style_t style_red;
lv_style_init(&style_red);
lv_style_set_bg_color(&style_red, lv_color_red());
...
lv_obj_add_style(obj, &style_red, LV_PART_SCROLLBAR);
```
The object goes to `LV_STATE_SCROLLED` state while it's being scrolled. It allows adding different style to the scrollbar or the object itself when scrolled.
This code makes the scrollbar blue when the object is scrolled:
```c
static lv_style_t style_blue;
lv_style_init(&style_blue);
lv_style_set_bg_color(&style_red, lv_color_blue());
...
lv_obj_add_style(obj, &style_blue, LV_STATE_SCROLLED | LV_PART_SCROLLBAR);
```
### Events
The following events are related to scrolling:
- `LV_EVENT_SCROLL_BEGIN` Scrolling begins
- `LV_EVENT_SCROLL_END` Scrolling ends
- `LV_EVENT_SCROLL` Scroll happened. Triggered on every position change.
Scroll events
## Basic example
TODO
## Features of scrolling
Besides managing "normal" scrolling there are many interesting and useful additional features too.
### Scrollable
It's possible to make an object non-scrollable with `lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE)`.
Non-scrollable object can still propagate the scrolling (chain) to the parents.
The direction in which scrolling can happen can be controlled by `lv_obj_set_scroll_dir(obj, LV_DIR_...)`.
The following values are possible for the direction:
- `LV_DIR_TOP` only scroll up
- `LV_DIR_LEFT` only scroll left
- `LV_DIR_BOTTOM` only scroll down
- `LV_DIR_RIGHT` only scroll right
- `LV_DIR_HOR` only scroll horizontally
- `LV_DIR_TOP` only scroll vertically
- `LV_DIR_ALL` scroll any directions
OR-ed values are also possible. E.g. `LV_DIR_TOP | LV_DIR_LEFT`.
### Scroll chain
If an object can't be scrolled further (e.g. it's content has reached the bottom most position) the scrolling is propagated to it's parent. If the parent an be scrolled in that direction than it will be scrolled instead.
It propagets to the grandparent and grand-grandparents too.
The propagation on scrolling is called "scroll chaining" and it can be enabled/disabled with the `LV_OBJ_FLAG_SCROLL_CHAIN` flag.
If chaining is disabled the propagation stops on the object and the parent(s) won't be scrolled.
### Scroll momentum
When the user scrolls an object and releases it, LVGL can emulate a momentum for the scrolling. It's like the object was thrown and scrolling slows down smoothly.
The scroll momentum can be enabled/disabled with the `LV_OBJ_FLAG_SCROLL_MOMENTUM` flag.
### Elastic scroll
Normally the content can't be scrolled inside the object. That is the top side of the content can't be below the top side of the object.
However, with `LV_OBJ_FLAG_SCROLL_ELASTIC` a fancy effect can be added when the user "over-scrolls" the content. The scrolling slows down, and the content can be scrolled inside the object.
When the object is released the content scrolled in it will be animated back to the valid position.
### Snapping
The children of an object can be snapped according to specific rules when scrolling ends. Children can be made snappable individually with the `LV_OBJ_FLAG_SNAPABLE` flag. (Note misspelling of the flag name: your code needs to spell it with one P.)
The object can align the snapped children in 4 ways:
- `LV_SCROLL_SNAP_NONE` Snapping is disabled. (default)
- `LV_SCROLL_SNAP_START` Align the children to the left/top side of the scrolled object
- `LV_SCROLL_SNAP_END` Align the children to the right/bottom side of the scrolled object
- `LV_SCROLL_SNAP_CENTER` Align the children to the center of the scrolled object
The alignment can be set with `lv_obj_set_scroll_snap_x/y(obj, LV_SCROLL_SNAP_...)`:
Under the hood the following happens:
1. User scrolls an object and releases the screen
2. LVGL calculates where the scroll would end considering scroll momentum
3. LVGL finds the nearest scroll point
4. LVGL scrolls to the snap point with an animation
### Scroll one
The "scroll one" feature tells LVGL to allow scrolling only one snappable child at a time.
So this requires to make the children snappable (LV_OBJ_FLAG_SNAPABLE spelled with one P in code) and and set a scroll snap alignment different from `LV_SCROLL_SNAP_NONE`.
This feature can be enabled by the `LV_OBJ_FLAG_SCROLL_ONE` flag.
### Scroll on focus
Imagine that there a lot of objects in a group that are on scrollable object. Pressing the "Tab" button focuses the next object but it might be out of the visible area of the scrollable object.
If the "scroll on focus" features is enabled LVGL will automatically scroll to the objects to bring the children into the view.
The scrolling happens recursively therefore even nested scrollable object are handled properly.
The object will be scrolled to the view even if it's on a different page of a tabview.
## Scroll manually
The following API functions allow to manually scroll objects:
- `lv_obj_scroll_by(obj, x, y, LV_ANIM_ON/OFF)` scroll by `x` and `y` values
- `lv_obj_scroll_to(obj, x, y, LV_ANIM_ON/OFF)` scroll to bring the given coordinate to the top left corner
- `lv_obj_scroll_to_x(obj, x, LV_ANIM_ON/OFF)` scroll to bring the given coordinate to the left side
- `lv_obj_scroll_to_y(obj, y, LV_ANIM_ON/OFF)` scroll to bring the given coordinate to the left side
## Self size
Self size is a property of an object. Normally, the user shouldn't use this parameter but if a custom widget is created it might be useful.
In short, self size tell the size of the content. To understand it better take the example of a table.
Let's say it has 10 rows each with 50 px height. So the total height of the content is 500 px. In other words the "self height" is 500 px.
If the user sets only 200 px height for the table LVGL will see that the self size is larger and make the table scrollable.
It means not only the children can make an object scrollable but a larger self size too.
LVGL uses the `LV_EVENT_GET_SELF_SIZE` event to get the self size of an object. Here is an example to see how to handle the event
```c
if(event_code == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = lv_event_get_param(e);
//If x or y < 0 then it doesn't neesd to be calculated now
if(p->x >= 0) {
p->x = 200; //Set or calculate the self width
}
if(p->y >= 0) {
p->y = 50; //Set or calculate the self height
}
}
```
## Examples
```eval_rst
.. include:: ../../examples/scroll/index.rst
```

View File

@@ -0,0 +1,903 @@
# Style properties
## Size and position
TODO
### width
Sets the width of object. Pixel, percentage and `LV_SIZE_CONTENT` values can be used. Percentage values are relative to the width of the parent's content area.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### min_width
Sets a minimal width. Pixel and percentage values can be used. Percentage values are relative to the width of the parent's content area.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### max_width
Sets a maximal width. Pixel and percentage values can be used. Percentage values are relative to the width of the parent's content area.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### height
Sets the height of object. Pixel, percentage and `LV_SIZE_CONTENT` can be used. Percentage values are relative to the height of the parent's content area.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### min_height
Sets a minimal height. Pixel and percentage values can be used. Percentage values are relative to the width of the parent's content area.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### max_height
Sets a maximal height. Pixel and percentage values can be used. Percentage values are relative to the height of the parent's content area.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### x
Set the X coordinate of the object considering the set `align`. Pixel and percentage values can be used. Percentage values are relative to the width of the parent's content area.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### y
Set the Y coordinate of the object considering the set `align`. Pixel and percentage values can be used. Percentage values are relative to the height of the parent's content area.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### align
Set the alignment which determines from which point of the parent the X and Y coordinates should be interpreted. The possible values are: `LV_ALIGN_TOP_LEFT/MID/RIGHT`, `LV_ALIGN_BOTTOM_LEFT/MID/RIGHT`, `LV_ALIGN_LEFT/RIGHT_MID`, `LV_ALIGN_CENTER`
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### transform_width
Make the object wider on both sides with this value. Pixel and percentage (with `lv_pct(x)`) values can be used. Percentage values are relative to the object's width.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### transform_height
Make the object higher on both sides with this value. Pixel and percentage (with `lv_pct(x)`) values can be used. Percentage values are relative to the object's height.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### translate_x
Move the object with this value in X direction. Applied after layouts, aligns and other positioning. Pixel and percentage (with `lv_pct(x)`) values can be used. Percentage values are relative to the object's width.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### translate_y
Move the object with this value in Y direction. Applied after layouts, aligns and other positioning. Pixel and percentage (with `lv_pct(x)`) values can be used. Percentage values are relative to the object's height.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### transform_zoom
Zoom image-like objects. Multiplied with the zoom set on the object. The value 256 (or `LV_IMG_ZOOM_NONE`) means normal size, 128 half size, 512 double size, and so on
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### transform_angle
Rotate image-like objects. Added to the rotation set on the object. The value is interpreted in 0.1 degree unit. E.g. 45 deg. = 450
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Padding
TODO
### pad_top
Sets the padding on the top. It makes the content area smaller in this direction.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### pad_bottom
Sets the padding on the bottom. It makes the content area smaller in this direction.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### pad_left
Sets the padding on the left. It makes the content area smaller in this direction.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### pad_right
Sets the padding on the right. It makes the content area smaller in this direction.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### pad_row
Sets the padding between the rows. Used by the layouts.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### pad_column
Sets the padding between the columns. Used by the layouts.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Miscellaneous
TODO
### radius
Set the radius on every corner. The value is interpreted in pixel (>= 0) or `LV_RADIUS_CIRCLE` for max. radius
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### clip_corner
Enable to clip the overflowed content on the rounded corner. Can be `true` or `false`.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### opa
Scale down all opacity values of the object by this factor. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 256, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc indicate semi-transparency.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### color_filter_dsc
Mix a color to all colors of the object.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### color_filter_opa
The intensity of mixing of color filter.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### anim_time
The animation time in milliseconds. Its meaning is widget specific. E.g. blink time of the cursor on the text area or scroll time of a roller. See the widgets' documentation to learn more.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### anim_speed
The animation speed in pixel/sec. Its meaning is widget specific. E.g. scroll speed of label. See the widgets' documentation to learn more.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### transition
An initialized `lv_style_transition_dsc_t` to describe a transition.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### blend_mode
Describes how to blend the colors to the background. The possible values are `LV_BLEND_MODE_NORMAL/ADDITIVE/SUBTRACTIVE`
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### layout
Set the layout if the object. The children will be repositioned and resized according to the policies set for the layout. For the possible values see the documentation of the layouts.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### base_dir
Set the base direction of the object. The possible values are `LV_BIDI_DIR_LTR/RTL/AUTO`.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Background
TODO
### bg_color
Set the background color of the object.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_opa
Set the opacity of the background. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 256, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc indicate semi-transparency.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_grad_color
Set the gradient color of the background. Used only if `grad_dir` is not `LV_GRAD_DIR_NONE`
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_grad_dir
Set the direction of the gradient of the background. The possible values are `LV_GRAD_DIR_NONE/HOR/VER`.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_main_stop
Set the point from which the background color should start for gradients. 0 means to top/left side, 255 the bottom/right side, 128 the center, and so on
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_grad_stop
Set the point from which the background's gradient color should start. 0 means to top/left side, 255 the bottom/right side, 128 the center, and so on
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_img_src
Set a background image. Can be a pointer to `lv_img_dsc_t`, a path to a file or an `LV_SYMBOL_...`
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_img_opa
Set the opacity of the background image. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 256, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc indicate semi-transparency.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_img_recolor
Set a color to mix to the background image.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_img_recolor_opa
Set the intensity of background image recoloring. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means no mixing, 256, `LV_OPA_100` or `LV_OPA_COVER` means full recoloring, other values or LV_OPA_10, LV_OPA_20, etc are interpreted proportionally.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### bg_img_tiled
If enabled the background image will be tiled. The possible values are `true` or `false`.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Border
TODO
### border_color
Set the color of the border
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### border_opa
Set the opcitiy of the border. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 256, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc indicate semi-transparency.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### border_width
Set the width of the border. Only pixel values can be used.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### border_side
Set which side(s) the border should be drawn. The possible values are `LV_BORDER_SIDE_NONE/TOP/BOTTOM/LEFT/RIGHT/INTERNAL`. OR-ed calues an be used as well, e.g. `LV_BORDER_SIDE_TOP | LV_BORDER_SIDE_LEFT`.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### border_post
Sets wheter the border should be drawn before or after the children ar drawn. `true`: after children, `false`: before children
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Text
TODO
### text_color
Sets the color of the text.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### text_opa
Set the opacity of the text. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 256, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc indicate semi-transparency.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### text_font
Set the font of the text (a pointer `lv_font_t *`).
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### text_letter_space
Set the letter space in pixels
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### text_line_space
Set the line space in pixels.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### text_decor
Set decoration for the text. The possible values are `LV_TEXT_DECOR_NONE/UNDERLINE/STRIKETHROUGH`. OR-ed values can be used as well.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### text_align
Set how to align the lines of the text. Note that it doesn't align the object itself, only the lines inside the object. The possible values are `LV_TEXT_ALIGN_LEFT/CENTER/RIGHT/AUTO`. `LV_TEXT_ALIGN_AUTO` detect the text base direction and uses left or right alignment accordingly
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Image
TODO
### img_opa
Set the opacity of an image. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 256, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc indicate semi-transparency.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### img_recolor
Set color to mix to the image.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### img_recolor_opa
Set the intensity of the color mixing. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 256, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc indicate semi-transparency.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Outline
TODO
### outline_width
Set the width of the outline in pixels.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### outline_color
Set the color of the outline.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### outline_opa
Set the opacity of the outline. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 256, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc indicate semi-transparency.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### outline_pad
Set the padding of the outline, i.e. the gap between object and the outline.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Shadow
TODO
### shadow_width
Set the width of the shadow in pixels. The value should be >= 0.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### shadow_ofs_x
Set an offset on the shadow in pixels in X direction.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### shadow_ofs_y
Set an offset on the shadow in pixels in Y direction.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### shadow_spread
Make the shadow calculation to use a larger or smaller rectangle as base. The value can be in pixel to make the area larger/smaller
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### shadow_color
Set the color of the shadow
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### shadow_opa
Set the opacity of the shadow. Value 0, `LV_OPA_0` or `LV_OPA_TRANSP` means fully transparent, 256, `LV_OPA_100` or `LV_OPA_COVER` means fully covering, other values or LV_OPA_10, LV_OPA_20, etc indicate semi-transparency.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Line
TODO
### line_width
Set the width of the lines in pixel.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### line_dash_width
Set the width of dashes in pixel. Note that dash works only on horizontal and vertical lines
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### line_dash_gap
Set the gap between dashes in pixel. Note that dash works only on horizontal and vertical lines
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### line_rounded
Make the end points of the lines rounded. `true`: rounded, `false`: perpendicular line ending
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### line_color
Set the color fo the lines.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### line_opa
Set the opacity of the lines.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
## Arc
TODO
### arc_width
Set the width (thickness) of the arcs in pixel.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### arc_rounded
Make the end points of the arcs rounded. `true`: rounded, `false`: perpendicular line ending
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### arc_color
Set the color of the arc.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### arc_opa
Set the opacity of the arcs.
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>
### arc_img_src
Set an image from which the arc will be masked out. It's useful to display complex effects on the arcs. Can be a pointer to `lv_img_dsc_t` or a path to a file
<ul>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Default</strong> 0</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Inherited</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Layout</strong> No</li>
<li style='display:inline; margin-right: 20px; margin-left: 0px'><strong>Ext. draw</strong> No</li>
</ul>

318
docs/overview/style.md Normal file
View File

@@ -0,0 +1,318 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/style.md
```
# Styles
*Styles* are used to set the appearance of the objects. Styles in lvgl are heavily inspired by CSS. The concept in nutshell is as follows:
- A style is an `lv_style_t` variable which can hold properties like border width, text color and so on. It's similar to a `class` in CSS.
- Styles can be assigned to objects to change their appearance. During the assignment the target part (*pseudo element* in CSS) and target state (*pseudo class*) can be specified.
For example one can add `style_blue` to the knob of a slider when it's in pressed state.
- The same style can be used by any number of objects.
- Styles can be cascaded which means multiple styles can be assigned to an object and each style can have different properties.
Therefore not all properties have to be specified in style. LVLG will look for a property until a style defines it or use a default if it's not spefied by any of the styles.
For example `style_btn` can result in a default gray button and `style_btn_red` can add only a `background-color=red` to overwrite the background color.
- Later added styles have higher precedence. It means if a property is specified in two styles the later added will be used.
- Some properties (e.g. text color) can be inherited from the parent(s) if it's not specified in the object.
- Objects can have local styles that have higher precedence than "normal" styles.
- Unlike CSS (where pseudo-classes describe different states, e.g. `:focus`), in LVGL a property is assigned to a given state.
- Transitions can be applied when the object changes state.
## States
The objects can be in the combination of the following states:
- `LV_STATE_DEFAULT` (0x0000) Normal, released state
- `LV_STATE_CHECKED` (0x0001) Toggled or checked state
- `LV_STATE_FOCUSED` (0x0002) Focused via keypad or encoder or clicked via touchpad/mouse
- `LV_STATE_FOCUS_KEY` (0x0004) Focused via keypad or encoder but not via touchpad/mouse
- `LV_STATE_EDITED` (0x0008) Edit by an encoder
- `LV_STATE_HOVERED` (0x0010) Hovered by mouse (not supported now)
- `LV_STATE_PRESSED` (0x0020) Being pressed
- `LV_STATE_SCROLLED` (0x0040) Being scrolled
- `LV_STATE_DISABLED` (0x0080) Disabled state
- `LV_STATE_USER_1` (0x1000) Custom state
- `LV_STATE_USER_2` (0x2000) Custom state
- `LV_STATE_USER_3` (0x4000) Custom state
- `LV_STATE_USER_4` (0x8000) Custom state
The combination states the object can be focused and pressed at the same time. This is represented as `LV_STATE_FOCUSED | LV_STATE_PRESSED`.
The style can be added to any state and state combination.
For example, setting a different background color for default and pressed state.
If a property is not defined in a state the best matching state's property will be used. Typically this means the property with `LV_STATE_DEFAULT` is used.˛
If the property is not set even for the default state the default value will be used. (See later)
But what does the "best matching state's property" really mean?
States have a precedence which is shown by their value (see in the above list). A higher value means higher precedence.
To determine which state's property to use let's take an example. Imagine the background color is defined like this:
- `LV_STATE_DEFAULT`: white
- `LV_STATE_PRESSED`: gray
- `LV_STATE_FOCUSED`: red
1. By the default the object is in default state, so it's a simple case: the property is perfectly defined in the object's current state as white.
2. When the object is pressed there are 2 related properties: default with white (default is related to every state) and pressed with gray.
The pressed state has 0x0020 precedence which is higher than the default state's 0x0000 precedence, so gray color will be used.
3. When the object is focused the same thing happens as in pressed state and red color will be used. (Focused state has higher precedence than default state).
4. When the object is focused and pressed both gray and red would work, but the pressed state has higher precedence than focused so gray color will be used.
5. It's possible to set e.g rose color for `LV_STATE_PRESSED | LV_STATE_FOCUSED`.
In this case, this combined state has 0x0020 + 0x0002 = 0x0022 precedence, which is higher than the pressed state's precedence so rose color would be used.
6. When the object is in checked state there is no property to set the background color for this state. So for lack of a better option, the object remains white from the default state's property.
Some practical notes:
- The precedence (value) of states is quite intuitive and it's something the user would expect naturally. E.g. if an object is focused the user will still want to see if it's pressed, therefore pressed state has a higher precedence.
If the focused state had a higher precedence it would overwrite the pressed color.
- If you want to set a property for all states (e.g. red background color) just set it for the default state. If the object can't find a property for its current state it will fall back to the default state's property.
- Use ORed states to describe the properties for complex cases. (E.g. pressed + checked + focused)
- It might be a good idea to use different style elements for different states.
For example, finding background colors for released, pressed, checked + pressed, focused, focused + pressed, focused + pressed + checked, etc states is quite difficult.
Instead, for example, use the background color for pressed and checked states and indicate the focused state with a different border color.
## Cascading styles
It's not required to set all the properties in one style. It's possible to add more styles to an object and let the later added style to modify or extend appearance.
For example, create a general gray button style and create a new for red buttons where only the new background color is set.
This is much like in CSS when used classes are listed like `<div class=".btn .btn-red">`.
Styles added later have precedence over ones set earlier. So in the gray/red button example above, the normal button style should be added first and the red style second.
However, the precedence coming from states are still taken into account.
So let's examine the following case:
- the basic button style defines dark-gray color for default state and light-gray color pressed state
- the red button style defines the background color as red only in the default state
In this case, when the button is released (it's in default state) it will be red because a perfect match is found in the most recently added style (red).
When the button is pressed the light-gray color is a better match because it describes the current state perfectly, so the button will be light-gray.
## Inheritance
Some properties (typically that are related to texts) can be inherited from the parent object's styles.
Inheritance is applied only if the given property is not set in the object's styles (even in default state).
In this case, if the property is inheritable, the property's value will be searched in the parents too until an object specifies a value for the property. The parents will use their own state to detemine the value.
So if a button is pressed, and the text color comes from here, the pressed text color will be used.
## Parts
Objects can have *parts* which can have their own styles.
The following predefined parts exist in LVGL:
- `LV_PART_MAIN` A background like rectangle*/
- `LV_PART_SCROLLBAR` The scrollbar(s)
- `LV_PART_INDICATOR` Indicator, e.g. for slider, bar, switch, or the tick box of the checkbox
- `LV_PART_KNOB` Like a handle to grab to adjust the value*/
- `LV_PART_SELECTED` Indicate the currently selected option or section
- `LV_PART_ITEMS` Used if the widget has multiple similar elements (e.g. table cells)*/
- `LV_PART_TICKS` Ticks on scales e.g. for a chart or meter
- `LV_PART_CURSOR` Mark a specific place e.g. text area's or chart's cursor
- `LV_PART_CUSTOM_FIRST` Custom parts can be added from here.
For example a [Slider](/widgets/core/slider) has three parts:
- Background
- Indiactor
- Knob
It means the all three parts of the slider can have their own styles. See later how to add style styles to objects and parts.
## Initialize styles and set/get properties
Styles are stored in `lv_style_t` variables. Style variables should be `static`, global or dynamically allocated.
In other words they can not be local variables in functions which are destroyed when the function exists.
Before using a style it should be initialized with `lv_style_init(&my_style)`.
After initializing the style properties can be set or added to it.
Property set functions looks like this: `lv_style_set_<property_name>(&style, <value>);` For example:
```c
static lv_style_t style_btn;
lv_style_init(&style_btn);
lv_style_set_bg_color(&style_btn, lv_color_grey());
lv_style_set_bg_opa(&style_btn, LV_OPA_50);
lv_style_set_border_width(&style_btn, 2);
lv_style_set_border_color(&style_btn, lv_color_black());
static lv_style_t style_btn_red;
lv_style_init(&style_btn_red);
lv_style_set_bg_color(&style_btn_red, lv_color_red());
lv_style_set_bg_opa(&style_btn_red, LV_OPA_COVER);
```
To remove a property use:
```c
lv_style_remove_prop(&style, LV_STYLE_BG_COLOR);
```
To get a property's value from a style:
```c
lv_style_value_t v;
lv_res_t res = lv_style_rget_prop(&style, LV_STYLE_BG_COLOR, &v);
if(res == LV_RES_OK) { /*Found*/
do_something(v.color);
}
```
`lv_style_value_t` has 3 fields:
- `num` for integer, boolean and opacity properties
- `color` for color properties
- `ptr` for pointer properties
To reset a style (free all its data) use
```c
lv_style_reset(&style);
```
## Add and remove styles to a widget
A style on its own is not that useful, it needs to be assigned to an object to take effect.
### Add styles
To add a style to an object use `lv_obj_add_style(obj, &style, <selector>)`. `<selector>` is an OR-ed value of parts and state to which the style should be added. Some examples:
- `LV_PART_MAIN | LV_STATE_DEFAULT`
- `LV_STATE_PRESSED`: The main part in pressed state. `LV_PART_MAIN` can be omitted
- `LV_PART_SCROLLBAR`: The scrollbar part in the default state. `LV_STATE_DEFAULT` can be omitted.
- `LV_PART_SCROLLBAR | LV_STATE_SCROLLED`: The scrollbar part when the object is being scrolled
- `0` Same as `LV_PART_MAIN | LV_STATE_DEFAULT`.
- `LV_PART_INDICATOR | LV_STATE_PRESSED | LV_STATE_CHECKED` The indicator part when the object is pressed and checked at the same time.
Using `lv_obj_add_style`:
```c
lv_obj_add_style(btn, &style_btn, 0); /*Default button style*/
lv_obj_add_style(btn, &btn_red, LV_STATE_PRESSED);  /*Overwrite only a some colors to red when pressed*/
```
### Remove styles
To remove all styles from an object use `lv_obj_remove_style_all(obj)`.
To remove specific styles use `lv_obj_remove_style(obj, style, selector)`. This function will remove `style` only if the `selector` matches with the `selector` used in `lv_obj_add_style`.
`style` can be `NULL` to check only the `selector` and remove all matching styles. The `selector` can use the `LV_STATE_ANY` and `LV_PART_ANY` values to remove the style with any state or part.
### Report style changes
If a style which is already assigned to object changes (i.e. a property is added or changed) the objects using that style should be notified. There are 3 options to do this:
1. If you know that the changed properties can be applied by a simple redraw (e.g. color or opacity changes) just call `lv_obj_invalidate(obj)` or `lv_obj_invalideate(lv_scr_act())`.
2. If more complex style properties were changed or added, and you know which object(s) are affected by that style call `lv_obj_refresh_style(obj, part, property)`.
To refresh all parts and properties use `lv_obj_refresh_style(obj, LV_PART_ANY, LV_STYLE_PROP_ANY)`.
3. To make LVGL check all objects to see whether they use the style and refresh them when needed call `lv_obj_report_style_change(&style)`. If `style` is `NULL` all objects will be notified about the style change.
### Get a property's value on an object
To get a final value of property - considering cascading, inheritance, local styles and transitions (see below) - get functions like this can be used:
`lv_obj_get_style_<property_name>(obj, <part>)`.
These functions uses the object's current state and if no better candidate returns a default value.  
For example:
```c
lv_color_t color = lv_obj_get_style_bg_color(btn, LV_PART_MAIN);
```
## Local styles
Besides "normal" styles, the objects can store local styles too. This concept is similar to inline styles in CSS (e.g. `<div style="color:red">`) with some modification.
So local styles are like normal styles but they can't be shared among other objects. If used, local styles are allocated automatically, and freed when the object is deleted.
They are useful to add local customization to the object.
Unlike in CSS, in LVGL local styles can be assigned to states (*pseudo-classes*) and parts (*pseudo-elements*).
To set a local property use functions like `lv_obj_set_style_local_<property_name>(obj, <value>, <selector>);`  
For example:
```c
lv_obj_set_style_local_bg_color(slider, lv_color_red(), LV_PART_INDICATOR | LV_STATE_FOCUSED);
```
## Properties
For the full list of style properties click [here](/overview/style-props).
### Typical background properties
In the documentation of the widgets you will see sentences like "The widget use the typical background properties". The "typical background properties" are the ones related to:
- Background
- Border
- Outline
- Shadow
- Padding
- Width and height transformation
- X and Y translation
## Transitions
By default, when an object changes state (e.g. it's pressed) the new properties from the new state are set immediately. However, with transitions it's possible to play an animation on state change.
For example, on pressing a button its background color can be animated to the pressed color over 300 ms.
The parameters of the transitions are stored in the styles. It's possible to set
- the time of the transition
- the delay before starting the transition
- the animation path (also known as timing or easing function)
- the properties to animate
The transition properties can be defined for each state. For example, setting 500 ms transition time in default state will mean that when the object goes to the default state a 500 ms transition time will be applied.
Setting 100 ms transition time in the pressed state will mean a 100 ms transition time when going to pressed state.
So this example configuration will result in going to pressed state quickly and then going back to default slowly.
To describe a transition an `lv_transition_dsc_t` variable needs to initialized and added to a style:
```c
/*Only its pointer is saved so must static, global or dynamically allocated */
static const lv_style_prop_t trans_props[] = {
LV_STYLE_BG_OPA, LV_STYLE_BG_COLOR,
0, /*End marker*/
};
static lv_style_transition_dsc_t trans1;
lv_style_transition_dsc_init(&trans1, trans_props, lv_anim_path_ease_out, duration_ms, delay_ms);
lv_style_set_transition(&style1, &trans1);
```
## Color filter
TODO
## Themes
Themes are a collection of styles. If there is an active theme LVGL applies it on every created widget.
This will give a default appearance to the UI which can then be modified by adding further styles.
Every display can have a different theme. For example you could have a colorful theme on a TFT and monochrome theme on a secondary monochrome display.
To set a theme for a display, 2 steps are required:
1. Initialize a theme
2. Assign the initialized theme to a display.
Theme initialization functions can have different prototype. This example shows how to set the "default" theme:
```c
lv_theme_t * th = lv_theme_default_init(display, /*Use the DPI, size, etc from this display*/
LV_COLOR_PALETTE_BLUE, LV_COLOR_PALETTE_CYAN, /*Primary and secondary palette*/
false, /*Light or dark mode*/
&lv_font_montserrat_10, &lv_font_montserrat_14, &lv_font_montserrat_18); /*Small, normal, large fonts*/
lv_disp_set_theme(display, th); /*Assign the theme to the display*/
```
The themes can be enabled in `lv_conf.h`. If the default theme is enabled by `LV_USE_THEME_DEFAULT 1` LVGL automatically initializes and sets it when a display is created.
### Extending themes
Built-in themes can be extended.
If a custom theme is created a parent theme can be selected. The parent theme's styles will be added before the custom theme's styles.
Any number of themes can be chained this way. E.g. default theme -> custom theme -> dark theme.
`lv_theme_set_parent(new_theme, base_theme)` extends the `base_theme` with the `new_theme`.
There is an example for it below.
## Examples
```eval_rst
.. include:: ../../examples/styles/index.rst
```
## API
```eval_rst
.. doxygenfile:: lv_style.h
:project: lvgl
.. doxygenfile:: lv_theme.h
:project: lvgl
.. doxygenfile:: lv_obj_style_gen.h
:project: lvgl
.. doxygenfile:: lv_style_gen.h
:project: lvgl
```

102
docs/overview/timer.md Normal file
View File

@@ -0,0 +1,102 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/overview/timer.md
```
# Timers
LVGL has a built-in timer system. You can register a function to have it be called periodically. The timers are handled and called in `lv_timer_handler()`, which needs to be called every few milliseconds.
See [Porting](/porting/task-handler) for more information.
The timers are non-preemptive, which means a timer cannot interrupt another timer. Therefore, you can call any LVGL related function in a timer.
## Create a timer
To create a new timer, use `lv_timer_create(timer_cb, period_ms, user_data)`. It will create an `lv_timer_t *` variable, which can be used later to modify the parameters of the timer.
`lv_timer_create_basic()` can also be used. This allows you to create a new timer without specifying any parameters.
A timer callback should have `void (*lv_timer_cb_t)(lv_timer_t *);` prototype.
For example:
```c
void my_timer(lv_timer_t * timer)
{
/*Use the user_data*/
uint32_t * user_data = timer->user_data;
printf("my_timer called with user data: %d\n", *user_data);
/*Do something with LVGL*/
if(something_happened) {
something_happened = false;
lv_btn_create(lv_scr_act(), NULL);
}
}
...
static uint32_t user_data = 10;
lv_timer_t * timer = lv_timer_create(my_timer, 500, &user_data);
```
## Ready and Reset
`lv_timer_ready(timer)` makes the timer run on the next call of `lv_timer_handler()`.
`lv_timer_reset(timer)` resets the period of a timer. It will be called again after the defined period of milliseconds has elapsed.
## Set parameters
You can modify some parameters of the timers later:
- `lv_timer_set_cb(timer, new_cb)`
- `lv_timer_set_period(timer, new_period)`
## Repeat count
You can make a timer repeat only a given number of times with `lv_timer_set_repeat_count(timer, count)`. The timer will automatically be deleted after being called the defined number of times. Set the count to `-1` to repeat indefinitely.
## Measure idle time
You can get the idle percentage time of `lv_timer_handler` with `lv_timer_get_idle()`. Note that, it doesn't measure the idle time of the overall system, only `lv_timer_handler`.
It can be misleading if you use an operating system and call `lv_timer_handler` in a timer, as it won't actually measure the time the OS spends in an idle thread.
## Asynchronous calls
In some cases, you can't do an action immediately. For example, you can't delete an object because something else is still using it or you don't want to block the execution now.
For these cases, `lv_async_call(my_function, data_p)` can be used to make `my_function` be called on the next call of `lv_timer_handler`. `data_p` will be passed to function when it's called.
Note that, only the pointer of the data is saved so you need to ensure that the variable will be "alive" while the function is called. It can be *static*, global or dynamically allocated data.
For example:
```c
void my_screen_clean_up(void * scr)
{
/*Free some resources related to `scr`*/
/*Finally delete the screen*/
lv_obj_del(scr);
}
...
/*Do somethings with the object on the current screen*/
/*Delete screen on next call of `lv_timer_handler`, so not now.*/
lv_async_call(my_screen_clean_up, lv_scr_act());
/*The screen is still valid so you can do other things with it*/
```
If you just want to delete an object, and don't need to clean anything up in `my_screen_cleanup`, you could just use `lv_obj_del_async`, which will delete the object on the next call to `lv_timer_handler`.
## API
```eval_rst
.. doxygenfile:: lv_timer.h
:project: lvgl
.. doxygenfile:: lv_async.h
:project: lvgl
```

196
docs/porting/display.md Normal file
View File

@@ -0,0 +1,196 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/porting/display.md
```
# Display interface
To register a display for LVGL a `lv_disp_draw_buf_t` and a `lv_disp_drv_t` variable have to be initialized.
- `lv_disp_draw_buf_t` contains internal graphic buffer(s) called draw buffer(s).
- `lv_disp_drv_t` contains callback functions to interact with the display and manipulate drawing related things.
## Draw buffer
Draw buffer(s) are simple array(s) that LVGL uses to render the content of the screen.
Once rendering is ready the content of the draw buffer is sent to the display using the `flush_cb` function set in the display driver (see below).
A draw draw buffer can be initialized via a `lv_disp_draw_buf_t` variable like this:
```c
/*A static or global variable to store the buffers*/
static lv_disp_draw_buf_t disp_buf;
/*Static or global buffer(s). The second buffer is optional*/
static lv_color_t buf_1[MY_DISP_HOR_RES * 10];
static lv_color_t buf_2[MY_DISP_HOR_RES * 10];
/*Initialize `disp_buf` with the buffer(s). With only one buffer use NULL instead buf_2 */
lv_disp_draw_buf_init(&disp_buf, buf_1, buf_2, MY_DISP_HOR_RES*10);
```
Note that `lv_disp_draw_buf_t` needs to be static, global or dynamically allocated and not a local variable destroyed if goes out of the scope.
As you can see the draw buffer can be smaller than the screen. In this case, the larger areas will be redrawn in smaller parts that fit into the draw buffer(s).
If only a small area changes (e.g. a button is pressed) then only that area will be refreshed.
A larger buffer results in better performance but above 1/10 screen sized buffer(s) there is no significant performance improvement.
Therefore it's recommended to choose the size of the draw buffer(s) to at least 1/10 screen sized.
If only **one buffer** is used LVGL draws the content of the screen into that draw buffer and sends it to the display.
This way LVGL needs to wait until the content of the buffer is sent to the display before drawing something new in it.
If **two buffers** are used LVGL can draw into one buffer while the content of the other buffer is sent to display in the background.
DMA or other hardware should be used to transfer the data to the display to let the MCU draw meanwhile.
This way, the rendering and refreshing of the display become parallel.
In the display driver (`lv_disp_drv_t`) the `full_refresh` bit can be enabled to force LVGL to always redraw the whole screen. This works in both *one buffer* and *two buffers* modes.
If `full_refresh` is enabled and 2 screen sized draw buffers are provided, LVGL's display handling works like "traditional" double buffering.
This means in `flush_cb` only the address of the frame buffer needs to be changed to the provided pointer (`color_p` parameter).
This configuration should be used if the MCU has LCD controller periphery and not with an external display controller (e.g. ILI9341 or SSD1963).
You can measure the performance of different draw buffer configurations using the [benchmark example](https://github.com/lvgl/lv_demos/tree/master/src/lv_demo_benchmark).
## Display driver
Once the buffer initialization is ready a `lv_disp_drv_t` display driver needs to be
1. initialized with `lv_disp_drv_init(&disp_drv)`
2. its fields need to be set
3. it needs to be registered in LVGL with `lv_disp_drv_register(&disp_drv)`
Note that `lv_disp_drv_t` also needs to be static, global or dynamically allocated and not a local variable destroyed if goes out of the scope.
### Mandatory fields
In the most simple case only the following fields of `lv_disp_drv_t` need to be set:
- `draw_buf` pointer to an initialized `lv_disp_draw_buf_t` variable.
- `hor_res` horizontal resolution of the display in pixels.
- `ver_res` vertical resolution of the display in pixels.
- `flush_cb` a callback function to copy a buffer's content to a specific area of the display.
`lv_disp_flush_ready(&disp_drv)` needs to be called when flushing is ready.
LVGL might render the screen in multiple chunks and therefore call `flush_cb` multiple times. To see if the current one is the last chunk of rendering use `lv_disp_flush_is_last(&disp_drv)`.
### Optional fields
There are some optional data fields:
- `color_chroma_key` A color which will be drawn as transparent on chrome keyed images. Set to `LV_COLOR_CHROMA_KEY` by default from `lv_conf.h`.
- `anti_aliasing` use anti-aliasing (edge smoothing). Enabled by default if `LV_COLOR_DEPTH` is set to at least 16 in `lv_conf.h`.
- `rotated` and `sw_rotate` See the [Rotation](#rotation) section below.
- `screen_transp` if `1` the screen itself can have transparency as well. `LV_COLOR_SCREEN_TRANSP` needs to enabled in `lv_conf.h` and requires `LV_COLOR_DEPTH 32`.
- `user_data` A custom `void `user data for the driver..
Some other optional callbacks to make easier and more optimal to work with monochrome, grayscale or other non-standard RGB displays:
- `rounder_cb` Round the coordinates of areas to redraw. E.g. a 2x2 px can be converted to 2x8.
It can be used if the display controller can refresh only areas with specific height or width (usually 8 px height with monochrome displays).
- `set_px_cb` a custom function to write the draw buffer. It can be used to store the pixels more compactly in the draw buffer if the display has a special color format. (e.g. 1-bit monochrome, 2-bit grayscale etc.)
This way the buffers used in `lv_disp_draw_buf_t` can be smaller to hold only the required number of bits for the given area size. Note that, rendering with `set_px_cb` is slower than normal rendering.
- `monitor_cb` A callback function that tells how many pixels were refreshed in how much time. Called when the last chunk is rendered and sent to the display.
- `clean_dcache_cb` A callback for cleaning any caches related to the display.
LVGL has built-in support to several GPUs (see `lv_conf.h`) but if something else is required these functions can be used to make LVGL use a GPU:
- `gpu_fill_cb` fill an area in the memory with a color.
- `gpu_wait_cb` if any GPU function returns while the GPU is still working, LVGL will use this function when required to make sure GPU rendering is ready.
### Examples
All together it looks like this:
```c
static lv_disp_drv_t disp_drv; /*A variable to hold the drivers. Must be static or global.*/
lv_disp_drv_init(&disp_drv); /*Basic initialization*/
disp_drv.draw_buf = &disp_buf; /*Set an initialized buffer*/
disp_drv.flush_cb = my_flush_cb; /*Set a flush callback to draw to the display*/
disp_drv.hor_res = 320; /*Set the horizontal resolution in pixels*/
disp_drv.ver_res = 240; /*Set the vertical resolution in pixels*/
lv_disp_t * disp;
disp = lv_disp_drv_register(&disp_drv); /*Register the driver and save the created display objects*/
```
Here are some simple examples of the callbacks:
```c
void my_flush_cb(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
/*The most simple case (but also the slowest) to put all pixels to the screen one-by-one
*`put_px` is just an example, it needs to implemented by you.*/
int32_t x, y;
for(y = area->y1; y <= area->y2; y++) {
for(x = area->x1; x <= area->x2; x++) {
put_px(x, y, *color_p)
color_p++;
}
}
/* IMPORTANT!!!
* Inform the graphics library that you are ready with the flushing*/
lv_disp_flush_ready(disp_drv);
}
void my_gpu_fill_cb(lv_disp_drv_t * disp_drv, lv_color_t * dest_buf, const lv_area_t * dest_area, const lv_area_t * fill_area, lv_color_t color);
{
/*It's an example code which should be done by your GPU*/
uint32_t x, y;
dest_buf += dest_width * fill_area->y1; /*Go to the first line*/
for(y = fill_area->y1; y < fill_area->y2; y++) {
for(x = fill_area->x1; x < fill_area->x2; x++) {
dest_buf[x] = color;
}
dest_buf+=dest_width; /*Go to the next line*/
}
}
void my_rounder_cb(lv_disp_drv_t * disp_drv, lv_area_t * area)
{
/* Update the areas as needed.
* For example it makes the area to start only on 8th rows and have Nx8 pixel height.*/
area->y1 = area->y1 & 0x07;
area->y2 = (area->y2 & 0x07) + 8;
}
void my_set_px_cb(lv_disp_drv_t * disp_drv, uint8_t * buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y, lv_color_t color, lv_opa_t opa)
{
/* Write to the buffer as required for the display.
* For example it writes only 1-bit for monochrome displays mapped vertically.*/
buf += buf_w * (y >> 3) + x;
if(lv_color_brightness(color) > 128) (*buf) |= (1 << (y % 8));
else (*buf) &= ~(1 << (y % 8));
}
void my_monitor_cb(lv_disp_drv_t * disp_drv, uint32_t time, uint32_t px)
{
printf("%d px refreshed in %d ms\n", time, ms);
}
void my_clean_dcache_cb(lv_disp_drv_t * disp_drv, uint32)
{
/* Example for Cortex-M (CMSIS) */
SCB_CleanInvalidateDCache();
}
```
## Rotation
LVGL supports rotation of the display in 90 degree increments. You can select whether you'd like software rotation or hardware rotation.
If you select software rotation (`sw_rotate` flag set to 1), LVGL will perform the rotation for you. Your driver can and should assume that the screen width and height have not changed. Simply flush pixels to the display as normal. Software rotation requires no additional logic in your `flush_cb` callback.
There is a noticeable amount of overhead to performing rotation in software, which is why hardware rotation is also available. In this mode, LVGL draws into the buffer as though your screen now has the width and height inverted. You are responsible for rotating the provided pixels yourself.
The default rotation of your display when it is initialized can be set using the `rotated` flag. The available options are `LV_DISP_ROT_NONE`, `LV_DISP_ROT_90`, `LV_DISP_ROT_180`, or `LV_DISP_ROT_270`. The rotation values are relative to how you would rotate the physical display in the clockwise direction. Thus, `LV_DISP_ROT_90` means you rotate the hardware 90 degrees clockwise, and the display rotates 90 degrees counterclockwise to compensate.
(Note for users upgrading from 7.10.0 and older: these new rotation enum values match up with the old 0/1 system for rotating 90 degrees, so legacy code should continue to work as expected. Software rotation is also disabled by default for compatibility.)
Display rotation can also be changed at runtime using the `lv_disp_set_rotation(disp, rot)` API.
Support for software rotation is a new feature, so there may be some glitches/bugs depending on your configuration. If you encounter a problem please open an issue on [GitHub](https://github.com/lvgl/lvgl/issues).
## Further reading
- [lv_port_disp_template.c](https://github.com/lvgl/lvgl/blob/master/examples/porting/lv_port_disp_template.c) for a template for your own driver.
- [Drawing](/overview/drawing) to learn more about how rendering works in LVGL.
- [Display features](/overview/display) to learn more about higher level display features.
## API
```eval_rst
.. doxygenfile:: lv_hal_disp.h
:project: lvgl
```

209
docs/porting/indev.md Normal file
View File

@@ -0,0 +1,209 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/porting/indev.md
```
# Input device interface
## Types of input devices
To register an input device an `lv_indev_drv_t` variable has to be initialized:
```c
lv_indev_drv_t indev_drv;
lv_indev_drv_init(&indev_drv); /*Basic initialization*/
indev_drv.type =... /*See below.*/
indev_drv.read_cb =... /*See below.*/
/*Register the driver in LVGL and save the created input device object*/
lv_indev_t * my_indev = lv_indev_drv_register(&indev_drv);
```
`type` can be
- `LV_INDEV_TYPE_POINTER` touchpad or mouse
- `LV_INDEV_TYPE_KEYPAD` keyboard or keypad
- `LV_INDEV_TYPE_ENCODER` encoder with left/right turn and push options
- `LV_INDEV_TYPE_BUTTON` external buttons virtually pressing the screen
`read_cb` is a function pointer which will be called periodically to report the current state of an input device.
Visit [Input devices](/overview/indev) to learn more about input devices in general.
### Touchpad, mouse or any pointer
Input devices that can click points on the screen belong to this category.
```c
indev_drv.type = LV_INDEV_TYPE_POINTER;
indev_drv.read_cb = my_input_read;
...
void my_input_read(lv_indev_drv_t * drv, lv_indev_data_t*data)
{
if(touchpad_pressed) {
data->point.x = touchpad_x;
data->point.y = touchpad_y;
data->state = LV_INDEV_STATE_PRESSED;
} else {
data->state = LV_INDEV_STATE_RELEASED;
}
}
```
To set a mouse cursor use `lv_indev_set_cursor(my_indev, &img_cursor)`. (`my_indev` is the return value of `lv_indev_drv_register`)
### Keypad or keyboard
Full keyboards with all the letters or simple keypads with a few navigation buttons belong here.
To use a keyboard/keypad:
- Register a `read_cb` function with `LV_INDEV_TYPE_KEYPAD` type.
- An object group has to be created: `lv_group_t * g = lv_group_create()` and objects have to be added to it with `lv_group_add_obj(g, obj)`
- The created group has to be assigned to an input device: `lv_indev_set_group(my_indev, g)` (`my_indev` is the return value of `lv_indev_drv_register`)
- Use `LV_KEY_...` to navigate among the objects in the group. See `lv_core/lv_group.h` for the available keys.
```c
indev_drv.type = LV_INDEV_TYPE_KEYPAD;
indev_drv.read_cb = keyboard_read;
...
void keyboard_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
data->key = last_key(); /*Get the last pressed or released key*/
if(key_pressed()) data->state = LV_INDEV_STATE_PRESSED;
else data->state = LV_INDEV_STATE_RELEASED;
}
```
### Encoder
With an encoder you can do 4 things:
1. Press its button
2. Long-press its button
3. Turn left
4. Turn right
In short, the Encoder input devices work like this:
- By turning the encoder you can focus on the next/previous object.
- When you press the encoder on a simple object (like a button), it will be clicked.
- If you press the encoder on a complex object (like a list, message box, etc.) the object will go to edit mode whereby turning the encoder you can navigate inside the object.
- To leave edit mode press long the button.
To use an *Encoder* (similarly to the *Keypads*) the objects should be added to groups.
```c
indev_drv.type = LV_INDEV_TYPE_ENCODER;
indev_drv.read_cb = encoder_read;
...
void encoder_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
data->enc_diff = enc_get_new_moves();
if(enc_pressed()) data->state = LV_INDEV_STATE_PRESSED;
else data->state = LV_INDEV_STATE_RELEASED;
}
```
#### Using buttons with Encoder logic
In addition to standard encoder behavior, you can also utilize its logic to navigate(focus) and edit widgets using buttons.
This is especially handy if you have only few buttons available, or you want to use other buttons in addition to encoder wheel.
You need to have 3 buttons available:
- `LV_KEY_ENTER` will simulate press or pushing of the encoder button
- `LV_KEY_LEFT` will simulate turning encoder left
- `LV_KEY_RIGHT` will simulate turning encoder right
- other keys will be passed to the focused widget
If you hold the keys it will simulate encoder click with period specified in `indev_drv.long_press_rep_time`.
```c
indev_drv.type = LV_INDEV_TYPE_ENCODER;
indev_drv.read_cb = encoder_with_keys_read;
...
bool encoder_with_keys_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
data->key = last_key(); /*Get the last pressed or released key*/
/* use LV_KEY_ENTER for encoder press */
if(key_pressed()) data->state = LV_INDEV_STATE_PRESSED;
else {
data->state = LV_INDEV_STATE_RELEASED;
/* Optionally you can also use enc_diff, if you have encoder*/
data->enc_diff = enc_get_new_moves();
}
return false; /*No buffering now so no more data read*/
}
```
### Button
*Buttons* mean external "hardware" buttons next to the screen which are assigned to specific coordinates of the screen.
If a button is pressed it will simulate the pressing on the assigned coordinate. (Similarly to a touchpad)
To assign buttons to coordinates use `lv_indev_set_button_points(my_indev, points_array)`.
`points_array` should look like `const lv_point_t points_array[] = { {12,30},{60,90}, ...}`
``` important:: The points_array can't go out of scope. Either declare it as a global variable or as a static variable inside a function.
```
```c
indev_drv.type = LV_INDEV_TYPE_BUTTON;
indev_drv.read_cb = button_read;
...
void button_read(lv_indev_drv_t * drv, lv_indev_data_t*data){
static uint32_t last_btn = 0; /*Store the last pressed button*/
int btn_pr = my_btn_read(); /*Get the ID (0,1,2...) of the pressed button*/
if(btn_pr >= 0) { /*Is there a button press? (E.g. -1 indicated no button was pressed)*/
last_btn = btn_pr; /*Save the ID of the pressed button*/
data->state = LV_INDEV_STATE_PRESSED; /*Set the pressed state*/
} else {
data->state = LV_INDEV_STATE_RELEASED; /*Set the released state*/
}
data->btn = last_btn; /*Save the last button*/
}
```
## Other features
### Parameters
The default value of the following parameters can changed in `lv_indev_drv_t`:
- `scroll_limit` Number of pixels to slide before actually scrolling the object.
- `scroll_throw` Scroll throw (momentum) slow-down in [%]. Greater value means faster slow-down.
- `long_press_time` Press time to send `LV_EVENT_LONG_PRESSED` (in milliseconds)
- `long_press_rep_time` Interval of sending `LV_EVENT_LONG_PRESSED_REPEAT` (in milliseconds)
- `read_timer` pointer to the `lv_timer` which reads the input device. Its parameters can be changed by `lv_timer_...()` functions. `LV_INDEV_DEF_READ_PERIOD` in `lv_conf.h` sets the default read period.
### Feedback
Besides `read_cb` a `feedback_cb` callback can be also specified in `lv_indev_drv_t`.
`feedback_cb` is called when any type of event is sent by the input devices (independently from its type). This allows generating feedback for the user, e.g. to play a sound on `LV_EVENT_CLICKED`.
### Associating with a display
Every input device is associated with a display. By default, a new input device is added to the lastly created or the explicitly selected (using `lv_disp_set_default()`) display.
The associated display is stored and can be changed in `disp` field of the driver.
### Buffered reading
By default LVGL calls `read_cb` periodically. This way there is a chance that some user gestures are missed.
To solve this you can write an event driven driver for your input device that buffers measured data. In `read_cb` you can set the buffered data instead of reading the input device.
You can set the `data->continue_reading` flag to tell that LVGL there is more data to read and it should call the `read_cb` again.
## Further reading
- [lv_port_indev_template.c](https://github.com/lvgl/lvgl/blob/master/examples/porting/lv_port_indev_template.c) for a template for your own driver.
- [INdev features](/overview/display) to learn more about higher level input device features.
## API
```eval_rst
.. doxygenfile:: lv_hal_indev.h
:project: lvgl
```

23
docs/porting/index.md Normal file
View File

@@ -0,0 +1,23 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/porting/index.md
```
# Porting
```eval_rst
.. toctree::
:maxdepth: 2
project
display
indev
tick
task-handler
sleep
os
log
```

46
docs/porting/log.md Normal file
View File

@@ -0,0 +1,46 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/porting/log.md
```
# Logging
LVGL has built-in *Log* module to inform the user about what is happening in the library.
## Log level
To enable logging, set `LV_USE_LOG 1` in `lv_conf.h` and set `LV_LOG_LEVEL` to one of the following values:
- `LV_LOG_LEVEL_TRACE` A lot of logs to give detailed information
- `LV_LOG_LEVEL_INFO` Log important events
- `LV_LOG_LEVEL_WARN` Log if something unwanted happened but didn't cause a problem
- `LV_LOG_LEVEL_ERROR` Only critical issues, where the system may fail
- `LV_LOG_LEVEL_USER` Only user messages
- `LV_LOG_LEVEL_NONE` Do not log anything
The events which have a higher level than the set log level will be logged too. E.g. if you `LV_LOG_LEVEL_WARN`, errors will be also logged.
## Printing logs
### Logging with printf
If your system supports `printf`, you just need to enable `LV_LOG_PRINTF` in `lv_conf.h` to send the logs with `printf`.
### Custom log function
If you can't use `printf` or want to use a custom function to log, you can register a "logger" callback with `lv_log_register_print_cb()`.
For example:
```c
void my_log_cb(const char * buf)
{
serial_send(buf, strlen(buf));
}
...
lv_log_register_print_cb(my_log_cb);
```
## Add logs
You can also use the log module via the `LV_LOG_TRACE/INFO/WARN/ERROR/USER(text)` functions.

21
docs/porting/os.md Normal file
View File

@@ -0,0 +1,21 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/porting/os.md
```
# Operating system and interrupts
LVGL is **not thread-safe** by default.
However, in the following conditions it's valid to call LVGL related functions:
- In *events*. Learn more in [Events](/overview/event).
- In *lv_timer*. Learn more in [Timers](/overview/timer).
## Tasks and threads
If you need to use real tasks or threads, you need a mutex which should be invoked before the call of `lv_timer_handler` and released after it.
Also, you have to use the same mutex in other tasks and threads around every LVGL (`lv_...`) related function call and code.
This way you can use LVGL in a real multitasking environment. Just make use of a mutex to avoid the concurrent calling of LVGL functions.
## Interrupts
Try to avoid calling LVGL functions from interrupt handlers (except `lv_tick_inc()` and `lv_disp_flush_ready()`). But if you need to do this you have to disable the interrupt which uses LVGL functions while `lv_timer_handler` is running.
It's a better approach to set a flag or some value and periodically check it in an `lv_timer`.

35
docs/porting/project.md Normal file
View File

@@ -0,0 +1,35 @@
```eval_rst
.. include:: /header.rst
:github_url: |github_link_base|/porting/project.md
```
# Set-up a project
## Get the library
LVGL is available on GitHub: [https://github.com/lvgl/lvgl](https://github.com/lvgl/lvgl).
You can clone it or download the latest version of the library from GitHub.
The graphics library itself is the **lvgl** directory which should be copied into your project.
## Configuration file
There is a configuration header file for LVGL called **lv_conf.h**. In this you can set the library's basic behavior, disable unused modules and features, adjust the size of memory buffers in compile-time, etc.
Copy **lvgl/lv_conf_template.h** next to the *lvgl* directory and rename it to *lv_conf.h*. Open the file and change the `#if 0` at the beginning to `#if 1` to enable its content.
*lv_conf.h* can be copied to another place as well but then you should add `LV_CONF_INCLUDE_SIMPLE` define to your compiler options (e.g. `-DLV_CONF_INCLUDE_SIMPLE` for gcc compiler) and set the include path manually.
In this case LVGL will attempt to include `lv_conf.h` simply with `#include "lv_conf.h"`.
In the config file comments explain the meaning of the options. Be sure to set at least `LV_COLOR_DEPTH` according to your display's color depth.
## Initialization
To use the graphics library you have to initialize it and the other components too. The order of the initialization is:
1. Call `lv_init()`.
2. Initialize your drivers.
3. Register the display and input devices drivers in LVGL. Lear more about [Display](/porting/display) and [Input device](/porting/indev) registration.
4. Call `lv_tick_inc(x)` every `x` milliseconds in an interrupt to tell the elapsed time. [Learn more](/porting/tick).
5. Call `lv_timer_handler()` every few milliseconds to handle LVGL related tasks. [Learn more](/porting/task-handler).

Some files were not shown because too many files have changed in this diff Show More