#immediate-mode #port #idiomatic #container #original #micro-ui

microui-redux

惯用 Rust MicroUI(即时模式GUI)库移植

3 个不稳定版本

0.2.2 2024 年 6 月 12 日
0.2.1 2024 年 4 月 17 日
0.2.0 2024 年 4 月 17 日
0.1.0 2024 年 1 月 2 日

GUI 中排名第 136

BSD-3-Clause

1MB
2.5K SLoC

Rxi 的 Microui 到 Rust 的移植

Crate

这是 Rxi 的 MicroUI 到 Rust 语言的移植。我们试图尽可能保持使用模式与原始版本接近,同时也尽可能使其符合 Rust 的惯用方法。与 microui-rs 相比,这个版本使用了标准库以提供更多灵活性,并将所有与容器相关的操作(窗口、面板、列等)转换为闭包。

最初,我们使用 C2Rust 创建初始代码,并对 microui-rs 进行了 >60 次迭代。这在其基础上进行了更多改进!

演示

克隆并构建演示(SDL2 & glow)/ 在 Linux 上测试

$ cargo run --example demo-sdl2-glow-full

random

路线图

版本 1.0

  • 使用 std (Vec, parse, ...)
  • 容器包含剪辑堆栈和命令列表
  • begin_*end_* 函数移动到闭包中
  • 迁移到 AtlasRenderer 特性
  • 移除/重构 Pool
  • 更改布局代码
  • 将 Treenode 作为树管理
  • 在上下文外部管理窗口的生命周期和所有权(使用根窗口)
  • 在容器外部管理容器的生命周期和所有权
  • 基于软件的纹理矩形剪切
  • 将 Atlasser 添加到代码中
    • 运行时 Atlasser
      • 图标
      • 字体(哈希表)
    • 将 Atlas Builder 从 Atlas 中分离
    • Builder 功能
    • 将 Atlas 保存到 Rust
    • 从 const rust 中加载 Atlas loader
  • 图像小部件
  • Png Atlas 源
  • 透传渲染命令(用于 3D 视口)
  • API/示例循环/迭代
  • 文档

依赖关系

~0.4–1.2MB
~23K SLoC