home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hall of Fame
/
HallofFameCDROM.cdr
/
prog1
/
boss719a.lzh
/
WN_PUTS.C
< prev
next >
Wrap
C/C++ Source or Header
|
1989-10-21
|
5KB
|
132 lines
/*
** wn_puts - output string to window
**
** Copyright (c) 1984, 1985, 1986 - Philip A. Mongelluzzo
** All rights reserved.
**
*/
#include "windows.h"
/*
***********
* wn_puts *
***********
*/
wn_puts(wn, row, col, s) /* put simple string */
WINDOWPTR wn;
int row,col;
char *s;
{
int matrib; /* local attribute */
char *p, *p1, *p2; /* local pointer */
int l1,l2; /* length of s */
int k; /* scratch */
/* a few OBVIOUS checks */
/* don't allow writing on */
/* or beyond the border, if */
/* one exists */
matrib = wn->style; /* load attribute */
wns_fixc(&matrib); /* fixup */
k = wn->uly + row + WMR;
if(k > (wni_mxrows-1)) return(NULL); /* dont be real stupid */
if( (k) >= (wn->uly + WMR + wn->ysize) && WMR) return(NULL);
if(!wn_activate(wn)) return(NULL); /* bring window to the top */
wns_err(wn, "wn_puts"); /* avoid disaster */
l1=strlen(s); /* length */
p = malloc((l1*2)+2); /* fetch some memory */
if(!p) return(NULL); /* error */
while(l1+col > wn->xsize) l1--; /* dont allow border overflow */
l2=l1; /* carbon copy for savres */
wn->ccy = row + WMR/2; /* adjust virtual cursor */
wn->ccx = col + l1 + WMR/2;
p1 = p; /* set up pointers */
p2 = s; /* for both source & dest */
while (l1--) { /* build char,,atrib */
*p1++ = *p2++; /* pair */
*p1++ = (char)matrib; /* for write */
}
*p1 = '\0'; /* terminate string */
row = wn->uly + row + WMR/2; /* adjust position */
col = wn->ulx + col + WMR/2;
wns_savres(wn->page, row, col, l2, row, p, RESTORE);
free(p);
if(wn->synflg) /* and position */
v_locate(wn->page, wn->uly+wn->ccy, wn->ulx+wn->ccx);
return(TRUE);
}
/*
************
* wn_putsa *
************
*/
wn_putsa(wn, row, col, s, atrib) /* put simple string with atrib */
WINDOWPTR wn;
int row,col;
char *s;
unsigned atrib;
{
static int satrib; /* a place to save current atrib */
int rv; /* return value from wn_puts */
int matrib;
if(!wn_activate(wn)) return(NULL); /* bring window to the top */
matrib = atrib; /* my copy */
wns_err(wn, "wn_putsa"); /* avoid disaster */
satrib = wn->style; /* save current atrib */
wns_fixc(&matrib); /* fixup */
wn->style = atrib; /* force new atrib */
rv = wn_puts(wn, row, col, s); /* do it with wn_puts */
wn->style = satrib; /* restore atrib */
return(rv);
}
/*
***********
* wn_putc *
***********
*/
wn_putc(wn, row, col, c) /* put simple character */
WINDOWPTR wn; /* the window */
int row,col; /* location */
char c; /* the character */
{
char s[3]; /* character string */
if(!wn_activate(wn)) return(NULL); /* bring window to the top */
wns_err(wn, "wn_putc"); /* avoid disaster */
s[0] = c; /* load character */
s[1] = '\0'; /* terminate string */
return(wn_puts(wn, row, col, s)); /* print the string */
}
/*
************
* wn_putca *
************
*/
wn_putca(wn, row, col, c, a) /* put simple character & atrib */
WINDOWPTR wn; /* the window */
int row,col; /* location */
char c; /* the character */
unsigned a; /* the attribute */
{
char s[3]; /* character string */
if(!wn_activate(wn)) return(NULL); /* bring window to the top */
wns_err(wn, "wn_putca"); /* avoid disaster */
s[0] = c; /* load character */
s[1] = '\0'; /* terminate string */
return(wn_putsa(wn, row, col, s, a)); /* print the string & atrib */
}
/* End */