home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / PROCINST.ZIP / HELP.ZIP / WINDOW.H < prev   
Encoding:
C/C++ Source or Header  |  1990-08-07  |  16.3 KB  |  553 lines

  1. /* ==( hdr/window.h )== */
  2. /* ----------------------------------------------- */
  3. /* Pro-C - Copyright (C) 1988, 1989 Vestronix Inc. */
  4. /* Modification to this source is not supported    */
  5. /* by Vestronix Inc.                               */
  6. /*            All Rights Reserved                  */
  7. /* ----------------------------------------------- */
  8. /* Written   Geo  26-Aug-88                        */
  9. /* Modified  Geo  18-Jul-90  See comments below    */
  10. /* ----------------------------------------------- */
  11. /* %W%  (%H% %T%) */
  12.  
  13. /*
  14.  *  Modifications
  15.  *
  16.  *  18-Jul-90  Geo - Overhauled
  17.  *  24-Apr-90  Geo - Merged crtio.h,colour.h and mouse.h
  18.  *  13-Dec-89  Geo - New constants and fields
  19.  *  25-Oct-89  Geo - 1.32 Merge
  20.  *
  21.  *
  22. */
  23. # ifndef _H_WINDOW /* Guard against multiple includes */
  24.  
  25. /* Auto low-level curses selection */
  26. # ifdef UNIX
  27. #  ifndef TERMCAP
  28. #   ifndef TERMINFO
  29. #   define TERMINFO
  30. #   endif
  31. #  endif
  32. # endif
  33.  
  34. /* Auto DEBUG Section */
  35. # if defined(DEBUG) || defined(DEBUGI)
  36. #  ifndef WDEBUG
  37. #  define WDEBUG
  38. #  endif
  39. #  ifdef DEBUGI
  40. #   ifndef WDEBUGI
  41. #   define WDEBUGI
  42. #   endif
  43. #  endif
  44. # endif
  45.  
  46. /* Physical constants */
  47. # define W_PHY_WIDTH  150
  48. # define W_PHY_HEIGHT 60
  49. /* Actual space considerations */
  50. # define W_PHY_WIDTHB  (W_PHY_WIDTH * 2)
  51. # define W_PHY_HEIGHTB W_PHY_HEIGHT
  52.  
  53. # define WNULL    (struct window_rec *)0
  54.  
  55. /* Window structure */
  56. struct xwinsize
  57. {
  58.     int row;    /* Start row of window, 0 - 24 */
  59.     int col;    /* Start col of window, 0 - 79 */
  60.     int height;    /* Height of window */
  61.     int width2;    /* Width of window x2 */
  62. };
  63.  
  64. /* Flags */
  65. # define W_NEW    0x01    /* New window - draw it */
  66. # define W_OLD    0x02    /* Old window - delete it */
  67. # define W_MSK    0x03    /* Mask for old and new */
  68. # define W_DUP    0x04    /* Duplicated memory - don't free it */
  69. # define W_ACT    0x08    /* Window under active consideration */
  70.  
  71. /* Type fields in window header */
  72. # define WT_NORMAL   0 /* Normal window */
  73. # define WT_STATUS   1 /* Status status */
  74. # define WT_V_SCROLL 2 /* Vertical scroll bar */
  75. # define WT_H_SCROLL 3 /* Horizontal scroll bar */
  76.  
  77. /* Utility flags used by opt_w */
  78. # define WO_SHADE    1  /* Shading on */
  79. # define WO_OTHER    2  /* Other   on */
  80.  
  81. /* Bit fields used on snowwait */
  82. # define W_HORIZ       0x01    /* Wait for horizontal retrace */
  83. # define W_VERT        0x02    /* Wait for vertical retrace, mv_w() */
  84.  
  85. /* Replacement for on create */
  86. # define W_NEWIN (winptr->flags & W_NEW)
  87.  
  88. /* Faster update to window buffers : MUST call poke_w first, see disp_w() */
  89. # define ADDPOKE(attr,ch) *++sysbase=(char)(ch),*++sysbase=(char)(attr)
  90.  
  91. /* Hdr block size used within alloc */
  92. # define W_HDRSZ (sizeof(struct window_rec) - sizeof(char *))
  93.  
  94. struct window_rec
  95. {
  96.     /*
  97.      * Doubly linked list
  98.      * - screens are built from scratch
  99.     */
  100.     struct window_rec *next;
  101.     struct window_rec *prev;
  102.     struct window_rec *w_status;     /* Status chain */
  103.  
  104.     /* Sizes */
  105.     struct xwinsize wabs;    /* Absolute window info, for writing */
  106.     struct xwinsize wrel;    /* Relative window info, for display */
  107.  
  108.     int *handle;             /* pointer to handle */
  109.  
  110.     int lplb;                /* Line currently buffered */
  111.     int size;
  112.  
  113.     /* Flags */
  114.     /* values will increase so keep as 8bit bytes */
  115.     unsigned char flags;     /* Normal window flags */
  116.     unsigned char uflags;    /* Utility flags */
  117.  
  118.     unsigned char wtype;     /* Window type */
  119.     unsigned char wnum;      /* Debug to see change of windows don't use */
  120.  
  121.     char w_ptr[sizeof(char *)];  /* label for window buffer : memory overlaid */
  122. };
  123.  
  124. /* EXTERNs */
  125. /* Data in win/mip/wdata.c */
  126. extern int w_nrows;
  127. extern int w_ncols;
  128. extern struct window_rec *winptr;
  129. extern int boxset;
  130. extern int ichar;
  131.  
  132. /*
  133.  * Colour things
  134. */
  135. extern char   *colournames[];
  136. extern char   *strattr[];
  137. extern char   *strpattr[];
  138. extern char   *strsymbol[];
  139. extern unsigned char colour[];
  140.  
  141. /*
  142.  * Other Environment things
  143. */
  144. extern char  editorname[];
  145. extern short dbmnum;
  146. extern short compilernum;
  147. extern char  snowwait;
  148. extern int txt_compress;
  149. extern int genoptflags[];
  150. extern int  input_type;
  151.  
  152. extern char choice_prompt[];
  153. extern char scroll_prompt[];
  154. extern char rescan_prompt[];
  155. extern char invoke_prompt[];
  156. extern char cont_prompt[];
  157. extern char res_prompt[];
  158. extern char move_prompt[];
  159. extern char accept_prompt[];
  160. extern char cancel_prompt[];
  161. extern char exit_prompt[];
  162. extern char help_prompt[];
  163. extern char menu_prompt[];
  164. extern char no_prompt[];
  165. extern char ok_prompt[];
  166. extern char popup_prompt[];
  167. extern char select_prompt[];
  168. extern char toggle_prompt[];
  169. extern char yes_prompt[];
  170.  
  171. extern char proc_root[];            /* directory where PRO-C is loaded */
  172. extern char exe_dir[];                /* directory to put executables in */
  173. extern char menu_dir[];            /* directory to put menus in       */
  174. extern char record_dir[];            /* directory to put records in     */
  175. extern char report_dir[];            /* directory to put reports in     */
  176. extern char screen_dir[];            /* directory to put screens in     */
  177. extern char source_dir[];            /* directory to put C source in    */
  178. extern char batch_dir[];            /* directory to put batches in     */
  179.  
  180.  
  181. /* Using fill_w instead of clrbox_w */
  182. # define clrbox_w(r,c,a,h,w) fill_w(r,c,a,h,w,' ')
  183.  
  184. /* --------------------- */
  185. /* --- start crtio.h --- */
  186. /* --------------------- */
  187. # define BW    0   /* Mono   */
  188. # define MONO  0   /* Mono   */
  189. # define CGA   1   /* Colour */
  190. # define EGA   1   /* Colour */
  191.  
  192. # define GRAPHIC     16
  193.  
  194. # define NORMAL       1
  195. # define REVVID       2
  196. # define UNDERLINED   3
  197. # define BLINK        4
  198. # define BOLD         5
  199. # define REVVIDBLINK  6
  200. # define BOLDUNDER    7
  201. # define BOLDBLINK    8
  202. # define USRCOL1      9
  203. # define USRCOL2     10
  204. # define USRCOL3     11
  205. # define USRCOL4     12
  206. # define USRCOL5     13
  207. # define USRCOL6     14
  208. # define USRCOL7     15
  209.  
  210. /*
  211.  * Key Constants
  212.  * Totally new key constants
  213.  * this list must match _keystr in win/mip/keytab.c
  214.  * exactly as defines are used as indexes
  215. */
  216. # define _K_Base(n)  (256 + n)
  217.  
  218. /* Key definitions */
  219. # define K_CR      _K_Base(1)
  220. # define K_TAB     _K_Base(2)
  221. # define K_ESC     _K_Base(3)
  222. # define K_BS      _K_Base(4)
  223. # define K_BTAB    _K_Base(5)
  224.  
  225. /* Arrow Keys */
  226. # define K_LEFT    _K_Base(6)
  227. # define K_RIGHT   _K_Base(7)
  228. # define K_UP      _K_Base(8)
  229. # define K_DOWN    _K_Base(9)
  230.  
  231. /* Paging keys */
  232. # define K_INS     _K_Base(10)
  233. # define K_DEL     _K_Base(11)
  234. # define K_HOME    _K_Base(12)
  235. # define K_END     _K_Base(13)
  236. # define K_PGUP    _K_Base(14)
  237. # define K_PGDN    _K_Base(15)
  238.  
  239. /* Function Keys */
  240. # define K_F1      _K_Base(16)
  241. # define K_F2      _K_Base(17)
  242. # define K_F3      _K_Base(18)
  243. # define K_F4      _K_Base(19)
  244. # define K_F5      _K_Base(20)
  245. # define K_F6      _K_Base(21)
  246. # define K_F7      _K_Base(22)
  247. # define K_F8      _K_Base(23)
  248. # define K_F9      _K_Base(24)
  249. # define K_F10     _K_Base(25)
  250.  
  251. # define K_F11     _K_Base(26)
  252. # define K_F12     _K_Base(27)
  253. # define K_F13     _K_Base(28)
  254. # define K_F14     _K_Base(29)
  255. # define K_F15     _K_Base(30)
  256. # define K_F16     _K_Base(31)
  257. # define K_F17     _K_Base(32)
  258. # define K_F18     _K_Base(33)
  259. # define K_F19     _K_Base(34)
  260. # define K_F20     _K_Base(35)
  261.  
  262. # define K_ALTF1   _K_Base(36)
  263. # define K_ALTF2   _K_Base(37)
  264. # define K_ALTF3   _K_Base(38)
  265. # define K_ALTF4   _K_Base(39)
  266. # define K_ALTF5   _K_Base(40)
  267. # define K_ALTF6   _K_Base(41)
  268. # define K_ALTF7   _K_Base(42)
  269. # define K_ALTF8   _K_Base(43)
  270. # define K_ALTF9   _K_Base(44)
  271. # define K_ALTF10  _K_Base(45)
  272.  
  273. # define K_CTRLF1  _K_Base(46)
  274. # define K_CTRLF2  _K_Base(47)
  275. # define K_CTRLF3  _K_Base(48)
  276. # define K_CTRLF4  _K_Base(49)
  277. # define K_CTRLF5  _K_Base(50)
  278. # define K_CTRLF6  _K_Base(51)
  279. # define K_CTRLF7  _K_Base(52)
  280. # define K_CTRLF8  _K_Base(53)
  281. # define K_CTRLF9  _K_Base(54)
  282. # define K_CTRLF10 _K_Base(55)
  283.  
  284. /* extended keys */    
  285. # define K_ALTA    _K_Base(56)
  286. # define K_ALTB    _K_Base(57)
  287. # define K_ALTC    _K_Base(58)
  288. # define K_ALTD    _K_Base(59)
  289. # define K_ALTE    _K_Base(60)
  290. # define K_ALTF    _K_Base(61)
  291. # define K_ALTG    _K_Base(62)
  292. # define K_ALTH    _K_Base(63)
  293. # define K_ALTI    _K_Base(64)
  294. # define K_ALTJ    _K_Base(65)
  295. # define K_ALTK    _K_Base(66)
  296. # define K_ALTL    _K_Base(67)
  297. # define K_ALTM    _K_Base(68)
  298. # define K_ALTN    _K_Base(69)
  299. # define K_ALTO    _K_Base(70)
  300. # define K_ALTP    _K_Base(71)
  301. # define K_ALTQ    _K_Base(72)
  302. # define K_ALTR    _K_Base(73)
  303. # define K_ALTS    _K_Base(74)
  304. # define K_ALTT    _K_Base(75)
  305. # define K_ALTU    _K_Base(76)
  306. # define K_ALTV    _K_Base(77)
  307. # define K_ALTW    _K_Base(78)
  308. # define K_ALTX    _K_Base(79)
  309. # define K_ALTY    _K_Base(80)
  310. # define K_ALTZ    _K_Base(81)
  311.  
  312. # define K_ALT1    _K_Base(82)
  313. # define K_ALT2    _K_Base(83)
  314. # define K_ALT3    _K_Base(84)
  315. # define K_ALT4    _K_Base(85)
  316. # define K_ALT5    _K_Base(86)
  317. # define K_ALT6    _K_Base(87)
  318. # define K_ALT7    _K_Base(88)
  319. # define K_ALT8    _K_Base(89)
  320. # define K_ALT9    _K_Base(90)
  321. # define K_ALT0    _K_Base(91)
  322.  
  323. # define K_ALTMINUS  _K_Base(92)
  324. # define K_ALTEQ     _K_Base(93)
  325. # define K_CTRLLEFT  _K_Base(94)
  326. # define K_CTRLRIGHT _K_Base(95)
  327. # define K_CTRLPRTSC _K_Base(96)
  328. # define K_CTRLEND   _K_Base(97)
  329. # define K_CTRLHOME  _K_Base(98)
  330. # define K_CTRLPGDN  _K_Base(99)
  331. # define K_CTRLPGUP  _K_Base(100)
  332.  
  333. /* Control ascii - great for Unix */
  334. # define K_CTRLA _K_Base(101)
  335. # define K_CTRLB _K_Base(102)
  336. # define K_CTRLC _K_Base(103)
  337. # define K_CTRLD _K_Base(104)
  338. # define K_CTRLE _K_Base(105)
  339. # define K_CTRLF _K_Base(106)
  340. # define K_CTRLG _K_Base(107)
  341. # define K_CTRLH _K_Base(108)
  342. # define K_CTRLI _K_Base(109)
  343. # define K_CTRLJ _K_Base(110)
  344. # define K_CTRLK _K_Base(111)
  345. # define K_CTRLL _K_Base(112)
  346. # define K_CTRLM _K_Base(113)
  347. # define K_CTRLN _K_Base(114)
  348. # define K_CTRLO _K_Base(115)
  349. # define K_CTRLP _K_Base(116)
  350. # define K_CTRLQ _K_Base(117)
  351. # define K_CTRLR _K_Base(118)
  352. # define K_CTRLS _K_Base(119)
  353. # define K_CTRLT _K_Base(120)
  354. # define K_CTRLU _K_Base(121)
  355. # define K_CTRLV _K_Base(122)
  356. # define K_CTRLW _K_Base(123)
  357. # define K_CTRLX _K_Base(124)
  358. # define K_CTRLY _K_Base(125)
  359. # define K_CTRLZ _K_Base(126)
  360.  
  361. /* Cannot remap these keys but keep here */
  362. /* Also there are no scancodes for these */
  363. /* Note that they are relative to the last key above */
  364. # define M_PRESS   (K_CTRLZ + 1)
  365. # define M_ESC     (M_PRESS + 1)
  366. # define M_RELEASE (M_ESC + 1)
  367. # define M_MENU    (M_RELEASE + 1)
  368. # define K_NULL    (M_MENU + 1) /* Last key - please update if changed */
  369.  
  370.  
  371. /* Size of ttykeys */
  372. # define MAX_TTYKEYS 256 /* Should be big enough */
  373.  
  374. /* Happy keys ! */
  375. # define K_HELP   K_F1
  376.  
  377. /*
  378.  *   Define the PRINTER Library
  379. */
  380. #define  FF                '\014'    /* Form Feed    */
  381. #define  LF                '\012'    /* Line Feed    */
  382.  
  383. #define  TOP               1        /* Screen Based */
  384. #define  EOP               23        /* Reports Only */
  385.  
  386. /* Graphic boxes */
  387. # define BOXCHCNT 11
  388.  
  389. /* Default references */
  390. # define URIGHT    1
  391. # define ULEFT        2
  392. # define LLEFT        3
  393. # define LRIGHT    4
  394. # define LEFTT        5
  395. # define RIGHTT    6
  396. # define HORIZ        7
  397. # define VERT        8
  398. # define CROSST    9
  399. # define BOTTY        10
  400. # define TOPT        11
  401.  
  402. /* Generated code references */
  403. # define BURIGHT(n) (URIGHT + ((n) * BOXCHCNT))
  404. # define BULEFT(n)  (ULEFT  + ((n) * BOXCHCNT))
  405. # define BLLEFT(n)  (LLEFT  + ((n) * BOXCHCNT))
  406. # define BLRIGHT(n) (LRIGHT + ((n) * BOXCHCNT))
  407. # define BLEFTT(n)  (LEFTT  + ((n) * BOXCHCNT))
  408. # define BRIGHTT(n) (RIGHTT + ((n) * BOXCHCNT))
  409. # define BHORIZ(n)  (HORIZ  + ((n) * BOXCHCNT))
  410. # define BVERT(n)   (VERT   + ((n) * BOXCHCNT))
  411. # define BCROSST(n) (CROSST + ((n) * BOXCHCNT))
  412. # define BBOTTY(n)  (BOTTY  + ((n) * BOXCHCNT))
  413. # define BTOPT(n)   (TOPT   + ((n) * BOXCHCNT))
  414.  
  415.  
  416. /* Function prototypes */
  417. PROTO (char *gets_w, (int, int, char *));
  418. PROTO (char *keytext, (short));
  419. PROTO (int CDECL bdisp_w, (int ,int ,int ,int ,char *, ...));
  420. PROTO (int CDECL center_w, (int, int, int, int, char *, ...));
  421. PROTO (int CDECL disp_w, (int ,int ,int , char *, ...));
  422. PROTO (int CDECL input_w, (int, int, int, int, int, char *, char *, int, ...));
  423. PROTO (int CDECL yn_w, (int, int, int, int, int, int, ...));
  424. PROTO (int coords_w, (int *, int *, int *, int *, int *));
  425. PROTO (int cursor, (int));
  426. PROTO (int fdisp_w, (int ,int ,int ,int ,char *));
  427. PROTO (int get_term, (void));
  428. PROTO (int inchar, (void));
  429. PROTO (int inchar_hit, (void));
  430. PROTO (int inchar_nowait, (void));
  431. PROTO (int ndisp_w, (int ,int ,int ,int ,char *));
  432. PROTO (int opt_w, (int *, int));
  433. PROTO (int sel_w, (int *));
  434. PROTO (int top_w, (int *));
  435. PROTO (int xdisp_w, (int, int, int, char *));
  436. PROTO (struct window_rec *find_w, (int *));
  437. PROTO (struct window_rec *new_hdr_w, (int, int, int, int, int));
  438. PROTO (void CDECL keys_w, (int, ...));
  439. PROTO (void _del_w, (struct window_rec *));
  440. PROTO (void _wshutdown, (void));
  441. PROTO (void _wstartup, (void));
  442. PROTO (void abs_w, (int *, int *, int *, int *));
  443. PROTO (void border_w, (int, int));
  444. PROTO (void box_w, (int, int, int, int, int));
  445. PROTO (void create_w, (int, int, int, int));
  446. PROTO (void delete_w, (void));
  447. PROTO (void dup_w, (void));
  448. PROTO (void end_w, (int));
  449. PROTO (void fill_w, (int, int, int, int, int, int));
  450. PROTO (void flushcurs, (void));
  451. PROTO (void flushln, (void));
  452. PROTO (void flushposn, (void));
  453. PROTO (void flushscr, (void));
  454. PROTO (void init_w, (int, int));
  455. PROTO (void keywait, (int));
  456. PROTO (void loadvect, (struct window_rec *));
  457. PROTO (void moveto, (int, int));
  458. PROTO (void moveto_w, (int, int));
  459. PROTO (void mv_w, (int, int));
  460. PROTO (void ncreate_w, (int, int, int, int, int *));
  461. PROTO (void poke_w, (int, int, int, int));
  462. PROTO (void raw_off, (void));
  463. PROTO (void raw_on, (void));
  464. PROTO (void redraws, (void));
  465. PROTO (void rephoriz_w, (int ,int ,int ,int ,int ));
  466. PROTO (void repvert_w, (int ,int ,int ,int ,int ));
  467. PROTO (void resetscr, (void));
  468. PROTO (void scroll_w, (int *, int, int));
  469. PROTO (void set_w, (int, int));
  470. PROTO (void subpokel, (int, int, int));
  471. PROTO (void underln_w, (int ,int ,int ,int ));
  472. PROTO (void unget_inchar, (short));
  473. PROTO (void upperln_w, (int, int, int, int));
  474.  
  475. /* Mouse Section */
  476. /* Mouse can be switch in or out by -DMOUSE */
  477. # ifdef MOUSE
  478.  
  479. # define LEFT_BUTTON  0x01
  480. # define RIGHT_BUTTON 0x02
  481. # define M_UP         0
  482. # define M_DEPRESSED  1
  483. # define M_LEFT       0
  484. # define M_RIGHT      1
  485.  
  486. extern int mouse_present;
  487. extern int mouse_num_buttons;
  488. extern int mouse_up_down;
  489. extern int mouse_level;
  490. extern int mouse_ver_movement;
  491. extern int mouse_hor_movement;
  492. extern int mouse_click_count;
  493. extern int mouse_num_objects;
  494. extern int mouse_limit;
  495. extern int mouse_reset_pos;
  496. extern int lefty_mouse;
  497. extern unsigned int mouse_x;
  498. extern unsigned int mouse_y;
  499. extern unsigned int mouse_row;
  500. extern unsigned int mouse_col;
  501. extern unsigned int mouse_x_divisor;
  502. extern unsigned int mouse_y_divisor;
  503.  
  504. struct _mouse_object
  505. {
  506.     int level;
  507.     int key;
  508.     int index;
  509.     unsigned char srow;
  510.     unsigned char scol;
  511.     unsigned char erow;
  512.     unsigned char ecol;
  513.     char *name; /* name of the object */
  514.     struct _mouse_object *next_object;
  515. };
  516.  
  517. extern struct _mouse_object *mouse_object;
  518.  
  519. /* 
  520.  * mouse routines
  521. */
  522. PROTO (int mouse_add_object, (unsigned char, unsigned char, unsigned char, unsigned char, int, int, char *));
  523. PROTO (int mouse_button_down, (int));
  524. PROTO (int mouse_check_bounds, (void));
  525. PROTO (int mouse_click, (int *, int));
  526. PROTO (int mouse_hit, (void));
  527. PROTO (int mouse_position, (unsigned int *, unsigned int *));
  528. PROTO (int mouse_waitkey, (void));
  529. PROTO (short check_mouse, (void));
  530. PROTO (void mouse_init, (void));
  531. PROTO (void mouse_end, (void));
  532. PROTO (void mouse_button_info, (int, unsigned int *, unsigned int *));
  533. PROTO (void mouse_button_release, (int, unsigned int *, unsigned int *));
  534. PROTO (void mouse_cursor, (int));
  535. PROTO (void mouse_delete_keys, (void));
  536. PROTO (void mouse_delete_notkeys, (void));
  537. PROTO (void mouse_delete_level, (int));
  538. PROTO (void mouse_get_movement, (unsigned int *, unsigned int *));
  539. PROTO (void mouse_limit_level, (int));
  540. PROTO (void mouse_move_cursor, (int *, int *));
  541. PROTO (void mouse_move_object, (int, int, int, int, char *));
  542. PROTO (void mouse_movement, (int, int));
  543. PROTO (void mouse_set_position, (unsigned int, unsigned int));
  544. PROTO (void mouse_set_text_cursor, (int, int, int));
  545. PROTO (void mouse_set_xbounds, (unsigned int, unsigned int));
  546. PROTO (void mouse_set_ybounds, (unsigned int, unsigned int));
  547. PROTO (void mouse_wait_release, (int));
  548. # endif /* MOUSE */
  549.  
  550. # define _H_WINDOW
  551.  
  552. # endif /* _H_WINDOW */
  553.