概要
- ANSI C で書かれた 小型・即時モードUIライブラリ の紹介
- 固定メモリ領域 内で動作し、追加メモリ不要
- 基本的なUIコントロール を標準搭載
- 描画システム非依存 でカスタム拡張も容易
- MITライセンス で自由に利用・改変可能
特徴と概要
- 約1100行 のANSI Cによる 超小型実装
- 固定サイズのメモリ領域 のみを使用し、追加のメモリアロケーション不要
- 標準搭載コントロール
- window(ウィンドウ)
- scrollable panel(スクロール可能パネル)
- button(ボタン)
- slider(スライダー)
- textbox(テキストボックス)
- label(ラベル)
- checkbox(チェックボックス)
- wordwrapped text(自動改行テキスト)
- 四角形とテキスト描画 が可能な任意のレンダラーで動作
- カスタムコントロール の追加が容易な設計
レイアウトと使用例
- シンプルなレイアウトシステム を採用
- 例(Cコード)
if (mu_begin_window(ctx, "My Window", mu_rect(10, 10, 140, 86))) { mu_layout_row(ctx, 2, (int[]) { 60, -1 }, 0); mu_label(ctx, "First:"); if (mu_button(ctx, "Button1")) { printf("Button1 pressed\n"); } mu_label(ctx, "Second:"); if (mu_button(ctx, "Button2")) { mu_open_popup(ctx, "My Popup"); } if (mu_begin_popup(ctx, "My Popup")) { mu_label(ctx, "Hello world!"); mu_end_popup(ctx); } mu_end_window(ctx); } - レイアウト行 や ポップアップ の制御が容易
使用方法
- doc/usage.md に詳細な利用手順を記載
- demoディレクトリ にサンプル実装を収録
注意事項
- 入力の取得 と 描画コマンドの処理 はユーザー側で実装
- ライブラリ自体は描画処理を行わない設計
コントリビューションとライセンス
- 軽量性重視 のため、追加機能のプルリクエストは非推奨
- バグ報告 は歓迎
- MITライセンス 採用
- 再配布・改変が自由
- 詳細はLICENSEファイル参照
まとめ
- 小型・即時モードUI 開発に最適なCライブラリ
- 組み込みや独自エンジン への導入に適した設計
- 自由度の高いカスタマイズ性