

      ____                          _       _____       _
      / ___|  _ __    __ _   _ __   | |__   | ____|   __| |
     | |  _  | '__|  / _` | | '_ \  | '_ \  |  _|    / _` |
     | |_| | | |    | (_| | | |_) | | | | | | |___  | (_| |
      \____| |_|     \__,_| | .__/  |_| |_| |_____|  \__,_|
                            |_|
     
     ======================================================

Introduction
************

   GraphEd is a graph editor with support for graph grammars, graph
layout algorithms and an interface for application modules.

   GraphEd is available for non-commercial use via anonymous ftp from

     `ftp.uni-passau.de' (132.231.1.10) : `/pub/local/graphed'

   GraphEd runs on SUN workstations under X11/XView or OpenWindows.  The
lastet release is 3.5.10. This version needs PixRect, which is usually
installed. A newer release 4.* is available in alpha state.

The Directories on the ftp server
*********************************

`binaries'
     GraphEd binaries for SUN4 (SunOs 4.1.3)

`contrib'
     Contains additional packages.

`doc'
     Manuals, usually in Postscript format. Some items are also
     available in Macintosh/MS Word or TeX format.

`GraphEd-SV'
     This directory contains the statistics visualization package,
     which is used to evaluate layout algorithms.

`papers'
     Papers on GraphEd.

`sgraph-standalone'
     Standalone algorithms, mainly for use as submodules in other
     programs.

`sunview'
     Old Sunview code, binaries included. Will disappear sometime.

   The algorithms need the standalone Sgraph library. All programs read
a Graph from stdin and write to stdout. The input graph must be in
GraphEd format.

Recent updates
**************

New in Version 4.0.15
=====================

   * New module : visibility drawings (by ).

   * Minor changes in the file format.

   * Several bug fixes.

New in Version 4.0.12
=====================

   * New module : Planar ST upward drawings (Roland Stuempfl)

   * Several bug fixes.

   * The binary is cleared runs (again) under Solaris 2.*. Some of the
     neccessary patches for Solaris 2.* have been applied.

New in Version 4
================

   From version 4 on, GraphEd is completely based on X11. All
references to PixRect have been eliminated.

New in version 3.5.10
=====================

   * A new implementation of Tamassia's bends minimization algorithm is
     included ("planar / bends minization 2", Bettina Rimmel, Max
     Eidenschink).

     This one is for undirected graphs only, but it uses the HT
     planarity test and therefore it does not need a planar drawing to
     start with. It is also much faster than the previous
     implementation.  The assignment of coordinates is not as nice as
     before, but that can be solved by running both versions in
     sequence.

   * Sgraph bug fixed, destructor functions are now handled correctly

   * Another bug in the PostScript driver fixed

   * We do not raise the "Ed" in GraphEd anymore, since several people
     have problems with that, especially those who use TeX.

   * Several new documents have been put to the "paper" subdirectory.

New in version 3.5.5
====================

   * DAG Layout now top->bottom and left->right

   * Convex Layout is no longer a fixed circle with radius 400,
     shortest edge is now as long as in settings.

   * Message subwindows now automatically resets before capacity is
     full.  No more annoying XView warnings if capacity is full.

New in version 3.5.3
====================

   * PostScript driver now knows about font sizes

   * Bug fixes in the graph grammar interface

   * New module : visibility drawings (by Helmut Gruber)

   * New module : triangulations (by Christian Ramsauer)

New in version 3.5
==================

   * Graph grammars

        * Menu for productions

        * Indices (labels a/b, where b is is transparent to the
          derivation)

        * Derivation trees

        * GGDL (Graph Grammar Derivation Language) support

   * Load several graphs at startup

   * Hierarchical graph layout (experimental) All questions should go
     to Timo Hickl, `hickl@fmi.uni-passau.de'.

   * Minor changes, several bug fixes

New in version 3.3
==================

   * Graph grammar "Apply Random"

   * Slightly new menu layout

   * New menu "Goodies / Transformations" with geometric transformers

   * Bug fixes

New in version 3.2
==================

   * New PostScript driver (Marc Felsberg)

   * New fig exporter (Lars Raeder)

   * Graph Grammar Parser (Thomas Lamshoeft)

   * Algorithms to determine a maximum planar subgraph and the
     thickness of a graph (Andreas Winter)

   * Algorithms for treewidth (Nikolaus Motte)

   * Algorithms for searching on graphs, with animation (Andreas
     Schweickart)

   * Algorithms for separators (Harald Lauer)

   * Tree Layout top-down *or* left-right

   * Layout Suite and Layout Info modules to test various layouts
     quickly (Gabriele Nemeth)

   * Manuals are now available in PostScript form.

Converters
**********

*Simple* File Format
====================

   We define a *simple* file format as follows.

     <graph>       ::= <node> <coordinates> <adjacencies> end-of-line
     <node>        ::= integer
     <coordinates> ::= empty | <coord> <coord> | <coord> <coord> <coord>
     <adjacencies> ::= <edge>*
     <edge>        ::= integer

   Each line consists of a node number, coordinates (optional: 0, 2 or
3) and a list of edges. That is, the line

     1 42.0 42.0 2 3

   describes node `1', which has coordinates `42.0' and `42.0' and has
edges to nodes 2 and 3.

   *Note:* Coordinates do not need to be in flowing point format.
GraphEd will only create integer (pixel) coordinates.

   *Note:* Multiple edges and self loops are allowed. There is no
explicit distinction between undirected and directed graphs. In
undirected graphs, edges are contained in the adjacency list of both
endnodes.

`graphed2simple': Convert from GraphEd format
---------------------------------------------

   `graphed2simple' reads a graph from standard input in GraphEd format
and outputs a graph in *simple* format.

   Usage:

     cat graph.g | graphed2simple > graph.simple

   Options are

`-0'
     No coordinates.

`-2'
     2-dimensional coordinates.

`-3'
     3-dimensional coordinates.

`-zerox'
`-zeroy'
`-zeroz'
     Adjust the coordinate system : set the origins of the x,y and z
     axis.

`-unitx'
`-unity'
`-unitz'
     Adjust the coordinate system : set the unit for the x,y and z axis.

`-maxx'
`-maxy'
`-maxz'
     Set the maximum range for x,y and z coordinates. If any of these
     is set, the corresponding unit setting will be ignored.

   Here is an example how to create a graph in VEGA format:

     cat graph.g | graphed2simple -2 -maxx 1.0 -maxy 1.0 > graph.vega

`simple2graphed': Convert to GraphEd format
-------------------------------------------

   `graphed2simple' reads a graph from standard input in *simple*
format and outputs a graph in GraphEd format.

   Usage:

     cat graph.simple | simple2graphed > graph.g

   Options are

`-0'
     No coordinates.

`-2'
     2-dimensional coordinates.

`-3'
     3-dimensional coordinates.

`-u, -undirected'
     Assume the graph is undirected. It is neccessary to tell
     `simple2graphed' that the graph is directed, since the simple file
     format does not store this information, but GraphEd's format does.

`-d, -directed'
     Assume the graph is directed. This is the default.

`-zerox x'
`-zeroy y'
`-zeroz z'
     Adjust the coordinate system : set the origins of the x,y and z
     axis.

`-unitx x'
`-unity y'
`-unitz z'
     Adjust the coordinate system : set the unit for the x,y and z axis.

`-start nr'
     Start node numbering at `nr'. Default is 1.

   Here is an example how to convert a graph in (2-dimensional) VEGA
format to GraphEd format:

     cat graph.vega | simple2graphed -u -2 -maxx 1.0 -maxy 1.0 > graph.g

GraphEd - VEGA converters
=========================

   The distribution includes two converters `graphed2vega' and
`vega2graphed' from and to VEGA format. To convert a graph from VEGA
format to GraphEd format, use

     cat file.vega | vega2graphed > file.g

   or

     vega2graphed file.vega

   The second form creates a file named `file.g'.

   To convert a graph from GraphEd format to VEGA format, use

     cat file.g | graphed2vega > file.vega

Mailing List
************

   We have established two mailing lists for GraphEd :

     `graphed-discuss'
     `graphed-announce'

   graphed-announce is a subset of graphed-discuss. To subscribe the
lists, send mail to

     `graphed-discuss-request@fmi.uni-passau.de'
     `graphed-announce-request@fmi.uni-passau.de'

   with subject `subscribe my_address'. Use the subject `help' for more
information.

   The latest announcement (actually the latest README file) can be
obtained by sending a mail with subject "announcement" to

     `graphed-announce@fmi.uni-passau.de'

Installation Guide
******************

Requirements
============

   * `/usr/bin/cc' is sufficent to compile GraphEd.

   * `gcc -traditional' should work, but is not fully tested.

   * GraphEd does reportedly *NOT* compile with GNU make. No fix
     available.

   * GraphEd needs at least OpenWindows 3.0 or XView 3.0. GraphEd does
     not compile with OpenWin 2.0. The binaries might work.

Files to edit
=============

`makefile.template'
     Set `INSTALLBASE' to the base of the directory hierarchy where
     GraphEd shall be installed. Default is
     `/public/graphed/graphed-$(VERSION)', according to our local
     software installation schema. If you want to go into details, you
     may also change the following variables:
    `INSTALL_BINDIR'
          Where the binaries are installed.

    `INSTALL_LIBDIR'
          Where the archidecture dependend dependent libraries are
          installed.

    `INSTALL_COMMON_LIBDIR'
          Where the archidecture independend dependent libraries are
          installed.

    `INSTALL_ETCDIR'
          Where other files are installed

    `SGRAPH_INSTALL_LIBDIR'
          Where the Sgraph libraries are installed

    `SGRAPH_INSTALL_INCLUDEDIR'
          Where the Sgraph includes are installed

`config.h'
     Set `SUNOS41' or `SUNOS403' according to your SUN OS version This
     feature is currently unused, but might come up again one day.

Compiling
=========

  1. Use

          make all

     to compile GraphEd. The compilation may need up to 25 Mb temporary
     space, and might take more than an hour if you do not habe a sparc
     10 available.

  2. To install, do

          make install

     *IMPORTANT:* `make install' is neccessary to install the startup
     file `.graphed'.


   It is not neccessary to keep the sources after the installation.

Command Line Switches
*********************

`file'
`-f file'
`-file file'
     Loads file `file' at startup. `-f' or `-file' may be omitted if
     the `file' does not start with a dash.

     GraphEd may load several files at startup; each is placed in a
     separate window.

`-wa `x' `y''
`-working_area `x' `y''
     Set the default size of the working areas `x'x`y' pixels.

`-'
`-stdin'
     Load a graph from standard input. This feature may disappear in
     future versions.

`-h'
`-graphed_help'
     Print a summary of the command line options.

`-s `file''
`-snoop `file''
     Load `file' in snoop mode. Snoop mode provides a way to display a
     graph which is actually managed by another program.  That is, you
     have some external program that creates graph, and GraphEd can be
     used to display and edit this graph.

     Snoop mode uses 3 files:

        * The graph file (say, `x.g')

        * A file `x.g.in'. If the modification date of `x.g'.in
          changes. `x.g' is reloaded.

        * A file `x.g.out'. If the graph is saved, `x.g.out' is touched
          to indicate that the graph has changed.

     Starting GraphEd as

           graphed -snoop `file.g'

     snoops on `file.g'.

     You may try it out the following way:

          `create file.g'
          touch file.g.in
          graphed -snoop file.g &
          `modify file.g'
          touch file.g.in

`-vo'
`-view_only'
     `-view_only' prevents the user from doing changes (not fully
     implemented).

`-hide_base_frame'
     Do not show the base frame window at startup (not implemented yet).

Frequently asked questions / problems
*************************************

Requirements
============

   * SunOS 4.1.3 maybe lower ones (not tested)

   * X11 with XView 3.0 or OpenWindows 3.0. GraphEd should run on newer
     versions, but we could not test that.

   * The PixRect library. PixRect is a SUN specific library which is
     usually installed on SUN Workstations.

     *Note:* Beginning with release 4.*, the PixRect library is no
     longer needed.

   GraphEd can run on plain X11, Display PostScript is *not* needed.
The olwm window manager is not needed to run GraphEd, but it fits nicer.

Porting
=======

   * Solaris 2.*

     We do not have Solaris 2.* here in Passau, so I cannot say anything
     about porting.

Legal issues
============

   This version may not be used in commercial projects, or sold.  For
information on a commercial licence, send e-mail to

         `brandenb@fmi.uni-passau.de'

or send snail mail to

     Prof. Dr. F.J. Brandenburg
     Lehrstuhl fuer Theoretische Informatik
     Universitaet Passau
     94032 Passau
     Germany

Plans
=====

Current Plans
-------------

   * more algorithms

   * more algorithms ...

   * much more algorithms ...

   * updated manuals (printed and on-line ones)

   * more Sgraph features (esp. ability to work with more than one
     graph)

   * dynamic libraries

   * Data structures for hierarchical graphs

   * Support for VEGA

Future Plans (speculative)
--------------------------

   * Porting to Motif or Tk

   * Porting to Linux

   * Support for TCL scripts

   * Support for LEDA

   If anyone is doing extensions, plese let us know.

Known bugs and problems
=======================

   * Sometimes, the user interface hangs.

   * The GraphEd manual is out of date.

   * The planarity test(s) have a bug.

   * Some layout algorithms reqire a planar drawing to start.

   * If GraphEd cannot find the file `.graphed', you probably forgot to
     do a `make install'. This will install `.graphed' in the
     appropriate place.

