Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
9214 | turbocat | 1 | /* PDCurses */ |
2 | |||
3 | #include |
||
4 | |||
5 | /*man-start************************************************************** |
||
6 | |||
7 | attr |
||
8 | ---- |
||
9 | |||
10 | ### Synopsis |
||
11 | |||
12 | int attroff(chtype attrs); |
||
13 | int wattroff(WINDOW *win, chtype attrs); |
||
14 | int attron(chtype attrs); |
||
15 | int wattron(WINDOW *win, chtype attrs); |
||
16 | int attrset(chtype attrs); |
||
17 | int wattrset(WINDOW *win, chtype attrs); |
||
18 | int standend(void); |
||
19 | int wstandend(WINDOW *win); |
||
20 | int standout(void); |
||
21 | int wstandout(WINDOW *win); |
||
22 | |||
23 | int color_set(short color_pair, void *opts); |
||
24 | int wcolor_set(WINDOW *win, short color_pair, void *opts); |
||
25 | |||
26 | int attr_get(attr_t *attrs, short *color_pair, void *opts); |
||
27 | int attr_off(attr_t attrs, void *opts); |
||
28 | int attr_on(attr_t attrs, void *opts); |
||
29 | int attr_set(attr_t attrs, short color_pair, void *opts); |
||
30 | int wattr_get(WINDOW *win, attr_t *attrs, short *color_pair, |
||
31 | void *opts); |
||
32 | int wattr_off(WINDOW *win, attr_t attrs, void *opts); |
||
33 | int wattr_on(WINDOW *win, attr_t attrs, void *opts); |
||
34 | int wattr_set(WINDOW *win, attr_t attrs, short color_pair, |
||
35 | void *opts); |
||
36 | |||
37 | int chgat(int n, attr_t attr, short color, const void *opts); |
||
38 | int mvchgat(int y, int x, int n, attr_t attr, short color, |
||
39 | const void *opts); |
||
40 | int mvwchgat(WINDOW *win, int y, int x, int n, attr_t attr, |
||
41 | short color, const void *opts); |
||
42 | int wchgat(WINDOW *win, int n, attr_t attr, short color, |
||
43 | const void *opts); |
||
44 | |||
45 | chtype getattrs(WINDOW *win); |
||
46 | |||
47 | int underend(void); |
||
48 | int wunderend(WINDOW *win); |
||
49 | int underscore(void); |
||
50 | int wunderscore(WINDOW *win); |
||
51 | |||
52 | ### Description |
||
53 | |||
54 | These functions manipulate the current attributes and/or colors of |
||
55 | the named window. These attributes can be any combination of |
||
56 | A_STANDOUT, A_REVERSE, A_BOLD, A_DIM, A_BLINK, A_UNDERLINE. These |
||
57 | constants are defined in |
||
58 | bitwise-OR operator (|). |
||
59 | |||
60 | The current attributes of a window are applied to all chtypes that |
||
61 | are written into the window with waddch(). Attributes are a property |
||
62 | of the chtype, and move with the character through any scrolling or |
||
63 | insert/delete operations. |
||
64 | |||
65 | wattrset() sets the current attributes of the given window to attrs. |
||
66 | attrset() is the stdscr version. |
||
67 | |||
68 | wattroff() turns off the named attributes without affecting any other |
||
69 | attributes; wattron() turns them on. |
||
70 | |||
71 | wcolor_set() sets the window color to the value of color_pair. opts |
||
72 | is unused. |
||
73 | |||
74 | standout() is the same as attron(A_STANDOUT). standend() is the same |
||
75 | as attrset(A_NORMAL); that is, it turns off all attributes. |
||
76 | |||
77 | The attr_* and wattr_* functions are intended for use with the WA_* |
||
78 | attributes. In PDCurses, these are the same as A_*, and there is no |
||
79 | difference in bevahior from the chtype-based functions. In all cases, |
||
80 | opts is unused. |
||
81 | |||
82 | wattr_get() retrieves the attributes and color pair for the specified |
||
83 | window. |
||
84 | |||
85 | wchgat() sets the color pair and attributes for the next n cells on |
||
86 | the current line of a given window, without changing the existing |
||
87 | text, or alterting the window's attributes. An n of -1 extends the |
||
88 | change to the edge of the window. The changes take effect |
||
89 | immediately. opts is unused. |
||
90 | |||
91 | wunderscore() turns on the A_UNDERLINE attribute; wunderend() turns |
||
92 | it off. underscore() and underend() are the stdscr versions. |
||
93 | |||
94 | ### Return Value |
||
95 | |||
96 | All functions return OK on success and ERR on error. |
||
97 | |||
98 | ### Portability |
||
99 | X/Open ncurses NetBSD |
||
100 | attroff Y Y Y |
||
101 | wattroff Y Y Y |
||
102 | attron Y Y Y |
||
103 | wattron Y Y Y |
||
104 | attrset Y Y Y |
||
105 | wattrset Y Y Y |
||
106 | standend Y Y Y |
||
107 | wstandend Y Y Y |
||
108 | standout Y Y Y |
||
109 | wstandout Y Y Y |
||
110 | color_set Y Y Y |
||
111 | wcolor_set Y Y Y |
||
112 | attr_get Y Y Y |
||
113 | wattr_get Y Y Y |
||
114 | attr_on Y Y Y |
||
115 | wattr_on Y Y Y |
||
116 | attr_off Y Y Y |
||
117 | wattr_off Y Y Y |
||
118 | attr_set Y Y Y |
||
119 | wattr_set Y Y Y |
||
120 | chgat Y Y Y |
||
121 | wchgat Y Y Y |
||
122 | mvchgat Y Y Y |
||
123 | mvwchgat Y Y Y |
||
124 | getattrs - Y Y |
||
125 | underend - - Y |
||
126 | wunderend - - Y |
||
127 | underscore - - Y |
||
128 | wunderscore - - Y |
||
129 | |||
130 | **man-end****************************************************************/ |
||
131 | |||
132 | int wattroff(WINDOW *win, chtype attrs) |
||
133 | { |
||
134 | PDC_LOG(("wattroff() - called\n")); |
||
135 | |||
136 | if (!win) |
||
137 | return ERR; |
||
138 | |||
139 | win->_attrs &= (~attrs & A_ATTRIBUTES); |
||
140 | |||
141 | return OK; |
||
142 | } |
||
143 | |||
144 | int attroff(chtype attrs) |
||
145 | { |
||
146 | PDC_LOG(("attroff() - called\n")); |
||
147 | |||
148 | return wattroff(stdscr, attrs); |
||
149 | } |
||
150 | |||
151 | int wattron(WINDOW *win, chtype attrs) |
||
152 | { |
||
153 | chtype newcolr, oldcolr, newattr, oldattr; |
||
154 | |||
155 | PDC_LOG(("wattron() - called\n")); |
||
156 | |||
157 | if (!win) |
||
158 | return ERR; |
||
159 | |||
160 | if ((win->_attrs & A_COLOR) && (attrs & A_COLOR)) |
||
161 | { |
||
162 | oldcolr = win->_attrs & A_COLOR; |
||
163 | oldattr = win->_attrs ^ oldcolr; |
||
164 | newcolr = attrs & A_COLOR; |
||
165 | newattr = (attrs & A_ATTRIBUTES) ^ newcolr; |
||
166 | newattr |= oldattr; |
||
167 | win->_attrs = newattr | newcolr; |
||
168 | } |
||
169 | else |
||
170 | win->_attrs |= (attrs & A_ATTRIBUTES); |
||
171 | |||
172 | return OK; |
||
173 | } |
||
174 | |||
175 | int attron(chtype attrs) |
||
176 | { |
||
177 | PDC_LOG(("attron() - called\n")); |
||
178 | |||
179 | return wattron(stdscr, attrs); |
||
180 | } |
||
181 | |||
182 | int wattrset(WINDOW *win, chtype attrs) |
||
183 | { |
||
184 | PDC_LOG(("wattrset() - called\n")); |
||
185 | |||
186 | if (!win) |
||
187 | return ERR; |
||
188 | |||
189 | win->_attrs = attrs & A_ATTRIBUTES; |
||
190 | |||
191 | return OK; |
||
192 | } |
||
193 | |||
194 | int attrset(chtype attrs) |
||
195 | { |
||
196 | PDC_LOG(("attrset() - called\n")); |
||
197 | |||
198 | return wattrset(stdscr, attrs); |
||
199 | } |
||
200 | |||
201 | int standend(void) |
||
202 | { |
||
203 | PDC_LOG(("standend() - called\n")); |
||
204 | |||
205 | return wattrset(stdscr, A_NORMAL); |
||
206 | } |
||
207 | |||
208 | int standout(void) |
||
209 | { |
||
210 | PDC_LOG(("standout() - called\n")); |
||
211 | |||
212 | return wattrset(stdscr, A_STANDOUT); |
||
213 | } |
||
214 | |||
215 | int wstandend(WINDOW *win) |
||
216 | { |
||
217 | PDC_LOG(("wstandend() - called\n")); |
||
218 | |||
219 | return wattrset(win, A_NORMAL); |
||
220 | } |
||
221 | |||
222 | int wstandout(WINDOW *win) |
||
223 | { |
||
224 | PDC_LOG(("wstandout() - called\n")); |
||
225 | |||
226 | return wattrset(win, A_STANDOUT); |
||
227 | } |
||
228 | |||
229 | chtype getattrs(WINDOW *win) |
||
230 | { |
||
231 | return win ? win->_attrs : 0; |
||
232 | } |
||
233 | |||
234 | int wcolor_set(WINDOW *win, short color_pair, void *opts) |
||
235 | { |
||
236 | PDC_LOG(("wcolor_set() - called\n")); |
||
237 | |||
238 | if (!win) |
||
239 | return ERR; |
||
240 | |||
241 | win->_attrs = (win->_attrs & ~A_COLOR) | COLOR_PAIR(color_pair); |
||
242 | |||
243 | return OK; |
||
244 | } |
||
245 | |||
246 | int color_set(short color_pair, void *opts) |
||
247 | { |
||
248 | PDC_LOG(("color_set() - called\n")); |
||
249 | |||
250 | return wcolor_set(stdscr, color_pair, opts); |
||
251 | } |
||
252 | |||
253 | int wattr_get(WINDOW *win, attr_t *attrs, short *color_pair, void *opts) |
||
254 | { |
||
255 | PDC_LOG(("wattr_get() - called\n")); |
||
256 | |||
257 | if (!win) |
||
258 | return ERR; |
||
259 | |||
260 | if (attrs) |
||
261 | *attrs = win->_attrs & (A_ATTRIBUTES & ~A_COLOR); |
||
262 | |||
263 | if (color_pair) |
||
264 | *color_pair = PAIR_NUMBER(win->_attrs); |
||
265 | |||
266 | return OK; |
||
267 | } |
||
268 | |||
269 | int attr_get(attr_t *attrs, short *color_pair, void *opts) |
||
270 | { |
||
271 | PDC_LOG(("attr_get() - called\n")); |
||
272 | |||
273 | return wattr_get(stdscr, attrs, color_pair, opts); |
||
274 | } |
||
275 | |||
276 | int wattr_off(WINDOW *win, attr_t attrs, void *opts) |
||
277 | { |
||
278 | PDC_LOG(("wattr_off() - called\n")); |
||
279 | |||
280 | return wattroff(win, attrs); |
||
281 | } |
||
282 | |||
283 | int attr_off(attr_t attrs, void *opts) |
||
284 | { |
||
285 | PDC_LOG(("attr_off() - called\n")); |
||
286 | |||
287 | return wattroff(stdscr, attrs); |
||
288 | } |
||
289 | |||
290 | int wattr_on(WINDOW *win, attr_t attrs, void *opts) |
||
291 | { |
||
292 | PDC_LOG(("wattr_off() - called\n")); |
||
293 | |||
294 | return wattron(win, attrs); |
||
295 | } |
||
296 | |||
297 | int attr_on(attr_t attrs, void *opts) |
||
298 | { |
||
299 | PDC_LOG(("attr_on() - called\n")); |
||
300 | |||
301 | return wattron(stdscr, attrs); |
||
302 | } |
||
303 | |||
304 | int wattr_set(WINDOW *win, attr_t attrs, short color_pair, void *opts) |
||
305 | { |
||
306 | PDC_LOG(("wattr_set() - called\n")); |
||
307 | |||
308 | if (!win) |
||
309 | return ERR; |
||
310 | |||
311 | win->_attrs = (attrs & (A_ATTRIBUTES & ~A_COLOR)) | COLOR_PAIR(color_pair); |
||
312 | |||
313 | return OK; |
||
314 | } |
||
315 | |||
316 | int attr_set(attr_t attrs, short color_pair, void *opts) |
||
317 | { |
||
318 | PDC_LOG(("attr_get() - called\n")); |
||
319 | |||
320 | return wattr_set(stdscr, attrs, color_pair, opts); |
||
321 | } |
||
322 | |||
323 | int wchgat(WINDOW *win, int n, attr_t attr, short color, const void *opts) |
||
324 | { |
||
325 | chtype *dest, newattr; |
||
326 | int startpos, endpos; |
||
327 | |||
328 | PDC_LOG(("wchgat() - called\n")); |
||
329 | |||
330 | if (!win) |
||
331 | return ERR; |
||
332 | |||
333 | newattr = (attr & A_ATTRIBUTES) | COLOR_PAIR(color); |
||
334 | |||
335 | startpos = win->_curx; |
||
336 | endpos = ((n < 0) ? win->_maxx : min(startpos + n, win->_maxx)) - 1; |
||
337 | dest = win->_y[win->_cury]; |
||
338 | |||
339 | for (n = startpos; n <= endpos; n++) |
||
340 | dest[n] = (dest[n] & A_CHARTEXT) | newattr; |
||
341 | |||
342 | n = win->_cury; |
||
343 | |||
344 | if (startpos < win->_firstch[n] || win->_firstch[n] == _NO_CHANGE) |
||
345 | win->_firstch[n] = startpos; |
||
346 | |||
347 | if (endpos > win->_lastch[n]) |
||
348 | win->_lastch[n] = endpos; |
||
349 | |||
350 | PDC_sync(win); |
||
351 | |||
352 | return OK; |
||
353 | } |
||
354 | |||
355 | int chgat(int n, attr_t attr, short color, const void *opts) |
||
356 | { |
||
357 | PDC_LOG(("chgat() - called\n")); |
||
358 | |||
359 | return wchgat(stdscr, n, attr, color, opts); |
||
360 | } |
||
361 | |||
362 | int mvchgat(int y, int x, int n, attr_t attr, short color, const void *opts) |
||
363 | { |
||
364 | PDC_LOG(("mvchgat() - called\n")); |
||
365 | |||
366 | if (move(y, x) == ERR) |
||
367 | return ERR; |
||
368 | |||
369 | return wchgat(stdscr, n, attr, color, opts); |
||
370 | } |
||
371 | |||
372 | int mvwchgat(WINDOW *win, int y, int x, int n, attr_t attr, short color, |
||
373 | const void *opts) |
||
374 | { |
||
375 | PDC_LOG(("mvwchgat() - called\n")); |
||
376 | |||
377 | if (wmove(win, y, x) == ERR) |
||
378 | return ERR; |
||
379 | |||
380 | return wchgat(win, n, attr, color, opts); |
||
381 | } |
||
382 | |||
383 | int underend(void) |
||
384 | { |
||
385 | PDC_LOG(("underend() - called\n")); |
||
386 | |||
387 | return wattroff(stdscr, A_UNDERLINE); |
||
388 | } |
||
389 | |||
390 | int wunderend(WINDOW *win) |
||
391 | { |
||
392 | PDC_LOG(("wunderend() - called\n")); |
||
393 | |||
394 | return wattroff(win, A_UNDERLINE); |
||
395 | } |
||
396 | |||
397 | int underscore(void) |
||
398 | { |
||
399 | PDC_LOG(("underscore() - called\n")); |
||
400 | |||
401 | return wattron(stdscr, A_UNDERLINE); |
||
402 | } |
||
403 | |||
404 | int wunderscore(WINDOW *win) |
||
405 | { |
||
406 | PDC_LOG(("wunderscore() - called\n")); |
||
407 | |||
408 | return wattron(win, A_UNDERLINE); |
||
409 | }>=>> |