/contrib/ee/new_curse.h

https://bitbucket.org/freebsd/freebsd-head/ · C++ Header · 260 lines · 206 code · 14 blank · 40 comment · 1 complexity · 53f5bf8ec2ff5b62b65dc55e44f89d8f MD5 · raw file

  1. /*
  2. | new_curse.h
  3. |
  4. | A subset of curses developed for use with ae.
  5. |
  6. | written by Hugh Mahon
  7. |
  8. | THIS MATERIAL IS PROVIDED "AS IS". THERE ARE
  9. | NO WARRANTIES OF ANY KIND WITH REGARD TO THIS
  10. | MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE
  11. | IMPLIED WARRANTIES OF MERCHANTABILITY AND
  12. | FITNESS FOR A PARTICULAR PURPOSE. Neither
  13. | Hewlett-Packard nor Hugh Mahon shall be liable
  14. | for errors contained herein, nor for
  15. | incidental or consequential damages in
  16. | connection with the furnishing, performance or
  17. | use of this material. Neither Hewlett-Packard
  18. | nor Hugh Mahon assumes any responsibility for
  19. | the use or reliability of this software or
  20. | documentation. This software and
  21. | documentation is totally UNSUPPORTED. There
  22. | is no support contract available. Hewlett-
  23. | Packard has done NO Quality Assurance on ANY
  24. | of the program or documentation. You may find
  25. | the quality of the materials inferior to
  26. | supported materials.
  27. |
  28. | This software is not a product of Hewlett-Packard, Co., or any
  29. | other company. No support is implied or offered with this software.
  30. | You've got the source, and you're on your own.
  31. |
  32. | This software may be distributed under the terms of Larry Wall's
  33. | Artistic license, a copy of which is included in this distribution.
  34. |
  35. | This notice must be included with this software and any derivatives.
  36. |
  37. | Copyright (c) 1986, 1987, 1988, 1991, 1995 Hugh Mahon
  38. | All are rights reserved.
  39. |
  40. */
  41. #include <stdio.h>
  42. #ifdef SYS5
  43. #include <termio.h>
  44. #else
  45. #include <sgtty.h>
  46. #include <fcntl.h>
  47. #endif
  48. #define KEY_BREAK 0401
  49. #define KEY_DOWN 0402
  50. #define KEY_UP 0403
  51. #define KEY_LEFT 0404
  52. #define KEY_RIGHT 0405
  53. #define KEY_HOME 0406
  54. #define KEY_BACKSPACE 0407
  55. #define KEY_F0 0410
  56. #define KEY_F(n) (KEY_F0+(n))
  57. #define KEY_DL 0510
  58. #define KEY_IL 0511
  59. #define KEY_DC 0512
  60. #define KEY_IC 0513
  61. #define KEY_EIC 0514
  62. #define KEY_CLEAR 0515
  63. #define KEY_EOS 0516
  64. #define KEY_EOL 0517
  65. #define KEY_SF 0520
  66. #define KEY_SR 0521
  67. #define KEY_NPAGE 0522
  68. #define KEY_PPAGE 0523
  69. #define KEY_STAB 0524
  70. #define KEY_CTAB 0525
  71. #define KEY_CATAB 0526
  72. #define KEY_ENTER 0527
  73. #define KEY_SRESET 0530
  74. #define KEY_RESET 0531
  75. #define KEY_PRINT 0532
  76. #define KEY_LL 0533
  77. #define KEY_A1 0534
  78. #define KEY_A3 0535
  79. #define KEY_B2 0536
  80. #define KEY_C1 0537
  81. #define KEY_C3 0540
  82. #define KEY_BTAB 0541
  83. #define KEY_BEG 0542
  84. #define KEY_CANCEL 0543
  85. #define KEY_CLOSE 0544
  86. #define KEY_COMMAND 0545
  87. #define KEY_COPY 0546
  88. #define KEY_CREATE 0547
  89. #define KEY_END 0550
  90. #define KEY_EXIT 0551
  91. #define KEY_FIND 0552
  92. #define KEY_HELP 0553
  93. #define KEY_MARK 0554
  94. #define KEY_MESSAGE 0555
  95. #define KEY_MOVE 0556
  96. #define KEY_NEXT 0557
  97. #define KEY_OPEN 0560
  98. #define KEY_OPTIONS 0561
  99. #define KEY_PREVIOUS 0562
  100. #define KEY_REDO 0563
  101. #define KEY_REFERENCE 0564
  102. #define KEY_REFRESH 0565
  103. #define KEY_REPLACE 0566
  104. #define KEY_RESTART 0567
  105. #define KEY_RESUME 0570
  106. #define KEY_SAVE 0571
  107. #define KEY_SBEG 0572
  108. #define KEY_SCANCEL 0573
  109. #define KEY_SCOMMAND 0574
  110. #define KEY_SCOPY 0575
  111. #define KEY_SCREATE 0576
  112. #define KEY_SDC 0577
  113. #define KEY_SDL 0600
  114. #define KEY_SELECT 0601
  115. #define KEY_SEND 0602
  116. #define KEY_SEOL 0603
  117. #define KEY_SEXIT 0604
  118. #define KEY_SFIND 0605
  119. #define KEY_SHELP 0606
  120. #define KEY_SHOME 0607
  121. #define KEY_SIC 0610
  122. #define KEY_SLEFT 0611
  123. #define KEY_SMESSAGE 0612
  124. #define KEY_SMOVE 0613
  125. #define KEY_SNEXT 0614
  126. #define KEY_SOPTIONS 0615
  127. #define KEY_SPREVIOUS 0616
  128. #define KEY_SPRINT 0617
  129. #define KEY_SREDO 0620
  130. #define KEY_SREPLACE 0621
  131. #define KEY_SRIGHT 0622
  132. #define KEY_SRSUME 0623
  133. #define KEY_SSAVE 0624
  134. #define KEY_SSUSPEND 0625
  135. #define KEY_SUNDO 0626
  136. #define KEY_SUSPEND 0627
  137. #define KEY_UNDO 0630
  138. #define TRUE 1
  139. #define FALSE 0
  140. #define A_STANDOUT 0001 /* standout mode */
  141. #define A_NC_BIG5 0x0100 /* Handle Chinese Big5 characters */
  142. #define SCROLL 1 /* text has been scrolled */
  143. #define CLEAR 2 /* window has been cleared */
  144. #define CHANGE 3 /* window has been changed */
  145. #define UP 1 /* direction of scroll */
  146. #define DOWN 2
  147. struct _line {
  148. struct _line *next_screen;
  149. struct _line *prev_screen;
  150. char *row;
  151. char *attributes;
  152. int last_char;
  153. int changed;
  154. int scroll;
  155. int number;
  156. };
  157. struct _line *top_of_win;
  158. typedef struct WIND {
  159. int SR; /* starting row */
  160. int SC; /* starting column */
  161. int LC; /* last column */
  162. int LX; /* last cursor column position */
  163. int LY; /* last cursor row position */
  164. int Attrib; /* attributes active in window */
  165. int Num_lines; /* number of lines */
  166. int Num_cols; /* number of columns */
  167. int scroll_up; /* number of lines moved */
  168. int scroll_down;
  169. int SCROLL_CLEAR; /* indicates that window has been scrolled or cleared */
  170. struct _line *first_line;
  171. struct _line **line_array;
  172. } WINDOW;
  173. extern WINDOW *curscr;
  174. extern WINDOW *stdscr;
  175. extern int LINES, COLS;
  176. #if defined(__STDC__) || defined(__cplusplus)
  177. #define P_(s) s
  178. #else
  179. #define P_(s) ()
  180. #endif
  181. extern void copy_window P_((WINDOW *origin, WINDOW *destination));
  182. extern void reinitscr P_((int));
  183. extern void initscr P_((void));
  184. extern int Get_int P_((void));
  185. extern int INFO_PARSE P_((void));
  186. extern int AtoI P_((void));
  187. extern void Key_Get P_((void));
  188. extern void keys_vt100 P_((void));
  189. extern struct _line *Screenalloc P_((int columns));
  190. extern WINDOW *newwin P_((int lines, int cols, int start_l, int start_c));
  191. extern int Operation P_((int Temp_Stack[], int place));
  192. extern void Info_Out P_((char *string, int p_list[], int place));
  193. extern void wmove P_((WINDOW *window, int row, int column));
  194. extern void clear_line P_((struct _line *line, int column, int cols));
  195. extern void werase P_((WINDOW *window));
  196. extern void wclrtoeol P_((WINDOW *window));
  197. extern void wrefresh P_((WINDOW *window));
  198. extern void touchwin P_((WINDOW *window));
  199. extern void wnoutrefresh P_((WINDOW *window));
  200. extern void flushinp P_((void));
  201. extern void ungetch P_((int c));
  202. extern int wgetch P_((WINDOW *window));
  203. extern void Clear P_((int));
  204. extern int Get_key P_((int first_char));
  205. extern void waddch P_((WINDOW *window, int c));
  206. extern void winsertln P_((WINDOW *window));
  207. extern void wdeleteln P_((WINDOW *window));
  208. extern void wclrtobot P_((WINDOW *window));
  209. extern void wstandout P_((WINDOW *window));
  210. extern void wstandend P_((WINDOW *window));
  211. extern void waddstr P_((WINDOW *window, char *string));
  212. extern void clearok P_((WINDOW *window, int flag));
  213. extern void echo P_((void));
  214. extern void noecho P_((void));
  215. extern void raw P_((void));
  216. extern void noraw P_((void));
  217. extern void nl P_((void));
  218. extern void nonl P_((void));
  219. extern void saveterm P_((void));
  220. extern void fixterm P_((void));
  221. extern void resetterm P_((void));
  222. extern void nodelay P_((WINDOW *window, int flag));
  223. extern void idlok P_((WINDOW *window, int flag));
  224. extern void keypad P_((WINDOW *window, int flag));
  225. extern void savetty P_((void));
  226. extern void resetty P_((void));
  227. extern void endwin P_((void));
  228. extern void delwin P_((WINDOW *window));
  229. extern void wprintw P_((WINDOW *window, const char* format, ...));
  230. extern void iout P_((WINDOW *window, int value));
  231. extern int Comp_line P_((struct _line *line1, struct _line *line2));
  232. extern struct _line *Insert_line P_((int row, int end_row, WINDOW *window));
  233. extern struct _line *Delete_line P_((int row, int end_row, WINDOW *window));
  234. extern void CLEAR_TO_EOL P_((WINDOW *window, int row, int column));
  235. extern int check_delete P_((WINDOW *window, int line, int offset, struct _line *pointer_new, struct _line *pointer_old));
  236. extern int check_insert P_((WINDOW *window, int line, int offset, struct _line *pointer_new, struct _line *pointer_old));
  237. extern void doupdate P_((void));
  238. extern void Position P_((WINDOW *window, int row, int col));
  239. extern void Char_del P_((char *line, char *attrib, int offset, int maxlen));
  240. extern void Char_ins P_((char *line, char *attrib, int newc, int newatt, int offset, int maxlen));
  241. extern void attribute_on P_((void));
  242. extern void attribute_off P_((void));
  243. extern void Char_out P_((int newc, int newatt, char *line, char *attrib, int offset));
  244. extern void nc_setattrib P_((int));
  245. extern void nc_clearattrib P_((int));
  246. #undef P_