This is scrn.h in view mode; [Download] [Up]
/* Device independant tty interface for JOE Copyright (C) 1992 Joseph H. Allen This file is part of JOE (Joe's Own Editor) JOE is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. JOE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with JOE; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _Iscrn #define _Iscrn 1 #include "config.h" #include "termcap.h" #include "tty.h" extern int skiptop; typedef struct scrn SCRN; struct hentry { int next; int loc; }; /* Each terminal has one of these */ #ifdef __MSDOS__ struct scrn { int li; int co; short *scrn; int scroll; int insdel; int *updtab; int *compose; int *sary; }; #else struct scrn { CAP *cap; /* Termcap/Terminfo data */ int li; /* Screen height */ int co; /* Screen width */ char *ti; /* Initialization string */ char *cl; /* Home and clear screen... really an init. string */ char *cd; /* Clear to end of screen */ 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 */ char *so; /* Enter standout (inverse) mode */ char *se; /* Exit standout mode */ char *us; /* Enter underline mode */ char *ue; /* Exit underline mode */ char *uc; /* Single time underline character */ int ms; /* Ok to move when in standout/underline mode */ char *mb; /* Enter blinking mode */ char *md; /* Enter bold mode */ char *mh; /* Enter dim mode */ char *mr; /* Enter inverse mode */ char *me; /* Exit above modes */ int da, db; /* Extra lines exist above, below */ char *al, *dl, *AL, *DL; /* Insert/delete lines */ char *cs; /* Set scrolling region */ int rr; /* Set for scrolling region relative addressing */ char *sf, *SF, *sr, *SR; /* Scroll */ char *dm, *dc, *DC, *ed; /* Delete characters */ char *im, *ic, *IC, *ip, *ei; /* Insert characters */ int mi; /* Set if ok to move while in insert mode */ char *bs; /* Move cursor left 1 */ int cbs; char *lf; /* Move cursor down 1 */ int clf; char *up; /* Move cursor up 1 */ int cup; char *nd; /* Move cursor right 1 */ char *ta; /* Move cursor to next tab stop */ int cta; char *bt; /* Move cursor to previous tab stop */ int cbt; int tw; /* Tab width */ char *ho; /* Home cursor to upper left */ int cho; char *ll; /* Home cursor to lower left */ int cll; char *cr; /* Move cursor to left edge */ int ccr; char *RI; /* Move cursor right n */ int cRI; char *LE; /* Move cursor left n */ int cLE; char *UP; /* Move cursor up n */ int cUP; char *DO; /* Move cursor down n */ int cDO; char *ch; /* Set cursor column */ int cch; char *cv; /* Set cursor row */ int ccv; char *cV; /* Goto beginning of specified line */ int ccV; char *cm; /* Set cursor row and column */ int ccm; char *ce; /* Clear to end of line */ int cce; /* Basic abilities */ int scroll; /* Set to use scrolling */ int insdel; /* Set to use insert/delete within line */ /* Current state of terminal */ int *scrn; /* Current contents of 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; }; #endif /* SCRN *nopen(void); * * Open the screen (sets TTY mode so that screen may be used immediatly after * the 'nopen'). */ SCRN *nopen(); /* 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(); /* void nredraw(SCRN *t); * * Invalidate all state variables for the terminal. This way, everything gets * redrawn. */ void nredraw(); void npartial(); void nescape(); void nreturn(); /* 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(); /* int cpos(SCRN *t,int x,int y); * * Set cursor position */ int cpos(); /* int attr(SCRN *t,int a); * * Set attributes */ int attr(); /* void outatr(SCRN *t,int *scrn,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 16 extern unsigned atab[]; #define outatr(t,scrn,x,y,c,a) \ ( \ (t), (x), (y), *(scrn)=((unsigned)(c)|atab[a]) \ ) #else #define INVERSE 256 #define UNDERLINE 512 #define BOLD 1024 #define BLINK 2048 #define DIM 4096 #define outatr(t,scrn,xx,yy,c,a) \ ( \ (*(scrn)!=((c)|(a))) ? \ ( \ *(scrn)=((c)|(a)), \ ((t)->ins?clrins(t):0), \ ((t)->x!=(xx) || (t)->y!=(yy)?cpos((t),(xx),(yy)):0), \ ((t)->attrib!=(a)?attr((t),(a)):0), \ ttputc(c), ++(t)->x \ ) \ : \ 0 \ ) #endif extern unsigned xlata[256]; extern unsigned char xlatc[256]; extern int dspasis; #define xlat(a,c) \ ( \ (dspasis && ((unsigned)(c)>=128)) ? \ ((a)=0) \ : \ (((a)=xlata[(unsigned)(c)]), ((c)=xlatc[(unsigned)(c)])) \ ) /* int eraeol(SCRN *t,int x,int y); * * Erase from screen coordinate to end of line. */ int eraeol(); /* 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(); /* 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(); /* void nscroll(SCRN *t); * * Execute buffered scroll requests */ void nscroll(); /* void magic(SCRN *t,int y,int *cur,int *new); * * Figure out and execute line shifting */ void magic(); int clrins(); #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.