LINUX.ORG.RU

resvg 0.4 — библиотека отрисовки SVG

 , ,


1

4

resvg — это библиотека для отрисовки SVG, прямыми аналогами которой являются librsvg и QtSvg. Но в отличие от них, resvg поддерживает отрисовку с помощью нескольких бэкендов (Qt и cairo) и обеспечивает более полную поддержку стандарта. Также resvg является модульным, что позволяет использовать лишь нужные функции.

Основные изменения:

  • Добавлена начальная поддержка фильтров.

    Поддерживаются feBlend, feComposite, feFlood, feGaussianBlur, feImage, feMerge, feOffset и feTile.

    Сравнительная таблица.
  • Добавлена поддержка вложенных clipPath и mask.
  • Улучшена обработка атрибутов видимости (display, visibility), которые очень плохо поддерживаются.
  • Улучшена поддержка условной отрисовки. В частности добавлена поддержка атрибута systemLanguage.
  • Добавлена поддержка XML namespaces при разборе SVG.
  • Добавлено 180 новых тестов. Общее количество достигло 815-и.
  • Множество мелких изменений и исправлений.

Результаты тестирования. Сравнительная таблица. Неполный список нереализованных возможностей.

Также стоит упомянуть утилиту usvg, которая используется в resvg для упрощения SVG. Её можно использовать независимо от resvg.

Отдельное спасибо Serg_HIS за помощь в написании фильтра размытия IIR.

>>> Подробности

★★★★★

Проверено: jollheef ()

Ответ на: комментарий от RazrFalcon

Ибо Qt/cairo нельзя использовать напрямую для отрисовки svg.

А, теперь понял зачем оно. То есть из Qt/cairo используются только примитивы для непосредственной отрисовки, так?

jollheef ★★★★★ ()
Ответ на: комментарий от jollheef

Да. Но там больше ничего и нет. clippath, mask, marker, text layout, filters - это всё нужно руками реализовывать. Тот же cairo даже дуги не поддерживает. И я молчу про пердолинг с самим SVG/XML.

RazrFalcon ★★★★★ ()

Интересно что за ниша если уже в самих браузерах напрямую SVG никто не дергает, только через миллион слоев абстракции. Наверное тут тоже будем ждать слои абстракции

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от frob

xform?

Что характерно, librsvg, который тоже cairo использует, тоже конвертирует в кривые и уже их рендерит.

Я с дугами возился полтора года назад. Уже не помню почему стандартная реализация не подошла.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Ну, мы тут и по-русски поймём. Ведь разработчик имеет право создать ЧАВо только на родном языке и предложить, пожалуйста, переводите. Ведь есть люди, которые не программируют, но охотно помогают подобным проектам чем могут, например, переводом.

gag ★★★★★ ()
Ответ на: комментарий от RazrFalcon

xform?

Матрица трансформации. У каиры arc только круглая, чтоб сделать разные rx/ry надо растягивать. Ну и поворот туда же.

Наверное конвертировать всё в безье проще чем разбираться с каировскими заморочками. А в случае поворотов может и быстрее.

frob ★★★★★ ()
Ответ на: комментарий от gag

Как раз предполагаемый чаво для программистов. Когда это не программисты начинают переводить, такая фигня получается. У нас, например, таланты desktop после двойного перевода превратили в working table.

anonymous ()

Добавлена поддержка вложенных clipPath и mask.

У тебя в апрельском релизе было :

(svg) Partial clipPath support.
(svg) Partial mask support.
(svg) Partial pattern support.

В новом релизе:

(resvg) Nested clipPath and mask support.

А что сделать-то осталось?

AP ★★★★★ ()
Ответ на: комментарий от Serg_HIS

Мож, этим https://gitlab.gnome.org/GNOME/librsvg/ нужна будет помощь?

Их движок как использовался, так и используется. Странно, но resvg что-ли в игноре. Или как всегда: будет в resvg совместимый API, мож, и перейдут. Не будет - ну и пусть рендериться будет хуже, авось когда-нибудь станет лучше.

Хотя если посмотреть на время сборки librsvg, то после перехода на rust там кошмарная деградация. Как по времени, так и занимаемому пространству. Сотни процентов. А вот чего они выиграли и на сколько процентов - на глаз и не видно.

gag ★★★★★ ()
Ответ на: комментарий от anonymous

У нас, например, таланты desktop после двойного перевода превратили в working table.

Не удивительно. Несколько последовательных переводов работает как испорченный телефон.

anonymous ()
Ответ на: комментарий от gag

Странно, но resvg что-ли в игноре.

resvg слишком молодой. Нужно 1.0 ждать.

Но да, Гному нужна полная совместимость API, иначе никто перелазить не будет. А это нереально.

Кстати да. Там размер либы раздуло до безобразия:

~> du -h /usr/lib64/librsvg-2.so.2.40.18
220K
~> du -h ./librsvg-2.so.2.45.1 
8.0M

При этом resvg 1.2M

Зато поддержку SVG улучшили прилично. Всё ещё довольно плохо, но уже намного лучше. Правда из-за переезда на раст, в той же генту до сих пор Си версия.

RazrFalcon ★★★★★ ()
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

8.0M

Это они туда демо-видео втулили что ли?

Я тут свою игру пишу под ведроид со своим графическим движком. Вполне солидно получается на вид, но прога целиком меньше 10 мегов. Это с музыкой и с кучей 4К картинок для уровней. Сам код меньше 10К наверное. В начале разработки когда было запилено больше половины и почти весь движок около 7К было.

Serg_HIS ()