|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.