Stefan Löwe - 2011-11-16 06:56:39 - In reply to message 1 from Ernani Joppert Pontes Martins
Hi, and thanks for your comment.
There are examples in the bin folder, just call php bin/example_DOM.php > test.svg, then open test.svg in your favourite svg viewer.
Note that some examples need to be run from the browser, as they need to know text height and width attributes, and they use the browsers rendering engine for that.
In regard to uses, here's an incomplete list:
- DOM tree visualisation (programming & debugging)
- class inheritance hierarchy visualisation (programming, program understanding, API documentation)
- file system visualisation (system administration)
- organigram/organisation chart visualisation (project management & planning)
- project hierarchy visualisation (project management & planning)
- Domain Name System visualisation (networking)
- Abstract Syntax Tree visualisation (programming & program understanding)
- Abstract Reachability Tree visualisation (huge, +100.000 nodes-per-tree trees that you encounter in e.g. program verification, like software model checking or data flow analysis)
- plants or animals order/family/genus visualisation (biology)
- basically anything that is a taxonomy, tree or tree-like structure
Stefan Löwe - 2011-11-16 20:09:51 - In reply to message 5 from Ernani Joppert Pontes Martins
Feel free to ask futher questions, esp. if you have trouble trying out the package - a lot of work went into it, decomposing the classes more and more, and making it really modular. The result is, that it is not that easy to use anymore if you want to get it customized with all the bells and whistles, but that's the price you have to pay if you want every bit customizeable.
The examples only show the basics - you can role your own TreeModel adapter, so that the core algorithm can iterate through your own data structure in a tree-iteration order.
Furthermore, you can add own factory classes for shapes, edges (i.e. use splines instead of poly lines, etc.) and texts, so this is totally configureable by passing in these dependencies from outside - no need to touch the inner core.
I can see that this would need some more documentation, but for this to happen, I need a bit of of user feedback.