ImRAD、ImGuiライブラリ向けGUIビルダー
(github.com/tpecholt)ImRAD
ImRADはImGuiライブラリ向けのGUIビルダー。C++コードを生成・解析し、アプリケーションで直接利用できる。ImRADはWindows、Linux、MacOSで実行可能。
特徴
ImRADは活発に開発中で、主な特徴は以下の通り。
-
多様なウィンドウデザインをサポート
- フローティングウィンドウ、ポップアップ、およびモーダルポップアップ。ImGuiバックエンドから独立
- GLFW統合によるMainWindow。ImRADはImGuiウィンドウをOSウィンドウと同期するGLFW呼び出しを生成する(タイトルバー、リサイズ可能フラグ、自動リサイズなど)
- Activity。ビューポート全体を埋める装飾なしウィンドウ。主にAndroidアプリで使用される
- 一般的な
main.cppを生成するGLFWテンプレートを同梱 - 一般的な
MainActivity.java+manifest+main.cppを生成するAndroidテンプレートを同梱
-
多様なウィジェットをサポート
Text、Checkbox、Combo、Button、Slider、ColorEditなどの基本ウィジェットChild、Table、CollapsingHeader、TreeNode、TabBarなどのコンテナウィジェットSplitterのようなユニークなウィジェットMenuBarおよびコンテキストメニューの編集- ユーザーコード用の
CustomWidget(プレースホルダー)
-
SameLine/Spacing/NextColumnを使ったレイアウト生成- これにより、ウィジェットが項目間隔とフレームパディングを一貫して守ることが保証される
- 親子ウィジェット間の明確な関係と子の順序が重要
-
ボックスレイアウトをサポート
- ImGui機能の上に実装された、強力で使いやすいレイアウト機構
- 水平方向または垂直方向で、サイズ変更可能なウィジェットをストレッチ可能
- 整列のためにスペーサーを挿入可能
- テーブルレイアウトヘルパーを使って水平レイアウトを作成可能
-
プロパティバインディングをサポート
- クラス変数はシンプルなクラスウィザードまたはバインディングダイアログを通じて管理可能
- プロパティバインディングにより、生成されたUIは動的でありながら同時に設計可能
-
イベントハンドラおよびその他の補助コードを生成
- たとえば、モーダルダイアログは
OpenPopupメンバー関数と、ダイアログが閉じたときに呼ばれるラムダコールバックを生成する - イベントハンドラはユーザーコードと生成部分を分離し、デザイナーが引き続き機能するようにする
- たとえば、モーダルダイアログは
-
生成されたコードはコメントマーカーで区切られ、ユーザーは自由に追加コードを書ける
- 従属ポップアップのDraw呼び出しや変数の計算に利用可能
- ユーザーコードのコールバックを呼び出す
CustomWidgetを利用可能
-
対象ウィンドウスタイルは完全に設定可能
- ImGuiが提供する基本スタイルに加え、ユーザーは新しいスタイルを定義して
styleフォルダにINIファイルとして保存できる - ImRADはUI設計時にそのスタイル設定に従う
- 保存されたスタイルは、シンプルな
imrad.h関数を使ってアプリケーションで読み込める
- ImGuiが提供する基本スタイルに加え、ユーザーは新しいスタイルを定義して
-
生成されたコードはプロジェクトでそのまま利用可能で、ImGuiライブラリと1つのヘッダーファイル(imrad.h)だけが必要
- MainWindowやImageウィジェットなど一部機能はGLFW依存が必要。
IMRAD_WITH_GLFWでコンパイルして有効化できる - 現在のImageウィジェットはstbライブラリも必要。
IMRAD_WITH_STBでコンパイルするか、LoadTextureFromFile()を提供する必要がある - 人気の
fmtライブラリへのオプション対応はIMRAD_WITH_FMTを定義して有効化可能。これにより、すべての文字列プロパティで書式指定フラグを利用できる
- MainWindowやImageウィジェットなど一部機能はGLFW依存が必要。
-
ImRADは開いているファイルの変更を追跡し、IDEでファイルを設計・編集できる
- 自動保存機能が役立つ場合がある
ライセンス
- ImRADのソースコードはGPLライセンス
- ツールによって生成されたコードはGPLの対象外で、オープンソースまたは商用プロジェクトに含めることができる。ライセンスはユーザーが決定する
imrad.hもGPLライセンスの対象外
ダウンロード
最新バージョンは、CMakeを使ってリポジトリをクローンしてビルドすることで入手できる。3rdpartyディレクトリのサブモジュールも取得する必要がある。やや古いバージョンはReleasesからダウンロード可能。
GN⁺のまとめ
- ImRADはImGuiライブラリ向けの強力なGUIビルダーで、多様なウィンドウとウィジェットをサポートする
- プロパティバインディングとイベントハンドラ生成機能により、動的で柔軟なUI設計が可能
- 生成されたコードはプロジェクトでそのまま利用可能で、さまざまな依存関係に対応する
- ImRADは活発に開発中で、ユーザーは自由にスタイルを定義して保存できる
- 類似機能を持つ他のプロジェクトとしては、Qt DesignerやDear ImGuiがある
1件のコメント
Hacker Newsの意見