xref: /original-bsd/lib/libcurses/PSD.doc/doc.I (revision ca3b5b26)
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 .\"	@(#)doc.I	6.2 (Berkeley) 03/17/89
17 .\"
18 .Ds
19 .Fd addch ch \*m
20 char	ch;
21 .Fd waddch win\*,ch
22 WINDOW	*win;
23 char	ch;
24 .De
25 Add the character
26 .Vn ch
27 on the window
28 at the current \*y.
29 If the character is a newline
30 (\'\en\')
31 the line will be cleared to the end,
32 and the current \*y will be changed to the
33 beginning off the next line
34 if newline mapping is on,
35 or to the next line at the same x co-ordinate
36 if it is off.
37 A return
38 (\'\er\')
39 will move to the beginning of the line on the window.
40 Tabs
41 (\'\et\')
42 will be expanded into spaces
43 in the normal tabstop positions of
44 every eight characters.
45 \*(Es
46 .Ds
47 .Fd addstr str \*m
48 char	*str;
49 .Fd waddstr win\*,str
50 WINDOW	*win;
51 char	*str;
52 .De
53 Add the string pointed to by
54 .Vn str
55 on the window at the current \*y.
56 \*(Es
57 In this case, it will put on as much as it can.
58 .Ds
59 .Fd box win\*,vert\*,hor
60 WINDOW	*win;
61 char	vert\*,hor;
62 .De
63 .Pp
64 Draws a box around the window using
65 .Vn vert
66 as the character for drawing the vertical sides, and
67 .Vn hor
68 for drawing the horizontal lines.
69 If scrolling is not allowed,
70 and the window encompasses the lower right-hand corner of the terminal,
71 the corners are left blank to avoid a scroll.
72 .Ds
73 .Fd clear "" \*m
74 .Fd wclear win
75 WINDOW	*win;
76 .De
77 Resets the entire window to blanks.
78 If
79 .Vn win
80 is a screen,
81 this sets the clear flag,
82 which will cause a clear-screen sequence to be sent
83 on the next
84 .Fn refresh
85 call.
86 This also moves the current \*y
87 to (0\*,0).
88 .Ds
89 .Fd clearok scr\*,boolf \*m
90 WINDOW	*scr;
91 bool	boolf;
92 .De
93 Sets the clear flag for the screen
94 .Vn scr .
95 If
96 .Vn boolf
97 is TRUE,
98 this will force a clear-screen to be printed on the next
99 .Fn refresh ,
100 or stop it from doing so if
101 .Vn boolf
102 is FALSE.
103 This only works on screens,
104 and,
105 unlike
106 .Fn clear ,
107 does not alter the contents of the screen.
108 If
109 .Vn scr
110 is
111 .Vn curscr ,
112 the next
113 .Fn refresh
114 call will cause a clear-screen,
115 even if the window passed to
116 .Fn refresh
117 is not a screen.
118 .Ds
119 .Fd clrtobot "" \*m
120 .Fd wclrtobot win
121 WINDOW	*win;
122 .De
123 Wipes the window clear from the current \*y to the bottom.
124 This does not force a clear-screen sequence on the next refresh
125 under any circumstances.
126 \*(Nm
127 .Ds
128 .Fd clrtoeol "" \*m
129 .Fd wclrtoeol win
130 WINDOW	*win;
131 .De
132 Wipes the window clear from the current \*y to the end of the line.
133 \*(Nm
134 .Ds
135 .Fd delch
136 .Fd wdelch win
137 WINDOW	*win;
138 .De
139 Delete the character at the current \*y.
140 Each character after it on the line shifts to the left,
141 and the last character becomes blank.
142 .Ds
143 .Fd deleteln
144 .Fd wdeleteln win
145 WINDOW	*win;
146 .De
147 Delete the current line.
148 Every line below the current one will move up,
149 and the bottom line will become blank.
150 The current \*y will remain unchanged.
151 .Ds
152 .Fd erase "" \*m
153 .Fd werase win
154 WINDOW	*win;
155 .De
156 Erases the window to blanks without setting the clear flag.
157 This is analagous to
158 .Fn clear ,
159 except that it never causes a clear-screen sequence to be generated
160 on a
161 .Fn refresh .
162 \*(Nm
163 .Ds
164 .Fd flushok win\*,boolf \*m
165 WINDOW	*win;
166 bool	boolf;
167 .De
168 Normally,
169 .Fn refresh
170 .Fn fflush 's
171 .Vn stdout
172 when it is finished.
173 .Fn flushok
174 allows you to control this.
175 if
176 .Vn boolf
177 is TRUE
178 (\c
179 .i i.e. ,
180 non-zero)
181 it will do the
182 .Fn fflush ;
183 if it is FALSE.
184 it will not.
185 .Ds
186 .Fd idlok win\*,boolf
187 WINDOW	*win;
188 bool	boolf;
189 .De
190 Reserved for future use.
191 This will eventually signal to
192 .Fn refresh
193 that it is all right to use the insert and delete line sequences
194 when updating the window.
195 .Ds
196 .Fd insch c
197 char	c;
198 .Fd winsch win\*,c
199 WINDOW	*win;
200 char	c;
201 .De
202 Insert
203 .Vn c
204 at the current \*y
205 Each character after it shifts to the right,
206 and the last character disappears.
207 \*(Es
208 .Ds
209 .Fd insertln
210 .Fd winsertln win
211 WINDOW	*win;
212 .De
213 Insert a line above the current one.
214 Every line below the current line
215 will be shifted down,
216 and the bottom line will disappear.
217 The current line will become blank,
218 and the current \*y will remain unchanged.
219 .Ds
220 .Fd move y\*,x \*m
221 int	y\*,x;
222 .Fd wmove win\*,y\*,x
223 WINDOW	*win;
224 int	y\*,x;
225 .De
226 Change the current \*y of the window to
227 .Vn y\*,x ). (
228 \*(Es
229 .Ds
230 .Fd overlay win1\*,win2
231 WINDOW	*win1\*,*win2;
232 .De
233 Overlay
234 .Vn win1
235 on
236 .Vn win2 .
237 The contents of
238 .Vn win1 ,
239 insofar as they fit,
240 are placed on
241 .Vn win2
242 at their starting \*y.
243 This is done non-destructively,
244 i.e., blanks on
245 .Vn win1
246 leave the contents of the space on
247 .Vn win2
248 untouched.
249 .Ds
250 .Fd overwrite win1\*,win2
251 WINDOW	*win1\*,*win2;
252 .De
253 Overwrite
254 .Vn win1
255 on
256 .Vn win2 .
257 The contents of
258 .Vn win1 ,
259 insofar as they fit,
260 are placed on
261 .Vn win2
262 at their starting \*y.
263 This is done destructively,
264 .i i.e. ,
265 blanks on
266 .Vn win1
267 become blank on
268 .Vn win2 .
269 .Ds
270 .Fd printw fmt\*,arg1\*,arg2\*,...
271 char	*fmt;
272 .Fd wprintw win\*,fmt\*,arg1\*,arg2\*,...
273 WINDOW	*win;
274 char	*fmt;
275 .De
276 Performs a
277 .Fn printf
278 on the window starting at the current \*y.
279 It uses
280 .Fn addstr
281 to add the string on the window.
282 It is often advisable to use the field width options of
283 .Fn printf
284 to avoid leaving things on the window from earlier calls.
285 \*(Es
286 .Ds
287 .Fd refresh "" \*m
288 .Fd wrefresh win
289 WINDOW	*win;
290 .De
291 Synchronize the terminal screen with the desired window.
292 If the window is not a screen,
293 only that part covered by it is updated.
294 \*(Es
295 In this case, it will update whatever it can
296 without causing the scroll.
297 .sp
298 As a special case,
299 if
300 .Fn wrefresh
301 is called with the window
302 .Vn curscr
303 the screen is cleared
304 and repainted as it is currently.
305 This is very useful for allowing the redrawing of the screen
306 when the user has garbage dumped on his terminal.
307 .Ds
308 .Fd standout "" \*m
309 .Fd wstandout win
310 WINDOW	*win;
311 .Fd standend "" \*m
312 .Fd wstandend win
313 WINDOW	*win;
314 .De
315 Start and stop putting characters onto
316 .i win
317 in standout mode.
318 .Fn standout
319 causes any characters added to the window
320 to be put in standout mode on the terminal
321 (if it has that capability).
322 .Fn standend
323 stops this.
324 The sequences
325 .Vn SO
326 and
327 .Vn SE
328 (or
329 .Vn US
330 and
331 .Vn UE
332 if they are not defined)
333 are used (see Appendix A).
334