You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PDCursesMod/os2/pdcsetsc.c

123 lines
3.0 KiB
C

/* Public Domain Curses */
#include "pdcos2.h"
/*man-start**************************************************************
pdcsetsc
--------
### Synopsis
int PDC_set_blink(bool blinkon);
int PDC_set_bold(bool boldon);
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.
PDC_set_bold() toggles whether the A_BOLD attribute selects an actual
bold font (TRUE), or sets the foreground color to high intensity
(FALSE). It returns OK if it could set the state to match the given
parameter, ERR otherwise.
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_bold - - -
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 (SP->color_started)
COLORS = statebuf[2] ? 16 : 8;
return (result == 0) ? OK : ERR;
#else
if (SP->color_started)
COLORS = 16;
return blinkon ? ERR : OK;
#endif
}
int PDC_set_bold(bool boldon)
{
return boldon ? ERR : OK;
}