Annotation of researchv8dc/cmd/pic/UNDOC, revision 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.