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