Fix tinycurses color output on the VGA console.

The CGA compatible 16 color VGA text mode expects Intensity RGB color
specifications, in the order IRGB from most to least significant bit.
Curses COLOR_ macros follows ANSI X3.64/ISO 6429/ECMA-48, specifying
RGB color in the order BGR from most to least significant bit.
Consequently, it is necessary to swap the red and blue bits.

Signed-off-by: Ulf Jordan <jordan@chalmers.se>
Acked-by: Jordan Crouse <jordan.crouse@amd.com>



git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3516 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Ulf Jordan 2008-08-18 19:28:42 +00:00 committed by Jordan Crouse
parent 43a800c55f
commit 364317b199
1 changed files with 4 additions and 0 deletions

View File

@ -658,6 +658,8 @@ int whline(WINDOW *win, chtype ch, int n)
return OK; return OK;
} }
#define SWAP_RED_BLUE(c) \
(((c) & 0x4400) >> 2) | ((c) & 0xAA00) | (((c) & 0x1100) << 2)
int wnoutrefresh(WINDOW *win) int wnoutrefresh(WINDOW *win)
{ {
// FIXME. // FIXME.
@ -720,6 +722,8 @@ int wnoutrefresh(WINDOW *win)
serial_putchar(ch); serial_putchar(ch);
} }
c = SWAP_RED_BLUE(c);
if (curses_flags & F_ENABLE_CONSOLE) { if (curses_flags & F_ENABLE_CONSOLE) {
ch = win->_line[y].text[x].chars[0]; ch = win->_line[y].text[x].chars[0];