dobrovolskiy.com
EN
← все проектыдесктоп · 2026

SVGViewer: рендерер на C11

SVG-рендерер на C11 без зависимостей с собственным XML-парсером и многопоточным аналитическим растеризатором.

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

SVGViewer: рендерер на C11

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 минут бесплатно.

Ещё проекты

Сверхлегкий просмотрщик IP-камерСверхлёгкий многокамерный просмотрщик и регистратор RTSP: десятки камер на одном слабом ПК или сервере написанный на чистом C.Приложение для домофонаОднофайловое настольное приложение для Windows: живой RTSP-поток, открытие двери в один клик через HTTP API домофона, звуковой сигнал при обнаружении лица (YuNet)CSV Viewer (Win32, C)Однофайловый Win32-просмотрщик CSV/TSV на C, мгновенно открывающий огромные файлы.