コード例 #1
0
ファイル: mvwin.c プロジェクト: andreiw/polaris
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);
}
コード例 #2
0
ファイル: newwin.c プロジェクト: andreiw/polaris
WINDOW *
subwin(WINDOW *orig, 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;

	/*
	 * make sure window fits inside the original one
	 */
#ifdef	DEBUG
	fprintf(outf, "SUBWIN(%0.2o, %d, %d, %d, %d)\n", orig, nl, nc, by, bx);
#endif
	if (by < orig->_begy || bx < orig->_begx ||
	    by + nl > orig->_maxy + orig->_begy ||
	    bx + nc > orig->_maxx + orig->_begx)
		return (ERR);
	if (nl == 0)
		nl = orig->_maxy + orig->_begy - by;
	if (nc == 0)
		nc = orig->_maxx + orig->_begx - bx;
	if ((win = makenew(nl, nc, by, bx)) == NULL)
		return (ERR);
	win->_nextp = orig->_nextp;
	orig->_nextp = win;
	win->_orig = orig;
	_set_subwin_(orig, win);
	return (win);
}
コード例 #3
0
ファイル: mvwin.c プロジェクト: jamjr/Helios-NG
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;
}