diff options
Diffstat (limited to 'payloads/libpayload/curses/PDCurses-3.4/os2/pdcsetsc.c')
-rw-r--r-- | payloads/libpayload/curses/PDCurses-3.4/os2/pdcsetsc.c | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/payloads/libpayload/curses/PDCurses-3.4/os2/pdcsetsc.c b/payloads/libpayload/curses/PDCurses-3.4/os2/pdcsetsc.c new file mode 100644 index 0000000000..2a770bd237 --- /dev/null +++ b/payloads/libpayload/curses/PDCurses-3.4/os2/pdcsetsc.c @@ -0,0 +1,110 @@ +/* Public Domain Curses */ + +#include "pdcos2.h" + +RCSID("$Id: pdcsetsc.c,v 1.44 2008/07/14 04:24:51 wmcbrine Exp $") + +/*man-start************************************************************** + + Name: pdcsetsc + + Synopsis: + int PDC_set_blink(bool blinkon); + void PDC_set_title(const char *title); + + Description: + PDC_set_blink() toggles whether the A_BLINK attribute sets an + actual blink mode (TRUE), or sets the background color to high + intensity (FALSE). The default is platform-dependent (FALSE in + most cases). It returns OK if it could set the state to match + the given parameter, ERR otherwise. Current platforms also + adjust the value of COLORS according to this function -- 16 for + FALSE, and 8 for TRUE. + + PDC_set_title() sets the title of the window in which the curses + program is running. This function may not do anything on some + platforms. (Currently it only works in Win32 and X11.) + + Portability X/Open BSD SYS V + PDC_set_blink - - - + PDC_set_title - - - + +**man-end****************************************************************/ + +int PDC_curs_set(int visibility) +{ +#ifndef EMXVIDEO + VIOCURSORINFO pvioCursorInfo; +#endif + int ret_vis, hidden = 0, start = 0, end = 0; + + PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility)); + + ret_vis = SP->visibility; + SP->visibility = visibility; + + switch(visibility) + { + case 0: /* invisible */ +#ifdef EMXVIDEO + start = end = 0; +#else + start = pdc_font / 4; + end = pdc_font; + hidden = -1; +#endif + break; + + case 2: /* highly visible */ + start = 2; /* almost full-height block */ + end = pdc_font - 1; + break; + + default: /* normal visibility */ + start = (SP->orig_cursor >> 8) & 0xff; + end = SP->orig_cursor & 0xff; + } + +#ifdef EMXVIDEO + if (!visibility) + v_hidecursor(); + else + v_ctype(start, end); +#else + pvioCursorInfo.yStart = (USHORT)start; + pvioCursorInfo.cEnd = (USHORT)end; + pvioCursorInfo.cx = (USHORT)1; + pvioCursorInfo.attr = hidden; + VioSetCurType((PVIOCURSORINFO)&pvioCursorInfo, 0); +#endif + return ret_vis; +} + +void PDC_set_title(const char *title) +{ + PDC_LOG(("PDC_set_title() - called:<%s>\n", title)); +} + +int PDC_set_blink(bool blinkon) +{ +#ifndef EMXVIDEO + USHORT statebuf[3], result; + + statebuf[0] = 6; /* length */ + statebuf[1] = 2; /* blink/intensity */ + statebuf[2] = !blinkon; + + result = VioSetState(&statebuf, 0); + VioGetState(&statebuf, 0); /* needed? */ + + if (pdc_color_started) + COLORS = statebuf[2] ? 16 : 8; + + return (result == 0) ? OK : ERR; +#else + if (pdc_color_started) + COLORS = 16; + + return blinkon ? ERR : OK; +#endif +} |