Die (gerichteten) Graphen repräsentieren endliche Automaten. Bis jetzt hat mein Testprogramm Punktdateien zum Testen geschrieben. Das ist ziemlich gut sowohl für Regressionstests (die verifizierten Ausgabedateien in Subversion behalten, fragen, ob es eine Änderung gegeben hat) als auch für die Visualisierung. Allerdings gibt es einige Probleme ...Gibt es eine gute Graph-Layout-Bibliothek, die von C++ aufgerufen werden kann?
Grundsätzlich möchte ich etwas von C++ abrufbar und das ein Layout für meine Zustände und Übergänge plant, aber die Zeichnung zu mir lässt - etwas, das mir erlauben wird, Dinge zu zeichnen, wie ich will und Zeichnen Sie auf GUI (WxWidgets) Windows.
Ich möchte auch eine Lizenz, die kommerzielle Nutzung erlauben wird - ich brauche das zur Zeit nicht, und ich kann sehr gut als Open Source veröffentlichen, aber ich möchte nicht meine Möglichkeiten ATM begrenzen.
Die Probleme mit GraphViz sind (1) die Warnungen über das Erstellen von Quellcode unter Windows, (2) alle unnötigen Abhängigkeiten für Rendering und Parsing und (3) das (vermutete) Fehlen einer dokumentierten API spezifisch und rein für Layout.
Grundsätzlich möchte ich in der Lage sein, meine Zustände (mit Begrenzungsrechteckgrößen) und Übergängen zu spezifizieren und Positionen für die Zustände und Wegpunkte für jeden Übergang auszulesen, dann zeichne ich basierend auf diesen Koordinaten. Ich habe nicht wirklich herausgefunden, wie Annotationen bei Übergängen gehandhabt werden sollten, aber es sollte eine Art von Vorkehrung für die Festlegung von Begrenzungsrahmengrößen für diese geben, sie mit Übergängen assoziieren und Positionen auslesen.
Kennt jemand eine Bibliothek, die mit diesen Anforderungen umgehen kann?
Ich bin nicht unbedingt dagegen, etwas für mich selbst zu implementieren, aber in diesem Fall würde ich es lieber vermeiden, wenn es möglich ist.
+1 für eine ausgezeichnete, gut gestellte Frage. Leider habe ich keine Antwort. – aib
Boost hat Grafik-Algorithmen: http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/index.html Ich denke, Visualisierung ist jedoch nicht in ihrem Umfang. –
Es gibt Layout-Algorithmen innerhalb des Boost-Graph-Moduls, die aber leider nicht für gerichtete Graphen geeignet sind. Siehe Abschnitt 22.12 hier: http://www.boost.org/doc/libs/1_42_0/libs/graph/doc/table_of_contents.html – Kim