Annotation of 43BSD/contrib/X/xterm/ptyx.h, revision 1.1.1.1

1.1       root        1: #include <X/mit-copyright.h>
                      2: 
                      3: /*     Copyright       Massachusetts Institute of Technology   1984, 1985 */
                      4: 
                      5: /* ptyx.h */
                      6: 
                      7: #define MAX_COLS       200
                      8: #define MAX_ROWS       128
                      9: 
                     10: /*
                     11:  * The origin of a screen is 0, 0.  Therefore, the number of rows
                     12:  * on a screen is screen->max_row + 1, and similarly for columns.
                     13:  */
                     14: 
                     15: typedef short **ScrnBuf;
                     16: 
                     17: /*
                     18:  * ANSI emulation.
                     19:  */
                     20: #define INQ    0x05
                     21: #define        FF      0x0C                    /* C0, C1 control names         */
                     22: #define        LS1     0x0E
                     23: #define        LS0     0x0F
                     24: #define        CAN     0x18
                     25: #define        SUB     0x1A
                     26: #define        ESC     0x1B
                     27: #define US     0x1F
                     28: #define        DEL     0x7F
                     29: #define        SS2     0x8E
                     30: #define        SS3     0x8F
                     31: #define        DCS     0x90
                     32: #define        OLDID   0x9A                    /* ESC Z                        */
                     33: #define        CSI     0x9B
                     34: #define        ST      0x9C
                     35: #define        OSC     0x9D
                     36: #define        PM      0x9E
                     37: #define        APC     0x9F
                     38: #define        RDEL    0xFF
                     39: 
                     40: #define        NPARAM  10                      /* Max. parameters              */
                     41: 
                     42: typedef struct {
                     43:        unsigned char   a_type;
                     44:        unsigned char   a_pintro;
                     45:        unsigned char   a_final;
                     46:        unsigned char   a_inters;
                     47:        char    a_nparam;               /* # of parameters              */
                     48:        char    a_dflt[NPARAM];         /* Default value flags          */
                     49:        short   a_param[NPARAM];        /* Parameters                   */
                     50:        char    a_nastyf;               /* Error flag                   */
                     51: }      ANSI;
                     52: 
                     53: typedef struct {
                     54:        int             row;
                     55:        int             col;
                     56:        unsigned        flags;  /* Vt100 saves graphics rendition. Ugh! */
                     57: } SavedCursor;
                     58: 
                     59: typedef struct {
                     60:        Window          window;         /* X window for screen          */
                     61:        Window          iconwindow;     /* window for icon              */
                     62:        Bitmap          iconmask;       /* mask for icon outline        */
                     63:        int             border;         /* inner border                 */
                     64:        int             borderwidth;    /* outer border                 */
                     65:        int             width;          /* width of window - borders (pixels)*/
                     66:        int             height;         /* height of window -borders (pixels)*/
                     67:        Display         *display;       /* X display for screen         */
                     68:        int             respond;        /* socket for responses
                     69:                                           (position report, etc.)      */
                     70: 
                     71:        /* Terminal fonts must be of the same size and of fixed width */
                     72:        Font            fnt_norm;       /* normal font of terminal      */
                     73:        Font            fnt_bold;       /* bold font of terminal        */
                     74:        int             f_width;        /* width of fonts in pixels     */
                     75:        int             f_height;       /* height of fonts in pixels    */
                     76: 
                     77:        int             cur_col;        /* current cursor column        */
                     78:        int             cur_row;        /* current cursor row           */
                     79:        int             max_col;        /* rightmost column             */
                     80:        int             max_row;        /* bottom row                   */
                     81:        int             top_marg;       /* top line of scrolling region */
                     82:        int             bot_marg;       /* bottom line of  "        "   */
                     83:        
                     84:        ScrnBuf         buf;            /* screen buffer                */
                     85:        Bitmap          cursor;         /* cursor bits                  */
                     86:        Bitmap          mask;           /* mask cursor bits             */
                     87:        Cursor          curs;           /* cursor resource from X       */
                     88:        Cursor          rcurs;          /* reverse version of cursor    */
                     89:        int             foreground;     /* foreground color             */
                     90:        int             background;     /* Background color             */
                     91:        int             cursorcolor;    /* Cursor color                 */
                     92:        int             mousecolor;     /* Mouse color                  */
                     93:        Pixmap          bordertile;     /* tile pixmap for border       */
                     94:        Pixmap          bgndtile;       /* background tile pixmap       */
                     95:        unsigned        xorplane;       /* z plane for inverts          */
                     96:        unsigned short  do_wrap;        /* true if cursor in last column
                     97:                                           and character just output    */
                     98:        short   incopy;                 /* 0 if no RasterCopy exposure
                     99:                                           event processed since last
                    100:                                           RasterCopy                   */
                    101: #ifdef CROCKSCROLL
                    102:        short           scrollincr;     /* scroll increment             */
                    103: #endif
                    104:        unsigned short  multiscroll;    /* true if multi-scroll         */
                    105:        int             scrolls;        /* outstanding scroll count     */
                    106:        SavedCursor     sc;             /* data for restore cursor      */
                    107:        long            pid;            /* pid of process on far side   */
                    108: 
                    109:        /* Improved VT100 emulation stuff.                              */
                    110:        ANSI            ansi;           /* ANSI parsing variables.      */
                    111:        char            gsets[4];       /* G0 through G3.               */
                    112:        char            curgl;          /* Current GL setting.          */
                    113:        char            curgr;          /* Current GR setting.          */
                    114:        char            curss;          /* Current single shift.        */
                    115:        char            rx8bit;         /* TRUE if Rx is 8 bit.         */
                    116:        char            tx8bit;         /* TRUE if Tx is 8 bit.         */
                    117:        /* Tektronix plotting information */
                    118:        int             TekEmu;         /* true if Tektronix emulation  */
                    119:        int             cur_X;          /* current screen x             */
                    120:        int             cur_Y;          /* current screen y             */
                    121:        int             cur_x;          /* current Tektronix x          */
                    122:        int             cur_y;          /* current Tektronix y          */
                    123:        int             pen;            /* current Tektronix pen 0=up, 1=dn */
                    124:        double          TekScale;       /* scale factor Tek -> vs100    */
                    125:        int             TekGMode;       /* plot mode switch             */
                    126:        int             TekAMode;       /* alpha after plot mode switch */
                    127:        int             TekIMode;       /* incremental plot mode switch */
                    128:        int             TekPMode;       /* point plot mode switch       */
                    129: #ifdef JUMPSCROLL
                    130:        int             scroll_amt;     /* amount to scroll             */
                    131:        int             refresh_amt;    /* amount to refresh            */
                    132:        int             jumpscroll;     /* whether we should jumpscroll */
                    133: #endif JUMPSCROLL
                    134:        int             (*mode)();      /* this will be THE mode        */
                    135:        unsigned short  send_mouse_pos; /* user wants mouse transition  */
                    136:                                        /* and position information     */
                    137: } Screen;
                    138: 
                    139: /* meaning of bits for entries in screen buffer */
                    140: #define CHAR           0177
                    141: #define BOLDbit                0200
                    142: #define INVERSEbit     0400
                    143: 
                    144: 
                    145: typedef struct
                    146: {
                    147:        unsigned        offset;         /* status of shift, control, meta */
                    148: #define SHIFT  0x0001
                    149: #define META   0x0002
                    150: #define CONTROL        0x0004
                    151: 
                    152:        unsigned        flags;
                    153: } Keyboard;
                    154: 
                    155: /* define masks for flags */
                    156: #define CAPS_LOCK      0x01
                    157: #define KYPD_APL       0x02
                    158: #define CURSOR_APL     0x04
                    159: 
                    160: 
                    161: #define MAX_TABS       320
                    162: #define TAB_ARRAY_SIZE 10      /* number of ints to provide MAX_TABS bits */
                    163: 
                    164: typedef unsigned Tabs [TAB_ARRAY_SIZE];
                    165: 
                    166: 
                    167: #define BUF_SIZE 4096
                    168: 
                    169: typedef struct
                    170: {
                    171:        int             cnt;            /* count of char's left in buf  */
                    172:        unsigned char   *ptr;           /* pointer to next char in buf  */
                    173:        unsigned char   buf[BUF_SIZE];  /* buffer                       */
                    174:        int             fildes;         /* file descriptor to read from */
                    175: } Buffer;
                    176: 
                    177: 
                    178: typedef struct
                    179: {
                    180:        Keyboard        keyboard;       /* terminal keyboard            */
                    181:        Screen          screen;         /* terminal screeen             */
                    182:        Buffer          buf;            /* buffer for data to process   */
                    183:        unsigned        flags;          /* mode flags                   */
                    184:        Tabs            tabs;           /* tabstops of the terminal     */
                    185: } Terminal;
                    186: 
                    187: 
                    188: /* masks for terminal flags */
                    189: 
                    190: #define INVERSE                0x01    /* invert the characters to be output */
                    191: #define LINEFEED       0x02
                    192: #define BOLD           0x04
                    193: #define WRAPAROUND     0x08
                    194: #define REVERSE_VIDEO  0x10    /* true if screen white on black */
                    195: #define ORIGIN         0x20    /* true if in origin mode */
                    196: #define INSERT         0x40    /* true if in insert mode */
                    197: #define SMOOTHSCROLL   0x80    /* true if in smooth scroll mode */
                    198: 
                    199:        /* must be a power of two */
                    200: #define TEK_LINK_BLOCK_SIZE 1024
                    201: 
                    202: typedef struct _TekLink
                    203: {
                    204:        struct _TekLink *next;  /* pointer to next TekLink in list
                    205:                                   NULL <=> this is last TekLink */
                    206:        unsigned char   data [TEK_LINK_BLOCK_SIZE];
                    207: } TekLink;
                    208: 
                    209: #define TekBufPut(chr)                                         \
                    210:        /* if out of memory malloc some more */                 \
                    211:        {                                                       \
                    212:                if (tb_end & TEK_LINK_BLOCK_SIZE)               \
                    213:                        TekBufExtend ();                        \
                    214:                tb_end_link->data [tb_end++] = chr;             \
                    215:        }
                    216: 
                    217: 
                    218: #define CursorX(screen) (screen->cur_col * screen->f_width + screen->border)
                    219: #define CursorY(screen) (screen->cur_row * screen->f_height + screen->border)
                    220: 
                    221: /*
                    222:  * To handle Tektronix plotting well, add graphics cursor position
                    223:  * to get correct position for characters on the screen.
                    224:  * screen->border is taken into account in screen->cur[XY]
                    225:  */
                    226: 
                    227: #define TCursorX(screen) (screen->cur_X)
                    228: #define TCursorY(screen) (screen->cur_Y - screen->f_height)
                    229: 
                    230: int    ANSInormal();
                    231: int    ANSIparse();
                    232: int    ANSIstring();

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.