Annotation of researchv10dc/630/man/src/p_man/man3/btoc.3r, revision 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.