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のラッパーになったため。 |
既定のトークンの変更
Section titled “既定のトークンの変更”| トークン | 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は、従来のパレットのままです。
非推奨になった綴り
Section titled “非推奨になった綴り”| 非推奨 | 置き換え |
|---|---|
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) を空に定義すると、警告を消せます。
そのほかの動作の変更
Section titled “そのほかの動作の変更”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つずつ修正に変える。