本文へスキップ

v3からの移行

対象: ImKit 3.xをリンクしているすべてのアプリです。ソースの修正は少なく済みます。ただし、再ビルドは必須で、旧い値を自分で指定しない限り、既定の見た目が変わります。

手順 すること 理由
1 アプリと、リンクするすべてのImKit静的ライブラリを、4.0のヘッダーで再ビルドする。find_package(imkit 4.0 CONFIG REQUIRED) を使う。 公開構造体がいくつか拡張されたため。3.xのオブジェクトと4.0の構造体を混ぜると、配置の違いで誤読する。Dear ImGuiのrevisionは変わらない。
2 新しい既定値で、アプリを一度見る。そのまま使うか、下の表で旧い値に戻す。 角丸、影、動き、コントロールの高さが変わったため。
3 コンパイラの警告が出たら、非推奨の綴りを置き換える。 4.0でもコンパイルできるが、[[deprecated]] が付いたため。
4 imkit::Combo、BeginCombo、RadioButton、Slider* 系を呼んでいるなら、動作を確かめ直す。 ImGui:: への転送ではなく、ImKitのラッパーになったため。
トークン 3.3.0 4.0.0
Radius 小・コントロール・オーバーレイ 2 / 4 / 6 4 / 8 / 12
Elevation raised / overlay 2 / 5 4 / 14(offsetとhardを追加)
Opacity::disabled 1 0.55
Metrics::controlHeight(Comfortable) 28 30
Metrics::horizontalPadding(Comfortable) 10 12
Motion コントロール・オーバーレイの秒数 0.06 / 0.10 0.14 / 0.20

3.3の見た目を保つには、テーマを作ったあとで旧い値を代入します。ResolveTheme は密度からmetricsを計算し直すので、metricsは最後に代入してください。

auto theme = imkit::MakeTheme(imkit::ThemePreset::PrecisionLight);
theme.radius = {2, 4, 6};
theme.elevation.raised = 2;
theme.elevation.overlay = 5;
theme.opacity.disabled = 1.f;
theme.motion.controlSeconds = 0.06f;
theme.motion.overlaySeconds = 0.10f;
theme.metrics.controlHeight = 28;
theme.metrics.horizontalPadding = 10;
imkit::ApplyTheme(theme, 1.0f);

色つきのプリセット(Graphite、Midnight、Ocean、Forest、Violet、Warm Sand、Rose、Solar)は、4つのブランド色から作る方式に変わりました。そのため、導かれる色は3.xと少し違います。Precision LightとPrecision Darkは、従来のパレットのままです。

非推奨 置き換え
StatusBadge(text, kind, const Theme*) StatusBadge(text, kind, ComponentOptions{&theme})
NotificationCard(n, now, const Theme*) NotificationCard(n, now, ComponentOptions{&theme})
ValidationMessage(message, invalid, const Theme*) ValidationMessage(message, invalid, ComponentOptions{&theme})
EmptyState(message) EmptyState(id, StateView, options)
Progress(id, fraction, label) Progress(id, ProgressView, ProgressPresentation, ...) または ProgressTrack
ToastRegion(span<Notification>) ToastViewport

移行の間は、IMKIT_DEPRECATED(message) を空に定義すると、警告を消せます。

  • SemanticRole に Slider と Meter が加わりました。RangeSlider は、支援技術に Group ではなく Slider ノードを公開します。
  • シェブロン付きのコンボは、項目を編集済みとして記録しません。これまでどおり、戻り値を使ってください。
  • PtzState の公開フィールドは speed だけです。
  • IMKIT_VERSION は 4.0.0 を返します。3.1〜3.3では 3.0.0 のままでした。
  • オブジェクトとヘッダーの版の不一致が出ず、find_package(imkit 4.0) が解決する。
  • imkit_gallery の Before / After を、自分のアプリの画面と並べて見比べる。
  • 自分のテストを非推奨警告つきで実行し、警告を1つずつ修正に変える。