Friday, January 7, 2011

StructureGraphic is now released!

After a short betta period, in which I sent the library only to few people for testing, I'm  now releasing the first public release of StructureGraphic! Students in the computer lab at my university are actually using this to debug their assignments in the data structures course - This makes me feel some pride :D

To those who haven't read the previous post about StructureGraphic, it's a library for visualizing data structures in java. Mainly, but not only, for debugging purposes.

Visualizations of a Binomial Heap (top) and a Red Black Tree (bottom)
Click to view fullsize
Feel free to dig into the source code and use the functions which are not yet documented. I'll complete the documentation of all the core functions later. Also, I'll try to make sure that any change in the library will be backwards compatiable - at least for the functions described in the official manual.

The library is currently licensed under GPLv3. If there are any projects which wish to use it, and have problems with that license, they can contact me.


  1. I was wondering, how does it compare to Graphviz ?

  2. @Cyrille Berger: To be honest, I never used graphviz...

    The idea of StructureGraphic is to allow you to draw data structures with minimal effort - since it attaches itself directly to your data structure in such a way that you won't need to create any text markup that represents your data structure. As far as I know, Graphviz does require some conversion to text markup.

    Many of the common data structures can be adapted to StructureGraphic in exactly 3 lines of code (see the manual for an example about using annotations on a heap data structure). That's the main idea - you shouldn't be spending time when you want to do debugging, you want to have it working in less than a minute.

    Graphviz is much more advanced than my library, I have no doubt about it. Graphviz supports every possible form of graph, while my library currently only supports tree graphs (Although DAGs are on the way, and general graphs are planned for the future). My library is mainly for debugging, so it's not meant to create "good-looking" output - it's meant for simple yet effective output.