LunaSVG ist eine SVG-Rendering-Bibliothek in C++, die leichtgewichtig und portabel ist und ein effizientes Rendern und Bearbeiten von SVG-Dateien (Scalable Vector Graphics) ermöglicht.
# 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 unterstützt nahezu alle grafischen Funktionen, die in den Spezifikationen SVG 1.1 und SVG 1.2 Tiny beschrieben sind. Die primären Ausnahmen sind Animationen, Filter und Skripte. Da LunaSVG für statisches Rendering konzipiert ist, ist es unwahrscheinlich, dass Animationen in Zukunft unterstützt werden. Allerdings kann Unterstützung für Filter hinzugefügt werden. Es verarbeitet derzeit eine Vielzahl von Elementen, darunter:
<a>
<circle>
<clipPath>
<defs>
<ellipse>
<g>
<image>
<line>
<linearGradient>
<marker>
<mask>
<path>
<pattern>
<polygon>
<polyline>
<radialGradient>
<rect>
<stop>
<style>
<svg>
<symbol>
<text>
<tspan>
<use>
Führen Sie die folgenden Schritte aus, um LunaSVG entweder mit CMake oder Meson zu installieren.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
cmake -B build .
cmake --build build
cmake --install build
Nach der Installation von LunaSVG können Sie die Bibliothek mit find_package
in Ihre CMake-Projekte einbinden:
find_package (lunasvg REQUIRED)
# Link LunaSVG to your target
target_link_libraries (your_target_name PRIVATE lunasvg::lunasvg)
Alternativ können Sie CMakes FetchContent
verwenden, um LunaSVG direkt in Ihr Projekt einzubinden, ohne es zuerst installieren zu müssen:
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)
Ersetzen Sie your_target_name
durch den Namen Ihrer ausführbaren Datei oder Ihres Bibliotheksziels.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
meson setup build
meson compile -C build
meson install -C build
Nach der Installation von LunaSVG können Sie die Bibliothek mithilfe der dependency
in Ihre Meson-Projekte einbinden:
lunasvg_dep = dependency ( ' lunasvg ' , required : true )
Alternativ können Sie lunasvg.wrap
zu Ihrem subprojects
hinzufügen, um LunaSVG direkt in Ihr Projekt einzubinden, ohne es zuerst installieren zu müssen. Erstellen Sie eine Datei mit dem Namen lunasvg.wrap
mit folgendem Inhalt:
[wrap-git]
url = https://github.com/sammycage/lunasvg.git
revision = head
depth = 1
[provide]
lunasvg = lunasvg_dep
Sie können die Abhängigkeit aus dem Wrap-Fallback abrufen mit:
lunasvg_dep = dependency ( ' lunasvg ' , fallback : [ ' lunasvg ' , ' lunasvg_dep ' ])
LunaSVG bietet ein Befehlszeilentool svg2png
zum Konvertieren von SVG-Dateien in das PNG-Format.
svg2png [filename] [resolution] [bgColor]
$ svg2png input.svg
$ svg2png input.svg 512x512
$ svg2png input.svg 512x512 0xff00ffff