Workflow部品
アプリ側で管理する処理に進捗、空・利用不可状態、通知、navigation、responsive toolbarを加える部品です。
Galleryの画面
Section titled “Galleryの画面”
Workflow — 進捗と状態の表示 · Galleryの操作映像を開く
#include <imkit/workflow.h>
void DrawImportProgress() { const imkit::CircularProgressView progress{ 0.42f, "42%", "素材を読み込み中" }; imkit::CircularProgress("asset-import", progress);}例の種別: 公開headerの型を使う完結した関数例です。アプリのImGuiフレーム中に呼び、表示文字列は描画が終わるまで保持します。
アプリへ組み込む
Section titled “アプリへ組み込む”imkit::imkitをlinkします。進捗値、取消、通知queue、texture、保存はアプリ側で管理します。
状態を描画する部品です。worker実行、完了判定、通知の保存は行いません。
関連APIとガイド
Section titled “関連APIとガイド”<imkit/workflow.h> は、マルチステップのウィザード、進捗表示、画像ビューア、レスポンシブツールバー、および通知システムなど、制作ツールのワークフローを支える汎用UIコンポーネント群を提供します。
- データとキューはホスト所有: 表示ラベル、画像テクスチャ、進捗率、通知キューはすべてホスト側が所有し、ImKit は描画時に借用(非所有ポインタ/参照)します。
ChoiceGroupも候補と任意のIconAtlasを借用し、現在の選択値は変更せず、候補IDによる要求だけを返します。 - イベントのバッファリング: ユーザー操作(ステップの切替、タイルのリサイズ等)はホスト提供のイベントバッファに書き込まれ、フレーム終了後にホストが処理します。
提供コンポーネント一覧
Section titled “提供コンポーネント一覧”| カテゴリ | コンポーネント / API | 主な役割と動作仕様 |
|---|---|---|
| ナビゲーション | StepNavigatorNavigationRail |
ステップ形式の進行バー、縦型ナビゲーションレール。選択要求を返却 |
WorkspaceTabs |
アイコンとラベル付きのワークスペースタブ。狭幅時は自動でコンボボックスへ縮約 | |
ChoiceGroup |
見出し付きカードに候補を1〜3列で表示。列数を幅に合わせ、選択要求の安定IDを返す | |
| ツリー・設定 | HierarchyGroupHeaderHierarchyRow |
シーングラフ等の階層行。表示/非表示、ロック、選択状態のトグル。行全幅で選択でき、長い名前は省略表示。accentColor で種類ごとの色線を指定できる |
BeginInspectorCardEndInspectorCard |
関連コントロールを美しくまとめる境界線付きカードコンテナ | |
BeginCollapsibleInspectorCardEndCollapsibleInspectorCard |
開閉状態をホストが持つインスペクターカード。Beginがtrueを返したときだけEndを呼ぶ。閉じた内容は描画しない | |
| フィードバック | StatusBadgeInlineAlert |
成功・警告・エラーを色とアイコンで示すアラートコンポーネント |
ToastRegion |
画面隅にスタック表示されるトースト通知領域(フォーカスを奪わない設計) | |
EmptyStateUnavailableState |
データが存在しない時やオフライン時の案内画面(アイコン・見出し・再試行ボタン) | |
ProgressProgressTrack |
状態・割合・補足を共通表示する細い丸角バー。不定時は短い区間を表示 | |
StageProgress |
段階の状態を表示し、狭幅では現在工程と n/total に縮約 |
|
TaskProgressCard |
通常・compactの処理概要カード。操作の安定IDをホストへ返す | |
CircularProgress |
円型の進捗インジケータ。値が負または非有限なら値なし表示 | |
| 画像・ビューア | BeginImageViewportEndImageViewport |
パン・ズーム対応の画像表示キャンバス |
ResolveImagePlacement |
画像の Fit(全体表示)/ Fill(全域切り抜き)/ Stretch(引き伸ばし)の座標・UV計算 | |
DrawOverlay |
画像上の点、ポリライン、矩形、円、ラベル等の注釈描画 | |
PreviewTileResizableTileStrip |
水平/垂直スクロール可能なリサイズ対応プレビュータイル列 |
ChoiceGroupのボタン高は通常の入力欄と同じで、カードの内側には8pxの余白を取ります。最長のラベル、任意のアイコン、選択マークが収まらない場合は列数を減らします。ラベル内の##以降はImGui/UIテスト用IDとして使い、表示文字・ツールチップ・アクセシビリティ名から除きます。説明と利用不可理由はホバーまたはフォーカス時に表示します。公開API compile fixtureはtests/workflow_api_compile.cppで確認します。Dear ImGui aliasのAPI一覧とは分けて管理します。
ProgressTrackView が工程名、状態、割合またはホスト指定値、バー、補足文の共通表示を担います。Progress、TaskProgressCard、ToastViewport はこの表示を再利用し、割合や状態文を個別に組み立てません。状態は Queued、Running、Paused、Succeeded、Failed、Cancelled です。割合が負または非有限なら不定表示になり、短い区間が動くのは Running の場合だけです。Theme.motion.enabled、reducedMotion とホスト所有の AnimationState に従います。
StageProgress は渡された工程と現在IDの表示専用です。幅が狭いと現在の工程名と n/total を表示します。TaskProgressCardView の文字列と操作配列は描画中だけ借用し、TaskProgressCard は押された Command.id(要求なしは0)を返します。実際の更新はホスト側で行います。TaskProgressCardOptions::compact は説明を省き、操作ボタンの余白を詰めます。
Gallery での確認
Section titled “Gallery での確認”6位置、操作、進行表示に対応した色付きカードはトーストを参照してください。既存の ToastRegion の挙動は維持します。
Gallery アプリの以下の画面で実際の挙動を確認できます:
- Workspace shell (ページID: 15): 接続方式のChoiceGroup、ナビゲーション、ツールバー、画像ビューア、オーバーレイの統合例。
- Progress and states: 各種アラート、プログレスバー、エンプティステートの表示例。
- Preview tiles: 可変サイズプレビュータイルの操作例。
実装コードは examples/gallery/workflow_pages.cpp を参照してください。
ImKit 3.2の作業画面
Section titled “ImKit 3.2の作業画面”Galleryの Workspace では、WorkspaceTabs、HierarchyGroupHeader/HierarchyRow、BeginInspectorCard/EndInspectorCard、SettingToggleRow、DragVector3WithUnit、ChoiceGroup、CompactActionRowを組み合わせて操作できます。要求を受けてGallery側の値を更新する実装は、既存のImGuiフレームでも利用できます。3.2の宣言と寿命の規則を参照してください。321アイコンと13テーマを利用でき、Contextやアプリのフレーム管理は引き続きホストが担当します。