High-performance, pure MoonBit Immediate-Mode GUI library for WebAssembly, Canvas, and Games.
# 安装最新稳定版本
moon add LING71671/moon-egui
# 或指定锁定版本
moon add LING71671/moon-egui@0.3.0{
"import": [
"LING71671/moon-egui/src/core",
"LING71671/moon-egui/src/widgets",
"LING71671/moon-egui/src/composite",
"LING71671/moon-egui/src/draw",
"LING71671/moon-egui/src/math",
"LING71671/moon-egui/src/color"
]
}fn update_ui(ctx : @core.UIContext, state : AppState) {
// 1. 全局系统菜单栏(src/composite)
@composite.menu_bar(ctx, fn(top) {
@composite.menu(top, "文件", fn(menu) {
if @composite.menu_item(menu, "新建项目").clicked { state.new_project() }
if @composite.menu_item(menu, "保存配置").clicked { state.save() }
})
@composite.menu(top, "视图", fn(menu) {
if @composite.menu_item(menu, "切换主题").clicked { state.toggle_theme() }
})
})
// 2. 浮动可拖拽视窗(src/widgets)
@widgets.window(ctx, "控制台 & 属性监视", @math.Vec2::new(50.0, 50.0), @math.Vec2::new(300.0, 420.0), fn(win) {
let _ = win.label("欢迎使用 moon-egui")
if @widgets.button(win, "触发测试").clicked {
state.counter 1
}
// Blender 风格数值拖拽调节
let (gravity, _) = @widgets.drag_value(win, "重力参数", state.gravity, speed=0.1, min=0.0, max=20.0)
state.gravity = gravity
let (collision, _) = @widgets.checkbox(win, "开启物理碰撞", state.collision_enabled)
state.collision_enabled = collision
// 折叠数据面板
@widgets.collapsing_header(win, "render_monitor", "实时渲染监控", false, fn(panel) {
let (_, _) = @composite.sparkline(panel, "fps", state.fps_history)
@widgets.progress_bar(panel, 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 提交约定 |
| 更新日志与版本记录 (English) | 版本演进记录 | 项目发布与代码变更历史跟踪 |
Install
Download zipHigh-performance, pure MoonBit Immediate-Mode GUI library for WebAssembly, Canvas, and Games.