6811333 Remove prom_printf() message in emlxs driver
[opensolaris.git] / usr / src / lib / libcurses / screen / curshdr.h
blob46a23414f44f6c647acb8672a2730e11b7676b90
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
24 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
25 * Use is subject to license terms.
28 /* Copyright (c) 1988 AT&T */
29 /* All Rights Reserved */
32 * University Copyright- Copyright (c) 1982, 1986, 1988
33 * The Regents of the University of California
34 * All Rights Reserved
36 * University Acknowledgment- Portions of this document are derived from
37 * software developed by the University of California, Berkeley, and its
38 * contributors.
41 #ifndef _CURSHDR_H
42 #define _CURSHDR_H
44 #pragma ident "%Z%%M% %I% %E% SMI"
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
50 #define _NOHASH (-1) /* if the hash value is unknown */
51 #define _REDRAW (-2) /* if line need redrawn */
52 #define _BLANK (-3) /* if line is blank */
53 #define _THASH (123) /* base hash if clash with other hashes */
54 #define _KEY (01)
55 #define _MACRO (02)
57 #define _INPUTPENDING cur_term->_iwait
58 #define _PUTS(x, y) (void) tputs(x, y, _outch)
59 #define _VIDS(na, oa) (vidupdate((na), (oa), _outch), curscr->_attrs = (na))
60 #define _ONINSERT() (_PUTS(enter_insert_mode, 1), SP->phys_irm = TRUE)
61 #define _OFFINSERT() (_PUTS(exit_insert_mode, 1), SP->phys_irm = FALSE)
62 #define _STRNOTEQ(a, b) (a == NULL ? (b != NULL) : \
63 (b == NULL ? 1 : strcmp(a, b)))
66 * IC and IL overheads and costs should be set to this
67 * value if the corresponding feature is missing
70 #define LARGECOST 500
72 typedef struct
74 short icfixed; /* Insert char fixed overhead */
75 short dcfixed; /* Delete char fixed overhead */
76 short Insert_character;
77 short Delete_character;
78 short Cursor_home;
79 short Cursor_to_ll;
80 short Cursor_left;
81 short Cursor_right;
82 short Cursor_down;
83 short Cursor_up;
84 short Carriage_return;
85 short Tab;
86 short Back_tab;
87 short Clr_eol;
88 short Clr_bol;
89 short Parm_ich;
90 short Parm_dch;
91 short Parm_left_cursor;
92 short Parm_up_cursor;
93 short Parm_down_cursor;
94 short Parm_right_cursor;
95 short Cursor_address;
96 short Row_address;
97 } COSTS;
99 #define _COST(field) (SP->term_costs.field)
101 /* Soft label keys */
103 #define LABMAX 16 /* max number of labels allowed */
104 #define LABLEN 8 /* max length of each label */
106 typedef struct
108 WINDOW *_win; /* the window to display labels */
109 char _ldis[LABMAX][LABLEN+1]; /* labels suitable to display */
110 char _lval[LABMAX][LABLEN+1]; /* labels' true values */
111 short _labx[LABMAX]; /* where to display labels */
112 short _num; /* actual number of labels */
113 short _len; /* real length of labels */
114 bool _changed; /* TRUE if some labels changed */
115 bool _lch[LABMAX]; /* change status */
116 } SLK_MAP;
118 struct screen
120 unsigned fl_echoit : 1; /* in software echo mode */
121 unsigned fl_endwin : 2; /* has called endwin */
122 unsigned fl_meta : 1; /* in meta mode */
123 unsigned fl_nonl : 1; /* do not xlate input \r-> \n */
124 unsigned yesidln : 1; /* has idln capabilities */
125 unsigned dmode : 1; /* Terminal has delete mode */
126 unsigned imode : 1; /* Terminal has insert mode */
127 unsigned ichok : 1; /* Terminal can insert characters */
128 unsigned dchok : 1; /* Terminal can delete characters */
129 unsigned sid_equal : 1; /* enter insert and delete mode equal */
130 unsigned eid_equal : 1; /* exit insert and delete mode equal */
131 unsigned phys_irm : 1; /* in insert mode or not */
132 long baud; /* baud rate of this tty */
133 short kp_state; /* 1 iff keypad is on, else 0 */
134 short Yabove; /* How many lines are above stdscr */
135 short lsize; /* How many lines decided by newscreen */
136 short csize; /* How many columns decided by newscreen */
137 short tsize; /* How big is a tab decided by newscreen */
138 WINDOW *std_scr; /* primary output screen */
139 WINDOW *cur_scr; /* what's physically on the screen */
140 WINDOW *virt_scr; /* what's virtually on the screen */
141 int *cur_hash; /* hash table of curscr */
142 int *virt_hash; /* hash table of virtscr */
143 TERMINAL *tcap; /* TERMINFO info */
144 FILE *term_file; /* File to write on for output. */
145 FILE *input_file; /* Where to get keyboard input */
146 SLK_MAP *slk; /* Soft label information */
147 char **_mks; /* marks, only used with xhp terminals */
148 COSTS term_costs; /* costs of various capabilities */
149 SGTTY save_tty_buf; /* saved termio state of this tty */
150 #ifdef SYSV
151 SGTTYS save_tty_bufs; /* saved termios state of this tty */
152 #endif
153 char **_color_mks; /* marks, only used with color xhp terminals */
154 unsigned long _trap_mbe; /* trap these mouse button events */
155 unsigned long _map_mbe_to_key; /* map selected buttons on top of */
156 /* slk's to function keys */
159 extern SCREEN *SP;
160 extern WINDOW *_virtscr;
162 #ifdef DEBUG
163 #ifndef outf
164 extern FILE *outf;
165 #endif /* outf */
166 #endif /* DEBUG */
168 extern short cswidth[], /* byte size of multi-byte chars */
169 _curs_scrwidth[]; /* display size */
170 extern short _csmax,
171 _scrmax;
172 extern bool _mbtrue;
174 #define MBIT 0200 /* indicator for a multi-byte char */
175 #define CBIT 002000000000 /* indicator for a continuing col */
176 #define RBYTE(x) ((x) & 0377)
177 #define LBYTE(x) (((x) >> 8) & 0177)
178 #define ISMBIT(x) ((x) & MBIT)
179 #define SETMBIT(x) ((x) |= MBIT)
180 #define CLRMBIT(x) ((x) &= ~MBIT)
181 #define ISCBIT(x) ((x) & CBIT)
182 #define SETCBIT(x) ((x) |= CBIT)
183 #define CLRCBIT(x) ((x) &= ~CBIT)
184 #define TYPE(x) ((x) == SS2 ? 1 : (x) == SS3 ? 2 : ISMBIT(x) ? 0 : 3)
185 #define TRIM 037777777777 /* 0xFFFFFFFF */
187 /* terminfo magic number */
188 #define MAGNUM 0432
190 /* curses screen dump magic number */
191 #define SVR2_DUMP_MAGIC_NUMBER 0433
192 #define SVR3_DUMP_MAGIC_NUMBER 0434
194 /* Getting the baud rate is different on the two systems. */
196 #ifdef SYSV
197 #define _BR(x) (x.c_cflag & CBAUD)
198 #define _BRS(x) (cfgetospeed(&x))
199 #include <values.h>
200 #else /* SYSV */
201 #define BITSPERBYTE 8
202 #define MAXINT 32767
203 #define _BR(x) (x.sg_ispeed)
204 #endif /* SYSV */
206 #define _BLNKCHAR ' '
207 #define _CTRL(c) (c | 0100)
208 #define _ATTR(c) ((c) & A_ATTRIBUTES)
209 #define _CHAR(c) ((c) & A_CHARTEXT)
212 * combine CHAR par of the character with the attributes of the window.
213 * Two points: 1) If character is blank, usebackground instead
214 * 2) If character contains color, delete color from
215 * window attribute.
218 #define _WCHAR(w, c) (_CHAR((c) == _BLNKCHAR ? (w)->_bkgd : (c))| \
219 (((c) & A_COLOR) ? ((w)->_attrs & ~A_COLOR) : \
220 ((w)->_attrs)))
222 #define _DARKCHAR(c) ((c) != _BLNKCHAR)
223 #define _UNCTRL(c) ((c) ^ 0100)
225 /* blank lines info of curscr */
226 #define _BEGNS curscr->_firstch
227 #define _ENDNS curscr->_lastch
229 /* hash tables */
230 #define _CURHASH SP->cur_hash
231 #define _VIRTHASH SP->virt_hash
233 /* top/bot line changed */
234 #define _VIRTTOP _virtscr->_parx
235 #define _VIRTBOT _virtscr->_pary
237 /* video marks */
238 #define _MARKS SP->_mks
239 #define _COLOR_MARKS SP->_color_mks
241 #define _NUMELEMENTS(x) (sizeof (x)/sizeof (x[0]))
243 #ifdef _VR3_COMPAT_CODE
245 * #define _TO_OCHTYPE(x) ((_ochtype)(((x&A_ATTRIBUTES)>>9)| \
246 * (x&0x0000007FUL)))
248 #define _TO_OCHTYPE(x) ((_ochtype)(((x&A_ATTRIBUTES)>>9)|(x&0177)))
249 #define _FROM_OCHTYPE(x) ((chtype) ((x&0177) | ((x&0177600)<<9)))
250 extern void (*_y16update)(WINDOW *, int, int, int, int);
251 #endif /* _VR3_COMPAT_CODE */
253 /* functions for screen updates */
255 extern int (*_setidln)(void);
256 extern int (*_useidln)(void);
257 extern int (*_quick_ptr)(WINDOW *, chtype);
258 extern int (_quick_echo)(WINDOW *, chtype);
260 /* min/max functions */
262 #define _MIN(a, b) ((a) < (b) ? (a) : (b))
263 #define _MAX(a, b) ((a) > (b) ? (a) : (b))
265 extern int (*_do_slk_ref)(void);
266 extern int (*_do_slk_tch)(void);
267 extern int (*_do_slk_noref)(void);
268 extern int _image(WINDOW *);
269 extern int _outch(char);
270 extern int _outwch(chtype);
271 extern int _chkinput(void);
272 extern int _curs_mbtowc(wchar_t *, const char *, size_t);
273 extern int _curs_wctomb(char *, wchar_t);
274 extern int _delay(int, int (*)(char));
275 extern int _mbaddch(WINDOW *, chtype, chtype);
276 extern int _mbclrch(WINDOW *, int, int);
277 extern int _mbinsshift(WINDOW *, int), _mbvalid(WINDOW *);
278 extern int _padjust(WINDOW *, int, int, int, int, int, int);
279 extern int _prefresh(int (*)(WINDOW *), WINDOW *, int, int, int,
280 int, int, int);
281 extern int _overlap(WINDOW *, WINDOW *, int);
282 extern int _scr_all(char *, int);
283 extern int _slk_update(void);
284 extern int _tcsearch(char *, short [], char *[], int, int);
285 extern int _vsscanf(const char *, const char *, __va_list);
286 extern int force_doupdate(void);
287 extern int init_acs(void);
288 extern int mbscrw(int);
289 extern int mbeucw(int);
290 extern int scr_ll_dump(FILE *);
291 extern int scr_reset(FILE *, int);
292 extern int setkeymap(void);
293 extern int ttimeout(int);
294 extern int wadjcurspos(WINDOW *);
295 extern int wcscrw(wchar_t);
296 extern int wmbmove(WINDOW *, int, int);
298 extern chtype tgetch(int);
300 extern WINDOW *_makenew(int, int, int, int);
302 extern void (*_slk_init)(void);
303 extern void (*_rip_init)(void);
304 extern void delkeymap(TERMINAL *);
305 extern void mbgetwidth(void);
306 extern void memSset(chtype *, chtype, int);
307 extern void _blast_keys(TERMINAL *);
308 extern void _init_costs(void);
309 extern void _init_HP_pair(short, short, short);
310 extern void _update_old_y_area(WINDOW *, int, int, int, int);
312 extern char *tparm_p0(char *);
313 extern char *tparm_p1(char *, long);
314 extern char *tparm_p2(char *, long, long);
315 extern char *tparm_p3(char *, long, long, long);
316 extern char *tparm_p4(char *, long, long, long, long);
317 extern char *tparm_p7(char *, long, long, long, long, long, long, long);
320 extern char *infotocap(char *, int *);
321 extern char *_strcode2byte(wchar_t *, char *, int);
322 extern char *wmbinch(WINDOW *, int, int);
324 #ifdef __cplusplus
326 #endif
328 #endif /* _CURSHDR_H */