1 /* Public Domain Curses */ 2 3 /* Private definitions and declarations for use within PDCurses. 4 These should generally not be referenced by applications. */ 5 6 #ifndef __CURSES_INTERNALS__ 7 #define __CURSES_INTERNALS__ 1 8 9 #define CURSES_LIBRARY 10 #include <curses.h> 11 12 #if defined(__TURBOC__) || defined(__EMX__) || defined(__DJGPP__) || \ 13 defined(__CYGWIN__) || defined(__MINGW32__) || \ 14 defined(__WATCOMC__) || defined(__PACIFIC__) 15 # ifndef HAVE_VSSCANF 16 # define HAVE_VSSCANF /* have vsscanf() */ 17 # endif 18 #endif 19 20 #if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__WATCOMC__) 21 # ifndef HAVE_VSNPRINTF 22 # define HAVE_VSNPRINTF /* have vsnprintf() */ 23 # endif 24 #endif 25 26 #if defined(_MSC_VER) && defined(_WIN32) && !defined(_CRT_SECURE_NO_DEPRECATE) 27 # define _CRT_SECURE_NO_DEPRECATE 1 /* kill nonsense warnings */ 28 #endif 29 30 /*----------------------------------------------------------------------*/ 31 32 typedef struct /* structure for ripped off lines */ 33 { 34 int line; 35 int (*init)(WINDOW *, int); 36 } RIPPEDOFFLINE; 37 38 /* Window properties */ 39 40 #define _SUBWIN 0x01 /* window is a subwindow */ 41 #define _PAD 0x10 /* X/Open Pad. */ 42 #define _SUBPAD 0x20 /* X/Open subpad. */ 43 44 /* Miscellaneous */ 45 46 #define _NO_CHANGE -1 /* flags line edge unchanged */ 47 48 #define _ECHAR 0x08 /* Erase char (^H) */ 49 #define _DWCHAR 0x17 /* Delete Word char (^W) */ 50 #define _DLCHAR 0x15 /* Delete Line char (^U) */ 51 52 extern WINDOW *pdc_lastscr; 53 extern FILE *pdc_dbfp; /* tracing file pointer (NULL = off) */ 54 extern bool pdc_color_started; 55 extern unsigned long pdc_key_modifiers; 56 extern MOUSE_STATUS pdc_mouse_status; 57 58 /*----------------------------------------------------------------------*/ 59 60 /* Platform implementation functions */ 61 62 void PDC_beep(void); 63 bool PDC_can_change_color(void); 64 int PDC_color_content(short, short *, short *, short *); 65 bool PDC_check_key(void); 66 int PDC_curs_set(int); 67 void PDC_flushinp(void); 68 int PDC_get_columns(void); 69 int PDC_get_cursor_mode(void); 70 int PDC_get_key(void); 71 int PDC_get_rows(void); 72 void PDC_gotoyx(int, int); 73 int PDC_init_color(short, short, short, short); 74 void PDC_init_pair(short, short, short); 75 int PDC_modifiers_set(void); 76 int PDC_mouse_set(void); 77 void PDC_napms(int); 78 int PDC_pair_content(short, short *, short *); 79 void PDC_reset_prog_mode(void); 80 void PDC_reset_shell_mode(void); 81 int PDC_resize_screen(int, int); 82 void PDC_restore_screen_mode(int); 83 void PDC_save_screen_mode(int); 84 void PDC_scr_close(void); 85 void PDC_scr_free(void); 86 int PDC_scr_open(int, char **); 87 void PDC_set_keyboard_binary(bool); 88 void PDC_transform_line(int, int, int, const chtype *); 89 const char *PDC_sysname(void); 90 91 /* Internal cross-module functions */ 92 93 void PDC_init_atrtab(void); 94 WINDOW *PDC_makelines(WINDOW *); 95 WINDOW *PDC_makenew(int, int, int, int); 96 int PDC_mouse_in_slk(int, int); 97 void PDC_slk_free(void); 98 void PDC_slk_initialize(void); 99 void PDC_sync(WINDOW *); 100 101 #ifdef PDC_WIDE 102 int PDC_mbtowc(wchar_t *, const char *, size_t); 103 size_t PDC_mbstowcs(wchar_t *, const char *, size_t); 104 size_t PDC_wcstombs(char *, const wchar_t *, size_t); 105 #endif 106 107 #ifdef PDCDEBUG 108 # define PDC_LOG(x) if (pdc_dbfp) PDC_debug x 109 #else 110 # define PDC_LOG(x) 111 #endif 112 113 /* Internal macros for attributes */ 114 115 #ifdef CHTYPE_LONG 116 # define PDC_COLOR_PAIRS 256 117 #else 118 # define PDC_COLOR_PAIRS 32 119 #endif 120 121 #ifndef max 122 # define max(a,b) (((a) > (b)) ? (a) : (b)) 123 #endif 124 #ifndef min 125 # define min(a,b) (((a) < (b)) ? (a) : (b)) 126 #endif 127 128 #define DIVROUND(num, divisor) ((num) + ((divisor) >> 1)) / (divisor) 129 130 #define PDC_CLICK_PERIOD 150 /* time to wait for a click, if 131 not set by mouseinterval() */ 132 133 #endif /* __CURSES_INTERNALS__*/ 134