Каковы варианты написания настольного приложения на основе SVG?

Скажем, я хочу написать настольное приложение, которое будет широко использовать SVG. Каковы мои варианты рендеринга, графические инструменты, библиотеки и т.д.?

Мне бы хотелось:

  • работает плавно на Linux/Unix/Mac (везде с сглаживанием)
  • быть открытым исходным кодом
  • быть совместимым со стандартным SVG (например, непрозрачность, встроенная растровая графика)
  • доступный с использованием современного динамического языка (Python, Ruby, Lisp и т.д.)
    • например. Решение на основе C было бы идеальным в этом смысле

Итак, каковы мои варианты?

Ответ 1

Я предлагаю cairo, Cairo - это 2D-графическая библиотека с поддержкой вывода SVG файла.

API-интерфейс cairo предоставляет операции, аналогичные операторам рисования PostScript и PDF. Операции в Каире, включая поглаживание и наполнение кубические сплайны Безье, трансформирующие и композиционные полупрозрачные изображения, и сглаживание текста. Все операции рисования могут быть преобразуется любым аффинным преобразованием (масштаб, вращение, сдвиг, и др.)

Cairo реализуется как библиотека, написанная на языке программирования C, но привязки доступны для нескольких языков . К ним относятся Perl, Python, Ruby и многое другое.

Он также имеет несколько привязок Toolkit. GTK + 2.8+ имеет полную поддержку для каира, например.

Также есть и экспериментальные серверы с OpenGL. Какие преимущества включают Easily integrate features like PS-, PDF-, SVG-support to your OpenGL-application (may need additional libraries).

Cairo - бесплатное программное обеспечение и доступно для перераспределения и/или измененный в соответствии с условиями либо GNU Lesser General Public Лицензия (LGPL) версии 2.1 или версия публичной лицензии Mozilla (MPL) 1.1 по вашему выбору.

Ответ 2

Рассмотрение браузера Safari, который гладко выполняется на Mac. Вы можете написать свое приложение, используя библиотеку Raphael.

Эта база данных показывает язык Рафаэля, сама страница является чистой векторной графикой.

Просто бросьте этот способ, чтобы увидеть, подходит ли он внутри ваших ограничений...

http://www.irunmywebsite.com/raphael/additionalhelp.php?v=2

Ответ 3

Appcelarator Titanium Desktop кажется лучшим выбором. Вы можете написать приложение Ruby, Python или JavaScript и использовать HTML и CSS в качестве графического интерфейса. Там также Adobe AIR, но он не является открытым исходным кодом.

Что касается SVG, то лучшая библиотека, которую я нашел, d3.js. На первый взгляд вы можете создать впечатление, что это библиотека визуализации, но она может использоваться для любого типа работы SVG. Некоторые упомянули Rapheal.js, его сила в том, что он перекрестно браузера, однако из-за него он оставляет некоторые функции SVG, например, теги <g> использование VML с большинством версий IE.

Ответ 4

Я бы предложил пойти Apache Batik. Batik - это инструментарий SVG на основе Java, который может визуализировать, генерировать, манипулировать и транскодировать SVG на всех платформах, где существует Java; от настольных компьютеров, апплетов и даже карманных устройств. Он использует мощь независимой от платформы Java. Это идеальный выбор для настольных приложений. Он поддерживает полную интерактивность, связывание, создание сценариев и анимацию.

Apache Cocoon, Oracle JDeveloper 10i, Проект JFreeChart, ILOG Dicovery и Jviews - расширенные инструменты анализа визуальных данных, Военные и Гамутские игровые проекты, GLIPS Graffiti SVG Editor, проект eDoc Studio, Проект Apache FOP и т.д. некоторые из них проектов, которые используют Batik.

Ответ 5

Я бы не использовал cairo напрямую. Вместо этого попробуйте wxWigets...

Там очень полезный класс wxGraphicsContex, который делает большую часть инкапсуляции каира и других интересных вещей для вас. Theres даже SVG-Demo в пакете.

Существует также проект под названием "wxcairo", который использует libsvg.

Если вы заинтересованы в большом крупном проекте, который использует SVG в качестве собственного формата, взгляните на "Inkcape". Это очень хорошая программа для иллюстрации, написанная в GTK.

Ответ 6

Возможно, слишком поздно для ответа на этот вопрос, я бы предложил использовать Opensource Webkit,

Таким образом, следующие преимущества,

1 - получит дополнительную поддержку HTML,
2 - Совместимость со всеми платформами, Win, Mac, Linux, iOS, BB
3 - На всей платформе он будет использовать Каирскую библиотеку для рендеринга графики,
4 - Простота расширения и масштабирования для добавления дополнительной функции....

Ответ 7

Игнорировать все разговоры о Рафаэле и вместо этого работать с D3.

D3 может читать ваше дерево XML и легко создавать SVG-код на основе ваших требований. Это означает, что вы можете визуализировать любой XML-документ любым удобным вам способом. И это включает в себя все продукты Рафаэля и многое другое. Кроме того,

Я не слышал о Каире, до сегодняшнего дня. Но, с результатами, которые предлагает D3, я даже не буду исследовать его.