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();
Defined struct's
Defined typedef's
Tabs
defined in line
164; used 6 times
Defined macros
APC
defined in line
37; used 3 times
BOLD
defined in line
192; used 7 times
CAN
defined in line
24; used 1 times
CHAR
defined in line
140; used 8 times
CSI
defined in line
33; used 9 times
DCS
defined in line
31; used 3 times
DEL
defined in line
28; used 2 times
ESC
defined in line
26; used 6 times
FF
defined in line
21; used 1 times
INQ
defined in line
20; used 1 times
LS0
defined in line
23;
never used
LS1
defined in line
22;
never used
META
defined in line
149;
never used
OLDID
defined in line
32;
never used
OSC
defined in line
35; used 3 times
PM
defined in line
36; used 3 times
RDEL
defined in line
38; used 1 times
SS2
defined in line
29;
never used
SS3
defined in line
30; used 3 times
ST
defined in line
34;
never used
SUB
defined in line
25; used 2 times
US
defined in line
27; used 1 times
Usage of this include