From 6737aef4a222672e5af09c6992faed379be864fe Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Wed, 6 Jul 2022 16:13:42 +0200 Subject: [PATCH] chore: update ROADMAP --- docs/ROADMAP.md | 114 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 95 insertions(+), 19 deletions(-) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 0d1a35e42..a95da995e 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,27 +1,103 @@ # 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. +## Plannel for v9 -## v8.2 -See [#2790](https://github.com/lvgl/lvgl/issues/2790) +### Naming and API +- [ ] `lv_style_set_size()` should have separate width and height parameters +- [ ] `lv_img_set_src()` use "type-aware" parameter. See [here](https://github.com/lvgl/lvgl/tree/arch/img-decode-rework) +- [ ] Rename `LV_IMG_CF_TRUE_COLOR_*` to `LV_IMG_CF_RGB/RGBA`etc +- [ ] `angle` ->`rotation`, `zoom` -> `scale` +- [ ] More consistent names:`remove/clear/delete/del`, `offset/ofs`, `add/create/register`, `id/idx/index`, `middle/mid/center`, `img/image`, `txt/text`, `opa/alpha`, `scr/screen` +- [ ] Reconsider the use of `has`, `is`, `enable` "action" keywords +- [ ] Update canvas API (https://github.com/lvgl/lvgl/issues/3393) +- [ ] `LV_STYLE_PROP_INHERIT` -> `LV_STYLE_PROP_FLAG_INHERITABLE` [LINK](https://github.com/lvgl/lvgl/pull/3390#discussion_r885915769) +- [ ] Replace `disp_drv->direct_mode/full_refresh` with enum. + + +### Architecture +- [ ] Consider merging `lv_disp_t`, `lv_disp_drv_t`, `lv_disp_draw_buf_t`, `lv_draw_ctx_t`, and `struct`s from the new driver API (or only some of them) +- [ ] Better way to reset global variables in `lv_deinit()` #3385 +- [ ] New driver architecture #2720 +- [ ] `buffer_post_process_cb`? See [here](https://github.com/lvgl/lvgl/issues/3379#issuecomment-1147954592). Also remove 16 SWAPPED color format? See [here](https://github.com/lvgl/lvgl/issues/3379#issuecomment-1140886258). +- [ ] Reconsider masks. There should be a generic high level mask API whic is independent of the drawing engine. +- [ ] `get_glyph_bitmap` should return an a8 bitmap that can be blended immediately. +- [ ] Reconsider how themes should work. See [here](https://github.com/lvgl/lvgl/pull/3390#pullrequestreview-990710921). +- [ ] Consider to prepare LVGL to render independent areas in parallel. +- [ ] Introduce a pipeline in renderer to support multi-GPUs/Accelerators, such as 2D-capable-DMAs, 2D GPUs, dedicated processor cores for 2D tasks etc. +- [ ] More conscious `` wrapper API +- [ ] Drop `lv_mem_buf_get` as tlsf should be fast enough for normal allocations too. Fragmentation is also lower if processes can completely clean up after themselves. +- [ ] Use `(u)int32_t` in API where possible. Consider hardcoding `lv_coord_t` as `int32_t`. +- [ ] `lv_array`: replace linked lists with array where possible (arrays are faster and uses less memory) +- [ ] Reconsider how to handle UTF-8 characters (allow different encoding too) and Bidi. Maybe create an abstraction for typesetting. +- [ ] Generic `lv_data_t` and `lv_time_t`? +- [ ] Update the `lv_img_dsc_t` to support images larger than 2048x2048 +- [ ] More color formats: 24 bit, ARGB1555, etc + +### Styles +- [ ] Make `style_bg_img` support `9patch` images +- [ ] non-uniform scale of images: scale width and height differently + +### Widgets +- [ ] `lv_img`: Reconsider image sizing models (when the image size is not content): center, top-left, zoom, tile, other? +- [ ] `lv_tabview` Replace button matrix with real buttons for more flexibility +- [ ] `lv_label` reconsider label long modes +- [ ] Improve `lv_label_align_t` #1656 + +### Drawing and rendering +- [ ] Allow selecting between the layered (new) and not layered (old) rendering. + + + ### Animations +- [ ] Consider `anim` events to replace many callbacks with one +- [ ] `lv_anim_time_to_speed` should work differently to remove `style_anim_speed`. E.g. on large values of anim time store the speed. Besides all widgets should use the `style_anim` property. `anim` should clamp the time if it's calculated from speed, e.g `lv_clamp(200, t, 2000)`. (maybe `a->min_time/max_time`). +- [ ] Consider [stagger animations](https://greensock.com/docs/v3/Staggers). + + +## Planned in general + +### CI +- [ ] Plaform independent bechmarking # 3443 +- [ ] Run static analyzer +- [ ] Release script +- [ ] Unit test for all widgets #2337 +- [ ] CI test for flash/RAM usage #3127 + +### Architecture +- [ ] C++ binding: https://github.com/lvgl/lv_binding_cpp +- [ ] Markup language #2428 + + +### Styles +- [ ] Hover + +### Drawing and rendering +- [ ] Different radius on each corner #2800 +- [ ] gradient to border/outline/shadow +- [ ] multiple shadow/border +- [ ] perspective +- [ ] text shadow +- [ ] innter shadow +- [ ] ARGB image stroke/grow on the alpha map +- [ ] real time blur +- [ ] gradient with alpha + +### Others +- [ ] More grid features. E.g. repeat(auto-fill, minmax( px, 1fr)) +- [ ] Scene support. See [this comment](https://github.com/lvgl/lvgl/issues/2790#issuecomment-965100911) +- [ ] Circle layout. #2871 +- [ ] Variable binding. I.e create properties which can be bound to objects and those obejcts are notified on value change. Maybe based on `lv_msg`? ## 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 -- Image transformations matrix -- 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). +- Improve groups. [Discussion](https://forum.lvgl.io/t/lv-group-tabindex/2927/3). Reconsider focusing logic. Allow having no widget selected (on web it's possible) - 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 static analyze (via coverity.io or something 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) -- Curved text on path -- Variable binding improvements like Redux? +- Speed up font decompression +- Support larger images: add support for large image #1892 - Functional programming support, pure view? See [here](https://www.freecodecamp.org/news/the-revolution-of-pure-views-aed339db7da4/) -- Circle layout. See [#2871](https://github.com/lvgl/lvgl/issues/2871) +- Style components. See [this comment](https://github.com/lvgl/lvgl/issues/2790#issuecomment-965100911) +- SVG support: integrate an SVG render library +- Support dot_begin and dot_middle long modes for labels +- Allow matrix input for image transformation? +- Radial/skew/conic gradient +- Somehow let children inherit the parent's state +- text on path