Есть ли хорошая библиотека разметки графов, вызываемая из C ++? - PullRequest
15 голосов
/ 29 марта 2010

(Направленные) графы представляют собой конечные автоматы. До сих пор моя тестовая программа выписывала точечные файлы для тестирования. Это очень хорошо как для регрессионного тестирования (сохраните проверенные выходные файлы в Subversion, спросите его, были ли изменения), так и для визуализации. Однако есть некоторые проблемы ...

По сути, я хочу что-то вызываемое из C ++ и которое планирует макет для моих состояний и переходов, но оставляет рисование для меня - то, что позволит мне рисовать вещи так, как я хочу, и рисовать в окнах GUI (wxWidgets). *

Мне также нужна лицензия, которая позволит коммерческое использование - в настоящее время она мне не нужна, и я вполне могу выпустить ее как открытый исходный код, но я не хочу ограничивать свои параметры банкоматом.

Проблемы с GraphViz заключаются в (1) предупреждениях о сборке из исходного кода в Windows, (2) всех ненужных зависимостях для рендеринга и анализа и (3) (предполагаемом) отсутствии документированного API специально и исключительно для макета .

По сути, я хочу иметь возможность указывать свои состояния (с ограничивающими размерами прямоугольника) и переходы, и считывать позиции для состояний и путевых точек для каждого перехода, а затем рисовать на основе этих координат самостоятельно. Я не совсем понял, как следует обрабатывать аннотации к переходам, но должно быть какое-то условие для определения размеров ограничивающих прямоугольников, связывания их с переходами и считывания позиций.

Кто-нибудь знает библиотеку, которая может удовлетворить эти требования?

Я не обязательно против реализации чего-либо для себя, но в этом случае я бы предпочел избежать этого, если это возможно.

Ответы [ 5 ]

2 голосов
/ 29 марта 2010

OGDF находится под лицензией GPL.

Pigale также подпадает под действие GPL.

GoVisual является коммерческим программным обеспечением, но, похоже, он стоит 1800 долларов за одного разработчика.

2 голосов
/ 29 марта 2010

Хм, GDToolkit (или GDT) выглядит хорошо: многие изображения в учебнике выглядят довольно красиво, и это не выглядит ужасно сложно в использовании.

Редактировать: Но, проверяя лицензию, похоже, это коммерческое программное обеспечение :-(. Ой!

1 голос
/ 29 марта 2010

Я имел дело с подобной проблемой ранее в этом году. Однако одним из важных входных параметров для принятия решения является ожидаемое количество узлов.

Я решил использовать браузер в качестве графического интерфейса и поэтому искал хорошие библиотеки Javascript, одна из которых мне встретилась: wireit , она очень хорошо подходит для технических макетов (а также редактирования с помощью перетаскивания макет "на лету"). Вы можете легко подключить это к вашему c ++, запустив небольшой веб-сервер в потоке (в любом случае вам понадобится что-то вроде Eventloop / Threadie для GUI).

Ну, только мои 2 цента.

0 голосов
/ 09 мая 2012

Вот хорошая коллекция Graph Libs с функциями сравнения и поиска:
http://gvsr.polytech.univ -nantes.fr / GVSR / задачи? Действие = пролистать #

Может быть, вы найдете библиотеку, которая подходит вам.

0 голосов
/ 01 апреля 2010

Хотя ответы до сих пор стоили откровения, я не могу принять ни одного из них. Хотя я все еще искал.

Одна вещь, которую я нашел, это AGLO . Код GPL v1, но есть документы, описывающие алгоритмы, поэтому при необходимости его должно быть достаточно просто заново реализовать.

Есть также статья Ганснера, Кутсофиоса, Севера и Во - «Техника рисования ориентированных графиков» - доступна по адресу здесь на сайте Graphviz .

Я также присматривался к BSD-лицензии (но Java) JGraph .

Так или иначе, похоже, я мог бы заново внедрить колесо, если бы не заново изобретать его.

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