A lightweight, portable C++ library for rendering and manipulating SVG files with high efficiency.
LunaSVG is a C++ library for rendering and manipulating Scalable Vector Graphics (SVG) files. It allows developers to load SVG documents, render them to bitmaps like PNG, and programmatically modify elements and styles. It solves the need for a lightweight, portable SVG processing solution in C++ applications.
C++ developers building applications that require SVG rendering, such as graphics tools, game engines, UI frameworks, or embedded systems needing vector graphics support.
Developers choose LunaSVG for its simplicity, portability, and compliance with SVG standards, offering a focused alternative to heavier libraries while maintaining essential features like dynamic styling and hit testing.
SVG rendering and manipulation library in C++
Implements nearly all graphical features from SVG 1.1 and 1.2 Tiny, supporting elements like path, text, gradients, and groups as listed in the README.
Allows runtime application of CSS-like stylesheets to change visual appearance without reloading, demonstrated in the Dynamic Styling example with summer and winter themes.
Provides elementFromPoint() method for detecting SVG elements at specific coordinates, enabling interactive applications like games or UI tools, as shown in the Hit Testing example.
Designed with minimal dependencies for easy integration into C++ projects across platforms, making it suitable for embedded or performance-sensitive environments.
Includes svg2png command-line tool for straightforward SVG to PNG conversion from the terminal, adding utility beyond library usage with customizable resolution.
Does not support animations, filters, or scripts—key parts of the SVG standard for dynamic and effects-rich graphics, as admitted in the README's features section.
Limited to C++ environments, requiring additional bindings or wrappers for use in projects based on other programming languages like Python or JavaScript.
Installation and integration depend on CMake or Meson, which can be complex for developers unfamiliar with these build systems, as outlined in the Installation section.
Primarily designed for static rendering with no plans to support animation, limiting its use for dynamic content like animated UIs or web graphics.
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.
Lightweight and modular C++11 graphics middleware for games and data visualization
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.