- A specific class for each graph type
All the graph algorithms implemented in GDT are encapsulated as methods of the simplest class on which they are safely applicable. Derived classes inherit methods from the ancestor ones optionally refining or hiding them when unsafe. Inheritance and encapsulation effectively help the application developer in dealing with the intrinsic complexity of graph algorithms and data structures.
- Getting the right drawing by using the right algorithm
Matching the aesthetic expectations of the end-user can be achieved by the developer by handling the graph with the proper GDT classes, and by properly combining their layout methods. Minimizing the overall area of a graph drawing while keeping edge-crossing to a minimum, making edges short and straight or minimizing the number of their bends, placing nodes and bends into an orthogonal grid... With GDT, years of research in graph-drawing are at the fingertips of any C++ developer.
- Additional flexibility by means of layout constraints
The possibility to individually enforce layout constraints on nodes and edges makes GDT effectively applicable for drawing graphs with a standard graphic syntax (such as Entity-Relationship, Data-Flow, State Transition and many other diagram types widely used in the industry. Forcing nodes on the border of the drawing, avoiding crosses on a given edge, requiring an edge to contain only left or right bends (just to mention a few examples) means a valuable flexibility for the application developer, and nice drawings for the end-user
- High performance by means of efficient implementation
GDT algorithms reflect the state-of-the art of the graph-drawing research area, and take advantage of sophisticated and efficient internal data-structures. Developers can tune the ratio between the performances of their applications and the quality of the generated drawings by individually choosing the available "steps" when composing their layout algorithm (for example, concerning orthogonal drawings, GDT provides three orthogonalizers, two compactors and an optional compaction-refinement heuristic, with different quality/performance ratios).
- Reliability proved on a large suite of test graphs
Although GDT is developed within a research program, it is just as reliable as many industrial products. Automatic tests are performed on each released version, by applying all the drawing algorithms on a test suite of more than 20 thousands graphs ranging in both size (from 10 to 1000 nodes) and type (simply-connected, biconnected, directed, undirected, planar, non-planar, etc.). Since drawing algorithms are heavily based on the general-purpose graph-handling methods, each release of the library is proved to be reliable enough to let developers focusing on their graph-drawing application, rather than on the library itself.
- A qualified research team for a long-term product support
GDT has been developed by the Algorithm Engineering Research Group of the Computer Science and Automation Department, at the "Roma Tre" University. The Research Group has a long tradition in graph-drawing, and inherits the experience gained by several other groups at the University of Rome "La Sapienza" since 1984. GDT is of primary importance to investigate the real potential of new graph-drawing algorithms, and is perceived by the Research Group as an essential link between the academic research and the industry. The relevant effort already spent by the Department on GDT is the first step of a long-term project with both research and application oriented goals to be achieved in the near future.
Last update : July 31, 2002
Website design by INTEGRA Sistemi, www.IntegraSistemi.it