LunaSVG เป็นไลบรารีการเรนเดอร์ SVG ในภาษา C++ ซึ่งได้รับการออกแบบให้มีน้ำหนักเบาและพกพาสะดวก ให้การเรนเดอร์และการจัดการไฟล์ 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 รองรับคุณสมบัติกราฟิกเกือบทั้งหมดที่ระบุไว้ในข้อกำหนด 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