This code takes a GraphViz ready DOT file, passes it to Graphviz (either using dot (fallback to mwdot if not present) or a custom layout engine you specify.) The output is then parsed and drawn in an axes specified by you, along with returning object handles and information about the graph as an adjacency matrix.
Please see the comments at the beginning of the file for more information on usage/limitations.
It has been quite extensively tested, and should work for just about any graph you can throw at it. Furthermore, custom node shapes and arrows can be easily added.
While it can work with the built-in (and unsupported) mwdot function, it is recommended you install the full GraphViz suite, available at http://graphviz.org/ , along with extensive documentation and samples.
Credit goes to Jonas Ballani for his Bezier function which is used to draw the splines.
Also, the inspiration came from Leon Peshkin's GraphViz interface, which (unfortunately) didn't quite cut it for our needs, and required me to write my own.
If you use this in your software, I would greatly appreciate a credit in your software's about page; I've put a fair amount of time in to this project, and wish to spread the word that others may benefit from it. Questions, comments, and suggestions for improvement are welcome.
-Major speed optimizations.
-Fixed bug when using mcircle node type.