Annotation of researchv10no/cmd/dag/README, revision 1.1.1.1

1.1       root        1: DAG is written in C++.  You need a C++ compiler, Version 1.2 or newer.
                      2: You can get C++ from Valerie Monroe (ulysses!kaiser!vjm, 8-243-4406,
                      3: LC 4N-E13).  Send her your name, address to send paper documentation,
                      4: department number, name or short description of project, unix mail
                      5: address, machine type, and version of C++ you are requesting (generally
                      6: you want the most recent).
                      7: 
                      8: 1.  Decide where you are going to put the DAG shape libraries,
                      9:        and edit the first line of paths.h accordingly.
                     10:        Change DAG_LIB_SUBDIR only if you are installing under EXPTOOLS.
                     11: 
                     12: 2.  'makefile' is for old make ("make").
                     13:        'Makefile' is for new make ("nmake").
                     14:        Decide which you are using, and remove the unneeded file.
                     15: 
                     16: 3.  Edit C flags in the makefile.
                     17:        If you have System V, add "-DSYSV".
                     18:        If you have Ninth Edition Unix, add "-DV9".
                     19:        If you are installing DAG under EXPTOOLS, add "-DEXPTOOLS".
                     20:        If you are using C++ 2.0 or later, add -DMICC.
                     21:        If qsort() is declared in the local C++ header file "libc.h"
                     22:        add "-DQSORTDCL".  No known release of C++ up to C++ 2.0 beta 5
                     23:        declares qsort() but eventually it will.
                     24: 
                     25:        DAG makes heavy use of floating point arithmetic.  The Sun C compiler 
                     26:        and others have command line flags that generate object code for
                     27:        optional floating point hardware.  Find out which options are appropriate
                     28:        for your computer, and add them to C flags in the makefile.
                     29: 
                     30: 4.  Run make or nmake.
                     31: 
                     32: 5.  Since C++ does not have a standard compilation environment,
                     33:        problems with header files are common.  Please contact us or
                     34:        Liberty Corner for help.
                     35: 
                     36: 6.  Install the executable "dag" and the libraries "daglib.*" where
                     37:        they belong, and try some of the files in the directory "examples".
                     38: 
                     39: 7.  If dag dumps core (usually with the message "Bad level assignment")
                     40:        check that static constructors in C++ are not working.  We can give
                     41:        you a trivial program that checks this if you need it.
                     42: 
                     43:                Stephen C North
                     44:                201 582 7392
                     45:                ulysses!north
                     46: 
                     47: 
                     48: 2/3/88:
                     49:        We changed the default node shape to Ellipse.  Edge statements may
                     50: now be "ordered": this means that the head nodes are placed on the same
                     51: rank and are ordered left to right (by automatic creation of invisible
                     52: flat edges).  For instance:
                     53: 
                     54:        ordered edge from root to c1, c2, c3;
                     55: 
                     56: Nodes have a "label" attribute to make it convenient to create many nodes
                     57: sharing a common label.  For example you might specify part of the drawing
                     58: of a directory hierarchy this way:
                     59: 
                     60:        draw "/usr/include/sys/h" label "h";
                     61:        draw "/usr/local/include/sys/h" label "h";
                     62: 
                     63: The interface to "<shape>_clip" functions in PostScript has been changed.
                     64: The clip function now takes two points off the stack and returns an
                     65: optional point and a boolean.  The two points define a ray.  If the ray
                     66: intersects the shape (placed at the origin) then the clip function pushes
                     67: the point and the boolean value true; otherwise it pushes the boolean
                     68: value false.  We made this change because we don't always aim edges at
                     69: the centers of nodes.  We do ensure that the ray will intersect the
                     70: bounding box of the shape in the same quadrant (w.r.t. the node center)
                     71: as the ray's origin.
                     72: 
                     73: 3/8/88:
                     74: The front end was rewritten.  We added a color attribute for nodes and edges,
                     75: and generalized the notion labels for nodes and edges.  Any label may be
                     76: either a string, or drawing code in curly braces.  The PostScript code
                     77: generator knows about colors; see the user guide for details or else
                     78: as usual READ THE CODE.
                     79: 
                     80: We added an option to "fill" the bounding box of the drawing.  For instance:
                     81: 
                     82:        .GS 6 8 fill
                     83: 
                     84: will make a drawing that exactly fills a 6X8 box. 
                     85: 
                     86: To get node labels to work correctly in Pic, label parameters to shape macros
                     87: are now quoted.  Thus the shape macro body should NOT say "$1".  This change
                     88: is NOT backward compatible.
                     89: 
                     90: The back end has been improved considerably, especially the heuristics
                     91: for X coordinate assignment.  Because of the quadratic complexity,
                     92: the time it takes to run the -O option is tolerable only on small graphs,
                     93: and since the heuristic does nearly as well, we may eventually remove
                     94: this command line option altogether.  The back end does a better job of
                     95: centering nodes over their descendants (yields better drawings of trees)
                     96: and also takes less time on graphs with many hundreds of nodes.
                     97: 
                     98: You can make the documentation by saying:
                     99: 
                    100:        pic dag.doc | tbl | eqn | troff -mm
                    101: 
                    102: Because of subtleties in the figures of this document, you need a Kernighan
                    103: pic to print it.  If you have trouble, ask us for a paper copy.
                    104: 
                    105: 4/18/88:
                    106: The "-Tcip" option is back.  Run "dag -Tcip" to generate pic code that
                    107: can be edited with cip.  The issue is that cip does not allow macro
                    108: definitions, so you can't use it with custom shape macros.
                    109: 
                    110: 4/21/88:
                    111: Fixed some little bugs including: pic syntax error in nodes defined
                    112: with graphics code between curly braces introduced by -Tcip option;
                    113: coding error in a call to realloc(), failure to find DAG libraries
                    114: when $TOOLS is set.  
                    115: 
                    116: 5/17/88:
                    117: The node positioning heuristics try to create "local symmetry."
                    118: This makes subtrees, chains, and similar structures look more like
                    119: drawings made by hand.  Zero weight edges are now ignored when
                    120: finding node placement.  The -Tsimple driver was modified to use
                    121: tabs as delimiters between fields, and to not use tabs within node
                    122: labels, for ease of writing filters using old awk which is not
                    123: able to do a good job with quoted strings.
                    124: 
                    125: 6/3/88:
                    126: Fixed PS line style for dotted edges (had args reversed).
                    127: Fixed stupidity in .GR x y fill that caused wrong size layout.
                    128: 
                    129: 6/20/88:
                    130: In daglib.ps, corrected Diamond_clip and Square procedures.
                    131: Crude benchmarks show that 50% of the Laserwriter time
                    132: goes to drawing ellipses, 25% to drawing splines, and 25% to
                    133: drawing node labels. 
                    134: 
                    135: 11/17/88:
                    136: Fixed qsort declaration for use with so-called "Fifth Beta Release of C++ 2.0".
                    137: Some other bug fixes were merged into this version.
                    138: 
                    139: 12/05/88:
                    140: Try another qsort declaration and take triegen out of makefiles.
                    141: 
                    142: 12/28/88:
                    143: Fix bug involving wrong height and width with .GR and nodes labeled
                    144: with graphics code.  Exchange makefile,Makefile to agree with what
                    145: old,new-make already expect.
                    146: 
                    147: 3/28/89:
                    148: Improved man page, responding to chronic complaints.
                    149: PostScript pagination now built into dag, bypassing the inefficient
                    150: Poster program (from CIA).  To paginate into 8-1/2 x 11 pages, say:
                    151: 
                    152:        dag -Tps -p8.5x11
                    153: 
                    154: Margins are half an inch but can be reset in the -p option.
                    155: To set 1 inch margins:
                    156: 
                    157:        dag -Tps -p8.5x11,1x1
                    158: 
                    159: Laserwriters have a hard margin so there's no way to make a
                    160: seamless mosaic, unfortunately.
                    161: 
                    162: The script dagpsjobs (for new awk) breaks a dag PostScript output
                    163: file into multiple print jobs.  (Read the script to see how the
                    164: options work-- it's a trivial program.)  The awk script gprof2dag.awk
                    165: converts gprof output to dag input that draws colored Ellipses and edges
                    166: in PostScript.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.