
2026/06/17 21:04
MicroUI – ANSI C で記述された軽量なポータブル即描画型 UI ライブラリ
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
「mu」は、ANSI C で書かれた非常に軽量でポータブルな即座型 UI ライブラリであり、追加の割り当てを必要とせず、固定サイズのメモリ領域内で厳密に動作します。これは約 1100 行のソースコードで構成され、ウィンドウ、ボタン、スライダー、テキストボックス、チェックボックス、スクロール可能パネルなど、必須のコントロールと共に組み込みレイアウトシステムを提供します。この軽量のフレームワークは、すべてのレンダリングタスクを外部システムに意図的に委譲しており、その結果としてユーザー自身が矩形とテキストを描画するためのコマンドを用意する必要があります。このライブラリは MIT ライセンスの下で自由ソフトウェアであり、基本的な 2D プライimitives を処理可能な任意のレンダリングシステムと高い互換性を持つよう設計されています。
demo ディレクトリにはサンプルコード、doc/usage.md には使用方法の説明が含まれていますが、プロジェクトでは堅固なコントリビュートポリシーに従っており、新機能向けのプルリクエストは一般的に却下され、バグ修正が優先されます。これにより、ライブラリは拡張ではなく保守に焦点を当てた安定した静的なリソースとして維持されています。本文
ANSI C ポータブル軽量 UI ライブラリ
概要
ANSI C で記述された、軽量化・ポータブル・即時モード (Immediate Mode) の UI ライブラリです。
主要機能
- 極小ソースコード: ソースコード行数は約 1,100 行
- メモリ効率: フィックスドサイズ領域内で動作し、追加のメモリアロケーションが不要
- 標準コンポーネント: 以下のコントロールをサポート
- ウィンドウ
- スクロール可能パネル
- ボタン・スライダー・テキストボックス
- ラベル・チェックボックス・折り返しテキスト
- レンダリング互換性: 矩形およびテキストの描画が可能で、両システムとも互換性がある
- カスタマイズ性: ユーザーによるカスタムコントロールの追加が容易
- レイアウト: シンプルなレイアウトシステム
コード例
if (mu_begin_window(ctx, "My Window", mu_rect(10, 10, 140, 86))) { // レイアウト設定: 2 つのコラム (幅 60 と残りの空間) 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