SVGViewer: рендерер на C11
SVG-рендерер на C11 без зависимостей с собственным XML-парсером и многопоточным аналитическим растеризатором.
SVGViewer — крошечный и очень быстрый просмотрщик SVG для Windows, написанный на чистом C без чего-либо, кроме Win32 API.

SVGViewer — крошечный и очень быстрый просмотрщик SVG для Windows, написанный на чистом C без чего-либо, кроме Win32 API.
Он содержит XML-парсер, работающий на месте без копирования, компилятор SVG, покрывающий пути, градиенты, обтравочные контуры, CSS-селекторы, трансформации и текст (контуры глифов берутся из системных шрифтов через GDI и рендерятся как пути), и многопоточный растеризатор с точным знаковым покрытием площади и аналитически точным сглаживанием.
Стресс-файл на 20 000 путей / 1,9 млн ребер рендерится в 1600x1600 примерно за 60 мс; также умеет рендерить без окна в PNG и поставляется как установщик Inno Setup с файловыми ассоциациями.
Что умеет
- Широкая поддержка SVG: все команды путей, линейные/радиальные градиенты со spread и трансформациями, clipPath/mask, use/symbol, блоки стилей CSS, 148 именованных цветов, viewBox/preserveAspectRatio
- Текст через tspan, семейства шрифтов, начертания, якоря и межбуквенные интервалы, с использованием контуров глифов GDI, так что текст заливается/обводится как любая фигура
- Многопоточная подготовка (аппроксимация кривых/обводка/штрихи) и растеризация по полосам строк на постоянном пуле потоков
- Масштабирование/панорамирование вокруг курсора, подгонка, переключение фона, drag-and-drop, автоперезагрузка при изменении файла, экспорт в PNG без окна с отчетом о времени
- Установщик с режимами для одного пользователя или всех, обработчик .svg по умолчанию и пункт контекстного меню; иконка приложения сгенерирована самим просмотрщиком
Полный стек 2D-векторной графики от разбора XML до сглаженной растеризации, написанный вручную в ~4 тыс. строк C, с измеренными показателями производительности; ни строчки стороннего кода.
Нужно что-то похожее?
Делаю это вживую на звонке в Zoom / Яндекс Телемост, вы смотрите на экран, таймер останавливается по вашему слову. Первые 15 минут бесплатно.