svgtoqml

svgtoqml は Qt に同梱されているコマンドラインツールで、SVG ドキュメントを QML ファイルに変換します。このQMLファイルはQt Quickアプリケーションのコンポーネントとして使用することができます。天気予報の例には、このツールを使って生成された複数のQMLファイルが含まれています。

概要

svgtoqml は、SVG ファイルを Qt Quick プリミティブを使用する QML ファイルに変換します。Qt Quickはスケーラブルなベクターグラフィックスをサポートしているため、生成されるアイテムは可能な限り滑らかに変換されます。ベースラインとして、このツールはSVG Tiny 1.2プロファイルの静的機能のほとんどをサポートしています。ある種の追加機能はケースバイケースで決定され、サポートされる。インタラクティブ機能とアニメーションはサポートされない。

使い方

svgtoqml の基本的な使い方は、入力ファイルと出力ファイルを提供することです:svgtoqml input.svg output.qml 。これにより、input.svg ファイルが読み込まれ、output.qml の対応する Qt Quick シーンに変換され、Qt Quick アプリケーションの一部として使用することができます。

さらに、以下のオプションをサポートしています:

オプション説明
-コピーライト文 <文字列生成ファイルの先頭にコメントとして <string> を追加します。
-c, -curve-rendererQt Quick Shapes のカーブレンダラバックエンドを有効にする。これにより、マルチサンプリングなしで、シーン内の滑らかでアンチエイリアスされた形状が可能になりますが、若干の追加コストがかかります。
-p, -optimize-pathsQML ファイルにコミットする前にパスを最適化します。
-アウトラインストロークモード元のパスの代わりに、塗りつぶされた形状の輪郭をストロークします。
-t, -type-name <文字列Shape の代わりに、タイプ名 <string> を出力に使用します。これは、Shape 項目のデフォルトの動作を上書きするために、カスタム項目を使用することを可能にします。
-v, -view生成される Qt Quick アイテムのプレビューを表示します。

他のオプションとの比較

SVG コンテンツを Qt Quick に含めるためのオプションは複数あります。以下では、svgtoqml の概要について説明します。

Qt SVGとの比較

Qt SVGはSVGファイルのパーサーとソフトウェアレンダラーを提供するモジュールです。さらに、イメージローダプラグインも含まれており、Qt QuickのImage 要素でSVGファイルを直接読み込むことができます。SVGはラスタライズされ、指定されたサイズでキャッシュされる。しかし、ピクセレーションなしで画像を拡大するには、異なるサイズで再読み込みする必要があります。

svgtoqml (および コンポーネント) は、同じコンテンツをレンダリングする代替方法です。Qt Quick に読み込まれると、シーンのレンダリングに必要なジオメトリデータを GPU メモリに保持したまま、トランスフォームを変更できます。したがって、オーバーヘッドをほとんど発生させることなく、ベクトル画像を異なるスケールで再描画することができます。VectorImage

しかし、アプリケーションのライフタイム中に画像サイズが変わらない場合は、SVGをImage としてロードする方が効率的です。この場合、SVG が常に可能なサイズの小さなサブセットでレンダリングされるのであれば、PNG のような読み込み効率の良い画像形式にあらかじめラスタライズしておくことを検討する。

VectorImage との比較

VectorImage コンポーネントはsvgtoqml と同じ基本機能を提供しますが、Qt Quick シーンを QML ファイルとして事前に生成する代わりに、実行時にシーンを作成します。これにより、ビルド時に提供されない SVG ファイルを読み込むことができ、より柔軟性が増します。シーンをsvgtoqml で事前に生成することで、読み込む前にシーンを最適化することができます。したがって、ビルド時に利用可能なファイルについては、svgtoqml が好ましいオプションです。

PathSvg との比較

PathSvg コンポーネントはQt Quick Shapes モジュールの一部です。パスの制御点を文字列として指定する SVG で使われる構文でパスを定義する方法を提供します。SVGファイルの読み込みをサポートしていないので、svgtoqml の直接的な代替にはなりません。複雑なSVGがアプリケーションで必要とされる特定の形状を含んでいる場合、このパス記述をPathSvg にコピーする方が、完全なファイルを生成するよりも便利かもしれません。

本書に含まれる文書の著作権はそれぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。