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_depVous 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