LunaSVG est une bibliothèque de rendu SVG en C++, conçue pour être légère et portable, offrant un rendu et une manipulation efficaces des fichiers 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 prend en charge presque toutes les fonctionnalités graphiques décrites dans les spécifications SVG 1.1 et SVG 1.2 Tiny. Les principales exceptions sont l'animation, les filtres et les scripts. Comme LunaSVG est conçu pour le rendu statique, il est peu probable que l'animation soit prise en charge à l'avenir. Cependant, la prise en charge des filtres peut être ajoutée. Il gère actuellement une grande variété d’éléments, notamment :
<a>
<circle>
<clipPath>
<defs>
<ellipse>
<g>
<image>
<line>
<linearGradient>
<marker>
<mask>
<path>
<pattern>
<polygon>
<polyline>
<radialGradient>
<rect>
<stop>
<style>
<svg>
<symbol>
<text>
<tspan>
<use>
Suivez les étapes ci-dessous pour installer LunaSVG à l'aide de CMake ou Meson.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
cmake -B build .
cmake --build build
cmake --install build
Après avoir installé LunaSVG, vous pouvez inclure la bibliothèque dans vos projets CMake en utilisant find_package
:
find_package (lunasvg REQUIRED)
# Link LunaSVG to your target
target_link_libraries (your_target_name PRIVATE lunasvg::lunasvg)
Alternativement, vous pouvez utiliser FetchContent
de CMake pour inclure LunaSVG directement dans votre projet sans avoir besoin de l'installer au préalable :
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)
Remplacez your_target_name
par le nom de votre exécutable ou de votre bibliothèque cible.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
meson setup build
meson compile -C build
meson install -C build
Après avoir installé LunaSVG, vous pouvez inclure la bibliothèque dans vos projets Meson en utilisant la fonction dependency
:
lunasvg_dep = dependency ( ' lunasvg ' , required : true )
Vous pouvez également ajouter lunasvg.wrap
à votre répertoire subprojects
pour inclure LunaSVG directement dans votre projet sans avoir besoin de l'installer au préalable. Créez un fichier nommé lunasvg.wrap
avec le contenu suivant :
[wrap-git]
url = https://github.com/sammycage/lunasvg.git
revision = head
depth = 1
[provide]
lunasvg = lunasvg_dep
Vous pouvez récupérer la dépendance à partir de la solution de repli avec :
lunasvg_dep = dependency ( ' lunasvg ' , fallback : [ ' lunasvg ' , ' lunasvg_dep ' ])
LunaSVG fournit un outil de ligne de commande svg2png
pour convertir les fichiers SVG au format PNG.
svg2png [filename] [resolution] [bgColor]
$ svg2png input.svg
$ svg2png input.svg 512x512
$ svg2png input.svg 512x512 0xff00ffff