⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 refresh.c

📁 minux的源代码,一个非常小的操作系统
💻 C
字号:
/* refresh.c */

#include <curses.h>
#include "curspriv.h"

/* Wrefresh() updates window win's area of the physical screen.	*/
void wrefresh(win)
WINDOW *win;
{
  if (win == curscr)
	curscr->_clear = TRUE;
  else
	wnoutrefresh(win);
  doupdate();
}

/****************************************************************/
/* Wnoutrefresh() updates the image of the desired screen,	*/
/* Without doing physical update (copies window win's image to	*/
/* The _cursvar.tmpwin window, which is hidden from the user).	*/
/****************************************************************/

void wnoutrefresh(win)
register WINDOW *win;
{
  register int *dst;		/* start destination in temp window */
  register int *end;		/* end destination in temp window */
  register int *src;		/* source in user window */
  register int first;		/* first changed char on line */
  register int last;		/* last changed char on line */
  WINDOW *nscr;
  int begy;			/* window's place on screen */
  int begx;
  int i;
  int j;

  nscr = _cursvar.tmpwin;
  begy = win->_begy;
  begx = win->_begx;

  for (i = 0, j = begy; i <= win->_maxy; i++, j++) {
	if (win->_minchng[i] != _NO_CHANGE) {
		first = win->_minchng[i];
		last = win->_maxchng[i];
		dst = &(nscr->_line[j][begx + first]);
		end = &(nscr->_line[j][begx + last]);
		src = &(win->_line[i][first]);

		while (dst <= end)	/* copy user line to temp window */
			*dst++ = *src++;

		first += begx;	/* nscr's min/max change positions */
		last += begx;

		if ((nscr->_minchng[j] == _NO_CHANGE) || (nscr->_minchng[j] > first))
			nscr->_minchng[j] = first;
		if (last > nscr->_maxchng[j]) nscr->_maxchng[j] = last;

		win->_minchng[i] = _NO_CHANGE;	/* updated now */
	}			/* if */
	win->_maxchng[i] = _NO_CHANGE;	/* updated now */
  }				/* for */

  if (win->_clear) {
	win->_clear = FALSE;
	nscr->_clear = TRUE;
  }				/* if */
  if (!win->_leave) {
	nscr->_cury = win->_cury + begy;
	nscr->_curx = win->_curx + begx;
  }				/* if */
}				/* wnoutrefresh */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -