Annotation of researchv9/jerq/src/lib/jj/jj.ms, revision 1.1

1.1     ! root        1: .hw rect\%angle
        !             2: .if n .po 5
        !             3: .de Po
        !             4: .if t \&\f(CW\\$1\f1\\$2
        !             5: .if n \&\fI\\$1\f1\\$2
        !             6: ..
        !             7: .de Ja
        !             8: .ne 6
        !             9: .sp
        !            10: .in 0
        !            11: .ft CW
        !            12: .ps 12
        !            13: .br
        !            14: .if t .BX \\$1     
        !            15: .if n \\$1     
        !            16: .ps 10
        !            17: .ft 1
        !            18: \h'4m'\\$2
        !            19: .in +3
        !            20: .sp
        !            21: .ft CW
        !            22: ..
        !            23: .de Jb
        !            24: .sp
        !            25: .ft 1
        !            26: ..
        !            27: .SH
        !            28: A Library of Goo for the 5620
        !            29: .PP
        !            30: In the following summaries,
        !            31: all coordinates are screen or bitmap coordinates.
        !            32: The library is
        !            33: .Po /usr/jerq/lib/libjj.a
        !            34: which can be accessed by including a
        !            35: .Po -ljj
        !            36: in your compilation.
        !            37: .sp
        !            38: .PP
        !            39: .in 0
        !            40: .ft 1
        !            41: .Ja 3d "3d: scaled integer three dimensional geometry
        !            42: .nf
        !            43: #define        ONE     16384
        !            44: #define        XAXIS   0
        !            45: #define        YAXIS   1
        !            46: #define        ZAXIS   2
        !            47: typedef short fract;   /* fixed point scaled by ONE */
        !            48: typedef fract matrix[4][4];
        !            49: typedef short coord[4];
        !            50: typedef struct point3
        !            51: {
        !            52:        fract x, y, z, w;
        !            53: } Hcoord;
        !            54: .fi 
        !            55: .Jb
        !            56: These are the data structures for a 3 dimensional geometry package.
        !            57: .Po Hcoord
        !            58: are homogeneous coordinates.
        !            59: Author (for all the 3d stuff): Tom Duff.
        !            60: .Ja Clip "Clip: clipped jerq primitives
        !            61: .nf
        !            62: Clip(r) Rectangle r;
        !            63: Cbitblt(sb, sr, db, dp, fc) Bitmap *sb, *db; Rectangle sr; Point dp;
        !            64: Crectf(bp, r, fc) Bitmap *bp; Rectangle r;
        !            65: Point Cstring(f, s, bp, p, fc) Font *f; char *s; Bitmap *bp; Point p;
        !            66: Ctexture(bp, r, t, fc) Bitmap *bp; Rectangle r; Texture *t;
        !            67: .fi 
        !            68: .Jb
        !            69: .Po Clip
        !            70: sets the clipping rectangle for the routines
        !            71: .Po Cbitblt ,
        !            72: .Po Crectf ,
        !            73: .Po Cstring
        !            74: and
        !            75: .Po Ctexture .
        !            76: These routines implicitly clip to the layer as well.
        !            77: .Po Cstring
        !            78: returns the same result as
        !            79: .Po string ,
        !            80: that is, the result is not clipped.
        !            81: Author: Andrew Hume.
        !            82: .Ja NMenu "NMenu: extended menu
        !            83: .nf
        !            84: typedef struct NMitem
        !            85: {
        !            86:        char    *text;          /* text in menu */
        !            87:        char    *help;          /* optional help text */
        !            88:        struct NMenu *next;     /* cascade to */
        !            89:        void    (*dfn)(), (*bfn)(), (*hfn)();
        !            90: } NMitem;
        !            91: typedef struct NMenu
        !            92: {
        !            93:        NMitem  *item;                  /* string array, ending with text=0 */
        !            94:        NMitem  *(*generator)();        /* used if item == 0 */
        !            95:        /* and some other private data */
        !            96: } NMenu;
        !            97: .fi
        !            98: .Jb
        !            99: A
        !           100: .Po NMenu
        !           101: is used by
        !           102: .Po mhit
        !           103: described below.
        !           104: Null or missing values should be zero.
        !           105: The help text should be less than 40 characters or so.
        !           106: The generator function is called with an integer argument.
        !           107: The end of the menu is indicated by a zero \f(CWtext\fP field.
        !           108: The function
        !           109: .Po dfn
        !           110: is called just before the new menu is invoked.
        !           111: The function
        !           112: .Po bfn
        !           113: is called just after this menu is finished.
        !           114: The function
        !           115: .Po hfn
        !           116: is invoked just after the selection is made and before
        !           117: .Po bfn .
        !           118: All three functions are called with one argument,
        !           119: a pointer to the
        !           120: .Po NMitem
        !           121: concerned.
        !           122: .Po Mhit
        !           123: returns a pointer to the NMitem that was selected or
        !           124: .Po (NMitem *)0 .
        !           125: The above definitions are available in
        !           126: .Po /usr/jerq/include/menu.h .
        !           127: .Ja confirm "confirm: confirm a decision
        !           128: confirm(but)
        !           129: .Jb
        !           130: .Po confirm
        !           131: waits for all buttons to be released,
        !           132: changes the cursor to an icon indicating which button to push for an affirmative
        !           133: reponse,
        !           134: waits for a button push and returns the equality between the button push
        !           135: and the argument
        !           136: .Po but .
        !           137: Author: Adrian Freed.
        !           138: .Ja icos "icos, isin, isqrt: accurate scaled functions
        !           139: .nf
        !           140: fract icos(x) angle(x);
        !           141: fract isin(x) angle x;
        !           142: long isqrt(x) long x;
        !           143: .fi
        !           144: .Jb
        !           145: .Po icos
        !           146: and
        !           147: .Po isin
        !           148: return a scaled value of their (scaled) argument.
        !           149: See
        !           150: .Po 3d
        !           151: above.
        !           152: .Ja init3 "init3: initialise the 3d geometry world
        !           153: init3(v, d, s) Bitmap *v;
        !           154: .Jb
        !           155: .Po init3
        !           156: initialises the matrix stack
        !           157: (see
        !           158: .Po push3  below).
        !           159: .Po v
        !           160: is the Bitmap for the image.
        !           161: .Po d/s
        !           162: is the distance to the screen whose half-width is 1.
        !           163: .Ja kbdstr "kbdstr: enter a string from the keyboard
        !           164: kbdstr(s) char *s;
        !           165: .Jb
        !           166: .Po kbdstr
        !           167: displays the given text in a box 300 pixels long and allows the user to
        !           168: type after the prompt.
        !           169: The erase and kill characters are
        !           170: .Po BS
        !           171: and
        !           172: .Po @
        !           173: respectively.
        !           174: Author: Andrew Hume.
        !           175: .Ja mhit "mhit: extended analog to menuhit
        !           176: NMitem *mhit(m, but, 0) NMenu *m;
        !           177: .Jb
        !           178: .Po mhit
        !           179: supports cascading menus with help.
        !           180: Menus may be a static list of
        !           181: .Po MNitem
        !           182: or a generating function.
        !           183: .Po mhit
        !           184: may be called with a button argument of 2 or 3 only.
        !           185: Button 1 causes the help message associated with the currently
        !           186: highlighted entry to be displayed.
        !           187: The menu items (and help messages) scroll.
        !           188: Author: Andrew Hume.
        !           189: .Ja polyture "polyture: texture a polygon
        !           190: .nf
        !           191: polyture(bp, pts, n, t, c) Bitmap *bp; Point *pts; Texture *t; Code c;
        !           192: .fi
        !           193: .Jb
        !           194: .Po Polyture
        !           195: textures with mode
        !           196: .Po c
        !           197: the polygon bounded by and including the
        !           198: .Po n
        !           199: vertices specified by
        !           200: .Po pts .
        !           201: The list should be closed, i.e.
        !           202: .Po pts[0]==pts[n-1] .
        !           203: Author: Andrew Hume.
        !           204: .Ja push3 "push3, pop3: manipulate the 3d matrix stack
        !           205: .nf
        !           206: push3()
        !           207: pop()
        !           208: .fi
        !           209: .Jb
        !           210: .Po push3
        !           211: pushes a copy of the top of the matrix stack onto the matrix stack.
        !           212: .Po pop3
        !           213: throws away the top of the matrix stack.
        !           214: .Ja rot3 "rot3, rosc3: rotate a matrix
        !           215: .nf
        !           216: rot3(theta, axis) angle theta;
        !           217: rotsc3(s, c, axis) short s, c;
        !           218: .fi
        !           219: .Jb
        !           220: These routines rotate the top of the matrix stack about the specified axis.
        !           221: .Po rot3(theta,\ axis)
        !           222: is identical to
        !           223: .Po rotsc3(isin(theta),\ icos(theta),\ axis) .
        !           224: .Ja todo "3d stuff to be done
        !           225: .nf
        !           226: Hcoord hcoord(x,y,z,w) fract x, y, z, w;
        !           227: scale3(p) Hcoord p;
        !           228: tran3(p) Hcoord p;
        !           229: ident(m) matrix m;
        !           230: xform3(m) matrix m;
        !           231: long dot(a, b) Hcoord a, b;
        !           232: Hcoord unitize(x) Hcoord(x);
        !           233: Hcoord cross(a, b) Hcoord a, b;
        !           234: look3(e, l, u) Hcoord e, l, u;
        !           235: move3(p) Hcoord p;
        !           236: line3(p) Hcoord p;
        !           237: .fi
        !           238: .Jb
        !           239: These have yet to be documented.

unix.superglobalmegacorp.com

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