Annotation of researchv8dc/cmd/pic/UNDOC, revision 1.1.1.1

1.1       root        1: May 85:
                      2: 
                      3: "solid" is now a valid (though uninteresting) attribute.
                      4: 
                      5: Mar 85:
                      6: 
                      7: Limited amount of point arithmetic:
                      8:        point +/- point
                      9: works
                     10: 
                     11: Dec, 1984:
                     12: 
                     13: reset varlist
                     14:        resets built-in variables in list to default values.
                     15:        empty list resets everything.
                     16: 
                     17: sprintf("format", exprlist)
                     18:        returns a text string suitable for use anywhere "..."
                     19:        can be used.
                     20: 
                     21: sh X anything X
                     22:        passes "anything" to a shell for execution after
                     23:        replacing any defined terms in it.
                     24: 
                     25: Nov, 1984:
                     26: 
                     27: line expr and move expr are treated as line/move by expr
                     28: in current direction.
                     29: 
                     30: The -D option has been rendered obsolete -- all output is
                     31: produced with \D commands.  The -T option is also 
                     32: meaningless -- the output is independent of typesetter.
                     33: 
                     34: A new variable "arrowhead" controls printing of arrowheads,
                     35: by defining the number of lines printed in a little fan.
                     36: Default is 2;  values around 7 give a filled-in head;
                     37: other values are basically worthless.  Arrowheads on arcs
                     38: are now tilted somewhat in an attempt to improve their
                     39: appearance.
                     40: 
                     41: "undef foo" removes the definition of foo.
                     42: 
                     43: July 1984:
                     44: 
                     45: The functions log, exp (both base 10), sqrt, sin, cos, atan2(,),
                     46: max, min (2 arguments only), int, and rand (which returns a
                     47: float random on [0,1)) are now available,  stolen directly
                     48: from grap.
                     49: 
                     50: Added copy, for and if from grap:
                     51:        copy "file"
                     52:        copy "file" thru X macro body X
                     53:        copy thru X macro X [until "str"]
                     54:        for var = expr to expr [by expr] do X anything X
                     55:        if expr then X anything [else X anything X]
                     56: 
                     57: In a copy, any .PS or .PE is discarded [sic], so copied files
                     58: can be nested without editing.  .PS <file still works
                     59: but its use is discouraged.
                     60: 
                     61: In an if, you can also test "string1" == "string2" or
                     62: "string1" != "string2"
                     63: 
                     64: The text primitive is now more systematic:
                     65: "..." ".." "." makes an invisible object with
                     66: properties much like a box.  Height and width
                     67: are settable:  explicit ht and wid modifiers
                     68: affect a specific instance;  variables textht
                     69: and textwid affect all subsequent occurrences.
                     70: "textht" is the height of one line, so the height
                     71: of n strings is n*textht.
                     72: 
                     73: Added code from Eric Grosse to correctly compute bounding
                     74: box for arcs.  Also defined corners for arcs as same as
                     75: corresponding circle, an idea due to Tom Cargill.
                     76: 
                     77: Limits on text strings, attributes and objects grow until
                     78: memory limit reached.
                     79: 
                     80: Permits E format on input numbers.
                     81: 
                     82: Output produced in inches, not units, so somewhat more
                     83: typesetter-independent.  The environment variable TYPESETTER
                     84: is examined.
                     85: 
                     86: Saves and restores fill state around .PS/.PE.
                     87: 
                     88: .PS wid ht
                     89: can be used to set width and height separately for picture;
                     90: default ht is to scale in same proportion as width (as before).
                     91: 
                     92: 
                     93: Dec 10/81:
                     94: 
                     95: The "scale = ..." construction has been reinstated:
                     96: if
                     97:        scale = 100
                     98: or some such appears in a picture, all numbers in that
                     99: and subsequent pictures will be scaled by 1/100.
                    100: Default scale is 1.0.
                    101: 
                    102: Oct 8/81:
                    103: 
                    104: I have finally installed sensible floating-point
                    105: numbers in pic.  This means that the trailing "i",
                    106: as in 1.25i, is no longer necessary:  all numbers
                    107: are taken to be in inches.
                    108: Furthermore, expressions may now use numbers like
                    109: 1.25 instead of circumlocutions like 5/4.
                    110: It is now best to enter dimensions and positions simply
                    111: in terms of inches, as in "box at 1,2" instead of in terms
                    112: of internal units (which used to be "box at 200,400").
                    113: Internal units are no longer used.
                    114: 
                    115: I will be glad to assist with conversion if necessary;
                    116: opic will remain around for a while too.
                    117: 
                    118: New May, 1981:
                    119: 
                    120: 0.  Diagnostics:
                    121:        Error reporting is better; error location is marked
                    122:        with a ^ at the point in the input where the error was detected;
                    123:        line numbers are more accurate when define's are used.
                    124: 
                    125: 1.  Shorthand for points
                    126:        ( place1 , place2 ) now refers to the point ( place1.x, place2.y ),
                    127:        as it does in i.
                    128: 
                    129: 2. Blocks
                    130:        Any sequence of pic statements may be enclosed in [...] to form
                    131:        a block, which can be positioned rather like an ordinary box.
                    132:        Typical constructions look like
                    133:                box ...
                    134:                [ box; circle; arrow; whatever ] with .ne at last box.sw
                    135:                move to top of 2nd last []
                    136:        "last"-type constructs treat blocks as a unit and don't look
                    137:        inside for objects.  Blocks have the same compass corners as
                    138:        boxes (determined by the bounding box); in addition it is
                    139:        possible to position them by placing either an absolute 
                    140:        coordinate (like 0,0) or an internal label (like A) at some
                    141:        external point.  Thus:
                    142:                [ ...; A: ...; ... ] with .A at ...
                    143:        You can use "last []" just like "last box".
                    144:        Blocks join with other things like boxes do (i.e., at the
                    145:        center of the appropriate side).  It's not clear that this
                    146:        is the right thing to do, so it may change.
                    147: 
                    148:        Names of variables and places within a block are local
                    149:        to that block, and thus do not affect variables and places
                    150:        of the same name outside.  You can get at the internal
                    151:        place names with constructs like
                    152:                last [].A
                    153:        or
                    154:                B.A
                    155:        where B is a name attached to a block like so:
                    156:                B : [ ... ;  A: ...;  ]
                    157: 
                    158:        When combined with define statements, blocks provide
                    159:        a reasonable simulation of a procedure mechanism.
                    160: 
                    161:        Blocks nest, but the code is shaky; let me know if
                    162:        something suspicious happens.
                    163:        It is currently possible to look only one level deep
                    164:        with constructs like B.A, although A may be
                    165:        further qualified (i.e., B.A.sw or "top of B.A" are legal).
                    166: 
                    167: 3. Flyback
                    168:        If .PF is used instead of .PE, the position after printing is
                    169:        restored to where it was before the picture started.
                    170:        ("F" is for "flyback".)
                    171: 
                    172: 4. "Between" positions
                    173:        It is now possible to specify a position somewhere between two
                    174:        other positions either by the phrase 
                    175:                expr of the way between position1 and position2
                    176:        or by the notation
                    177:                expr <position1, position2>
                    178:        where expr is some number like 0.3333 and the positions are anything
                    179:        like corners, labels, etc.  The result is a new position which is
                    180:        "expr" of the way along a line from position1 to position2.  Naturally
                    181:        expr can be bigger than 1 or negative.  "of the way" is optional.
                    182: 
                    183: 
                    184: These are changes since the TM was issued in June, 1980:
                    185: 
                    186: .PS <file
                    187:        causes input to come from "file".
                    188:        the .PS evaporates, so "file" has to
                    189:        have balanced .PS/.PE pairs.
                    190: 
                    191: splines are here.  To get smooth curves,
                    192:        "spline" followed by a set of up, down, from, to, etc.
                    193:        causes a B-spline to be drawn using the specified
                    194:        points to guide it.  the word "then" can be stuck
                    195:        in to separate unrelated groups of relative motions.
                    196:        Arrows can go on either end.
                    197:        E.g., spline from 10,20 up 30 right 40 then left 50 then \
                    198:                down 20 to 100,200 to 300,350 ->
                    199: 
                    200: Lines have been generalized somewhat, so you can use the same
                    201:        construct as for splines, to specify a path rather than
                    202:        just a single segment.
                    203: 
                    204: 

unix.superglobalmegacorp.com

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