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.
123 lines
3.0 KiB
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;
|
|
}
|