このページでは

C

バージョン2.0の新機能

Qt Quick Ultraliteは、マイナーリリース間でもソースコードの互換性を維持しています。ただし、一部の変更については、アプリケーションのコードを適宜修正する必要がある場合があります。以下のセクションでは、そのような変更点について説明します。

重要な変更点

  • CMake 設定 API における環境変数への依存が削除されました。外部ツールの設定やメーカーの SDK の場所については、-DQUL_TOOLCHAIN_DIR および-DQUL_SDK_DIR という CMake オプションを使用して指定できます。また、Qt Quick という Ultralite のインストール場所も、-DQul_ROOT オプションを使用して指定できます。
  • 命名ポリシーに準拠させるため、CMake API の名称を変更し、より直感的で理解しやすいものにしました。詳細については、「2.0 における CMake API の変更点」を参照してください。
  • 既存の Qul::initializePlatform() 関数を、2つの新しい関数 Qul::initializeHardware() および Qul::initializePlatform() に置き換えました。
  • ハードウェアの初期化タイミングを制御するために、アプリケーションのエントリポイントに `initializeHardware ` 引数を追加しました。詳細については、「 Qt Quick Ultralite アプリケーションを静的ライブラリとしてビルドする」を参照してください。
  • Charts モジュールを削除しました。
  • ListElement のプロパティに対するスクリプトバインディングを無効化しました。
  • STMicroelectronics 製の以下のボードのサポートを終了しました:
    • STM32L4R9I-discovery
    • STM32F7508-discovery
    • STM32L4R9I-eval
  • Qt for MCUs v1.9で非推奨となっていた以下のプラットフォームAPIを削除しました:
    • Qul::PlatformInterface::DrawingDevice::pixelAt()
    • Qul::PlatformInterface::Texture::dataAtOffset()
    • Qul::PlatformInterface::DrawingDevice::bytesPerPixel()
    • Qul::PlatformInterface::Texture::bytesPerPixel()
    • Qul::Image::bytesPerPixel()
  • JavaScriptのDate APIを削除しました。
  • 非推奨となっていたQul::PlatformInterface::Screen コンストラクタを削除しました。
  • EK-RA6M3G用のBSPヘッダーからQUL_* の定義を削除しました。
  • デバッグ出力をリダイレクトするためのQUL_REDIRECT_PRINTF_TO_* コンパイルオプションを削除しました。代わりにシリアルポート出力を使用してください。
  • アセットの保存場所に関するマクロおよびリンカセクションを変更しました。画像リソースはデフォルトで、場所非依存のデータ構造にコンパイルされ、QulResourceData セグメントに格納されます。

