High-performance, pure MoonBit Immediate-Mode GUI library for WebAssembly, Canvas, and Games.
moon add ling71671/moon-egui{
"import": [
"LING71671/moon-egui/src/core",
"LING71671/moon-egui/src/draw",
"LING71671/moon-egui/src/math",
"LING71671/moon-egui/src/color"
]
}fn update_ui(ui : &mut UIContext, state : &mut AppState) {
// 1. 全局系统菜单栏
ui.menu_bar(fn() {
ui.menu("文件", fn() {
if ui.menu_item("新建项目") { state.new_project() }
if ui.menu_item("保存配置") { state.save() }
})
ui.menu("视图", fn() {
if ui.menu_item("切换主题") { state.toggle_theme() }
})
})
// 2. 浮动可拖拽视窗
ui.window("控制台 & 属性监视", 50.0, 50.0, 300.0, 420.0, fn() {
ui.label("欢迎使用 moon-egui")
if ui.button("触发测试") {
state.counter 1
}
// Blender 风格数值拖拽调节
ui.drag_float("重力参数", &mut state.gravity, speed=0.1, min=0.0, max=20.0)
ui.checkbox("开启物理碰撞", &mut state.collision_enabled)
// 折叠数据面板
ui.collapsing_header("实时渲染监控", fn() {
ui.sparkline("实时帧率曲线", state.fps_history)
ui.progress_bar(state.progress)
})
})
}[ 输入事件流 (Input Events) ]
• 鼠标指针绝对坐标与按键状态
• 键盘按键与修饰键
• 鼠标滚轮滑动增量 (Delta)
│
▼
[ moon-egui 纯算内核 ]
• 输入状态机 (Hover, Active, Focused)
• 线性游标排版与 AABB 空间命中判定
• 矩形 Scissor 裁剪栈
• 即时模式控件逻辑求值
│
▼
[ 绘制指令序列 (DrawCmd Stream) ]
• DrawCmd::Rect(x, y, w, h, color, radius)
• DrawCmd::Text(x, y, text, size, color)
• DrawCmd::Line(x1, y1, x2, y2, color, width)
• DrawCmd::Clip(x, y, w, h)
│
▼
[ 可插拔渲染后端 (Render Backends) ]
• HTML5 Canvas 2D (默认 Wasm 桥接)
• WebGL / WebGPU (规划演进)
• 原生窗口引擎 (Raylib / SDL / Minifb)完整攻坚指标与详细验收准则请参阅 ROADMAP.md (English)。
| 文档名称 | 定位与说明 | 核心覆盖范围 |
|---|---|---|
| 研发路线图与里程碑 (English) | 交付周期与规划 | 各阶段交付清单、详细验收准则与技术演进方向 |
| 系统架构与技术白皮书 (English) | 内核运行机制 | Widget ID 哈希定位、游标排版模型、裁剪栈机制 |
| 公共 API 参考手册 (English) | 开发者接口文档 | UIContext 方法签名、容器布局协议、Painter 绘图接口 |
| 设计系统与视觉规范 (English) | 界面设计 Token | 深色/浅色配色方案、字阶规范、间距系统、交互状态机 |
| 官方编码规范指南 (English) | 官方研发标准 | 块语法(///\|)、命名、可见性、测试分层、.mbti 契约 |
| 开源贡献规范指南 (English) | 工程协作标准 | 研发流程、测试准则、Conventional Commits 提交约定 |
| 更新日志与版本记录 | 版本演进记录 | 项目发布与代码变更历史跟踪 |
Install
Download zipHigh-performance, pure MoonBit Immediate-Mode GUI library for WebAssembly, Canvas, and Games.