1 #include <curses.h>
2
3 /** @file
4 *
5 * MuCurses window attribute functions
6 *
7 */
8
9 FILE_LICENCE ( GPL2_OR_LATER );
10
11 /**
12 * Get the background rendition attributes for a window
13 *
14 * @v *win subject window
15 * @ret ch chtype rendition representation
16 */
getbkgd(WINDOW * win)17 inline chtype getbkgd ( WINDOW *win ) {
18 return win->attrs;
19 }
20
21 /**
22 * Turn off attributes in a window
23 *
24 * @v win subject window
25 * @v attrs attributes to enable
26 * @ret rc return status code
27 */
wattroff(WINDOW * win,int attrs)28 int wattroff ( WINDOW *win, int attrs ) {
29 win->attrs &= ~attrs;
30 return OK;
31 }
32
33 /**
34 * Turn on attributes in a window
35 *
36 * @v win subject window
37 * @v attrs attributes to enable
38 * @ret rc return status code
39 */
wattron(WINDOW * win,int attrs)40 int wattron ( WINDOW *win, int attrs ) {
41 win->attrs |= attrs;
42 return OK;
43 }
44
45 /**
46 * Set attributes in a window
47 *
48 * @v win subject window
49 * @v attrs attributes to enable
50 * @ret rc return status code
51 */
wattrset(WINDOW * win,int attrs)52 int wattrset ( WINDOW *win, int attrs ) {
53 win->attrs = ( attrs | ( win->attrs & A_COLOR ) );
54 return OK;
55 }
56
57 /**
58 * Get attributes and colour pair information
59 *
60 * @v *win window to obtain information from
61 * @v *attrs address in which to store attributes
62 * @v *pair address in which to store colour pair
63 * @v *opts undefined (for future implementation)
64 * @ret rc return status cude
65 */
wattr_get(WINDOW * win,attr_t * attrs,short * pair,void * opts __unused)66 int wattr_get ( WINDOW *win, attr_t *attrs, short *pair,
67 void *opts __unused ) {
68 *attrs = win->attrs & A_ATTRIBUTES;
69 *pair = PAIR_NUMBER ( win->attrs );
70 return OK;
71 }
72
73 /**
74 * Turn off attributes in a window
75 *
76 * @v *win subject window
77 * @v attrs attributes to toggle
78 * @v *opts undefined (for future implementation)
79 * @ret rc return status code
80 */
wattr_off(WINDOW * win,attr_t attrs,void * opts __unused)81 int wattr_off ( WINDOW *win, attr_t attrs,
82 void *opts __unused ) {
83 wattroff( win, attrs );
84 return OK;
85 }
86
87 /**
88 * Turn on attributes in a window
89 *
90 * @v *win subject window
91 * @v attrs attributes to toggle
92 * @v *opts undefined (for future implementation)
93 * @ret rc return status code
94 */
wattr_on(WINDOW * win,attr_t attrs,void * opts __unused)95 int wattr_on ( WINDOW *win, attr_t attrs,
96 void *opts __unused ) {
97 wattron( win, attrs );
98 return OK;
99 }
100
101 /**
102 * Set attributes and colour pair information in a window
103 *
104 * @v *win subject window
105 * @v attrs attributes to set
106 * @v cpair colour pair to set
107 * @v *opts undefined (for future implementation)
108 * @ret rc return status code
109 */
wattr_set(WINDOW * win,attr_t attrs,short cpair,void * opts __unused)110 int wattr_set ( WINDOW *win, attr_t attrs, short cpair,
111 void *opts __unused ) {
112 wattrset( win, attrs | COLOUR_PAIR ( cpair ) );
113 return OK;
114 }
115
116 /**
117 * Set colour pair for a window
118 *
119 * @v *win subject window
120 * @v colour_pair_number colour pair integer
121 * @v *opts undefined (for future implementation)
122 * @ret rc return status code
123 */
wcolour_set(WINDOW * win,short colour_pair_number,void * opts __unused)124 int wcolour_set ( WINDOW *win, short colour_pair_number,
125 void *opts __unused ) {
126 if ( ( unsigned short )colour_pair_number > COLOUR_PAIRS )
127 return ERR;
128
129 win->attrs = ( ( win->attrs & A_ATTRIBUTES ) |
130 COLOUR_PAIR ( colour_pair_number ) );
131 return OK;
132 }
133
134