| TIP: Click on subject to list as thread! | ANSI |
| echo: | |
|---|---|
| to: | |
| from: | |
| date: | |
| subject: | VidMgr 3 of 4 |
* Crossposted in area ED_CODE, AUST_C_HERE, C_ECHO, PUBLIC_DOMAIN
>>>>>>>>>> CSplit: Version 2.1
>>>>>>>>>>
>>>>>>>>>> CSplit: Begin part 3/4
>>>>>>>>>>
register char FAR *p;
p = vm_screenptr((char) (x - 1), (char) (y - 1));
*p = ch;
}
void vm_puts(char x, char y, char *str)
{
register char FAR *p;
p = vm_screenptr((char) (x - 1), (char) (y - 1));
while (*str) {
*p++ = *str++;
p++;
}
}
void vm_xputch(char x, char y, char attr, char ch)
{
register char FAR *p;
p = vm_screenptr((char) (x - 1), (char) (y - 1));
*p = ch;
*(p + 1) = attr;
}
void vm_xputs(char x, char y, char attr, char *str)
{
register char FAR *p;
p = vm_screenptr((char) (x - 1), (char) (y - 1));
while (*str) {
*p++ = *str++;
*p++ = attr;
}
}
void vm_putattr(char x, char y, char attr)
{
register char FAR *p;
p = vm_screenptr((char) (x - 1), (char) (y - 1));
*(p + 1) = attr;
}
void vm_paintclearbox(char x1, char y1, char x2, char y2, char attr)
{
char x, y;
for (y = y1; y <= y2; y++)
for (x = x1; x <= x2; x++)
vm_xputch(x, y, attr, ' ');
}
void vm_paintbox(char x1, char y1, char x2, char y2, char attr)
{
char x, y;
for (y = y1; y <= y2; y++)
for (x = x1; x <= x2; x++)
vm_putattr(x, y, attr);
}
void vm_clearbox(char x1, char y1, char x2, char y2)
{
char x, y;
for (y = y1; y <= y2; y++)
for (x = x1; x <= x2; x++)
vm_putch(x, y, ' ');
}
void vm_gettext(char x1, char y1, char x2, char y2, char *dest)
{
char x, y;
for (y = y1; y <= y2; y++)
for (x = x1; x <= x2; x++) {
vm_xgetchxy(x, y, dest + 1, dest);
dest += 2;
}
}
void vm_puttext(char x1, char y1, char x2, char y2, char *srce)
{
char x, y;
for (y = y1; y <= y2; y++)
for (x = x1; x <= x2; x++) {
vm_xputch(x, y, *(srce + 1), *srce);
srce += 2;
}
}
void vm_horizline(char x1, char x2, char row, char attr, char ch)
{
char x;
for (x = x1; x <= x2; x++)
vm_xputch(x, row, attr, ch);
}
#elif defined(__OS2__)
#define INCL_KBD
#define INCL_VIO
#define INCL_DOSPROCESS
#include
char vm_getscreenwidth(void)
{
VIOMODEINFO vi;
vi.cb = sizeof(VIOMODEINFO);
VioGetMode(&vi, 0);
return vi.col;
}
char vm_getscreenheight(void)
{
VIOMODEINFO vi;
vi.cb = sizeof(VIOMODEINFO);
VioGetMode(&vi, 0);
return vi.row;
}
short vm_getscreensize(void)
{
return (short) (vm_getscreenwidth() * vm_getscreenheight() * 2);
}
char vm_wherex(void)
{
USHORT row, col;
VioGetCurPos(&row, &col, 0);
return (char) (col + 1);
}
char vm_wherey(void)
{
USHORT row, col;
VioGetCurPos(&row, &col, 0);
return (char) (row + 1);
}
void vm_gotoxy(char x, char y)
{
VioSetCurPos((USHORT) (y - 1), (USHORT) (x - 1), 0);
}
void vm_setcursorsize(char start, char end)
{
VIOCURSORINFO vi;
vi.yStart = start;
vi.cEnd = end;
vi.cx = 0;
vi.attr = 0;
VioSetCurType(&vi, 0);
}
void vm_getcursorsize(char *start, char *end)
{
VIOCURSORINFO vi;
VioGetCurType(&vi, 0);
*start = vi.yStart;
*end = vi.cEnd;
}
int vm_kbhit(void)
{
KBDKEYINFO ki;
ki.fbStatus = 0;
KbdPeek(&ki, 0);
return ki.fbStatus & KBDTRF_FINAL_CHAR_IN;
}
int vm_getch(void)
{
KBDKEYINFO ki;
ki.chChar = ki.chScan = 0;
KbdCharIn(&ki, IO_WAIT, 0);
if (ki.chChar == 0xe0) {
if (ki.chScan) {
ki.chChar = 0; /* force scan return */
} else { /* get next block */
ki.chChar = 0;
KbdCharIn(&ki, IO_WAIT, 0);
if (!ki.chScan) { /* still no scan? */
ki.chScan = ki.chChar; /* move new char over */
ki.chChar = 0; /* force its return */
} else {
ki.chChar = 0; /* force new scan */
}
}
}
if (ki.chScan == 0xe0) {
if (!ki.chChar) {
ki.chScan = 0;
KbdCharIn(&ki, IO_WAIT, 0);
if (!ki.chScan) { /* still no scan? */
ki.chScan = ki.chChar; /* move new char over */
ki.chChar = 0; /* force its return */
} else {
ki.chChar = 0; /* force new scan */
}
} else {
ki.chScan = 0; /* handle 0xe00d case */
}
}
if (ki.chChar)
ki.chScan = 0;
return (int) ((ki.chScan << 8) + (ki.chChar));
}
char vm_getchxy(char x, char y)
{
char ch;
USHORT len = 1;
VioReadCharStr(&ch, &len, (USHORT) (y - 1), (USHORT) (x - 1), 0);
return ch;
}
char vm_getattrxy(char x, char y)
{
char cell[4];
USHORT len = 4;
VioReadCellStr(cell, &len, (USHORT) (y - 1), (USHORT) (x - 1), 0);
return *(cell + 1);
}
void vm_xgetchxy(char x, char y, char *attr, char *ch)
{
char cell[4];
USHORT len = 4;
VioReadCellStr(cell, &len, (USHORT) (y - 1), (USHORT) (x - 1), 0);
*ch = *cell;
*attr = *(cell + 1);
}
void vm_setcursorstyle(int style)
{
VIOCURSORINFO vi;
switch (style) {
case CURSOR_HALF:
vi.yStart = -50;
vi.cEnd = -100;
vi.cx = 0;
vi.attr = 0;
VioSetCurType(&vi, 0);
break;
case CURSOR_FULL:
vi.yStart = 0;
vi.cEnd = -100;
vi.cx = 0;
vi.attr = 0;
VioSetCurType(&vi, 0);
break;
case CURSOR_NORM:
vi.yStart = -90;
vi.cEnd = -100;
vi.cx = 0;
vi.attr = 0;
VioSetCurType(&vi, 0);
break;
case CURSOR_HIDE:
vi.yStart = -90;
vi.cEnd = -100;
vi.cx = 0;
vi.attr = -1;
VioSetCurType(&vi, 0);
break;
default:
break;
}
}
void vm_putch(char x, char y, char ch)
{
VioWrtCharStr(&ch, 1, (USHORT) (y - 1), (USHORT) (x - 1), 0);
}
void vm_puts(char x, char y, char *str)
{
VioWrtCharStr(str, (USHORT) strlen(str), (USHORT) (y - 1), (USHORT) \
\
(x - 1), 0);
}
void vm_xputch(char x, char y, char attr, char ch)
{
VioWrtCharStrAtt(&ch, 1, (USHORT) (y - 1), (USHORT) (x - 1), \
\
(PBYTE) & attr, 0);
}
void vm_xputs(char x, char y, char attr, char *str)
{
VioWrtCharStrAtt(str, (USHORT) strlen(str), (USHORT) (y - 1), \
\
(USHORT) (x - 1), (PBYTE) & attr, 0);
}
void vm_putattr(char x, char y, char attr)
{
VioWrtNAttr((PBYTE) & attr, 1, (USHORT) (y - 1), (USHORT) (x - 1), \
\
0);
}
void vm_paintclearbox(char x1, char y1, char x2, char y2, char attr)
{
char y, cell[2];
cell[0] = ' ';
cell[1] = attr;
for (y = y1; y <= y2; y++)
VioWrtNCell((PBYTE) & cell, (USHORT) (x2 - x1 + 1), (USHORT) (y \
\
- 1), (USHORT) (x1 - 1), 0);
}
void vm_paintbox(char x1, char y1, char x2, char y2, char attr)
{
char y;
for (y = y1; y <= y2; y++)
VioWrtNAttr((PBYTE) & attr, (USHORT) (x2 - x1 + 1), (USHORT) (y \
\
- 1), (USHORT) (x1 - 1), 0);
}
void vm_clearbox(char x1, char y1, char x2, char y2)
{
char y, ch;
ch = ' ';
for (y = y1; y <= y2; y++)
VioWrtNChar((PBYTE) & ch, (USHORT) (x2 - x1 + 1), (USHORT) (y - \
\
1), (USHORT) (x1 - 1), 0);
}
void vm_gettext(char x1, char y1, char x2, char y2, char *dest)
{
USHORT width;
char y;
width = (USHORT) ((x2 - x1 + 1) * 2);
for (y = y1; y <= y2; y++) {
VioReadCellStr((PBYTE) dest, &width, (USHORT) (y - 1), (USHORT) \
\
(x1 - 1), 0);
dest += width;
}
}
void vm_puttext(char x1, char y1, char x2, char y2, char *srce)
{
USHORT width;
char y;
width = (USHORT) ((x2 - x1 + 1) * 2);
for (y = y1; y <= y2; y++) {
VioWrtCellStr((PBYTE) srce, width, (USHORT) (y - 1), (USHORT) \
\
>>>>>>>>>> CSplit: End part 3/4 crc: f3d9
>>>>>>>>>>
--- Msgedsq/2 3.30
* Origin: Blizzard of Ozz, Melbourne, Australia (3:635/727.4{at}fidonet)SEEN-BY: 50/99 78/0 620/243 623/630 632/349 634/395 635/503 544 727 711/401 SEEN-BY: 711/409 410 413 430 510 808 809 932 934 712/515 713/888 714/906 SEEN-BY: 800/1 7877/2809 @PATH: 635/727 544 50/99 711/808 809 934 |
|
| SOURCE: echomail via fidonet.ozzmosis.com | |
Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.