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