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
12 月 4 日:功能停止,开始更新文档和测试
12月18日:发布候选版本并调用测试
1 月 15 日:发布 v9.0
Naming and API(命名和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
☑️ lv_style_set_size() 应该有单独的宽度和高度参数
☑️ 重新考虑图像颜色格式。
☑️ 更一致的名称: 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
☑️ 更新画布 API 链接
☑️ LV_STYLE_PROP_INHERIT -> LV_STYLE_PROP_FLAG_INHERITABLE 链接
☑️ 将 disp_drv->direct_mode/full_refresh 替换为枚举。
☑️ 考虑扁平目录结构。例如, 额外/小部件 到 小部件。
☑️ 尽可能在 API 中使用 uint32_t 和 int32_t 。考虑将 int32_t 硬编码为 int32_t 。
☑️ 要定义新的 stdlib API,请使用定义 LV_USE_CUSTOM_... 并让用户在某处实现 lv_... 函数(而不是定义自定义函数的名称) (请参阅 此处)。
☑️ 带 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
☑️ 考虑合并新驱动程序 API 中的 lv_disp_drv_t, lv_disp_t, lv_disp_draw_buf_t, lv_draw_ctx_t 和 struct's 结构(或仅其中一些)
☑️ 新的驱动架构#2720
☑️ draw_ctx->buffer_convert?(参见 此处) 还删除 16 SWAPPED 颜色格式吗? ( 看这里 )
☑️ 重新考虑面具。应该有一个独立于绘图引擎的通用高级掩模 API。 第4059章
☑️ get_glyph_bitmap 应该返回一个可以立即混合的 a8 位图。( 看这里 )
☑️ 使 LVGL 并行渲染独立区域。 第4016章
☑️ 删除lv_mem_buf_get因为 tlsf 对于正常分配来说也应该足够快。如果进程可以完全自行清理,那么碎片也会减少。
☑️ 更多颜色格式:24位、ARGB1555、ARGB4444等( 参见此处)
☑️ 统一缓存#3116 #3415
☑️ 变量绑定。即创建可以绑定到对象的属性,并且这些对象会在值更改时收到通知。也许基于 lv_msg?
🔲 添加用于显示旋转的 GPU 抽象
☑️ 将图像解码器的 read_line_cb 替换为 get_area_cb
☑️ 以字节为单位限制图像缓存大小,而不是图像数量
☑️ lv_draw_buf 用于统一步幅、缓冲区和缓存失效管理。 4241
☑️ 通过 ThorVG 添加矢量图形支持
☑️ SVG 支持:集成 SVG 渲染库 4388
☑️ 引入可选
float
支持。 4648☑️ 引入 3D GPU 的支持层(OpenGL、SDL、Vulkan 等)。 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.
☑️ lv_anim_time_to_speed 应该以不同的方式删除 style_anim_speed.。例如,在较大的动画时间值上存储速度。此外,所有小部件都应该使用 style_anim 属性。 如果是根据速度计算的, anim 应该限制时间,例如 lv_clamp(200, t, 2000)。(也许是 a->min_time/max_time)。
🔲 使用专用的 lv_anim_custom_exec_cb_t。看 此处 。
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
🔲 平台独立基准测试 #3443
🔲 运行静态分析器
🔲 发布脚本
🔲 所有小部件的单元测试 #2337
🔲 闪存/RAM 使用情况的 CI 测试 #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)
🔲 Markup language #2428
Styles(样式)
显示原文
🔲 Hover
🔲 Global states in selectors. E.g. LV_STATE_PRESSED | SMALL_SCREEN like media quarry in CSS
🔲 悬停
🔲 选择器中的全局状态。例如 LV_STATE_PRESSED | SMALL_SCREEN 就像 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
🔲 SW:带图像旋转的线条绘制
🔲 SW:从小方块(16x16?)绘制圆弧以检测透明或实心部分
🔲 SW:从小正方形(16x16?)绘制圆角矩形以检测透明或实心部分
🔲 每个角的半径不同#2800
🔲 渐变到边框/轮廓/阴影
🔲 多个阴影/边框
🔲 视角
🔲 文字阴影
🔲 内阴影
🔲 ARGB 图像在 alpha 贴图上描边/生长
🔲 实时模糊
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
🔲 lv_bar, lv_arc: 处理填充方向交换的 max < min #4039
🔲 lv_bar, lv_slider, lv_arc: 可以仅在背景内移动旋钮 (参见 此处)
🔲 改进 lv_label_align_t #1656
🔲 lv_label 重新考虑标签长模式。(也支持最小/最大宽度/高度)#3420
🔲 lv_roller 使其更加灵活#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
重新考虑主题应该如何运作。
在 lv_deinit() 中重置全局变量的更好方法 第3385章
lv_array: 尽可能用数组替换链表(数组更快并且使用更少的内存)
重新考虑如何处理 UTF-8 字符(也允许不同的编码)和 Bidi。也许为文本塑造创建一个抽象。
考虑直接二进制字体格式支持
改善团体。 讨论。重新考虑聚焦逻辑。允许不选择任何小部件(在网络上这是可能的)。保持 lv_obj_t 中的编辑状态(参见 此处 )。支持滑块左旋钮对焦(参见 此处 )。
加快字体解压速度
支持更大图像:添加对大图像的支持#1892
函数式编程支持,纯视图?(参见 此处 )
样式组件。(参见 这个注释 )
支持标签的 dot_begin 和 dot_middle 长模式
允许矩阵输入进行图像转换?
径向/倾斜/圆锥 渐变
以某种方式让子项继承父项的状态
路径上的文字