Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2. ***************************************************************************
  3. * This file comprises part of PDCurses. PDCurses is Public Domain software.
  4. * You may use this code for whatever purposes you desire. This software
  5. * is provided AS IS with NO WARRANTY whatsoever.
  6. * Should this software be used in another application, an acknowledgement
  7. * that PDCurses code is used would be appreciated, but is not mandatory.
  8. *
  9. * Any changes which you make to this software which may improve or enhance
  10. * it, should be forwarded to the current maintainer for the benefit of
  11. * other users.
  12. *
  13. * The only restriction placed on this code is that no distribution of
  14. * modified PDCurses code be made under the PDCurses name, by anyone
  15. * other than the current maintainer.
  16. *
  17. * See the file maintain.er for details of the current maintainer.
  18. ***************************************************************************
  19. */
  20. /*
  21. $Id$
  22. */
  23. /*
  24. *
  25. *                          CURSPRIV.H
  26. *
  27. * Header file for definitions and declarations for the
  28. * PDCurses package. These definitions should not be generally
  29. * accessible to programmers, but are provided if the applications
  30. * programmer decides to make the decision in favor of speed on a
  31. * PC over portability.
  32. *
  33. * Revision History:
  34. * Frotz 1.5Beta 900714  Added many levels of compiler support.
  35. *                       Added mixed prototypes for all "internal" routines.
  36. *                       Removed all assembly language.  Added EGA/VGA
  37. *                       support.  Converted all #ifdef to #if in all
  38. *                       modules except CURSES.H and CURSPRIV.H.
  39. *                       Always include ASSERT.H.  Added support for an
  40. *                       external malloc(), calloc() and free().
  41. *                       Added support for FAST_VIDEO (direct-memory writes).
  42. *                       Added various memory model support (for FAST_VIDEO).
  43. *                       Added much of the December 1988 X/Open Curses
  44. *                       specification.
  45. * bl    1.3     881005  All modules lint-checked with MSC '-W3' and turbo'C'
  46. *                       '-w -w-pro' switches.
  47. * bl    1.2     881002  Support (by #ifdef UCMASM) for uppercase-only
  48. *                       assembly routine names. If UCMASM if defined,
  49. *                       all assembler names are #defined as upper case.
  50. *                       Not needed if you do "MASM /MX. Also missing
  51. *                       declaration of cursesscroll(). Fixes thanks to
  52. *                       N.D. Pentcheff
  53. * bl    1.1     880306  Add _chadd() for raw output routines.
  54. * bl    1.0     870515  Release.
  55. *
  56. */
  57.  
  58. #ifndef __CURSES_INTERNALS__
  59. #define __CURSES_INTERNALS__
  60.  
  61. /* Always include... */
  62. #include <assert.h>
  63.  
  64.  
  65.  
  66. /*----------------------------------------------------------------------
  67. *       MEMORY MODEL SUPPORT:
  68. *
  69. *       MODELS
  70. *               TINY            cs,ds,ss all in 1 segment (not enough memory!)
  71. *               SMALL           cs:1 segment,           ds:1 segment
  72. *               MEDIUM          cs:many segments        ds:1 segment
  73. *               COMPACT         cs:1 segment,           ds:many segments
  74. *               LARGE           cs:many segments        ds:many segments
  75. *               HUGE            cs:many segments        ds:segments > 64K
  76. */
  77. #ifdef  __TINY__
  78. #  define SMALL 1
  79. #endif
  80. #ifdef  __SMALL__
  81. #  define SMALL 1
  82. #endif
  83. #ifdef  __MEDIUM__
  84. #  define MEDIUM 1
  85. #endif
  86. #ifdef  __COMPACT__
  87. #  define COMPACT 1
  88. #endif
  89. #ifdef  __LARGE__
  90. #  define LARGE 1
  91. #endif
  92. #ifdef  __HUGE__
  93. #  define HUGE 1
  94. #endif
  95.  
  96.  
  97. /*----------------------------------------------------------------------
  98. *       OPERATING SYSTEM SUPPORT:
  99. *
  100. *               DOS             The one we all know and love:-}
  101. *               OS/2            The new kid on the block.
  102. *               FLEXOS          A Real-time, protected-mode OS from
  103. *                               Digital Research, Inc.
  104. *                               (AKA, the 4680 from IBM...)
  105. */
  106.  
  107. /*----------------------------------------*/
  108.  
  109.  
  110. /*----------------------------------------------------------------------
  111. *       MALLOC DEBUGGING SUPPORT:
  112. *
  113. *       Set EMALLOC and EMALLOC_MAGIC in order to use your private
  114. *       versions of malloc(), calloc(), and free().  This can help,
  115. *       but not solve, your malloc problems when debugging...
  116. *
  117. */
  118. #ifndef INTERNAL
  119. #  define EMALLOC 0             /* Disable External Malloc              */
  120. #else
  121. #  define EMALLOC 0             /* Enable/Disable External Malloc       */
  122. #  define EMALLOC_MAGIC  0x0C0C /* Our magic indicator that we should   */
  123.                                 /* use our external malloc rather than  */
  124.                                 /* the runtime's malloc.                */
  125. #endif
  126.  
  127.  
  128. /*----------------------------------------------------------------------*/
  129. /* window properties */
  130. #define _SUBWIN         0x01    /* window is a subwindow            */
  131. #define _ENDLINE        0x02    /* last winline is last screen line */
  132. #define _FULLWIN        0x04    /* window fills screen              */
  133. #define _SCROLLWIN      0x08    /* window lwr rgt is screen lwr rgt */
  134. #define _PAD            0x10    /* X/Open Pad.                      */
  135. #define _SUBPAD         0x20    /* X/Open subpad.                   */
  136.  
  137.  
  138.  
  139.  
  140. /*----------------------------------------------------------------------*/
  141. /* Miscellaneous */
  142. #define _INBUFSIZ       512     /* size of terminal input buffer */
  143. #define _NO_CHANGE      -1      /* flags line edge unchanged     */
  144.  
  145.  
  146.  
  147.  
  148. /* @@@ THESE SHOULD BE INDIVIDUAL FUNCTIONS, NOT MACROS! */
  149. #define _BCHAR          0x03    /* Break char       (^C)         */
  150. #define _ECHAR          0x08    /* Erase char       (^H)         */
  151. #define _DWCHAR         0x17    /* Delete Word char (^W)         */
  152. #define _DLCHAR         0x15    /* Delete Line char (^U)         */
  153. #define _GOCHAR         0x11    /* ^Q character                  */
  154. #define _PRINTCHAR      0x10    /* ^P character                  */
  155. #define _STOPCHAR       0x13    /* ^S character                  */
  156. #define  NUNGETCH       20      /* max # chars to ungetch()      */
  157.  
  158.  
  159.  
  160.  
  161. /* Setmode stuff */
  162. struct cttyset
  163. {
  164.         bool    been_set;
  165.         SCREEN  saved;
  166. };
  167.  
  168. extern struct cttyset c_sh_tty;         /* tty modes for shell_mode */
  169. extern struct cttyset c_pr_tty;         /* tty modes for prog_mode  */
  170. extern struct cttyset c_save_tty;
  171. extern struct cttyset c_save_trm;
  172.  
  173. /* Printscan stuff */
  174. extern char c_printscanbuf[];           /* buffer used during I/O */
  175.  
  176. /* tracing flag */
  177. extern bool trace_on;
  178.  
  179. /* Strget stuff */
  180. extern char*    c_strbeg;
  181.  
  182. /* doupdate stuff */
  183. extern WINDOW*  twin;                   /* used by many routines */
  184.  
  185. /* Monitor (terminal) type information */
  186. #define _NONE           0x00
  187. #define _MDA            0x01
  188. #define _CGA            0x02
  189. #define _EGACOLOR       0x04
  190. #define _EGAMONO        0x05
  191. #define _VGACOLOR       0x07
  192. #define _VGAMONO        0x08
  193. #define _MCGACOLOR      0x0a
  194. #define _MCGAMONO       0x0b
  195. #define _FLEXOS         0x20            /* A Flexos console */
  196. #define _MDS_GENIUS     0x30
  197. #define _UNIX_COLOR     0x40
  198. #define _UNIX_MONO      0x41
  199.  
  200. /* Text-mode font size information */
  201. #define _FONT8  8
  202. #define _FONT14 14
  203. #define _FONT15 15              /* GENIUS */
  204. #define _FONT16 16
  205.  
  206.  
  207. /*----------------------------------------------------------------------
  208. *       ANSI C prototypes.  Be sure that your compiler conditional
  209. *       compilation definitions above define ANSI to be non-zero
  210. *       if you compiler supports prototypes.
  211. */
  212. #ifdef     ANSI
  213. #  ifdef  CPLUSPLUS
  214.      extern "C" {
  215. #  endif
  216. int             PDC_backchar( WINDOW*, char*, int* );
  217. bool            PDC_breakout( void );
  218. int             PDC_chadd( WINDOW*, chtype, bool, bool );
  219. bool            PDC_check_bios_key( void );
  220. int             PDC_chg_attr( WINDOW*, chtype, int, int, int, int );
  221. int             PDC_chins( WINDOW*, chtype, bool );
  222. int             PDC_clr_scrn( WINDOW* );
  223. int             PDC_clr_update( WINDOW* );
  224. int             PDC_copy_win( WINDOW *,WINDOW *,int,int,int,int,int,int,int,int,bool );
  225. int             PDC_cursor_off( void );
  226. int             PDC_cursor_on( void );
  227. int             PDC_fix_cursor( int );
  228. int             PDC_gattr( void );
  229. int             PDC_get_bios_key( void );
  230. int             PDC_get_columns( void );
  231. bool            PDC_get_ctrl_break( void );
  232. int             PDC_get_cur_col( void );
  233. int             PDC_get_cur_row( void );
  234. int             PDC_get_cursor_pos( int*, int* );
  235. int             PDC_get_cursor_mode( void );
  236. int             PDC_get_font( void );
  237. int             PDC_get_rows( void );
  238. int             PDC_gotoxy( int, int );
  239. int             PDC_init_atrtab(void);
  240. WINDOW*         PDC_makenew( int, int, int, int );
  241. int             PDC_newline( WINDOW*, int );
  242. int             PDC_print( int, int, int );
  243. int             PDC_putc( chtype, chtype );
  244. int             PDC_putchar( chtype );
  245. int             PDC_putctty( chtype, chtype );
  246. int             PDC_rawgetch( void );
  247. int             PDC_sanity_check( int );
  248. int             PDC_scr_close( void );
  249. int             PDC_scr_open( SCREEN*, bool );
  250. int             PDC_scroll( int, int, int, int, int, chtype );
  251. int             PDC_set_80x25( void );
  252. int             PDC_set_ctrl_break( bool );
  253. int             PDC_set_cursor_mode( int, int );
  254. int             PDC_set_font( int );
  255. int             PDC_set_rows( int );
  256. int             PDC_split_plane( WINDOW*, char*, char*, int, int, int, int );
  257. int             PDC_sysgetch( void );
  258. bool            PDC_transform_line( int );
  259. void            PDC_usleep( long );
  260. int             PDC_validchar( int );
  261.  
  262. #if defined( OS2 ) && !defined( EMXVIDEO )
  263. VIOCONFIGINFO   PDC_query_adapter_type( void );
  264. VIOMODEINFO     PDC_get_scrn_mode( void );
  265. int             PDC_set_scrn_mode( VIOMODEINFO );
  266. bool            PDC_scrn_modes_equal (VIOMODEINFO, VIOMODEINFO);
  267. #else
  268. int             PDC_query_adapter_type( void );
  269. int             PDC_get_scrn_mode( void );
  270. int             PDC_set_scrn_mode( int );
  271. bool            PDC_scrn_modes_equal (int, int);
  272. #endif
  273.  
  274. #ifdef  FLEXOS
  275. int             PDC_flexos_8bitmode( void );
  276. int             PDC_flexos_16bitmode( void );
  277. char*           PDC_flexos_gname( void );
  278. #endif
  279.  
  280. #ifdef UNIX
  281. int             PDC_kbhit(void);
  282. int             PDC_setup_keys(void);
  283. #endif
  284.  
  285. #if defined (XCURSES)
  286. int            XCurses_redraw_curscr(void);
  287. int            XCurses_display_cursor(int,int ,chtype ,int ,int ,chtype );
  288. int            XCurses_rawgetch(void);
  289. bool           XCurses_kbhit(void);
  290. int            XCurses_instruct(int);
  291. int            XCurses_transform_line(long *, int , int , int );
  292. int            Xinitscr(void);
  293. int            Xendwin(void);
  294. #endif
  295.  
  296. #ifdef PDCDEBUG
  297. void            PDC_debug( char*,... );
  298. #endif
  299.  
  300. #ifdef  REGISTERWINDOWS
  301. bool            PDC_inswin( WINDOW*, WINDOW* );
  302. int             PDC_addtail( WINDOW* );
  303. int             PDC_addwin( WINDOW*, WINDOW* );
  304. int             PDC_rmwin( WINDOW* );
  305. WINDS*          PDC_findwin( WINDOW* );
  306. #endif
  307. #  ifdef  CPLUSPLUS
  308.      }
  309. #  endif
  310. #endif
  311.  
  312. #define PDC_COLOR_PAIRS  64
  313. #define PDC_OFFSET        8
  314. #define MAX_ATRTAB      272
  315. #define chtype_attr(ch)  ((atrtab[((ch >> 8) & 0xFF)] << 8) & A_ATTRIBUTES)
  316.  
  317. #include<menuet/os.h>
  318. #include<menuet/textcon.h>
  319.  
  320. #endif /* __CURSES_INTERNALS__*/
  321.