(Направленные) графики представляют конечные автоматы. Вплоть до сих пор моя тестовая программа выписывала точечные файлы для тестирования. Это довольно хорошо оба для регрессионного тестирования (сохраните проверенные выходные файлы в подверсии, спросите это, если было изменение), и для визуализации. Однако существуют некоторые проблемы...
В основном я хочу что-то вызываемое от C++ и который планирует расположение мои состояния и переходы, но оставляет рисунок мне - что-то, что позволит мне тянуть вещи однако, я хочу и привлекаю GUI (wxWidgets) окна.
Я также хочу лицензию, которая позволит коммерческое использование - мне не нужно это в настоящее время, и я могу выпустить как открытый исходный код, но я не хочу ограничивать свои опции ATM.
Проблемы с GraphViz (1) предупреждения о создании из источника в Windows, (2) все ненужные зависимости для рендеринга и парсинга и (3) (предполагаемое) отсутствие зарегистрированного API конкретно и просто для расположения.
В основном я хочу смочь указать свои состояния (с размерами ограничительного прямоугольника) и переходы, и считать положения для состояний и waypoints для каждого перехода, затем потянуть на основе тех координат сам. Я действительно не выяснил, как аннотации на переходы должны быть обработаны, но должно быть некоторое условие для определения размеров ограничительной рамки для тех, соединение их с переходами и положениями чтения вслух.
Кто-либо знает о библиотеке, которая может обработать те требования?
Я не обязательно против реализации чего-то для меня, но в этом случае я избежал бы его, если это возможно.
Хотя ответы до сих пор стоили положительного голоса, я не могу принять ни один из них. Хотя я все еще искал.
Я нашел AGLO .Код - GPL v1, но есть документы, в которых описываются алгоритмы, поэтому при необходимости его будет достаточно легко реализовать с нуля.
Также есть статья Ганснера, Куцофиоса, Норта и Во - «Техника рисования ориентированных графов», доступная по адресу здесь, на сайте Graphviz .
Я также внимательно изучал лицензированный BSD (но Java) JGraph .
Так или иначе, похоже, что я мог бы заново реализовать колесо, если не изобретать его заново.
Ранее в этом году я имел дело с похожей проблемой. Однако одним из важных входных параметров для принятия решения является ожидаемое количество узлов.
Я решил использовать браузер в качестве графического интерфейса и поэтому искал хорошие библиотеки Javascript, одна из которых, на мой взгляд, была wireit , она очень хорошо подходит для технических макетов (а также редактирования с помощью перетаскивания и верстка "на лету"). Вы можете легко подключить это к своему c ++, запустив небольшой веб-сервер в потоке (вам в любом случае понадобится какая-то штука с петлей событий / потоков для графического интерфейса).
Ну, только мои 2 цента.
Хм, GDToolkit (или GDT) выглядит нормально: многие изображения в учебнике выглядят довольно красиво, и не похоже, что он ужасно сложен в использовании.
Edit: But checking the license, it looks like it's commercial software :-(. Упс!
OGDF находится под GPL.
Pigale также находится под лицензией GPL.
GoVisual - коммерческое программное обеспечение, но, похоже, оно начинается с 1800 долларов на одного разработчика.