1 2.. |check| replace:: ☑️ 3 4.. |uncheck| replace:: �� 5 6.. _roadmap: 7 8Roadmap 9======= 10 11v9 12-- 13 14Schedule 15~~~~~~~~ 16 17- December 4: Feature stop, start updating the docs and testing 18- December 18: Release candidate version and call to test 19- January 15: Release v9.0 20 21Naming and API 22~~~~~~~~~~~~~~ 23 24- |check| `lv_style_set_size()` should have separate width and height parameters 25- |check| Reconsider image color formats. 26- |check| 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`, `has`, `is`, `enable` 27- |check| Update canvas API `LINK <https://github.com/lvgl/lvgl/issues/3393>`__ 28- |check| `LV_STYLE_PROP_INHERIT` -> `LV_STYLE_PROP_FLAG_INHERITABLE` 29 `LINK <https://github.com/lvgl/lvgl/pull/3390#discussion_r885915769>`__ 30- |check| Replace `disp_drv->direct_mode/full_refresh` with enum. 31- |check| Consider flat directory structure. E.g. `extra/widgets` to `widgets` 32- |check| Use `uint32_t` and `int32_t` in APIs where possible. Consider hardcoding `int32_t` as `int32_t`. 33- |check| To define a new stdlib API use defines `LV_USE_CUSTOM_...` and 34 let the user implement `lv_...` functions somewhere (instead of defining the name of the custom functions) 35 (see `here <https://github.com/lvgl/lvgl/issues/3481#issuecomment-1206434501>`__) 36- |check| Gradient with alpha 37 38Architecture 39~~~~~~~~~~~~ 40 41- |check| Consider merging `lv_disp_drv_t`, `lv_disp_t`, `lv_disp_draw_buf_t`, `lv_draw_ctx_t` `struct`'s from the new driver API (or only some of them) 42- |check| New driver architecture #2720 43- |check| `draw_ctx->buffer_convert`? 44 (see `here <https://github.com/lvgl/lvgl/issues/3379#issuecomment-1147954592>`__) 45 Also remove 16 SWAPPED color format? 46 (see `here <https://github.com/lvgl/lvgl/issues/3379#issuecomment-1140886258>`__) 47- |check| Reconsider masks. There should be a generic high level mask API which is independent of the drawing engine. 48 `#4059 <https://github.com/lvgl/lvgl/issues/4059>`__ 49- |check| `get_glyph_bitmap` should return an a8 bitmap that can be blended immediately. 50 (see `here <https://github.com/lvgl/lvgl/pull/3390#pullrequestreview-990710921>`__) 51- |check| Make LVGL render independent areas in parallel. 52 `#4016 <https://github.com/lvgl/lvgl/issues/4016>`__ 53- |check| Drop `lv_mem_buf_get` as tlsf should be fast enough for normal allocations as well. 54 Fragmentation is also lower if processes can completely clean up after themselves. 55- |check| More color formats: 24 bit, ARGB1555, ARGB4444 etc 56 (see `here <https://forum.lvgl.io/t/keypad-input-device-why-lv-event-long-pressed-only-on-enter/10263>`__) 57- |check| Unified caching #3116 #3415 58- |check| Variable binding. I.e create properties which can be bound to Widgets and those Widgets are notified on value change. Maybe based on `lv_msg`? 59- |uncheck| Add GPU abstraction for display rotation 60- |check| Replace the `read_line_cb` of the image decoders with `get_area_cb` 61- |check| Limit the image caching size in bytes instead of image count 62- |check| lv_draw_buf for unified stride, buffer and cache invalidation management. `4241 <https://github.com/lvgl/lvgl/pull/4241>`__ 63- |check| Add vector graphics support via ThorVG 64- |check| SVG support: integrate an SVG render library `4388 <https://github.com/lvgl/lvgl/issues/4388>`__ 65- |check| Introduce optional ``float`` support. `4648 <https://github.com/lvgl/lvgl/issues/4648>`__ 66- |check| Introduce support layer for 3D GPUs (OpenGL, SDL, Vulkan, etc). `4622 <https://github.com/lvgl/lvgl/issues/4622>`__ 67 68Styles 69~~~~~~ 70 71- |check| non-uniform scale of images: scale width and height differently 72- |check| Scroll anim settings should come from styles to allow customization 73 74Widgets 75~~~~~~~ 76 77- |check| Universal scale widget/support 78- |check| `lv_img`: Reconsider image sizing models 79 (when the image size is not content): center, top-left, zoom, tile, other? 80- |check| `lv_tabview` Replace button matrix with real buttons for more flexibility 81 (see `here <https://forum.lvgl.io/t/linear-meter-bar-with-ticks/10986>`__ and #4043) 82- |check| Disabled widgets should absorb indev actions without sending events. `#3860 <https://github.com/lvgl/lvgl/issues/3860>`__ 83 84Animations 85~~~~~~~~~~ 86 87- |check| `lv_anim_time_to_speed` should work differently to remove 88 `style_anim_speed`. E.g. on large values of anim time store the 89 speed. Besides all widgets should use the `style_anim` property. 90 `anim` should clamp the time if it's calculated from speed, e.g 91 `lv_clamp(200, t, 2000)`. (maybe `a->min_time/max_time`). 92- |uncheck| Use dedicated `lv_anim_custom_exec_cb_t`. 93 See `here <https://forum.lvgl.io/t/custom-exec-cb-prevents-lv-anim-del-obj-null/10266>`__. 94 95Planned in general 96------------------ 97 98CI 99~~ 100 101- |uncheck| Platform independent benchmarking #3443 102- |uncheck| Run static analyzer 103- |uncheck| Release script 104- |uncheck| Unit test for all widgets #2337 105- |uncheck| CI test for flash/RAM usage #3127 106 107 108Architecture 109~~~~~~~~~~~~ 110 111- |uncheck| Add more feature to key presses (long press, release, etc). 112- |uncheck| `lv_image_set_src()` use “type-aware” parameter and rework image decoders. 113 (see `here <https://github.com/lvgl/lvgl/tree/arch/img-decode-rework>`__) 114- |uncheck| `C++ binding <https://github.com/lvgl/lv_binding_cpp>`__ 115- |uncheck| Markup language #2428 116 117 118Styles 119~~~~~~ 120 121- |uncheck| Hover 122- |uncheck| Global states in selectors. E.g. `LV_STATE_PRESSED | SMALL_SCREEN` like media quarry in CSS 123 124 125Drawing and rendering 126~~~~~~~~~~~~~~~~~~~~~ 127 128- |uncheck| SW: Line drawing with image rotation 129- |uncheck| SW: Arc drawing from small squares (16x16?) to detect transparent or solid parts 130- |uncheck| SW: Rounded rectangle drawing from small squares (16x16?) to detect transparent or solid parts 131- |uncheck| Different radius on each corner #2800 132- |uncheck| Gradient to border/outline/shadow 133- |uncheck| Multiple shadow/border 134- |uncheck| Perspective 135- |uncheck| Text shadow 136- |uncheck| Inner shadow 137- |uncheck| ARGB image stroke/grow on the alpha map 138- |uncheck| Real time blur 139 140 141Widgets 142~~~~~~~ 143 144- |uncheck| `lv_bar`, `lv_arc`: handle max < min for fill direction swapping #4039 145- |uncheck| `lv_bar`, `lv_slider`, `lv_arc`: make possible to move the knob only inside the background (see `here <https://forum.lvgl.io/t/slider-knob-out-of-the-track/11956>`__) 146- |uncheck| Improve `lv_label_align_t` #1656 147- |uncheck| `lv_label` reconsider label long modes. (support min/max-width/height as well) #3420 148- |uncheck| `lv_roller` make it more flexible #4009 149 150Others 151~~~~~~ 152- |uncheck| `em`, `ch`, `vw/vh` units 153- |uncheck| `aspect-ratio` as size 154- |uncheck| More grid features. E.g. repeat(auto-fill, minmax( px, 1fr)) 155- |uncheck| Named grid cells to allow updating layouts without touching the children (like CSS `grid-template-areas`) 156- |uncheck| Scene support. See `this comment <https://github.com/lvgl/lvgl/issues/2790#issuecomment-965100911>`__ 157- |uncheck| Circle layout. #2871 158- |uncheck| Consider `stagger animations <https://greensock.com/docs/v3/Staggers>`__. 159- |uncheck| Add custom indev type. See `here <https://github.com/lvgl/lvgl/issues/3298#issuecomment-1616706654>`__. 160- |uncheck| Automatically recalculate the layout if a coordinate is obtained using `lv_obj_get_width/height/x/y/etc` 161 162Ideas 163----- 164- Reconsider how themes should work. 165- Better way to reset global variables in `lv_deinit()` #3385 166- `lv_array`: replace linked lists with array where possible (arrays are faster and uses less memory) 167- Reconsider how to handle UTF-8 characters (allow different encoding as well) and Bidi. Maybe create an abstraction for textshaping. 168- Consider direct binary font format support 169- Improve groups. `Discussion <https://forum.lvgl.io/t/lv-group-tabindex/2927/3>`__. 170 Reconsider focusing logic. Allow having no widget selected (on web it's possible). Keep editing state in `lv_obj_t` 171 (see `here <https://github.com/lvgl/lvgl/issues/3646>`__). Support slider 172 left knob focusing (see `here <https://github.com/lvgl/lvgl/issues/3246>`__) 173- Speed up font decompression 174- Support larger images: add support for large image #1892 175- Functional programming support, pure view? 176 (see `here <https://www.freecodecamp.org/news/the-revolution-of-pure-views-aed339db7da4/>`__) 177- Style components. (see `this comment <https://github.com/lvgl/lvgl/issues/2790#issuecomment-965100911>`__ 178- Support dot_begin and dot_middle long modes for labels 179- Allow matrix input for image transformation? 180- Radial/skew/conic gradient 181- Somehow let children inherit the parent's state 182- Text on path 183