このプロジェクトについて

LunaSVGは、Scalable Vector Graphics(SVG)ファイルをレンダリングおよび操作するためのC++ライブラリであり、軽量でポータブルになるように設計されています。静的レンダリングを対象としており、SVG 1.1およびSVG 1.2 Tiny仕様のほぼすべてのグラフィカル機能をサポートしていますが、アニメーション、フィルタ、スクリプトは対象外です。ライブラリは静的出力に焦点を当てているため、アニメーションが追加される可能性は低いですが、フィルタのサポートは後で追加されるかもしれません。 主な機能: - ファイルまたはメモリ内データからSVGドキュメントを読み込み、ビットマップにレンダリングし、PNGとしてエクスポートできます。 - 実行時に外部CSSスタイルシートを適用して、レンダリング前にドキュメントのスタイルを変更でき、1つのSVGソースから季節ごとのテーマなどのバリエーションを作成できます。 - elementFromPoint(x, y)によるヒットテスト。座標の下にある要素を返し、stroke、stroke-width、transformなどの属性を変更して再レンダリングできます。 - a、circle、clipPath、defs、ellipse、g、image、line、linearGradient、marker、mask、path、pattern、polygon、polyline、radialGradient、rect、stop、style、svg、symbol、text、tspan、useなど、幅広い要素をカバーしています。 インストールと統合: - CMakeまたはMesonでビルドできます。CMakeユーザーは、find_package(lunasvg)を介してインストールおよび利用し、lunasvg::lunasvgをリンクするか、FetchContentで取得できます。Mesonユーザーは、dependency('lunasvg')またはwrapファイルを使用できます。 - ビルドオプションUSE_SYSTEM_PLUTOVG(デフォルトOFF)を使用すると、バンドルされたサブモジュールの代わりにシステムのplutovg 1.0.0以上にリンクでき、見つからない場合はサブモジュールにフォールバックします。 ツール: - コマンドラインユーティリティsvg2pngは、SVGファイルをPNGに変換し、オプションの解像度(例: 512x512)と背景色(例: 0xff00ffff)を受け付けます。 採用状況: READMEにはLunaSVGを使用しているプロジェクトが記載されています。これには、OpenSiv3D、PICsimLab、MoneyManagerEx、RmlUi、EKA2L1、ObEngine、OTTO、EmulationStation-DE、Dear ImGui、Multi Theft Auto: San Andreas、CARLA Simulator、AUI Framework、node-canvas、pillow-lunasvgが含まれます。 ライセンス: MIT。