2020-07-24 21:49:44 +02:00
# Roadmap
2022-07-17 19:57:50 +04:30
## Planned for v9
2020-07-24 21:49:44 +02:00
2022-08-07 23:24:06 +02:00
### Naming and API
2022-07-19 18:10:52 +02:00
- [x] `lv_style_set_size()` should have separate width and height parameters
2022-07-06 16:13:42 +02:00
- [ ] `lv_img_set_src()` use "type-aware" parameter. See [here ](https://github.com/lvgl/lvgl/tree/arch/img-decode-rework )
2022-08-07 23:24:06 +02:00
- [ ] Reconsider image color formats.
2022-07-25 09:31:06 +02:00
- [ ] 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`
2022-07-06 16:13:42 +02:00
- [ ] Reconsider the use of `has` , `is` , `enable` "action" keywords
- [ ] Update canvas API (https://github.com/lvgl/lvgl/issues/3393)
2022-07-19 18:10:52 +02:00
- [x] `LV_STYLE_PROP_INHERIT` -> `LV_STYLE_PROP_FLAG_INHERITABLE` [LINK ](https://github.com/lvgl/lvgl/pull/3390#discussion_r885915769 )
2022-07-06 16:13:42 +02:00
- [ ] Replace `disp_drv->direct_mode/full_refresh` with enum.
2022-07-20 11:34:04 +02:00
- [x] Consider flat directory structure. E.g. `extra/widgets` to `widgets`
2022-08-07 23:24:06 +02:00
- [ ] Rename `disp_drv->monitor_cb` to `render_completed/finished/ready`
2022-07-06 16:13:42 +02:00
### 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)
2022-08-07 23:24:06 +02:00
- [ ] Better way to reset global variables in `lv_deinit()` #3385
2022-07-06 16:13:42 +02:00
- [ ] New driver architecture #2720
2022-07-25 09:31:06 +02:00
- [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 ).
2022-08-07 23:24:06 +02:00
- [ ] 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.
2022-07-06 16:13:42 +02:00
- [ ] Reconsider how themes should work. See [here ](https://github.com/lvgl/lvgl/pull/3390#pullrequestreview-990710921 ).
2022-08-07 23:24:06 +02:00
- [ ] Consider to prepare LVGL to render independent areas in parallel.
2022-07-06 16:13:42 +02:00
- [ ] Introduce a pipeline in renderer to support multi-GPUs/Accelerators, such as 2D-capable-DMAs, 2D GPUs, dedicated processor cores for 2D tasks etc.
2022-08-07 23:24:06 +02:00
- [x] More conscious `<std*.h>` wrapper API
- [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.
- [ ] Use `(u)int32_t` in API where possible. Consider hardcoding `lv_coord_t` as `int32_t` .
2022-07-06 16:13:42 +02:00
- [ ] `lv_array` : replace linked lists with array where possible (arrays are faster and uses less memory)
2022-08-07 23:24:06 +02:00
- [ ] 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` ?
2022-07-06 16:13:42 +02:00
- [ ] Update the `lv_img_dsc_t` to support images larger than 2048x2048
2022-08-07 23:24:06 +02:00
- [ ] More color formats: 24 bit, ARGB1555, ARGB4444 etc
2022-07-14 16:51:44 +02:00
- [ ] Unified caching #3116 #3415
2022-08-07 23:24:06 +02:00
- [ ] 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 )
2022-07-06 16:13:42 +02:00
### Styles
- [ ] Make `style_bg_img` support `9patch` images
- [ ] non-uniform scale of images: scale width and height differently
2022-08-07 23:24:06 +02:00
2022-07-06 16:13:42 +02:00
### 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
2022-07-14 16:49:25 +02:00
- [ ] `lv_label` reconsider label long modes. (support min/max-width/height too) #3420
2022-07-06 16:13:42 +02:00
- [ ] Improve `lv_label_align_t` #1656
2022-08-07 23:24:06 +02:00
2022-07-06 16:13:42 +02:00
### Drawing and rendering
2022-08-07 23:24:06 +02:00
- [ ] Allow selecting between the layered (new) and not layered (old) rendering.
2022-07-06 16:13:42 +02:00
### Animations
- [ ] Consider `anim` events to replace many callbacks with one
2022-08-07 23:24:06 +02:00
- [ ] `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` ).
2022-07-06 16:13:42 +02:00
## Planned in general
2022-08-07 23:24:06 +02:00
2022-07-06 16:13:42 +02:00
### 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
2022-08-07 23:24:06 +02:00
2022-07-06 16:13:42 +02:00
### 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
2022-08-07 23:24:06 +02:00
2022-07-06 16:13:42 +02:00
### Others
- [ ] More grid features. E.g. repeat(auto-fill, minmax( < value > 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` ?
2022-07-06 16:21:36 +02:00
- [ ] Consider [stagger animations ](https://greensock.com/docs/v3/Staggers ).
2022-08-07 23:24:06 +02:00
2021-05-18 11:07:01 +02:00
## Ideas
- Consider direct binary font format support
2022-07-06 16:13:42 +02:00
- 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)
2021-05-18 11:07:01 +02:00
- lv_mem_alloc_aligned(size, align)
2022-07-06 16:13:42 +02:00
- Speed up font decompression
- Support larger images: add support for large image #1892
2021-11-22 12:04:22 +01:00
- Functional programming support, pure view? See [here ](https://www.freecodecamp.org/news/the-revolution-of-pure-views-aed339db7da4/ )
2022-07-06 16:13:42 +02:00
- Style components. See [this comment ](https://github.com/lvgl/lvgl/issues/2790#issuecomment-965100911 )
- SVG support: integrate an SVG render library
2022-08-07 23:24:06 +02:00
- Support dot_begin and dot_middle long modes for labels
- Allow matrix input for image transformation?
2022-07-06 16:13:42 +02:00
- Radial/skew/conic gradient
- Somehow let children inherit the parent's state
- text on path