عن المشروع

LunaSVG هي مكتبة C++ لعرض ومعالجة ملفات Scalable Vector Graphics (SVG)، مصممة لتكون خفيفة ومحمولة. تستهدف العرض الثابت وتدعم تقريبًا جميع الميزات الرسومية في مواصفات SVG 1.1 وSVG 1.2 Tiny، باستثناء ملحوظ للرسوم المتحركة والمرشحات والسكريبتات. من غير المرجح إضافة الرسوم المتحركة لأن المكتبة تركز على الإخراج الثابت، رغم أن دعم المرشحات قد يأتي لاحقًا. القدرات الأساسية: - تحميل مستندات SVG من الملفات أو البيانات في الذاكرة وعرضها إلى صور نقطية، مع تصدير PNG. - تطبيق أوراق أنماط CSS خارجية في وقت التشغيل لإعادة تنسيق مستند قبل العرض، مما يتيح تنويعات مثل السمات الموسمية من مصدر SVG واحد. - اختبار النقر عبر elementFromPoint(x, y)، الذي يعيد العنصر تحت إحداثي؛ يمكن بعد ذلك تعديل سمات مثل stroke وstroke-width وtransform وإعادة العرض. - تغطية واسعة للعناصر تشمل a وcircle وclipPath وdefs وellipse وg وimage وline وlinearGradient وmarker وmask وpath وpattern وpolygon وpolyline وradialGradient وrect وstop وstyle وsvg وsymbol وtext وtspan وuse. التثبيت والتكامل: - البناء باستخدام CMake أو Meson. يمكن لمستخدمي CMake تثبيته واستخدامه عبر find_package(lunasvg) والربط بـ lunasvg::lunasvg، أو جلبه عبر FetchContent. يمكن لمستخدمي Meson استخدام dependency('lunasvg') أو ملف wrap. - خيار البناء USE_SYSTEM_PLUTOVG (افتراضيًا OFF) يسمح بالربط مع plutovg 1.0.0+ الموجود في النظام بدلًا من الوحدة الفرعية المضمنة، مع الرجوع إلى الوحدة الفرعية إذا لم يتم العثور عليه. الأدوات: - أداة سطر أوامر svg2png تحول ملفات SVG إلى PNG، وتقبل دقة اختيارية (مثل 512x512) ولون خلفية (مثل 0xff00ffff). التبني: يسرد README المشاريع التي تستخدم LunaSVG، بما في ذلك OpenSiv3D وPICsimLab وMoneyManagerEx وRmlUi وEKA2L1 وObEngine وOTTO وEmulationStation-DE وDear ImGui وMulti Theft Auto: San Andreas وCARLA Simulator وAUI Framework وnode-canvas وpillow-lunasvg. الترخيص: MIT.