|
|
1.1 root 1: .\" Copyright (c) 1980 The Regents of the University of California.
2: .\" All rights reserved.
3: .\"
4: .\" Redistribution and use in source and binary forms are permitted
5: .\" provided that the above copyright notice and this paragraph are
6: .\" duplicated in all such forms and that any documentation,
7: .\" advertising materials, and other materials related to such
8: .\" distribution and use acknowledge that the software was developed
9: .\" by the University of California, Berkeley. The name of the
10: .\" University may not be used to endorse or promote products derived
11: .\" from this software without specific prior written permission.
12: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
13: .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
14: .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
15: .\"
16: .\" @(#)appen.B 6.2 (Berkeley) 3/17/89
17: .\"
18: .ie t .oh '\*(Ln Appendix B''PS1:18-%'
19: .eh 'PS1:18-%''\*(Ln Appendix B'
20: .el .he ''\fIAppendix B\fR''
21: .bp
22: .(x
23: .ti 0
24: .b "Appendix B"
25: .)x
26: .nr $1 0
27: .sh 1 "The WINDOW structure"
28: .pp
29: The WINDOW structure is defined as follows:
30: .(l I
31: .so win_st.gr
32: .)l
33: .pp
34: .Vn \*_cury \\*
35: .(f
36: \**
37: All variables not normally accessed directly by the user
38: are named with an initial
39: .Bq \*_
40: to avoid conflicts with the user's variables.
41: .)f
42: and
43: .Vn \*_curx
44: are the current \*y for the window.
45: New characters added to the screen
46: are added at this point.
47: .Vn \*_maxy
48: and
49: .Vn \*_maxx
50: are the maximum values allowed for
51: .Vn \*_cury\*,\*_curx ). (
52: .Vn \*_begy
53: and
54: .Vn \*_begx
55: are the starting \*y on the terminal for the window,
56: .i i.e. ,
57: the window's home.
58: .Vn \*_cury ,
59: .Vn \*_curx ,
60: .Vn \*_maxy ,
61: and
62: .Vn \*_maxx
63: are measured relative to
64: .Vn \*_begy\*,\*_begx ), (
65: not the terminal's home.
66: .pp
67: .Vn \*_clear
68: tells if a clear-screen sequence is to be generated
69: on the next
70: .Fn refresh
71: call.
72: This is only meaningful for screens.
73: The initial clear-screen for the first
74: .Fn refresh
75: call is generated by initially setting clear to be TRUE for
76: .Vn curscr ,
77: which always generates a clear-screen if set,
78: irrelevant of the dimensions of the window involved.
79: .Vn \*_leave
80: is TRUE if the current \*y and the cursor
81: are to be left after the last character changed on the terminal,
82: or not moved if there is no change.
83: .Vn \*_scroll
84: is TRUE
85: if scrolling is allowed.
86: .pp
87: .Vn \*_y
88: is a pointer to an array of lines which describe the terminal.
89: Thus:
90: .(l
91: \*_y[i]
92: .)l
93: .lp
94: is a pointer to the
95: .Vn i th
96: line, and
97: .(l
98: \*_y[i][j]
99: .)l
100: .lp
101: is the
102: .Vn j th
103: character on the
104: .Vn i th
105: line.
106: .Vn \*_flags
107: can have one or more values
108: or'd into it.
109: .pp
110: For windows that are not subwindows,
111: .Vn \*_orig
112: is
113: NULL .
114: For subwindows,
115: it points to the main window
116: to which the window is subsidiary.
117: .Vn \*_nextp
118: is a pointer in a circularly linked list
119: of all the windows which are subwindows of the same main window,
120: plus the main window itself.
121: .pp
122: .Vn \*_firstch
123: and
124: .Vn \*_lastch
125: are
126: .Fn malloc ed
127: arrays which contain the index of the
128: first and last changed characters
129: on the line.
130: .Vn \*_ch\*_off
131: is the x offset for the window
132: in the
133: .Vn \*_firstch
134: and
135: .Vn \*_lastch
136: arrays for this window.
137: For main windows,
138: this is always 0;
139: for subwindows
140: it is the difference between the starting point of the main window
141: and that of the subindow,
142: so that change markers can be set relative to the main window.
143: This makes these markers global in scope.
144: .pp
145: All subwindows share the appropriate portions of
146: .Vn _y ,
147: .Vn _firstch ,
148: .Vn _lastch ,
149: and
150: .Vn _insdel
151: with their main window.
152: .pp
153: .b \*_ENDLINE
154: says that the end of the line for this window
155: is also the end of a screen.
156: .b \*_FULLWIN
157: says that this window is a screen.
158: .b \*_SCROLLWIN
159: indicates that the last character of this screen
160: is at the lower right-hand corner of the terminal;
161: .i i.e. ,
162: if a character was put there,
163: the terminal would scroll.
164: .b \*_FULLLINE
165: says that the width of a line is the same as the width of the terminal.
166: If
167: .b \*_FLUSH
168: is set,
169: it says that
170: .Fn fflush "" "" stdout
171: should be called at the end of each
172: .Fn refresh
173: .b \*_STANDOUT
174: says that all characters added to the screen
175: are in standout mode.
176: .b \*_INSDEL
177: is reserved for future use,
178: and is set by
179: .Fn idlok .
180: .Vn \*_firstch
181: is set to
182: .b \*_NOCHANGE
183: for lines on which there has been no change
184: since the last
185: .Fn refresh .
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.