ImKit 4.0 API
4.0で公開APIに加わったものと、その置き場所をまとめます。どれも描画の呼び出しです。値、状態、寿命はアプリが持ち、返ってきた要求もアプリが処理します。既定値の変更と、なくなった転送は移行ガイドにあります。
どこにあるか
Section titled “どこにあるか”| ヘッダー | CMakeターゲット | 追加するもの | Galleryの画面 |
|---|---|---|---|
imkit/theme.h |
imkit::imkit |
MakeBrandTheme、BrandPalette、SetCornerStyle、PushTextRole、SerializeTheme、ParseTheme、枠線(アウトライン)、硬い影 |
Theme Studio |
imkit/skin.h |
imkit::imkit |
Skin: ボタン、バッジ、カードの枠を差し替える |
Skins |
imkit/charts.h |
imkit::imkit |
DonutChart、BarChart、Gauge、Sparkline、ChartColor |
Charts |
imkit/ptz.h |
imkit::imkit |
PtzControl: パン、チルト、ズーム、プリセット |
PTZ camera |
imkit/range_slider.h |
imkit::imkit |
RangeSlider、RangeSliderInt |
Numbers and units |
imkit/components.h |
imkit::imkit |
DrawShadow、IMKIT_DEPRECATED、AxisVector3Field、CompactIconActionButton |
Before / After、Workspace |
imkit/workflow.h |
imkit::imkit |
BeginCollapsibleInspectorCard、EndCollapsibleInspectorCard、HierarchyRowView::accentColor |
Workspace |
imkit/show.h |
imkit::show |
操作部品、キューリスト、ミキサー、ルール、スケジュール、ビート、スクリプト、画像、コントロールサーフェス、LED、アドレス | Show |
4色からテーマを作る
Section titled “4色からテーマを作る”MakeBrandTheme は、4色から、コントロールの状態、選択色、補助文字、枠線を導きます。文字と枠線は、どの面の上でも読めるように保たれます。結果は ValidateContrast で確かめてください。値が低くても警告で、そのテーマは使えます。
#include <imkit/imkit.h>
imkit::BrandPalette brand;brand.canvas = {0.063f, 0.067f, 0.075f, 1};brand.surface = {0.102f, 0.106f, 0.118f, 1};brand.text = {0.925f, 0.933f, 0.945f, 1};brand.accent = {0.471f, 0.839f, 0.776f, 1};
auto theme = imkit::MakeBrandTheme(brand);imkit::SetCornerStyle(theme, imkit::CornerStyle::Round);theme.elevation.hard = true; // ずらして重ねる、硬い影theme.elevation.offset = {0, 3};imkit::ApplyTheme(theme, 1.0f); // ImGui::NewFrame() より前テーマはテキストでも表せます。SerializeTheme(theme) が key = value の行を書き出し、ParseTheme(text, theme) がそれを適用します。未知のキーは警告つきで読み飛ばし、残りの行は止めません。ImKitはファイルを読みません。読み込みはアプリが行います。キーの一覧は自分の世界観を作るにあります。
スキンが差し替えるのは、部品の枠と背景だけです。ラベル、アイコン、フォーカスリング、アクセシビリティ、入力、戻り値は、ImKitが担当します。テーマを受け取る部品(ComponentOptions::theme)にスキンが効きます。
static bool DrawFrame(const imkit::SkinFrame& f, void* user) { if (f.part != imkit::SkinPart::Button) return false; // 既定の描画のまま f.draw->AddRect(f.min, f.max, IM_COL32(120, 214, 198, 255), f.rounding, 0, 2.f); return true;}
imkit::Skin skin{&DrawFrame, nullptr};theme.skin = &skin; // theme.fonts と同じく、所有しないグラフ、カメラ操作、範囲スライダー
Section titled “グラフ、カメラ操作、範囲スライダー”| 呼び出し | 戻り値 | 備考 |
|---|---|---|
DonutChart(id, view, layout, options) |
クリックした区間、なければ-1 | ホバーで区間が膨らみ、値を表示する。 |
BarChart(id, view, layout, options) |
クリックした棒、なければ-1 | 縦・横、格子、値ラベルを選べる。 |
Gauge(id, view, layout, options) |
ゾーンでリングの色が変わる。負の割合は「取得できない」表示になる。 | |
Sparkline(id, view, layout, options) |
最後の点を強調し、ホバーで値を表示する。 | |
PtzControl(id, view, state, layout, options) |
PtzRequest |
カメラを動かすのはアプリ。操作部は速度とプリセットの要求を返す。 |
RangeSlider(label, &low, &high, min, max, ...) |
変化したフレームでtrue | つまみは2つ。帯をドラッグすると両方が動く。 |
const std::array<imkit::ChartDatum, 3> usage{{{"Render", 44}, {"Cache", 25}, {"Decode", 15}}};imkit::DonutChart("storage", {usage, "84 GB", "Used"});
static float low = 20, high = 80;imkit::RangeSlider("Range", &low, &high, 0, 100, "%.0f");Showモジュール
Section titled “Showモジュール”imkit::show は任意のモジュールで、imkit::show をリンクして使います。操作部品(Fader、Knob、XYPad、PadGrid、MeterBar、HoldButton)、ライブ部品(CueList、GoBar、ClipLauncher、Mixer、EffectRack)、コードなしの RuleBuilder、スケジュール、ビート、スクリプトパネル、画像ボタン、自由に並べる ControlSurface、LED、DMXのアドレス用の部品を含みます。連続値の部品は ValueEdit を返します。部品ごとの説明と所有の規則は、Showガイドにあります。
| ImKitがすること | アプリが持ち続けるもの |
|---|---|
描画し、要求(PtzRequest、GoBarRequest、グラフのクリック)を返す |
カメラ、キューの進行、グラフの元データ |
呼び出しの間だけ Skin と Theme を読む |
その両方の寿命、フォントアトラス |
| 渡されたテーマのテキストを解析する | テーマファイルの読み書き |