Kanzi 3.7 マイグレーションガイド¶
このマイグレーションガイドを使用して、Kanzi アプリケーションを Kanzi 3.6.6 から Kanzi 3.7 に更新してください。
Kanzi ライブラリ¶
Kanzi ライブラリは、現在 Visual Studio 2015 および 2017 のみで利用可能です。Kanzi 3.6.6 プロジェクトを Kanzi 3.7 に移行し、Visual Studio 2017 の構成を使用するには、次の手順に従ってください。
プロジェクトのVisual StudioソリューションをVisual Studioで開く:
ソリューションエクスプローラーでプロジェクトを右クリックし、プロパティ > 全般 > プラットフォームツールセットを選択し、Visual Studio 2017 v141 コンパイラが選択されていることを確認します。プロジェクトに Kanzi Engine プラグインが含まれている場合は、プラグインと実行可能プロジェクトに対しても同様に行ってください。
構成マネージャーで2017構成を作成します。
例えば、Configuration Manager を開き、Active solution configuration のドロップダウンメニューで <New...> を選択し、構成に GL_vs2017_Release という名前を付け、OK をクリックし、Configuration Manager で全てのプロジェクトが GL_vs2017_Release 構成を使用するように設定します。
Visual Studioで、使用したいプラグインのすべての構成をビルドします。
Kanzi Studio で Kanzi Studio プロジェクトを開き、Kanzi Studio がプロジェクトを現在のバージョンに変換するのを許可します。
Library > Kanzi Engine Plugins の Kanzi Studio で、プラグインの GL VS2013 デバッグおよびリリースバージョンを選択し、Properties でプラグインを設定します。
例えば、Library > Kanzi Engine Plugins で GL VS2017 Release プラグインを使用する場合、GL VS2013 Release プラグインを選択し、Properties で設定します。
Name を GL VS2017 リリースに
Windows DLL Path から
..\Application\lib\Win32\GL_vs2017_Release_DLL\<ProjectName>.dllへ
バインディングの変更¶
バインディングの変更により、BindingSharedPtr オブジェクトを使用するすべてのコードを更新して、任意のタイプのバインディングが割り当てられる AbstractBindingSharedPtr オブジェクトを使用する必要があります。ほとんどのバインディングは、Binding または ExpressionBinding (操作を実行するバインディング)オブジェクトのいずれかになります。特定のバインディング作成関数は、従来のバインディング作成関数と同等の省略形を提供します。
フォーカスマネージャーの変更¶
Focus Scope プロパティ (
FocusManager::FocusScopeProperty) は現在非推奨です。ノードをフォーカススコープにするには、Focus Scope Type プロパティを使用し、Group (FocusManager::FocusScopeTypeProperty) に設定してください。フォーカスフェンスはもはや非フォーカス可能なフォーカススコープではありません。ノードをフォーカスフェンスにするには、Focus Scope Type プロパティを使用し、Fence に設定します。フォーカスフェンスノードがフォーカス可能であることを確認するために、Focusable プロパティ (
Node::FocusableProperty) を追加して有効にしてください。Node::trySetActiveFocus()関数は、もはやブール値を返さず、呼び出したノード、またはそのノードがフォーカススコープノードである場合はその子ノードのいずれかを返します。デフォルトで、Focusable プロパティ (
Node::FocusableProperty) はすべてのノードで無効になっています。例外は Button、Toggle Button、List Box、Scroll View、および Slider ノードであり、これらのノードの Focusable プロパティはデフォルトで有効になっています。フォーカスフェンスロジックを以下から変更しました
Focus Scope Type プロパティが有効 (
FocusManager::FocusScopeProperty) で、Focusable プロパティが無効 (Node::FocusableProperty)終点
Focus Scope Type プロパティを Fence に設定(
FocusManager::FocusScopeTypePropertyをFocusManager::Fenceに設定)し、Focusable プロパティを有効化(Node::FocusableProperty)
リソースマネージャーの変更¶
これらのリソースマネージャー関数に変更を加えました:
ResourceManager::getResourcePathFromURL()をdetail::stripProjectName()に置き換えました。getRelativePathFromAbsolutePath()をdetail名前空間の下に移動し、その引数の型を更新しました。static kzString ResourceManager::getRelativePathFromAbsolutePath(kzString absolutePath)終点
string getRelativePathFromAbsolutePath(string_view absolutePath)
グリフ、フォント、およびテキストの変更¶
グリフ、フォント、およびテキスト機能に次の変更を加えました:
クラス
KzuTextManagerをkanzi::GlyphCacheManagerとkanzi::FontManagerに置き換えました。クラス
KzuTextRenderer、KzuTextManager、KzuTruetypeSystem、およびKzuConfiguredFontを削除し、機能の一部をkanzi::TextFormatおよびkanzi::FontManagerに移動しました。Constrain Content Height (
TextBlockConcept::ConstrainContentHeightProperty) プロパティを Text Block ノードから削除しました。テキストを切り詰めるには、Overflow プロパティを使用してください。Constrain Content Height プロパティは、テキストが Text Block ノードの高さを超えた場合にのみテキストを切り詰めていました。Kanzi 3.7 では、Overflow プロパティがテキストが Text Block ノードの幅または高さを超えた場合にテキストを切り詰めます。Kanzi Studio はプロジェクト内の Text Block ノードを自動的に変換します。自動プロジェクト変換後に同じレンダリング結果を得るには、Text Block ノードを調整する必要があります。これは、Overflow プロパティをデフォルトでない値に設定し、Constrain Content Height プロパティを無効にしてテキストの切り詰めを無効にした場合です。Kanzi Studio コンバーターは Constrain Content Height プロパティを削除しますが、変換後にテキストの切り詰めを有効にする Overflow プロパティは削除しません。
Kanzi 3.7でフォントラスタライザーエンジンを設定し、フォントを作成し、フォントローダーにアクセスし、グリフキャッシュマネージャーにアクセスするには、kanzi::FontManager を使用します。
Kanzi 3.6.6 |
Kanzi 3.7 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
メッセージディスパッチャーの変更¶
KzuMessageDispatcher クラスをC++に変換し、次の変更を行いました。
機能を
kanzi::MessageDispatcherクラスとkanzi::Timerクラスに分割します。MessageArgumentsとScrollViewクラスを更新し、chrono::millisecondsの代わりにタイムスタンプにchrono::time_pointsを使用するようにしました。MessageArguments::setTimestamp()は現在、タイムスタンプ引数としてchrono::steady_clock::time_pointを受け取り、MessageArguments::getTimestamp()はchrono::millisecondsの代わりにタイムスタンプ引数を返します。ダイレクトメッセージルーティングを削除しました。
Kanzi 3.6.6 |
Kanzi 3.7 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
レンダリングの変更¶
これらの列挙型を移動または名前変更しました:
Kanzi 3.6.6 |
Kanzi 3.7 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kanzi は、Legacy Render Pass (deprecated) をサポートしなくなりました。
プラグインメタデータの変更¶
プラグインメタデータ属性の登録構文を統一しました。古い構文を使用すると、Kanzi が警告を発します。
Kanzi 3.6.6 |
Kanzi 3.7 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
その他の変更¶
Kanzi Engine API から
kzc_vector*、kzc_matrix*、およびkzc_etcが削除されました。KzEventQueueをEventQueueに置き換えました。これにより、イベントを収集する際にEventSourcesに変更が生じます。コアおよびcoreuiライブラリは、現在、別々のdllファイルとしてビルドされています。その結果、次の項目が更新されました。
KANZI_APIはもう定義されていません。コアにはKANZI_CORE_APIを、coreui にはKANZI_COREUI_APIを使用してください。Kanzi アプリケーションには、
kzcore_<ConfigurationName>.dllを含める必要があります。createModule()メソッドをエクスポートするには、KANZI_API_IMPORTを使用する代わりに、Kanzi アプリケーションは独自のCUSTOM_COMPONENT_API_EXPORTを使用します。Kanzi Engine が DLL としてビルドされたかどうかを確認するには、アプリケーションは
KANZI_API_IMPORTを使用する必要があります。
C++への変換の結果、これらの項目が変更されました:
Kanzi 3.6.6
Kanzi 3.7
kzcVector2kanzi::Vector2kzcVector3kanzi::Vector3kzcVector4kanzi::Vector4kzcMatrix3x3kanzi::Matrix3x3kzcMatrix4x4kanzi::Matrix4x4kzcPlanekanzi::PlanekzcRaykanzi::RaykzcRectanglekanzi::Rectangle<T>kzuMessageDispatcherkanzi::MessageDispatcherkanzi::Timer入力翻訳設定のためにこれらの列挙型を変更しました:
Kanzi 3.6.6
Kanzi 3.7
KZS_INPUT_TRANSLATE_NONETranslateNoneKZS_INPUT_TRANSLATE_POINTER_TO_TOUCHTranslatePointerToTouchKZS_INPUT_TRANSLATE_POINTER_TO_TOUCH_PRESERVETranslatePointerToTouchPreserveKZS_INPUT_TRANSLATE_TOUCH_TO_POINTERTranslateTouchToPointerKZS_INPUT_TRANSLATE_TOUCH_TO_POINTER_PRESERVETranslateTouchToPointerPreserveこの機能を標準の定義に置き換えました。
Kanzi 3.6.6
Kanzi 3.7
kzsThreadkanzi::threadkanzi::condition_variablekzcSortkanzi::sortkzcRandomkanzi::default_random_enginekanzi::uniform_int_distributionkanzi::uniform_real_distributionRectangle<T>::overlaps()関数は、ある長方形が別の長方形に含まれるケースをキャッチするようになりました。この機能を削除しました:
ファイル (File)
関数
kzc_solve.hppvoid kzcSolveQuadratic()void kzcSolveNormalizedQuadratic()kzc_integrate.hppvoid kzcIntegrateExponentialDecay()いくつかのグラフィックスバックエンドヘッダーファイルを移動しました。新しい場所は通常、次のディレクトリのいずれかです。
kanzi/core.ui/graphicskanzi/core.ui/graphics2dkanzi/core.ui/graphics3d