新機能

  • アーキテクチャベースのビルドを有効化し、各プラットフォーム用のコアライブラリをOS固有の部分から分離しました。これにより、サポート対象の各プラットフォームで必要なコアライブラリのビルド回数が減り、同じCPUアーキテクチャを持つ他のプラットフォームへの移植が容易になります。
  • QUL_DEFAULT_FONT_FAMILY および QUL_FONTS_DIR CMake 変数を、対応する CMake ターゲットプロパティに置き換えました。すべての CMakeAPI の変更点については、2.0 の「CMake API の変更点」を参照してください。
  • Montotype Spark フォントエンジンによるテキストシェーピングを有効または無効にするための QUL_COMPLEX_TEXT_RENDERING CMake API を追加しました。
  • toFixedInt() およびtoExponentialAuto() を、それぞれtoFixed()およびtoExponential()メソッドに置き換えました。
  • プラットフォーム用 SDK およびライブラリをアップグレードしました:
    • Renesas Graphics Library SDK v2.0.0a
    • MIMXRT1050-EVKB - MCUXpresso SDK v2.10.0
    • MIMXRT1060-EVK - MCUXpresso SDK v2.10.1
    • MIMXRT1064-EVK - MCUXpresso SDK v2.10.0
    • MIMXRT1170-EVK - MCUXpresso SDK v2.10.1
    • Monotype SDK v2.0
  • PlatformContext APIが追加されました。include/platform/platform.h 内の既存のグローバルプラットフォーム関数が仮想関数になりました。Qt Quick Ultraliteコアは、Qul::Platform 名前空間内のgetPlatformInstance()関数を使用して、これらのプラットフォーム関数にアクセスします。
  • waitForFlip() および stm32_flushFrame() 内の空の while ループを stm32_enterSleepMode() に置き換えることで、CPU 負荷を低減しました。
  • QulPerf をQtQuickUltralite.Extrasモジュールに移動しました。
  • アプリケーション固有の設定を制御するために、Qul::ApplicationSettings を追加しました。その結果、Qul::Application::setUiLanguage()を削除しました。
  • CMake API の名称をより直感的なものに変更し、目的に応じて適切な API を容易に選択できるようにしました。これらの API のリストについては、「2.0 における CMake API の変更点」を参照してください。
  • ベンダーのボードサポートパッケージ(BSP)のソースコードを、独立した Qul::QuickUltralitePlatformSDK ライブラリとしてコンパイルできるようにしました。これにより、これらのライブラリに対して個別のコンパイラフラグを使用することも可能になりました。
  • AnchorChanges の機能を、アンカーラインの変更のみに限定しました。余白を変更するには、PropertyChanges を使用してください。
  • Renesas RH850 において、Monotype Spark フォントエンジンのサポートを追加しました。
  • MemoryAllocatorのacquire()およびrelease()のデフォルト実装を更新し、waitUntilAsyncReadFinished()およびflushCachesForAsyncRead()が呼び出されないようにしました。
  • CMake 3.21 以降を使用し、IAR ツールチェーンによるソースからのビルドを有効にしました。
  • FreeRTOS 上で IAR を使用する場合、STM32F769i の初期スタックサイズ (1K) を定義しました。
  • FreeRTOS 向けのheap_5 アロケータで、SRAM と SDRAM の両方の使用を有効にしました。
  • STM およびNXP プラットフォームのデフォルトのタッチイベントキューの実装を削除しました。
  • NXP プラットフォームにおけるタッチイベントの処理を変更しました。タッチデータは、タッチスクリーンからの割り込みがあった場合にのみ取得されます。
  • 任意のフォントエンジンを選択するための QUL_FONT_ENGINE CMake ターゲットプロパティを追加しました。
  • EK-RA6M3G 用の J-Link コマンドファイル名に CMake ターゲットを追加しました。
  • Behavior におけるグループアニメーションのサポートを追加しました。
  • STM32H750B-discovery ボードのユーザーボタンのサポートを追加しました。
  • TextCacheのアルファマップブレンドに対応しました。
  • Monotype WorldType Shaper Spark に基づくテキストシェーピングのサポートを追加しました。これにより、Text アイテム内で複雑な文字体系や双方向スクリプトを使用できるようになります。
  • アセット用のキャッシュメモリを割り当てるために、PreloadAllocator および ReversePreloadAllocator を追加しました。
  • モジュールライブラリからリソースを削除しました。これらのリソースはモジュールに同梱されていますが、選択された色深度に基づいてアプリケーションと共にビルドされます。
  • 各プラットフォームに QulModuleResourceData リンカセクションを追加しました。これにより、ロケーション非依存リソース機能が無効化され、リンカが未使用のリソースを削除できるようになります。
  • Qt Quick のUltraliteモジュールに対して、ランタイムリソース検索のサポートを有効にしました。
  • 翻訳サンプルにタイ語およびアラビア語のサポートを追加しました。
  • Thermoデモに、複雑な文字体系およびBiDiテキストのサポートを追加しました。
  • Wfloat-equal が適用可能な浮動小数点数用の特殊化テンプレートを追加しました。
  • qmltocpp によって生成された C++ コードに対して、-Wfloat-equal および-Wshadow を有効にしました。
  • STM32H750B 向けのペイント済みアイテムの例を有効にしました。
  • RH850にSDRAMメモリアロケータを追加しました。
  • StaticText での複数行テキストの水平方向の配置のサポートを追加しました。
  • NXP 1060 および 1064、ならびに STM32H750B で、倍精度 FPU の使用に切り替えました。
  • GCC ツールチェーンに基づくプラットフォームビルドを更新し、動的なヒープサイズを使用するようにしました。
  • STM32ボード上の動的アセットヒープを、SRAMおよびSDRAM用の個別のアロケータに置き換えました。これらのアロケータは、 Qt Quick Ultraliteプラットフォームの抽象化におけるメモリ割り当てに基づいています。
  • すべての割り当てについて、qul_malloc に移行しました。
  • RT1170 でのタイル型画像形式のサポートを追加しました。
  • デスクトップ用 Qt バックエンドを通常のプラットフォームに変換し、CMake 設定の複雑さを軽減しました。
  • OTA アップデート用に、qulrcc でバイナリを生成する CMake ビルドターゲットを追加しました。
  • qulrcc の改善点:
    • 「core」と「main」の 2 つのライブラリに分割しました。このうち、「core」はアセットの変換を処理し、「main」は入出力を処理します。
    • テクスチャヘッダーのオフセットを現在のオフセットに加算するようにしました。
    • キャッシュサイズが画像を収容するには小さすぎる場合、警告を表示するようにしました。
    • QUL_RESOURCE_STORAGE_SECTION CMake API を使用して設定されたメモリセクションから読み込まれたデータに基づいて、画像アセットを生成するようにしました。
    • 2つの画像間でハッシュ値が競合している場合は警告を表示し、いずれかの画像の名前を変更するよう推奨します。

修正された問題

