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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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 */ 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