LunaSVG es una biblioteca de renderizado SVG en C++, diseñada para ser liviana y portátil, que ofrece renderizado y manipulación eficientes de archivos de gráficos vectoriales escalables (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 admite casi todas las funciones gráficas descritas en las especificaciones SVG 1.1 y SVG 1.2 Tiny. Las principales excepciones son las animaciones, los filtros y los guiones. Como LunaSVG está diseñado para renderizado estático, es poco probable que se admita la animación en el futuro. Sin embargo, se puede agregar soporte para filtros. Actualmente maneja una amplia variedad de elementos, entre ellos:
<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 los pasos a continuación para instalar LunaSVG usando CMake o Meson.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
cmake -B build .
cmake --build build
cmake --install build
Después de instalar LunaSVG, puedes incluir la biblioteca en tus proyectos de CMake usando find_package
:
find_package (lunasvg REQUIRED)
# Link LunaSVG to your target
target_link_libraries (your_target_name PRIVATE lunasvg::lunasvg)
Alternativamente, puede usar FetchContent
de CMake para incluir LunaSVG directamente en su proyecto sin necesidad de instalarlo primero:
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)
Reemplace your_target_name
con el nombre de su ejecutable o biblioteca de destino.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
meson setup build
meson compile -C build
meson install -C build
Después de instalar LunaSVG, puedes incluir la biblioteca en tus proyectos de Meson usando la función dependency
:
lunasvg_dep = dependency ( ' lunasvg ' , required : true )
Alternativamente, agregue lunasvg.wrap
a su directorio subprojects
para incluir LunaSVG directamente en su proyecto sin necesidad de instalarlo primero. Cree un archivo llamado lunasvg.wrap
con el siguiente contenido:
[wrap-git]
url = https://github.com/sammycage/lunasvg.git
revision = head
depth = 1
[provide]
lunasvg = lunasvg_dep
Puede recuperar la dependencia del respaldo de ajuste con:
lunasvg_dep = dependency ( ' lunasvg ' , fallback : [ ' lunasvg ' , ' lunasvg_dep ' ])
LunaSVG proporciona una herramienta de línea de comandos svg2png
para convertir archivos SVG al formato PNG.
svg2png [filename] [resolution] [bgColor]
$ svg2png input.svg
$ svg2png input.svg 512x512
$ svg2png input.svg 512x512 0xff00ffff