Qt for MCUs v2.0.0

  • カラムレイアウト内のアイテムが非表示に設定されている場合の動作を更新しました。具体的には、
    • 表示状態の変更時にアイテムを再配置し、
    • 非表示のアイテムについては空のプレースホルダーを削除する。
  • カラム内の最初のアイテムのトップマージンを削除しました。
  • QMLのプロパティ変更シグナルに関連する問題を修正しました。これにより、プロパティ変更シグナルが正しく発火するようになりました。
  • Qt Creator を使用したRH850 D1M1Aのフラッシュに関する問題を修正しました。
  • 空の状態でも遷移アニメーションが期待通りに動作するよう、関数レベルのリンクを無効化しました。
  • コンテキスト切り替えロジックを修正し、直接スリープ状態に入るのではなく、qul_os_yield() を使用するようにしました。これにより、Qt for MCUs アプリケーションが、プリエンプティブおよび協調型マルチタスクモードの両方で期待通りに動作するようになりました。
  • スタックメモリサイズに制限を追加し、ベアメタル環境の STM32 においてヒープメモリとの重複を回避しました。
  • font.unicodeCoverage の使用を Qt.font() の呼び出しのみに制限しました。
  • RGB 画像形式における透明ピクセルのレンダリングに関する問題を修正しました。
  • CMake 3.16.3 を使用した Linux ホストでのビルドに関する問題を修正しました。
  • 予期しないアーティファクトを修正するため、swipe_gameデモをリファクタリングしました。
  • NXP RT1170 における IAR リンカーの警告を修正しました。
  • テキストの方向が左から右か、右から左かに基づいて、テキストの自動配置を有効にしました。
  • IRQ ピン 206 を設定することで、EK-RA6M3G でのタッチ入力の問題を修正しました。
  • すべてのQt Quick Ultralite モジュールで、リソースに関するプラットフォームまたはボード固有のデフォルトプロパティが利用できるようにしました。
  • テキストレイアウトにおける幅の計算ロジックを修正しました。
  • ウォッチのサンプルにおける UI の不具合を修正しました。
  • テキストレイアウトの回帰不具合を修正しました。
  • QUL_PLATFORM_BOARD_DIR および QUL_TARGET_TOOLCHAIN_DIR が有効なパスであることを確認するチェックを追加しました。
  • StaticText アイテム内のグリフをマージすることで、ドローコールの多さによる FIFO バッファのオーバーフローを修正しました。
  • TVII エフェクトのサンプルを更新し、デスクトップでも動作するようにしました。
  • RGB332 形式の不透明画像に関するレンダリングの問題を修正しました。
  • フラッシュターゲットへのビルドターゲットの依存関係を追加し、確実にビルドされるようにしました。
  • 右揃えのテキストにおけるアーティファクトを修正しました。
  • NXP における IAR コンパイラのエラーおよび警告を修正しました。
  • NXP FreeRTOS プラットフォームでのアプリケーションの停止を修正しました。
  • RH850 において、内部フラッシュ内の画像をルートImageLayer のソースとして使用すると発生する問題を修正しました。

Qt for MCUs v2.0.1

  • ImageLayer 項目のソースが欠落していたために発生していたアサーションを修正しました。ソースが欠落している場合、そのレイヤーは無視されます。
  • アラビア語のテキストがはみ出さないよう、thermo デモの右余白を修正しました。
  • fontcompilerにおける以下の問題を修正しました:
    • Sparkフォントエンジンでサポートされていないフォントファイル形式を使用した場合にセグメンテーションフォールトが発生する問題を修正しました。
    • デフォルトの QUL_MAX_PARAGRAPH_SIZE を更新し、100を超えないようにしました。
  • Qul::PlatformTraveoIIExtras モジュールでヘッダーファイルが欠落していた問題を修正しました。layerwarping.h およびtviiconfiguration.h ヘッダーは、<tviiextras/layerwarping.h> および<tviiextras/tviiconfiguration.h> を使用してインクルードされるようになりました。
  • Static フォントエンジンにおける回帰不具合を修正し、アンカー付きテキスト項目が y 軸上で正しいオフセットでレンダリングされるようにしました。
  • GNU ツールチェーンを除くすべてのツールチェーンについて、フォントバイナリデータのサポートを削除しました。これにより、CMake v3.22.0 を使用して IAR ツールチェーンでQt Quick Ultralite をビルドする際の失敗が修正されました。

新しいAPI

アプリケーション開発用API

新しいクラス

名前空間の新しい関数

(since Qt Quick Ultralite 2.0) void initHardware()

QMLの新しいメソッド

QML 型Qt

(since Qt Quick Ultralite 2.0) string resolvedUrl(String url)

プラットフォーム開発向けAPI

新しいクラス

新しいグローバル関数

(since Qt Quick Ultralite (Platform) 2.0) Qul::Platform::PlatformContext *getPlatformInstance()

以前のバージョンでの変更点

特定のQtライセンスの下で利用可能です。
詳細はこちらをご覧ください。