v2.2.0.0 版本说明

主要变更

本版本专注于 API 改进、新的多媒体功能和增强的组件功能。变更主要分为主要特性、主要 Bug 修复和破坏性变更。

  • 主要特性

    • 添加音频支持。(80e9a91d4)

    • 添加视频文档和示例。(4737c631e)

    • 添加配置驱动的新粒子效果系统。(6ab0b22cd, d3081dbfa, 8fb406f24)

    • 添加带效果选择菜单的启动器。(1c25e4e0a)

    • 为列表组件添加 LIST_ZOOM_CYLINDER 样式。(beca0b4a2)

    • 添加文件系统中的 GIF 支持。(a3363cadd)

    • 添加 A8 字体 MVE RGBA 渲染。(9478ce27e)

    • 添加发布/订阅模式的消息监听器。(bb8b57e31)

    • 添加计时器应用。(27421e7f5)

    • 为几何图形组件添加渐变支持。(7b7a8c168)

    • 为 SVG 添加渐变和 VFS 支持。(16ac9f3f3)

    • 添加 3D 甜甜圈演示。(1f63c51f0)

    • 添加交钥匙演示。(d285a10a1)

    • 添加仪表盘演示模拟导航。(ce58a0b5f)

  • 主要 Bug 修复

    • 修复列表组件导致的硬件错误。(e62e92485)

    • 修复矩形组件垂直行缺失问题。(b35893b35)

    • 修复列表 LIST_ZOOM_CYLINDER。(bf4113a65)

    • 修复矩形和圆形组件内存泄漏。(581c2c512)

    • 修复 draw_img 中的 XIP 内存释放问题。(f0074d140)

    • 修复矩形组件透明度错误。(76fdfd191)

    • 修复文本组件校验和错误。(6ecd52318)

    • 修复 gui_circle 矩阵错误。(8cb799105)

    • 修复弧形透明度错误。(c8e05d6a5)

  • 破坏性变更

    • 将 gui_event_t 重命名为 gui_event_code_t。(6600c49fa)

    • 重命名事件名称。(0702e4a7c)

    • 移除 gui_vfs_load_file API。(8f298856c)

    • 移除 gui_gray 组件。(29e8912cd)

    • 删除画布矩形和弧形组件。(468372b83)

    • 将 A8 和 I8 格式统一为 U8 格式。(4629e8dc7)

变更日志

