From a04f1baf48f8c3e2a3473d94136cbe78cec4e08d Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 17 Apr 2023 21:29:23 +0200 Subject: [PATCH] Update ROADMAP.md --- docs/ROADMAP.md | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 10bf069c9..4c88c568c 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -4,7 +4,6 @@ ### Naming and API - [x] `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) - [x] Reconsider image color formats. - [ ] More consistent names:`remove/clear/delete/del`, `offset/ofs`, `add/create/register`, `id/idx/index`, `middle/mid/center`, `img/image`, `txt/text`, `opa/opacity/alpha`, `scr/screen`, `disp, display`, `finished/complete/completed/ready`, `buf/buffer`, `..._cb`, angle, rotation`, `zoom, scale` - [ ] Reconsider the use of `has`, `is`, `enable` "action" keywords @@ -13,26 +12,22 @@ - [x] Replace `disp_drv->direct_mode/full_refresh` with enum. - [x] Consider flat directory structure. E.g. `extra/widgets` to `widgets` - [ ] Use `uint32_t` and `int32_t` in APIs where possible. Consider hardcoding `lv_coord_t` as `int32_t`. -- [ ] To define a new stdlib API use defines `LV_USE_CUSTO_...` and let the user implement `lv_...` functions somewhere (instead of defining the name of the custom functions) +- [ ] To define a new stdlib API use defines `LV_USE_CUSTOM_...` and let the user implement `lv_...` functions somewhere (instead of defining the name of the custom functions) +- [ ] Generic `lv_date_t` and `lv_time_t` +- [ ] Make layouts with an `lv_layout_dsc_t` instead of registering an ID + callback. See [here](https://github.com/lvgl/lvgl/issues/3481#issuecomment-1206434501) ### Architecture -- [x] Consider merging `lv_disp_t`, `lv_disp_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 +- [x] Consider merging `lv_disp_drv_t`, `lv_disp_t`, `lv_disp_draw_buf_t`, `lv_draw_ctx_t`, and `struct`s from the new driver API (or only some of them) - [x] New driver architecture #2720 - [x] `draw_ctx->buffer_convert`? 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. +- [ ] `lv_img_set_src()` use "type-aware" parameter and rework image decoders. See [here](https://github.com/lvgl/lvgl/tree/arch/img-decode-rework) +- [ ] Reconsider masks. There should be a generic high level mask API whic is independent of the drawing engine. [#4059](https://github.com/lvgl/lvgl/issues/4059) +- [x] `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). -- [ ] Make LVGL 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. -- [x] More conscious `` wrapper API +- [ ] Make LVGL render independent areas in parallel. [#4016](https://github.com/lvgl/lvgl/issues/4016) - [x] 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. -- [ ] `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_date_t` and `lv_time_t`? - [x] More color formats: 24 bit, ARGB1555, ARGB4444 etc - [ ] Unified caching #3116 #3415 -- [ ] Make layouts with an `lv_layout_dsc_t` instead of registering an ID+callback. See [here](https://github.com/lvgl/lvgl/issues/3481#issuecomment-1206434501) - [ ] Condider using `lv_color32_t` on APIs to support e.g. alpha gradient. ### Styles @@ -53,14 +48,14 @@ - [ ] Automatically recalculate the layout if a coordinte is get with `lv_obj_get_width/height/x/y/etc` ### Animations -- [ ] Consider `anim` events to replace many callbacks with one +- [ ] Use `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`). - [ ] Use dedicated `lv_anim_custom_exec_cb_t`. See [here](https://forum.lvgl.io/t/custom-exec-cb-prevents-lv-anim-del-obj-null/10266). ## Planned in general ### CI -- [ ] Plaform independent bechmarking # 3443 +- [ ] Plaform independent bechmarking #3443 - [ ] Run static analyzer - [ ] Release script - [ ] Unit test for all widgets #2337 @@ -75,15 +70,18 @@ - [ ] Global states in selectors. E.g. `LV_STATE_PRESSED | SMALL_SCREEN` like media quarry in CSS ### Drawing and rendering +- [ ] SW: Line drawing with image rotation +- [ ] SW: Arc drawing from small squares (16x16?) to detect transparent or solid parts +- [ ] SW: Rounded rectangle drawing from small squares (16x16?) to detect transparent or solid parts - [ ] Different radius on each corner #2800 -- [ ] gradient to border/outline/shadow -- [ ] multiple shadow/border -- [ ] perspective -- [ ] text shadow -- [ ] innter shadow +- [ ] 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 +- [ ] Real time blur +- [ ] Gradient with alpha ### Widgets - [ ] `lv_bar`, `lv_arc`: handle max < min for fill direction swapping #4039 @@ -97,6 +95,9 @@ - [ ] Consider [stagger animations](https://greensock.com/docs/v3/Staggers). ## Ideas +- Better way to reset global variables in `lv_deinit()` #3385 +- `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. - Consider direct binary font format support - 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). Keep editing state in `lv_obj_t` (See [here](https://github.com/lvgl/lvgl/issues/3646)). Support slider left knob focusing (see [here](https://github.com/lvgl/lvgl/issues/3246)) - lv_mem_alloc_aligned(size, align) @@ -109,4 +110,4 @@ - Allow matrix input for image transformation? - Radial/skew/conic gradient - Somehow let children inherit the parent's state -- text on path +- Text on path