[e16e8f2] | 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 | |
---|