Всем привет!
Вышла первая бета библиотеки со скромным названием
SVG++. Библиотека header-only, кроссплатформенная, из third party требует только Boost, достаточно C++03.
SVG++ ничего сама не рисует, а только разбирает SVG и преобразует в удобный для программиста вид, что позволяет использовать ее как для построения полнофункциональных viewer'ов с DOMом и всеми прочими фичами SVG, так и для, например, простенького вытягивания путей из SVG. Для ее использования нужно представлять себе стандарт
SVG.
Вот некоторые
фичи:
Path data — parsing, simplification
Transform list — parsing, simplification
Color, including ICC color — parsing
Lengths — highly configurable handling
Basic shapes — optional conversion to path
Style attribute — parsing, taking in account differences in parsing presentation attributes and style properties
Automatic marker positions calculation
Viewport and viewbox handling
В качестве XML парсеров пока поддерживаются
RapidXML NS, libxml2 и MSXML. Добавление других — несложная задача.
В составе библиотеки есть демо-приложение, которое как раз рисует SVG в растр, используя
AGG. Со временем оно должно развиться в почти полный SVG парсер (почти — без DOM и скриптов).
<b>SVG++ на GitHub</b>
Документация на
http://svgpp.org/
Состояние. По фичам библиотека почти закончена. Надежность, имхо, позволяет ее использовать. Сейчас основная работа идет над документацией. Документация, что уж там скрывать, пока не покрывает библиотеку в достаточном объеме, т.е. использовать ее могут только продвинутые энтузиасты. По демо-viewer'у осталось много работы — в планах, кроме расширения поддержки стандарта SVG, также создать варианты для разных движков растеризации — Skia, Cairo, GDI+, OpenVG и т.д.
Библиотека бесплатна для коммерческого и некоммерческого использования, лицензия — Boost.
Отзывы are welcome!