Annotation of researchv10dc/630/man/src/p_man/man3/btoc.3r, revision 1.1.1.1

1.1       root        1: .TH BTOC 3R
                      2: .XE "setjwin"
                      3: .XE "P->btoc"
                      4: .XE "P->ctob"
                      5: .SH NAME
                      6: btoc: setjwin, P->btoc, P->ctob \- specify rows and columns and default outline
                      7: .SH SYNOPSIS
                      8: \f3
                      9: #include <dmd.h>
                     10: .sp
                     11: void setjwin (cols, rows)
                     12: .br
                     13: int cols, rows;
                     14: .sp
                     15: Point (\(**P->btoc)(x, y, p)
                     16: .br
                     17: int x,y;
                     18: .br
                     19: struct Proc \(**p;
                     20: .sp
                     21: Point (\(**P->ctob)(x, y, p)
                     22: .br
                     23: int x,y;
                     24: .br
                     25: struct Proc \(**p;
                     26: .SH DESCRIPTION
                     27: The purpose of the \fIsetjwin\fR and \fIbtoc\fR functions is to report the
                     28: number of character rows and columns available in an application's window. 
                     29: These routines are intended to be used by terminal emulator applications
                     30: executing in the 630 MTG.
                     31: If the application is running in a \fIlayers\fR
                     32: window, the character rows and columns information is sent to the host.
                     33: This information is then made available to application programs
                     34: running on the host through an \fIioctl\fR() call to the xt device driver
                     35: with the \fIrequest\fR argument of JWINSIZE.
                     36: The windowing utilities \fIjwin\fR program is a simple host application
                     37: which uses this facility to print rows and columns on its standard
                     38: output. Other host applications, such as the \fIvi\fR editor, also use this
                     39: facility to determine available rows and columns.
                     40: .P
                     41: The \fIsetjwin\fR function is called directly from an application
                     42: program when the application begins execution, either after being
                     43: downloaded or started from the application cache.
                     44: The parameters \fIcols\fR and \fIrows\fR correspond to character
                     45: columns and character rows respectively.
                     46: .P
                     47: \fIBtoc\fR is called indirectly by the 630 MTG system control
                     48: process whenever the application's window is reshaped. 
                     49: .I P->btoc
                     50: is a pointer stored in the 
                     51: application's process table.  
                     52: The application's process table is simply a structure
                     53: of type \fIProc\fR that contains system information 
                     54: about the application program
                     55: and is maintained and used by the 630 MTG's system processes.
                     56: .I P->btoc
                     57: points to a function named, for example, \fIbits_to_char\fR(),
                     58: which returns a
                     59: .I Point
                     60: structure.
                     61: The function \fIbits_to_char\fR() must be specified in 
                     62: the application program and the
                     63: .I P->btoc 
                     64: pointer must be set
                     65: in the application's initialization routine to point to these functions.
                     66: The \fIbits_to_char\fR() function will then
                     67: be called by the 630 MTG's system control process whenever the application's
                     68: window is reshaped.  
                     69: .P
                     70: The parameters passed to the \fIbtoc\fR() function are:
                     71: .RS 3
                     72: \f3x\f1 = the width of the application's window in pixels
                     73: .br
                     74: \f3y\f1 = the height of the application's window in pixels
                     75: .br
                     76: \f3p\f1 = a pointer to the application's process table.
                     77: .RE
                     78: .PP
                     79: The two integers x and y (returned in 
                     80: the \fIPoint\fR structure) are the character rows and columns, respectively.
                     81: .P
                     82: \fISetjwin\fR and the \fIbtoc\fR() functions serve similar
                     83: purposes, but both functions are necessary for the following reasons. 
                     84: \fISetjwin\fR
                     85: is used to inform the host of character rows and columns when an application
                     86: boots. The \fIbtoc\fR() function cannot be used in this situation
                     87: because the application has not yet executed, and therefore \fIP->btoc\fR
                     88: has not been initialized.
                     89: On the other hand, the \fIbtoc\fR() function is used to
                     90: inform the host of character rows and columns when an application's window is
                     91: reshaped. 
                     92: The 630 MTG system control process needs to send a message 
                     93: specifying current window size to the 
                     94: host xt driver when a window is reshaped, and it is not possible
                     95: to wait for the application to call \fIsetjwin\fR. This makes
                     96: the \fIbtoc\fR() function necessary.
                     97: .P
                     98: If an application does not use the \fIsetjwin\fR and \fIbtoc\fR
                     99: facilities, the host will be told the character row and 
                    100: columns which would be available if Windowproc was running in
                    101: a window the size of the application's window.
                    102: .P
                    103: The purpose of a \fIctob\fR() function is to specify a default outline
                    104: for a window being reshaped based on the \fIHost\fR 
                    105: default rows and columns settings
                    106: specified during the 630 MTG \fISetup\fR procedure.  See the
                    107: \fI630 MTG Terminal User's Guide\fR
                    108: for more information about \fISetup\fR and \fIHost\fR 
                    109: default rows and columns settings.
                    110: .P
                    111: Initialization of \fIP->ctob\fR is identical to initialization of
                    112: \fIP->btoc\fR as described above. \fIP->ctob\fR is set to point
                    113: to a function named, for example, \fIchar_to_bits\fR().
                    114: The \fIchar_to_bits\fR() function is called by the 630 MTG
                    115: system control process before an application's
                    116: window is reshaped to determine the default window outline to
                    117: display for the application during the reshape procedure.
                    118: .P
                    119: The parameters passed to \fIctob\fR() are, in order, 
                    120: x and y (the \fIHost\fR default
                    121: rows and columns, respectively), specified for a window in 
                    122: \fISetup\fR; and \fIp\fR, a pointer
                    123: to the application's process table.  The two integers x and y (returned 
                    124: by \fIctob\fR() in
                    125: the \fIPoint\fR structure) are the width and height, respectively, in pixels,
                    126: of the window outline to be displayed.
                    127: .P
                    128: Note that \fIctob\fR
                    129: could disregard the parameters x and y and always return a predetermined 
                    130: outline. This is commonly done by non-terminal emulator applications
                    131: that want to display a default outline which is not necessarily based upon
                    132: \fISetup\fR options.
                    133: .P
                    134: If a \fIctob\fR function is not specified,
                    135: a sweep cursor will appear without a default outline when
                    136: the application program is reshaped.
                    137: .P
                    138: The cache(3L) function calls \fIctob\fR to determine the default outline
                    139: for applications which are invoked from the \fBMore\fR menu.
                    140: .SH EXAMPLE
                    141: A simple example of a \fIbits_to_char\fR() and a \fIchar_to_bits\fR() function 
                    142: is shown below.
                    143: .P
                    144: .RS 3
                    145: .nf
                    146: .ft CM
                    147: 
                    148: #include <dmd.h>
                    149: #include <font.h>
                    150: 
                    151: Point bits_to_char();
                    152: Point char_to_bits();
                    153: 
                    154: main()
                    155: {
                    156:      .
                    157:      .
                    158: 
                    159:    P->btoc = bits_to_char;
                    160:    P->ctob = char_to_bits;
                    161: 
                    162:      .
                    163:      .
                    164: }
                    165: 
                    166: Point
                    167: bits_to_char(x,y,p)
                    168: int x,y;
                    169: struct Proc *p;
                    170: {
                    171:    Point q;
                    172: 
                    173:    /* INSET is a constant equal to the pixel width of */
                    174:    /* the 630 window border. It is defined in dmdproc.h. */
                    175:    /* Dmdproc.h is included by dmd.h. */
                    176:    q.x = (x - 2*INSET) / FONTWIDTH(largefont);
                    177:    q.y = (y - 2*INSET) / FONTHEIGHT(largefont);
                    178:    return q;
                    179: }
                    180: 
                    181: Point
                    182: char_to_bits(x,y,p)
                    183: int x,y;
                    184: struct Proc *p;
                    185: {
                    186:    Point q;
                    187: 
                    188:    q.x = FONTWIDTH(largefont) * x + 2*INSET;
                    189:    q.y = FONTHEIGHT(largefont) * y + 2*INSET;
                    190:    return q;
                    191: }
                    192: 
                    193: .RE
                    194: .fi
                    195: .ft R
                    196: .SH SEE ALSO
                    197: cache(3L), globals (3R), structures(3R).
                    198: .br
                    199: \fI630 MTG Terminal User's Guide\fR.
                    200: .br
                    201: jwin(1), vi(1) in the \f2UNIX System V Release 3 User's Reference Manual\f1.
                    202: .br
                    203: ioctl(2) in the \f2UNIX System V Programmer Reference Manual\f1.
                    204: .br
                    205: xt(7) in the \f2UNIX System V Release 3 System Administrator's Reference Manual\f1.
                    206: .SH WARNINGS
                    207: Since \fIbtoc\fR() and \fIctob\fR() are called 
                    208: from the terminal's control process,
                    209: the variable \fIP\fR should not be referenced within these routines.
                    210: Instead, the parameter \fIp\fR should be used to reference the application's
                    211: process table.
                    212: .P
                    213: The two integers x and y returned by ctob in the point
                    214: structure must be less than or equal to XMAX and YMAX,
                    215: respectively.

unix.superglobalmegacorp.com

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