Skip to content

Latest commit

 

History

History
182 lines (148 loc) · 8.49 KB

ROADMAP.rst

File metadata and controls

182 lines (148 loc) · 8.49 KB

Roadmap

v9

Schedule

  • December 4: Feature stop, start updating the docs and testing
  • December 18: Release candidate version and call to test
  • January 15: Release v9.0

Naming and API

  • ☑️ lv_style_set_size() should have separate width and height parameters
  • ☑️ 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, has, is, enable
  • ☑️ Update canvas API LINK
  • ☑️ LV_STYLE_PROP_INHERIT -> LV_STYLE_PROP_FLAG_INHERITABLE LINK
  • ☑️ Replace disp_drv->direct_mode/full_refresh with enum.
  • ☑️ Consider flat directory structure. E.g. extra/widgets to widgets
  • ☑️ Use uint32_t and int32_t in APIs where possible. Consider hardcoding int32_t as int32_t.
  • ☑️ 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) (see here)
  • ☑️ Gradient with alpha

Architecture

  • ☑️ 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)
  • ☑️ New driver architecture #2720
  • ☑️ draw_ctx->buffer_convert? (see here) Also remove 16 SWAPPED color format? (see here)
  • ☑️ Reconsider masks. There should be a generic high level mask API which is independent of the drawing engine. #4059
  • ☑️ get_glyph_bitmap should return an a8 bitmap that can be blended immediately. (see here)
  • ☑️ Make LVGL render independent areas in parallel. #4016
  • ☑️ 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.
  • ☑️ More color formats: 24 bit, ARGB1555, ARGB4444 etc (see here)
  • ☑️ Unified caching #3116 #3415
  • ☑️ Variable binding. I.e create properties which can be bound to objects and those objects are notified on value change. Maybe based on lv_msg?
  • 🔲 Add GPU abstraction for display rotation
  • ☑️ Replace the read_line_cb of the image decoders with get_area_cb
  • ☑️ Limit the image caching size in bytes instead of image count
  • ☑️ lv_draw_buf for unified stride, buffer and cache invalidation management. 4241
  • ☑️ Add vector graphics support via ThorVG
  • ☑️ SVG support: integrate an SVG render library 4388
  • ☑️ Introduce optional float support. 4648
  • ☑️ Introduce support layer for 3D GPUs (OpenGL, SDL, Vulkan, etc). 4622

Styles

  • ☑️ non-uniform scale of images: scale width and height differently
  • ☑️ Scroll anim settings should come from styles to allow customization

Widgets

  • ☑️ Universal scale widget/support
  • ☑️ 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 (see here and #4043)
  • ☑️ Disabled widgets should absorb indev actions without sending events. #3860

Animations

  • ☑️ 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.

Planned in general

CI

  • 🔲 Platform independent benchmarking #3443
  • 🔲 Run static analyzer
  • 🔲 Release script
  • 🔲 Unit test for all widgets #2337
  • 🔲 CI test for flash/RAM usage #3127

Architecture

  • 🔲 Add more feature to key presses (long press, release, etc).
  • 🔲 lv_image_set_src() use “type-aware” parameter and rework image decoders. (see here)
  • 🔲 C++ binding
  • 🔲 Markup language #2428

Styles

  • 🔲 Hover
  • 🔲 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
  • 🔲 ARGB image stroke/grow on the alpha map
  • 🔲 Real time blur

Widgets

  • 🔲 lv_bar, lv_arc: handle max < min for fill direction swapping #4039
  • 🔲 lv_bar, lv_slider, lv_arc: make possible to move the knob only inside the background (see here)
  • 🔲 Improve lv_label_align_t #1656
  • 🔲 lv_label reconsider label long modes. (support min/max-width/height too) #3420
  • 🔲 lv_roller make it more flexible #4009

Others

  • 🔲 em, ch, vw/vh units
  • 🔲 aspect-ratio as size
  • 🔲 More grid features. E.g. repeat(auto-fill, minmax( px, 1fr))
  • 🔲 Named grid cells to allow updating layouts without touching the children (like CSS grid-template-areas)
  • 🔲 Scene support. See this comment
  • 🔲 Circle layout. #2871
  • 🔲 Consider stagger animations.
  • 🔲 Add custom indev type. See here.
  • 🔲 Automatically recalculate the layout if a coordinate is obtained using lv_obj_get_width/height/x/y/etc

Ideas

  • Reconsider how themes should work.
  • 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 textshaping.
  • Consider direct binary font format support
  • Improve groups. Discussion. Reconsider focusing logic. Allow having no widget selected (on web it's possible). Keep editing state in lv_obj_t (see here). Support slider left knob focusing (see here)
  • Speed up font decompression
  • Support larger images: add support for large image #1892
  • Functional programming support, pure view? (see here)
  • Style components. (see this comment
  • 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