curses and color
Ronald Joe Record
rr at sco.COM
Thu Jan 31 08:25:45 AEST 1991
staceyc at sco.COM (Stacey Campbell) writes:
|In article <1991Jan17.064429.13943 at vpnet.chi.il.us> jimr at vpnet.chi.il.us (Jim Rendant) writes:
|>Are ther any tips for using curses and color windows, pads etc...
|You will also note that after running a terminfo curses color application
|on a SCO Unix console that the default screen attributes will be set
|to the terminfo "op" entry. This may not correspond to what you have
|setup with the setcolor command. Here is a little bit of code that will
|restore the setcolor fg and bg colors after a color curses application
|has been run;
| <deleted Stacey's code>
==========================================================================
Here's something similar to what staceyc posted which in addition saves
and restores the "graphics" and "inverse" mode color attributes. I usually
call save_colors() just prior to initscr() and rest_colors() after endwin()
and just prior to exiting the application. The routine has_colors() is
a curses routine so this is only meant to be linked into a curses app.
#include <curses.h>
#include <sys/console.h>
static int cur_tty[3] = { -1, -1, -1 };
save_colors() {
if (has_colors() == TRUE) {
cur_tty[0] = ioctl( 0, GIO_ATTR, 0);
printf( "\033[7m" );
fflush( stdout );
cur_tty[1] = ioctl( 0, GIO_ATTR, 0);
printf( "\033[12m" );
fflush( stdout );
cur_tty[2] = ioctl( 0, GIO_ATTR, 0);
printf( "\033[10;0m" );
}
}
rest_colors() {
if (has_colors() == TRUE) {
if (cur_tty[0] != -1)
{
printf( "\033[=%dF\033[=%dG",
(cur_tty[0])&0x0f, ((cur_tty[0])&0xf0)>>4);
}
if (cur_tty[1] != -1)
{
printf( "\033[=%dH\033[=%dI",
(cur_tty[1])&0x0f, ((cur_tty[1])&0xf0)>>4);
}
if (cur_tty[2] != -1)
{
printf( "\033[=%dJ\033[=%dK",
(cur_tty[2])&0x0f, ((cur_tty[2])&0xf0)>>4);
}
}
}
--
"A boy without mischief is like a bowling ball without a liquid center."
--Homer Simpson
More information about the Comp.unix.programmer
mailing list