LunaSVG é uma biblioteca de renderização SVG em C++, projetada para ser leve e portátil, oferecendo renderização e manipulação eficiente de arquivos SVG (Scalable Vector Graphics).
# 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 suporta quase todos os recursos gráficos descritos nas especificações SVG 1.1 e SVG 1.2 Tiny. As principais exceções são animações, filtros e scripts. Como o LunaSVG foi projetado para renderização estática, é improvável que a animação seja suportada no futuro. No entanto, pode ser adicionado suporte para filtros. Atualmente, ele lida com uma ampla variedade de elementos, incluindo:
<a>
<circle>
<clipPath>
<defs>
<ellipse>
<g>
<image>
<line>
<linearGradient>
<marker>
<mask>
<path>
<pattern>
<polygon>
<polyline>
<radialGradient>
<rect>
<stop>
<style>
<svg>
<symbol>
<text>
<tspan>
<use>
Siga as etapas abaixo para instalar o LunaSVG usando CMake ou Meson.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
cmake -B build .
cmake --build build
cmake --install build
Após instalar o LunaSVG, você pode incluir a biblioteca em seus projetos CMake usando find_package
:
find_package (lunasvg REQUIRED)
# Link LunaSVG to your target
target_link_libraries (your_target_name PRIVATE lunasvg::lunasvg)
Alternativamente, você pode usar FetchContent
do CMake para incluir o LunaSVG diretamente no seu projeto sem precisar instalá-lo primeiro:
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)
Substitua your_target_name
pelo nome do seu executável ou destino da biblioteca.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
meson setup build
meson compile -C build
meson install -C build
Após instalar o LunaSVG, você pode incluir a biblioteca em seus projetos Meson usando a função dependency
:
lunasvg_dep = dependency ( ' lunasvg ' , required : true )
Alternativamente, adicione lunasvg.wrap
ao seu diretório subprojects
para incluir LunaSVG diretamente em seu projeto sem precisar instalá-lo primeiro. Crie um arquivo chamado lunasvg.wrap
com o seguinte conteúdo:
[wrap-git]
url = https://github.com/sammycage/lunasvg.git
revision = head
depth = 1
[provide]
lunasvg = lunasvg_dep
Você pode recuperar a dependência do fallback wrap com:
lunasvg_dep = dependency ( ' lunasvg ' , fallback : [ ' lunasvg ' , ' lunasvg_dep ' ])
LunaSVG fornece uma ferramenta de linha de comando svg2png
para converter arquivos SVG para o formato PNG.
svg2png [filename] [resolution] [bgColor]
$ svg2png input.svg
$ svg2png input.svg 512x512
$ svg2png input.svg 512x512 0xff00ffff