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

📄 scrn.h

📁 举世闻名的joe记事本源程序
💻 H
字号:
/* *	Device independant tty interface for JOE *	Copyright *		(C) 1992 Joseph H. Allen * *	This file is part of JOE (Joe's Own Editor) */#ifndef _JOE_SCRN_H#define _JOE_SCRN_H 1struct hentry {	int	next;	int	loc;};/* Each terminal has one of these: terminal capability database */#ifdef __MSDOS__struct scrn {	int	li;		/* Height of screen */	int	co;		/* Width of screen */	short	*scrn;		/* Buffer */	int	scroll;	int	insdel;	int	*updtab;	/* Lines which need to be updated */	HIGHLIGHT_STATE *syntax;	int	*compose;	int	*sary;};#elsestruct scrn {	CAP	*cap;		/* Termcap/Terminfo data */	int	li;		/* Screen height */	int	co;		/* Screen width */	unsigned char	*ti;		/* Initialization string */	unsigned char	*cl;		/* Home and clear screen... really an				   init. string */	unsigned char	*cd;		/* Clear to end of screen */	unsigned char	*te;		/* Restoration string */	int	haz;		/* Terminal can't print ~s */	int	os;		/* Terminal overstrikes */	int	eo;		/* Can use blank to erase even if os */	int	ul;		/* _ overstrikes */	int	am;		/* Terminal has autowrap, but not magicwrap */	int	xn;		/* Terminal has magicwrap */	unsigned char	*so;		/* Enter standout (inverse) mode */	unsigned char	*se;		/* Exit standout mode */	unsigned char	*us;		/* Enter underline mode */	unsigned char	*ue;		/* Exit underline mode */	unsigned char	*uc;		/* Single time underline character */	int	ms;		/* Ok to move when in standout/underline mode */	unsigned char	*mb;		/* Enter blinking mode */	unsigned char	*md;		/* Enter bold mode */	unsigned char	*mh;		/* Enter dim mode */	unsigned char	*mr;		/* Enter inverse mode */	unsigned char	*me;		/* Exit above modes */	unsigned char	*Sb;		/* Set background color */	unsigned char	*Sf;		/* Set foregrond color */	int	Co;			/* No. of colors */	int	ut;		/* Screen erases with background color */	int	da, db;		/* Extra lines exist above, below */	unsigned char	*al, *dl, *AL, *DL;	/* Insert/delete lines */	unsigned char	*cs;		/* Set scrolling region */	int	rr;		/* Set for scrolling region relative addressing */	unsigned char	*sf, *SF, *sr, *SR;	/* Scroll */	unsigned char	*dm, *dc, *DC, *ed;	/* Delete characters */	unsigned char	*im, *ic, *IC, *ip, *ei;	/* Insert characters */	int	mi;		/* Set if ok to move while in insert mode */	unsigned char	*bs;		/* Move cursor left 1 */	int	cbs;	unsigned char	*lf;		/* Move cursor down 1 */	int	clf;	unsigned char	*up;		/* Move cursor up 1 */	int	cup;	unsigned char	*nd;		/* Move cursor right 1 */	unsigned char	*ta;		/* Move cursor to next tab stop */	int	cta;	unsigned char	*bt;		/* Move cursor to previous tab stop */	int	cbt;	int	tw;		/* Tab width */	unsigned char	*ho;		/* Home cursor to upper left */	int	cho;	unsigned char	*ll;		/* Home cursor to lower left */	int	cll;	unsigned char	*cr;		/* Move cursor to left edge */	int	ccr;	unsigned char	*RI;		/* Move cursor right n */	int	cRI;	unsigned char	*LE;		/* Move cursor left n */	int	cLE;	unsigned char	*UP;		/* Move cursor up n */	int	cUP;	unsigned char	*DO;		/* Move cursor down n */	int	cDO;	unsigned char	*ch;		/* Set cursor column */	int	cch;	unsigned char	*cv;		/* Set cursor row */	int	ccv;	unsigned char	*cV;		/* Goto beginning of specified line */	int	ccV;	unsigned char	*cm;		/* Set cursor row and column */	int	ccm;	unsigned char	*ce;		/* Clear to end of line */	int	cce;	int assume_256;		/* Assume terminal has 256 color mode, but use	                           regular mode for standard colors just in case */	/* Basic abilities */	int	scroll;		/* Set to use scrolling */	int	insdel;		/* Set to use insert/delete within line */	/* Current state of terminal */	int	*scrn;		/* Characters on screen */	int	*attr;		/* Attributes on screen */	int	x, y;		/* Current cursor position (-1 for unknown) */	int	top, bot;	/* Current scrolling region */	int	attrib;		/* Current character attributes */	int	ins;		/* Set if we're in insert mode */	int	*updtab;	/* Dirty lines table */	int	avattr;		/* Bits set for available attributes */	int	*sary;		/* Scroll buffer array */	int	*compose;	/* Line compose buffer */	int	*ofst;		/* stuff for magic */	struct hentry	*htab;	struct hentry	*ary;};#endifextern int skiptop;/* SCRN *nopen(void); * * Open the screen (sets TTY mode so that screen may be used immediatly after * the 'nopen'). */SCRN *nopen PARAMS((CAP *cap));/* void nresize(SCRN *t,int w,int h); * * Change size of screen.  For example, call this when you find out that * the Xterm changed size. */void nresize PARAMS((SCRN *t, int w, int h));/* void nredraw(SCRN *t); * * Invalidate all state variables for the terminal.  This way, everything gets * redrawn. */void nredraw PARAMS((SCRN *t));void npartial PARAMS((SCRN *t));void nescape PARAMS((SCRN *t));void nreturn PARAMS((SCRN *t));/* void nclose(SCRN *t); * * Close the screen and restore TTY to initial state. * * if 'flg' is set, tclose doesn't mess with the signals. */void nclose PARAMS((SCRN *t));/* int cpos(SCRN *t,int x,int y); * * Set cursor position */int cpos PARAMS((register SCRN *t, register int x, register int y));/* int attr(SCRN *t,int a); * * Set attributes */int set_attr PARAMS((SCRN *t, int c));/* Encode character as utf8 */void utf8_putc PARAMS((int c));/* void outatr(SCRN *t,int *scrn,int *attr,int x,int y,int c,int a); * * Output a character at the given screen cooridinate.  The cursor position * after this function is executed is indeterminate. *//* Character attribute bits */#ifdef __MSDOS__#define INVERSE 1#define UNDERLINE 2#define BOLD 4#define BLINK 8#define DIM 16extern unsigned atab[];#define outatr(t,scrn,attr,x,y,c,a) do { \	(t); \	(x); \	(y); \	*(scrn) = ((unsigned)(c) | atab[a]); \} while(0)#else#define INVERSE		 256#define UNDERLINE	 512#define BOLD		1024#define BLINK		2048#define DIM		4096#define AT_MASK		(INVERSE+UNDERLINE+BOLD+BLINK+DIM)#define BG_SHIFT	13#define BG_VALUE	(255<<BG_SHIFT)#define BG_NOT_DEFAULT	(256<<BG_SHIFT)#define BG_MASK		(511<<BG_SHIFT)#define BG_DEFAULT	(0<<BG_SHIFT)/* #define BG_COLOR(color)	(BG_NOT_DEFAULT^(color)<<BG_SHIFT) */#define BG_COLOR(color)	(color)#define BG_BLACK	(BG_NOT_DEFAULT|(0<<BG_SHIFT))#define BG_RED		(BG_NOT_DEFAULT|(1<<BG_SHIFT))#define BG_GREEN	(BG_NOT_DEFAULT|(2<<BG_SHIFT))#define BG_YELLOW	(BG_NOT_DEFAULT|(3<<BG_SHIFT))#define BG_BLUE		(BG_NOT_DEFAULT|(4<<BG_SHIFT))#define BG_MAGENTA	(BG_NOT_DEFAULT|(5<<BG_SHIFT))#define BG_CYAN		(BG_NOT_DEFAULT|(6<<BG_SHIFT))#define BG_WHITE	(BG_NOT_DEFAULT|(7<<BG_SHIFT))#define BG_BBLACK	(BG_NOT_DEFAULT|(8<<BG_SHIFT))#define BG_BRED		(BG_NOT_DEFAULT|(9<<BG_SHIFT))#define BG_BGREEN	(BG_NOT_DEFAULT|(10<<BG_SHIFT))#define BG_BYELLOW	(BG_NOT_DEFAULT|(11<<BG_SHIFT))#define BG_BBLUE	(BG_NOT_DEFAULT|(12<<BG_SHIFT))#define BG_BMAGENTA	(BG_NOT_DEFAULT|(13<<BG_SHIFT))#define BG_BCYAN	(BG_NOT_DEFAULT|(14<<BG_SHIFT))#define BG_BWHITE	(BG_NOT_DEFAULT|(15<<BG_SHIFT))#define FG_SHIFT	22#define FG_VALUE	(255<<FG_SHIFT)#define FG_NOT_DEFAULT	(256<<FG_SHIFT)#define FG_MASK		(511<<FG_SHIFT)#define FG_DEFAULT	(0<<FG_SHIFT)#define FG_BWHITE	(FG_NOT_DEFAULT|(15<<FG_SHIFT))#define FG_BCYAN	(FG_NOT_DEFAULT|(14<<FG_SHIFT))#define FG_BMAGENTA	(FG_NOT_DEFAULT|(13<<FG_SHIFT))#define FG_BBLUE	(FG_NOT_DEFAULT|(12<<FG_SHIFT))#define FG_BYELLOW	(FG_NOT_DEFAULT|(11<<FG_SHIFT))#define FG_BGREEN	(FG_NOT_DEFAULT|(10<<FG_SHIFT))#define FG_BRED		(FG_NOT_DEFAULT|(9<<FG_SHIFT))#define FG_BBLACK	(FG_NOT_DEFAULT|(8<<FG_SHIFT))#define FG_WHITE	(FG_NOT_DEFAULT|(7<<FG_SHIFT))#define FG_CYAN		(FG_NOT_DEFAULT|(6<<FG_SHIFT))#define FG_MAGENTA	(FG_NOT_DEFAULT|(5<<FG_SHIFT))#define FG_BLUE		(FG_NOT_DEFAULT|(4<<FG_SHIFT))#define FG_YELLOW	(FG_NOT_DEFAULT|(3<<FG_SHIFT))#define FG_GREEN	(FG_NOT_DEFAULT|(2<<FG_SHIFT))#define FG_RED		(FG_NOT_DEFAULT|(1<<FG_SHIFT))#define FG_BLACK	(FG_NOT_DEFAULT|(0<<FG_SHIFT))void outatr PARAMS((struct charmap *map,SCRN *t,int *scrn,int *attrf,int xx,int yy,int c,int a));#endif/* * translate character and its attribute into something printable */void xlat PARAMS((int *attr, unsigned char *c));void xlat_utf_ctrl PARAMS((int *attr, unsigned char *c));/* int eraeol(SCRN *t,int x,int y); * * Erase from screen coordinate to end of line. */int eraeol PARAMS((SCRN *t, int x, int y, int atr));/* void nscrlup(SCRN *t,int top,int bot,int amnt); * * Buffered scroll request.  Request that some lines up.  'top' and 'bot' * indicate which lines to scroll.  'bot' is the last line to scroll + 1. * 'amnt' is distance in lines to scroll. */void nscrlup PARAMS((SCRN *t, int top, int bot, int amnt));/* void nscrldn(SCRN *t,int top,int bot,int amnt); * * Buffered scroll request.  Scroll some lines down.  'top' and 'bot' * indicate which lines to scroll.  'bot' is the last line to scroll + 1. * 'amnt' is distance in lines to scroll. */void nscrldn PARAMS((SCRN *t, int top, int bot, int amnt));/* void nscroll(SCRN *t); * * Execute buffered scroll requests */void nscroll PARAMS((SCRN *t, int atr));/* void magic(SCRN *t,int y,int *cur,int *new); * * Figure out and execute line shifting */void magic PARAMS((SCRN *t, int y, int *cs, int *ca, int *s, int *a,int placex));int clrins PARAMS((SCRN *t));int meta_color PARAMS((unsigned char *s));/* Generate a field */void genfield PARAMS((SCRN *t,int *scrn,int *attr,int x,int y,int ofst,unsigned char *s,int len,int atr,int width,int flg,int *fmt));/* Column width of a string takes into account utf-8) */int txtwidth PARAMS((unsigned char *s,int len));/* Generate a field: formatted */void genfmt PARAMS((SCRN *t, int x, int y, int ofst, unsigned char *s, int atr, int flg));/* Column width of formatted string */int fmtlen PARAMS((unsigned char *s));/* Offset within formatted string of particular column */int fmtpos PARAMS((unsigned char *s, int goal));extern int bg_text;extern int columns;extern int notite;extern int usetabs;extern int assume_color;extern int assume_256color;#endif

⌨️ 快捷键说明

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