Ejemplo n.º 1
0
int
mvwin(WINDOW *win, int by, int bx)
{
	WINDOW	*orig;
	int	dy, dx;

	if (by + win->_maxy > LINES || bx + win->_maxx > COLS)
		return (ERR);
	dy = by - win->_begy;
	dx = bx - win->_begx;
	orig = win->_orig;
	if (orig == NULL) {
		orig = win;
		do {
			win->_begy += dy;
			win->_begx += dx;
			_swflags_(win);
			win = win->_nextp;
		} while (win != orig);
	} else {
		if (by < orig->_begy || win->_maxy + dy > orig->_maxy)
			return (ERR);
		if (bx < orig->_begx || win->_maxx + dx > orig->_maxx)
			return (ERR);
		win->_begy = (short)by;
		win->_begx = (short)bx;
		_swflags_(win);
		_set_subwin_(orig, win);
	}
	(void) touchwin(win);
	return (OK);
}
Ejemplo n.º 2
0
int mvwin(
	  reg WINDOW	*win,
	  reg int	by,
	  reg int	bx )
{

	register WINDOW	*orig;
	register int	dy, dx;

	if (by + win->_maxy > LINES || bx + win->_maxx > COLS)
		return ERR;
	dy = by - win->_begy;
	dx = bx - win->_begx;
	orig = win->_orig;
	if (orig == NULL) {
		orig = win;
		do {
			win->_begy += dy;
			win->_begx += dx;
			_swflags_(win);
			win = win->_nextp;
		} while (win != orig);
	}
	else {
		if (by < orig->_begy || win->_maxy + dy > orig->_maxy)
			return ERR;
		if (bx < orig->_begx || win->_maxx + dx > orig->_maxx)
			return ERR;
		win->_begy = by;
		win->_begx = bx;
		_swflags_(win);
		_set_subwin_(orig, win);
	}
	touchwin(win);
	return OK;
}
Ejemplo n.º 3
0
static WINDOW *
makenew(int num_lines, int num_cols, int begy, int begx)
{
	WINDOW	*win;
	int	by, bx, nl, nc;

	by = begy;
	bx = begx;
	nl = num_lines;
	nc = num_cols;

#ifdef	DEBUG
	fprintf(outf, "MAKENEW(%d, %d, %d, %d)\n", nl, nc, by, bx);
#endif
	if ((win = (WINDOW *) malloc(sizeof (*win))) == NULL)
		return (NULL);
#ifdef DEBUG
	fprintf(outf, "MAKENEW: nl = %d\n", nl);
#endif
	if ((win->_y = (char **)malloc(nl * sizeof (win->_y[0]))) == NULL) {
		free(win);
		return (NULL);
	}
#ifdef DEBUG
	fprintf(outf, "MAKENEW: nc = %d\n", nc);
#endif
	win->_cury = win->_curx = 0;
	win->_clear = FALSE;
	win->_maxy = (short)nl;
	win->_maxx = (short)nc;
	win->_begy = (short)by;
	win->_begx = (short)bx;
	win->_flags = 0;
	win->_scroll = win->_leave = FALSE;
	_swflags_(win);
	win->_orig = NULL;
#ifdef DEBUG
	fprintf(outf, "MAKENEW: win->_clear = %d\n", win->_clear);
	fprintf(outf, "MAKENEW: win->_leave = %d\n", win->_leave);
	fprintf(outf, "MAKENEW: win->_scroll = %d\n", win->_scroll);
	fprintf(outf, "MAKENEW: win->_flags = %0.2o\n", win->_flags);
	fprintf(outf, "MAKENEW: win->_maxy = %d\n", win->_maxy);
	fprintf(outf, "MAKENEW: win->_maxx = %d\n", win->_maxx);
	fprintf(outf, "MAKENEW: win->_begy = %d\n", win->_begy);
	fprintf(outf, "MAKENEW: win->_begx = %d\n", win->_begx);
#endif
	return (win);
}