Какие есть варианты написания настольного приложения на основе SVG? - PullRequest
11 голосов
/ 21 ноября 2011

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

Я бы хотел:

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

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

Ответы [ 7 ]

15 голосов
/ 23 ноября 2011

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

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

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

У него также есть несколько Привязок Инструментария. 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 голосов
/ 28 ноября 2011

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

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

2 голосов
/ 27 ноября 2011

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

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

2 голосов
/ 24 ноября 2011

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

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

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

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

0 голосов
/ 26 февраля 2013

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

При этом следующие преимущества

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

0 голосов
/ 03 ноября 2012

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

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

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

0 голосов
/ 29 ноября 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...