LunaSVG — это библиотека рендеринга SVG на C++, легкая и портативная, обеспечивающая эффективный рендеринг и манипулирование файлами масштабируемой векторной графики (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 поддерживает практически все графические функции, описанные в спецификациях SVG 1.1 и SVG 1.2 Tiny. Основными исключениями являются анимация, фильтры и скрипты. Поскольку LunaSVG предназначен для статического рендеринга, анимация вряд ли будет поддерживаться в будущем. Однако может быть добавлена поддержка фильтров. В настоящее время он обрабатывает широкий спектр элементов, в том числе:
<a> <circle> <clipPath> <defs> <ellipse> <g> <image> изображение> <line> <linearGradient> <marker> <mask> <path> <pattern> <polygon> <polyline> < <radialGradient> <rect> <stop> <style> <svg> <symbol> <text> <tspan> <use>
Выполните следующие действия, чтобы установить LunaSVG с помощью CMake или Meson.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
cmake -B build .
cmake --build build
cmake --install build После установки LunaSVG вы можете включить библиотеку в свои проекты CMake с помощью find_package :
find_package (lunasvg REQUIRED)
# Link LunaSVG to your target
target_link_libraries (your_target_name PRIVATE lunasvg::lunasvg) Альтернативно вы можете использовать FetchContent CMake, чтобы включить LunaSVG непосредственно в ваш проект без необходимости предварительной установки:
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) Замените your_target_name именем вашего исполняемого файла или целевой библиотеки.
git clone https://github.com/sammycage/lunasvg.git
cd lunasvg
meson setup build
meson compile -C build
meson install -C build После установки LunaSVG вы можете включить библиотеку в свои проекты Meson, используя функцию dependency :
lunasvg_dep = dependency ( ' lunasvg ' , required : true ) Альтернативно, добавьте lunasvg.wrap в каталог subprojects , чтобы включить LunaSVG непосредственно в ваш проект без необходимости предварительной установки. Создайте файл lunasvg.wrap со следующим содержимым:
[wrap-git]
url = https://github.com/sammycage/lunasvg.git
revision = head
depth = 1
[provide]
lunasvg = lunasvg_depВы можете получить зависимость от резервного варианта переноса с помощью:
lunasvg_dep = dependency ( ' lunasvg ' , fallback : [ ' lunasvg ' , ' lunasvg_dep ' ]) LunaSVG предоставляет инструмент командной строки svg2png для преобразования файлов SVG в формат PNG.
svg2png [filename] [resolution] [bgColor]$ svg2png input.svg
$ svg2png input.svg 512x512
$ svg2png input.svg 512x512 0xff00ffff