以下列出所有变更,分为新增、变更、修复和移除四类。

  • 新增

    • 添加音频支持。(80e9a91d4)

    • 添加视频文档和示例。(4737c631e)

    • 添加新粒子效果。(6ab0b22cd)

    • 添加带效果选择菜单的启动器。(1c25e4e0a)

    • 添加 LIST_ZOOM_CYLINDER 样式。(beca0b4a2)

    • 添加文件系统中的 GIF 支持。(a3363cadd)

    • 添加 A8 字体 MVE RGBA 渲染。(9478ce27e)

    • 添加预设效果的粒子系统。(8fb406f24)

    • 添加发布/订阅消息监听器。(bb8b57e31)

    • 添加计时器应用。(27421e7f5)

    • 为几何图形组件添加渐变。(7b7a8c168)

    • 为 SVG 添加渐变和 VFS 支持。(16ac9f3f3)

    • 添加 3D 甜甜圈演示。(1f63c51f0)

    • 添加交钥匙演示。(d285a10a1)

    • 添加仪表盘演示模拟导航。(ce58a0b5f)

    • 为矩形/圆形添加触摸事件。(da82116a8)

    • 添加 I8 压缩格式。(c5a094913)

    • 添加默认字体位图。(e450ecc6d)

    • 添加 Linux GCC 构建脚本。(4f53fa53a)

    • 添加获取视频文件大小的 API。(26ef42942)

    • 添加矢量字体像素宽度函数。(c97a26163)

    • 添加 OpenGL 代码。(7aa1e1e86)

    • 添加 HML 视频组件支持。(a2ea78f5e)

    • 为字体引擎添加 FILESYS 支持。(4d7b80a77)

    • 添加非滚动对齐。(a4a0a64f1)

    • 添加从已销毁对象取消订阅的功能。(d434acc72)

    • 添加列表组件区域显示功能。(5c0ac615c)

    • 添加键盘根节点。(b635adb85)

  • 变更

    • 更改为新的图像设置源 API。(ca1f506c3)

    • 重构键盘输入处理系统。(a589d86d5)

    • 重构粒子系统为配置驱动。(d3081dbfa)

    • 解耦 h264bsd 解码器和视频组件。(7edd40a60)

    • 使用标准 GIF LZW 解码方法。(4fc986271)

    • 支持裁剪和索引。(37c3a2094)

    • 设置图像组件源为内存。(58b766f8f)

    • Lite3d 添加用户数据。(36024bf96)

    • Lite3D 支持 I8 光栅。(f852a6ed5)

    • 矢量支持加粗。(53a746683)

    • 优化几何图形组件。(d157a884d)

    • 使用统一管理器重构字体库。(cad3a146b)

    • 优化弧形。(f703581b3)

    • 几何图形组件添加矩阵。(f5de2de85)

    • 监听器使用动态链表。(8689ef3fc)

    • 按类别重构 shell 命令。(16133b6e7)

    • 重构引擎目录结构。(406be1ce8)

    • 统一 SConscript 和 CMakeLists 文件。(8d3208c86)

    • 重构矩阵和数学模块。(21fffc543)

    • 将父级变换应用于 3D。(a7255fee3)

    • 使用 h264bsd_malloc/free 进行内存管理。(fd2eab751)

    • 扩展字体大小参数范围为 uint16_t。(d6194ebb8)

    • 更改颜色表计数器存储。(53201ffc4)

    • 用 Kconfig 流程替换 menu_config.h。(3017a69d0)

    • 重构 CMake 中的头文件安装。(37ed1f5f8, 2bea302b5)

  • 修复

    • 修复列表组件导致的硬件错误。(e62e92485)

    • 修复矩形组件垂直行缺失问题。(b35893b35)

    • 修复列表 LIST_ZOOM_CYLINDER。(bf4113a65)

    • 修复矩形和圆形组件内存泄漏。(581c2c512)

    • 修复 draw_img 中的 XIP 内存释放问题。(f0074d140)

    • 修复矩形组件透明度错误。(76fdfd191)

    • 修复文本组件校验和错误。(6ecd52318)

    • 修复 gui_circle 矩阵错误。(8cb799105)

    • 修复弧形透明度错误。(c8e05d6a5)

    • 修复 coverity 问题。(992e4ca26, ca6095477)

    • 修复静态库自动执行问题。(83910ba2e)

    • 修复包含问题。(81531bc4a)

    • 修复 MinGW 的 d_type 检测。(096bcb3ce)

    • 修复字母间距错误。(f1b8d7f6d)

    • 修复 VFS 适配器中的类型定义重定义。(001383367)

    • 修复 fb 清除 24 位。(97a59b9a2)

    • 修复 gui_view.rst。(4cdfeca2b)

    • 修复泰语处理错误。(281a03b03)

    • 修复仪表盘演示。(9ffb6a8ed)

    • 修复 bypass 问题。(c5c8e9add)

    • 修复 nanovg agge 安装头文件。(e5f8addfe)

    • 修复充电盒根地址生成。(53425ac40)

    • 修复标志 gltf 模型。(e45b7da7b)

    • 修复编译问题。(ee946c737)

    • 修复自动编译问题。(3b4c04094)

    • 修复包含保护符以匹配文件名。(8fadef344)

    • 修复字体脚本。(6e34573ba)

  • 移除

    • 移除 gui_vfs_load_file API。(8f298856c)

    • 移除 gui_gray 组件。(29e8912cd)

    • 移除未使用的头文件。(012c3d2f1)

    • 移除 Python 字体转换器。(30f021677)

    • 移除注释。(6828587b3)

    • 从注释中移除需求引用。(55721db18)

    • 移除 gui_gray.h。(a0f086514)

    • 删除画布矩形和弧形组件。(468372b83)

API 迁移指南

图像组件 API 变更

图像组件 API 进行了重构,以提供更清晰和显式的参数控制。旧 API 已被弃用但仍可用于向后兼容。

已弃用的 API:

  • gui_img_set_attribute(gui_img_t *_this, const char *name, void *addr, int16_t x, int16_t y)

  • gui_img_set_image_data(gui_img_t *_this, const uint8_t *image_data_pointer)

新 API:

  • gui_img_set_src(gui_img_t *_this, const uint8_t *file_pointer, uint32_t storage_type) - 设置图像源并显式指定存储类型

  • gui_img_set_pos(gui_img_t *_this, int16_t x, int16_t y) - 设置图像位置

存储类型:

  • IMG_SRC_MEMADDR - RAM 或 Flash 内存中的图像数据

  • IMG_SRC_FILESYS - 来自文件系统的图像

  • IMG_SRC_FTL - 来自 Flash 转换层的图像

迁移示例:

旧代码:

gui_img_set_attribute((gui_img_t *)home_bg, "home_bg", home[0], 0, 0);

新代码:

gui_img_set_pos((gui_img_t *)home_bg, 0, 0);
gui_img_set_src((gui_img_t *)home_bg, home[0], ((gui_img_t *)home_bg)->storage_type);

旧代码:

gui_img_set_image_data(img_strawberry, (const uint8_t *)FRUIT_NINJA_STRAWBERRY_BIN);

新代码:

gui_img_set_src(img_strawberry, (const uint8_t *)FRUIT_NINJA_STRAWBERRY_BIN, IMG_SRC_MEMADDR);