LunaSVG は、C++ の SVG レンダリング ライブラリであり、軽量でポータブルになるように設計されており、Scalable Vector Graphics (SVG) ファイルの効率的なレンダリングと操作を提供します。
# include < lunasvg.h >
using namespace lunasvg ;
int main ()
{
auto document = Document::loadFromFile ( " tiger.svg " );
if (document == nullptr )
return - 1 ;
auto bitmap = document-> renderToBitmap ();
if (bitmap. isNull ())
return - 1 ;
bitmap. writeToPng ( " tiger.png " );
return 0 ;
}
LunaSVG は、SVG 1.1 および SVG 1.2 Tiny 仕様で概説されているほぼすべてのグラフィック機能をサポートしています。主な例外は、アニメーション、フィルター、スクリプトです。 LunaSVG は静的レンダリング用に設計されているため、将来的にアニメーションがサポートされる可能性は低いです。ただし、フィルタのサポートが追加される場合があります。現在、次のようなさまざまな要素を処理しています。
<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 を使用して LunaSVG をインストールするには、次の手順に従います。
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
cmake -B build .
cmake --build build
cmake --install build
LunaSVG をインストールした後、 find_package
使用して CMake プロジェクトにライブラリを含めることができます。
find_package (lunasvg REQUIRED)
# Link LunaSVG to your target
target_link_libraries (your_target_name PRIVATE lunasvg::lunasvg)
あるいは、CMake のFetchContent
使用して、LunaSVG を最初にインストールせずにプロジェクトに直接組み込むこともできます。
include (FetchContent)
FetchContent_Declare(
lunasvg
GIT_REPOSITORY https://github.com/sammycage/lunasvg.git
GIT_TAG master # Specify the desired branch or tag
)
FetchContent_MakeAvailable(lunasvg)
# Link LunaSVG to your target
target_link_libraries (your_target_name PRIVATE lunasvg::lunasvg)
your_target_name
実行可能ファイルまたはライブラリ ターゲットの名前に置き換えます。
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
meson setup build
meson compile -C build
meson install -C build
LunaSVG をインストールした後、 dependency
関係関数を使用して Meson プロジェクトにライブラリを含めることができます。
lunasvg_dep = dependency ( ' lunasvg ' , required : true )
あるいは、 lunasvg.wrap
subprojects
ディレクトリに追加して、LunaSVG を最初にインストールすることなくプロジェクトに直接含めます。次の内容を含むlunasvg.wrap
という名前のファイルを作成します。
[wrap-git]
url = https://github.com/sammycage/lunasvg.git
revision = head
depth = 1
[provide]
lunasvg = lunasvg_dep
次のようにして、ラップ フォールバックから依存関係を取得できます。
lunasvg_dep = dependency ( ' lunasvg ' , fallback : [ ' lunasvg ' , ' lunasvg_dep ' ])
LunaSVG は、SVG ファイルを PNG 形式に変換するためのコマンドライン ツールsvg2png
提供します。
svg2png [filename] [resolution] [bgColor]
$ svg2png input.svg
$ svg2png input.svg 512x512
$ svg2png input.svg 512x512 0xff00ffff