LunaSVG adalah pustaka rendering SVG dalam C++, dirancang agar ringan dan portabel, menawarkan rendering dan manipulasi file Scalable Vector Graphics (SVG) yang efisien.
# 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 mendukung hampir semua fitur grafis yang diuraikan dalam spesifikasi SVG 1.1 dan SVG 1.2 Tiny. Pengecualian utama adalah animasi, filter, dan skrip. Karena LunaSVG dirancang untuk rendering statis, kemungkinan besar animasi tidak akan didukung di masa mendatang. Namun, dukungan untuk filter mungkin ditambahkan. Saat ini menangani berbagai elemen, termasuk:
<a>
<circle>
<clipPath>
<defs>
<ellipse>
<g>
<image>
<line>
<linearGradient>
<marker>
<mask>
<path>
<pattern>
<polygon>
<polyline>
<radialGradient>
<rect>
<stop>
<style>
<svg>
<symbol>
<text>
<tspan>
<use>
Ikuti langkah-langkah di bawah ini untuk menginstal LunaSVG menggunakan CMake atau Meson.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
cmake -B build .
cmake --build build
cmake --install build
Setelah menginstal LunaSVG, Anda dapat menyertakan perpustakaan dalam proyek CMake Anda menggunakan find_package
:
find_package (lunasvg REQUIRED)
# Link LunaSVG to your target
target_link_libraries (your_target_name PRIVATE lunasvg::lunasvg)
Alternatifnya, Anda dapat menggunakan FetchContent
CMake untuk menyertakan LunaSVG secara langsung dalam proyek Anda tanpa perlu menginstalnya terlebih dahulu:
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)
Ganti your_target_name
dengan nama target yang dapat dieksekusi atau perpustakaan Anda.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
meson setup build
meson compile -C build
meson install -C build
Setelah menginstal LunaSVG, Anda dapat menyertakan perpustakaan dalam proyek Meson Anda menggunakan fungsi dependency
:
lunasvg_dep = dependency ( ' lunasvg ' , required : true )
Alternatifnya, tambahkan lunasvg.wrap
ke direktori subprojects
Anda untuk memasukkan LunaSVG langsung ke proyek Anda tanpa perlu menginstalnya terlebih dahulu. Buat file bernama lunasvg.wrap
dengan konten berikut:
[wrap-git]
url = https://github.com/sammycage/lunasvg.git
revision = head
depth = 1
[provide]
lunasvg = lunasvg_dep
Anda dapat mengambil ketergantungan dari wrap fallback dengan:
lunasvg_dep = dependency ( ' lunasvg ' , fallback : [ ' lunasvg ' , ' lunasvg_dep ' ])
LunaSVG menyediakan alat baris perintah svg2png
untuk mengonversi file SVG ke format PNG.
svg2png [filename] [resolution] [bgColor]
$ svg2png input.svg
$ svg2png input.svg 512x512
$ svg2png input.svg 512x512 0xff00ffff