|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 1297 (0x511)
Types: TextFile
Names: »dpyplace.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Dpy/dpyplace.c«
#ifdef SCCS
static char *sccsid = "@(#)dpyplace.c 1.5 1/28/85";
static char *cpyrid = "@(#)Copyright (C) 1985 by D Bell";
#endif
#include "dpy.h"
/* Place a single character to the window at a particular location.
* The change will not be seen until a call to dpyupdate.
* The current write location is unaffected.
* Returns nonzero if coordinates are illegal.
* The coordinates are relative to the current window.
*/
dpyplace(row, col, ch)
register int row; /* row to place character at */
register int col; /* column to place character at */
char ch; /* character to be placed */
{
register struct window *wp; /* window pointer */
register char *cp; /* character pointer */
register int winrows; /* number of rows in window */
register int wincols; /* number of columns in window */
wp = &window;
winrows = ((wp->endwin - wp->begwin) / wp->delta) + 1;
wincols = wp->endrow - wp->begrow;
if (row < 0) row += winrows;
if (col < 0) col += wincols;
if (((unsigned)row >= winrows) || ((unsigned)col >= wincols)) {
return(1); /* out of window */
}
cp = wp->begwin + (row * wp->delta) + col;
if (*cp != ch) { /* do only if char needs changing */
if (cp < wp->begchange) wp->begchange = cp;
*cp++ = ch;
if (cp > wp->endchange) wp->endchange = cp;
}
return(0);
}