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 の構成を使用するには、次の手順に従ってください。

  1. プロジェクトのVisual StudioソリューションをVisual Studioで開く:

    1. ソリューションエクスプローラーでプロジェクトを右クリックし、プロパティ > 全般 > プラットフォームツールセットを選択し、Visual Studio 2017 v141 コンパイラが選択されていることを確認します。プロジェクトに Kanzi Engine プラグインが含まれている場合は、プラグインと実行可能プロジェクトに対しても同様に行ってください。

      ../../_images/set-platform-toolset-compiler-37.png
    2. 構成マネージャーで2017構成を作成します。

      例えば、Configuration Manager を開き、Active solution configuration のドロップダウンメニューで <New...> を選択し、構成に GL_vs2017_Release という名前を付け、OK をクリックし、Configuration Manager で全てのプロジェクトが GL_vs2017_Release 構成を使用するように設定します。

      ../../_images/open-configuration-manager-37.png ../../_images/new-solution-configuration.png
    3. Visual Studioで、使用したいプラグインのすべての構成をビルドします。

  2. Kanzi Studio で Kanzi Studio プロジェクトを開き、Kanzi Studio がプロジェクトを現在のバージョンに変換するのを許可します。

  3. 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 へ

    ../../_images/engine-plugin-properties-37.png

バインディングの変更

バインディングの変更により、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

KzuFont

kanzi::FontFile

KzuBitmapFont

kanzi::BitmapFontFile

KzuBitmapFontSystem

kanzi::BitmapFontLoader

KzuItypeFont

kanzi::ItypeFontFile

KzuItypeSystem

kanzi::ItypeFontLoader

KzuFreetypeFont

kanzi::FreeTypeFontFile

KzuFreetypeSystem

kanzi::FreeTypeFontLoader

KzuTextFormat

kanzi::TextFormat

KzuTextLayouter

kanzi::TextLayouter

KzuTextLayout

kanzi::TextLayout

KzuGlyphCache

kanzi::GlyphCache

メッセージディスパッチャーの変更

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

KzuTimerMessageMode

Timer::TimerMode

kanzi::addTimerHandler()

Timer::addSubscription()

kanzi::removeTimerHandler()

Timer::removeSubscription()

kzuMessageDispatcherDispatchQueuedMessages()

Timer::update()

kzuMessageDispatcherGetProposedSleepTime()

Timer::getProposedSleepTime()

kzuMessageDispatcherAddHandler()

MessageDispatcher::addBubblingHandler()

kzuMessageDispatcherAddTunnelingHandler()

MessageDispatcher::addTunnelingHandler()

kzuMessageDispatcherRemoveHandler()

MessageDispatcher::removeHandler()

kzuMessageDispatcherDispatchMessage()

MessageDispatcher::dispatchMessage()

レンダリングの変更

これらの列挙型を移動または名前変更しました:

Kanzi 3.6.6

Kanzi 3.7

kanzi::Renderer::Multisample

kanzi::Multisample

kanzi::Renderer::ProgramBinary

kanzi::ProgramBinary

kanzi::Renderer::HalfFloatTexture

kanzi::HalfFloatTexture

kanzi::Renderer::TexStorage

kanzi::TexStorage

kanzi::Renderer::InvalidateFramebuffer

kanzi::InvalidateFramebuffer

kanzi::Renderer::State

kanzi::RendererState

kanzi::Renderer::FixedMatrix

kanzi::FixedMatrix

kanzi::Renderer::Support

kanzi::RendererSupport

kanzi::Texture::Type

kanzi::TextureType

kanzi::Texture::RenderTargetMode

kanzi::RenderTargetMode

kzuTimerMessageMode

kanzi::Timer::TimerMode

Kanzi は、Legacy Render Pass (deprecated) をサポートしなくなりました。

プラグインメタデータの変更

プラグインメタデータ属性の登録構文を統一しました。古い構文を使用すると、Kanzi が警告を発します。

Kanzi 3.6.6

Kanzi 3.7

metadata["defaultValue"]

metadata.defaultValue

metadata["lowerBound"]

metadata.lowerBound

metadata["upperBound"]

metadata.upperBound

metadata["step"]

metadata.step

metadata["sendable"]

metadata.sendable

metadata["listenable"]

metadata.listenable

metadata["studioVisibility"]

metadata.studioVisibility

metadata["legacyName"]

metadata.legacyName

その他の変更

  • 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

    kzcVector2

    kanzi::Vector2

    kzcVector3

    kanzi::Vector3

    kzcVector4

    kanzi::Vector4

    kzcMatrix3x3

    kanzi::Matrix3x3

    kzcMatrix4x4

    kanzi::Matrix4x4

    kzcPlane

    kanzi::Plane

    kzcRay

    kanzi::Ray

    kzcRectangle

    kanzi::Rectangle<T>

    kzuMessageDispatcher

    kanzi::MessageDispatcher

    kanzi::Timer

  • 入力翻訳設定のためにこれらの列挙型を変更しました:

    Kanzi 3.6.6

    Kanzi 3.7

    KZS_INPUT_TRANSLATE_NONE

    TranslateNone

    KZS_INPUT_TRANSLATE_POINTER_TO_TOUCH

    TranslatePointerToTouch

    KZS_INPUT_TRANSLATE_POINTER_TO_TOUCH_PRESERVE

    TranslatePointerToTouchPreserve

    KZS_INPUT_TRANSLATE_TOUCH_TO_POINTER

    TranslateTouchToPointer

    KZS_INPUT_TRANSLATE_TOUCH_TO_POINTER_PRESERVE

    TranslateTouchToPointerPreserve

  • この機能を標準の定義に置き換えました。

    Kanzi 3.6.6

    Kanzi 3.7

    kzsThread

    kanzi::thread

    kanzi::condition_variable

    kzcSort

    kanzi::sort

    kzcRandom

    kanzi::default_random_engine

    kanzi::uniform_int_distribution

    kanzi::uniform_real_distribution

  • Rectangle<T>::overlaps() 関数は、ある長方形が別の長方形に含まれるケースをキャッチするようになりました。

  • この機能を削除しました:

    ファイル (File)

    関数

    kzc_solve.hpp

    void kzcSolveQuadratic()

    void kzcSolveNormalizedQuadratic()

    kzc_integrate.hpp

    void kzcIntegrateExponentialDecay()

  • いくつかのグラフィックスバックエンドヘッダーファイルを移動しました。新しい場所は通常、次のディレクトリのいずれかです。

    • kanzi/core.ui/graphics

    • kanzi/core.ui/graphics2d

    • kanzi/core.ui/graphics3d

関連項目

Kanzi 3.7 リリースノート

既知の問題