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

📄 clrtobot.c

📁 该程序是C语言编写的
💻 C
字号:
/****************************************************************/
/* Wclrtobot() routine of the PCcurses package			*/
/*								*/
/****************************************************************/
/* This version of curses is based on ncurses, a curses version	*/
/* originally written by Pavel Curtis at Cornell University.	*/
/* I have made substantial changes to make it run on IBM PC's,	*/
/* and therefore consider myself free to make it public domain.	*/
/*				Bjorn Larsson (bl@infovox.se)	*/
/****************************************************************/
/* 1.4:  Use of short wherever possible. Portability		*/
/*	 improvements:					900114	*/
/* 1.3:	 MSC -W3, Turbo'C' -w -w-pro checkes:		881005	*/
/* 1.2:	 Max limits off by 1. Fixed thanks to S. Creps:	881002	*/
/* 1.1:	 Renamed clrbot() to clrtobot(). Reported by		*/
/*	 Eric Roscos:					870907	*/
/* 1.0:	 Release:					870515	*/
/****************************************************************/

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

char _curses_clrtobot_rcsid[] = "@(#)clrtobot.c   v.1.4  - 900114";

/****************************************************************/
/* Wclrtobot() fills the right half of the cursor line of	*/
/* window 'win', and all lines below it with blanks.		*/
/****************************************************************/

int	wclrtobot(win)
  WINDOW	*win;
  {
  short	 y;
  short   minx;
  static short	startx;
  static short	*ptr;
  static short  *end;
  static short  *maxx;
  static short   blank;

  blank = ' ' | (win->_attrs & ATR_MSK);
  startx = win->_curx;
  for (y = win->_cury; y <= win->_regbottom; y++)
    {
    minx = _NO_CHANGE;
    end = &win->_line[y][win->_maxx - 1];
    for (ptr = &win->_line[y][startx]; ptr <= end; ptr++)
      {
      if (*ptr != blank)
	{
	maxx = ptr;
	if (minx == _NO_CHANGE)
	  minx = (int) (ptr - win->_line[y]);
	*ptr = blank;
	} /* if */
      } /* for */
    if (minx != _NO_CHANGE)
      {
      if ((win->_minchng[y] > minx) ||  (win->_minchng[y] == _NO_CHANGE))
	win->_minchng[y] = minx;
      if (win->_maxchng[y] < (int) (maxx - win->_line[y]))
	win->_maxchng[y] = (int) (maxx - win->_line[y]);
      } /* if */
    startx = 0;
    } /* for */
  return(OK);
  } /* wclrtobot */

/****************************************************************/
/* Clrtobot() fills the right half of the cursor line of	*/
/* stdscr, and all lines below it with blanks.			*/
/****************************************************************/

int clrtobot()
  {
  return(wclrtobot(stdscr));
  } /* clrtobot */

/****************************************************************/
/* Mvclrtobot() moves the cursor to a new position in stdscr	*/
/* and fills the right half of the cursor line, and all lines	*/
/* below it with blanks.					*/
/****************************************************************/

int mvclrtobot(y,x)
  int y;
  int x;
  {
  if (wmove(stdscr,y,x) == ERR)
    return(ERR);
  return(wclrtobot(stdscr));
  } /* mvclrtobot */

/****************************************************************/
/* Mvwclrtobot() moves the cursor to a new position in window	*/
/* 'win', and fills the right half of the cursor line, and all	*/
/* lines below it with blanks.					*/
/****************************************************************/

int mvwclrtobot(win,y,x)
  WINDOW *win;
  int y;
  int x;
  {
  if (wmove(win,y,x) == ERR)
    return(ERR);
  return(wclrtobot(win));
  } /* mvwclrtobot */

⌨️ 快捷键说明

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