GDR (Graph DRawing) tool -- developed by Matthias Stallmann, Rance Cleaveland, and Prashant Hebbar.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program (file COPYING.txt); if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
We have the following additional requests:
matt_stallmann AT ncsu.edu).
dfs_scc(strongly-connected components) supersedes
dijkstra(does either a minimum spanning tree algorithm or a single-source shortest-paths algorithm) supersedes
bfs(breadth-first search), and
kruskal(Kruskal's minimum spanning tree algorithm). The last two were contributed by Josh Blomberg, CSC 505 student, Spring 2005.
RE-(I)NITallows user to reset the display attributes of a graph if an animation fails to clean up after itself (labels on vertices and edges are displayed only if they have non-empty content -- user needs to decide whether that content needs to be saved).
Documentation for the user interface is available here (slightly outdated -- see the notes about new features above).
Documentation for programmers (incomplete) is also available.
A "zipped" version of the new code may be downloaded at
or copied: the zip file is
Documentation for GDR developers, in the form of a doxygen web site is also available to help with code browsing.
This directory contains files for the GDR graph editing tool and various animations that have been written. The file Makefile contains instructions for compiling all the existing animations (and a list of the animations themselves). Source code is contained in files *.[ch]. The *.tex files contain documentation for users of GDR (programmer_doc.tex is not finished; it attempts to explain how a programmer can implement other animations on top of GDR).
The main GDR code is in the following files (a brief description of each is given):
-- include this file to get everything needed by any internal GDR module
-- data structures, constants, and macros internal to GDR
-- GDR functions that alter the display of a graph
-- implementations of functions required by the GDR programmer and some of their helpers.
-- the file to be included in animation programs using GDR (all other necessary includes emanate from here)
-- GDR functions that access and change geometric attributes
-- specifications for global variables used by GDR
-- GDR input and output routines
-- routines for manipulating lists of edges
-- GDR functions accessing and/or manipulating logical graph attributes.
-- macros and typedefs for GDR programmers (some of the macros are advertised as functions)
-- main GDR program and supporting functions
-- miscellaneous programmer functions in GDR
-- routines associated with the side panel (manipulation of the panel itself or functions activated by the panel)
-- prototypes of functions internal to GDR
-- compile-time constants that can be customized for GDR
-- routines for manipulating text windows
-- routines that perform low-level operations having to do with display or geometry
-- functions for manipulating edge labels of graphs representing finite automata
-- header for alphabet.c (functions for manipulating edge labels of graphs that represent finite automata)
-- breadth-first search (contributed by Josh Blomberg, CSC 505, Spring 2005)
-- biconnectivity algorithm for undirected graphs
-- a tool for creating binary trees for GDR (the animation draws them
automatically to fit into a window).
-- check a graph to see if it represents a valid dfa
-- a DFA simulator
-- depth-first search for directed graphs, using the
detailed algorithm of Cormen, Leiserson, and Rivest (Introduction to
Algorithms, first edition, p. 478). Also does strongly connected
-- Dijkstra's shortest path and minimum spanning tree algorithms (the
animation asks the user which to do).
-- header file with definitions of general interest, used by the automata
animations (most of these can be replaced by C constructs and are no
-- Kruskal's minimum spanning tree algorithm
(contributed by Josh Blomberg, CSC 505, Spring 2005)
-- DFA minimization algorithm
-- print logical representation of the graph
Animations that have been implemented so far are (each can be created
using the command
make name, where name
is listed below):
Matt underscore Stallmann at ncsu dot edu) Last modified: Thu Jun 28 16:36:54 2007