home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / lynx2.8.1dev.10.tar.gz / lynx2.8.1dev.10.tar / lynx2-8 / src / LYCurses.h < prev    next >
C/C++ Source or Header  |  1998-05-10  |  10KB  |  386 lines

  1. #ifndef LYCURSES_H
  2. #define LYCURSES_H
  3.  
  4. #include <userdefs.h>
  5.  
  6. /*
  7.  * The simple color scheme maps the 8 combinations of bold/underline/reverse
  8.  * to the standard 8 ANSI colors (with some variations based on context).
  9.  */
  10. #undef USE_COLOR_TABLE
  11.  
  12. #ifndef USE_COLOR_STYLE
  13. #if defined(USE_SLANG) || defined(COLOR_CURSES)
  14. #define USE_COLOR_TABLE 1
  15. #endif
  16. #endif
  17.  
  18. #ifdef TRUE
  19. #undef TRUE  /* to prevent parse error :( */
  20. #endif /* TRUE */
  21. #ifdef FALSE
  22. #undef FALSE  /* to prevent parse error :( */
  23. #endif /* FALSE */
  24.  
  25. #ifdef USE_SLANG
  26. #if defined(UNIX) && !defined(unix)
  27. #define unix
  28. #endif /* UNIX && !unix */
  29. #ifdef va_start
  30. #undef va_start     /* not used, undef to avoid warnings on some systems */
  31. #endif /* va_start */
  32. #include <slang.h>
  33.  
  34. #else /* Using curses: */
  35.  
  36. #ifdef VMS
  37. #define FANCY_CURSES
  38. #endif /* VMS */
  39.  
  40. /*
  41.  *    CR may be defined before the curses.h include occurs.
  42.  *    There is a conflict between the termcap char *CR and the define.
  43.  *    Assuming that the definition of CR will always be carriage return.
  44.  *    06-09-94 Lynx 2-3-1 Garrett Arch Blythe
  45.  */
  46. #ifdef CR
  47. #undef CR  /* to prevent parse error :( */
  48. #define REDEFINE_CR
  49. #endif /* CR */
  50.  
  51. #ifdef HZ
  52. #undef HZ  /* to prevent parse error :( */
  53. #endif /* HZ */
  54.  
  55. /* SunOS 4.x has a redefinition between ioctl.h and termios.h */
  56. #if defined(sun) && !defined(__SVR4)
  57. #undef NL0
  58. #undef NL1
  59. #undef CR0
  60. #undef CR1
  61. #undef CR2
  62. #undef CR3
  63. #undef TAB0
  64. #undef TAB1
  65. #undef TAB2
  66. #undef XTABS
  67. #undef BS0
  68. #undef BS1
  69. #undef FF0
  70. #undef FF1
  71. #undef ECHO
  72. #undef NOFLSH
  73. #undef TOSTOP
  74. #undef FLUSHO
  75. #undef PENDIN
  76. #endif
  77.  
  78. #ifdef HAVE_CONFIG_H
  79. # ifdef HAVE_NCURSES_H
  80. #  include <ncurses.h>
  81. # else
  82. #  ifdef HAVE_CURSESX_H
  83. #   include <cursesX.h>        /* Ultrix */
  84. #  else
  85. #   ifdef HAVE_JCURSES_H
  86. #    include <jcurses.h>    /* sony_news */
  87. #   else
  88. #    include <curses.h>        /* default */
  89. #   endif
  90. #  endif
  91. # endif
  92.  
  93. # if defined(wgetbkgd) && !defined(getbkgd)
  94. #  define getbkgd(w) wgetbkgd(w)    /* workaround pre-1.9.9g bug */
  95. # endif
  96.  
  97. # ifdef NCURSES
  98. extern void LYsubwindow PARAMS((WINDOW * param));
  99. # endif /* NCURSES */
  100.  
  101. #else
  102. # if defined(VMS) && defined(__GNUC__)
  103. #  include <LYGCurses.h>
  104. # else
  105. #  include <curses.h>  /* everything else */
  106. # endif /* VMS && __GNUC__ */
  107. #endif /* HAVE_CONFIG_H */
  108.  
  109. #ifdef VMS
  110. extern void VMSbox PARAMS((WINDOW *win, int height, int width));
  111. #else
  112. extern void LYbox PARAMS((WINDOW *win, BOOLEAN formfield));
  113. #endif /* VMS */
  114. #endif /* USE_SLANG */
  115.  
  116.  
  117. /* Both slang and curses: */
  118. #ifndef TRUE
  119. #define TRUE  1
  120. #endif /* !TRUE */
  121. #ifndef FALSE
  122. #define FALSE 0
  123. #endif /* !FALSE */
  124.  
  125. #ifdef REDEFINE_CR
  126. #define CR FROMASCII('\015')
  127. #endif /* REDEFINE_CR */
  128.  
  129. #ifdef ALT_CHAR_SET
  130. #define BOXVERT 0   /* use alt char set for popup window vertical borders */
  131. #define BOXHORI 0   /* use alt char set for popup window vertical borders */
  132. #endif
  133.  
  134. #ifndef BOXVERT
  135. #define BOXVERT '*'    /* character for popup window vertical borders */
  136. #endif
  137. #ifndef BOXHORI
  138. #define BOXHORI '*'    /* character for popup window horizontal borders */
  139. #endif
  140.  
  141. #ifndef KEY_DOWN
  142. #undef HAVE_KEYPAD    /* avoid confusion with bogus 'keypad()' */
  143. #endif
  144.  
  145. extern int LYlines;  /* replaces LINES */
  146. extern int LYcols;   /* replaces COLS */
  147.  
  148. #ifndef HTUTILS_H
  149. #include <HTUtils.h>
  150. #endif /* HTUTILS_H */
  151.  
  152. extern void start_curses NOPARAMS;
  153. extern void stop_curses NOPARAMS;
  154. extern BOOLEAN setup PARAMS((char *terminal));
  155. extern void LYstartTargetEmphasis NOPARAMS;
  156. extern void LYstopTargetEmphasis NOPARAMS;
  157.  
  158. #ifdef VMS
  159. extern void VMSexit();
  160. extern int ttopen();
  161. extern int ttclose();
  162. extern int ttgetc();
  163. extern void *VMSsignal PARAMS((int sig, void (*func)()));
  164. #endif /* VMS */
  165.  
  166. #if defined(USE_COLOR_STYLE)
  167. extern void curses_css PARAMS((char * name, int dir));
  168. extern void curses_style PARAMS((int style, int dir, int previous));
  169. extern void curses_w_style PARAMS((WINDOW* win, int style, int dir, int previous));
  170. extern void setHashStyle PARAMS((int style, int color, int cattr, int mono, char* element));
  171. extern void setStyle PARAMS((int style, int color, int cattr, int mono));
  172. extern void wcurses_css PARAMS((WINDOW * win, char* name, int dir));
  173. #define LynxChangeStyle curses_style
  174. #else
  175. extern int slang_style PARAMS((int style, int dir, int previous));
  176. #define LynxChangeStyle slang_style
  177. #endif /* USE_COLOR_STYLE */
  178.  
  179. #if USE_COLOR_TABLE
  180. extern void LYaddAttr PARAMS((int a));
  181. extern void LYsubAttr PARAMS((int a));
  182. extern void lynx_setup_colors NOPARAMS;
  183. extern unsigned int Lynx_Color_Flags;
  184. #endif
  185.  
  186. #ifdef USE_SLANG
  187. #if !defined(VMS) && !defined(DJGPP)
  188. #define USE_SLANG_MOUSE        1
  189. #endif /* USE_SLANG */
  190.  
  191. #if SLANG_VERSION >= 10000
  192. #define USE_SLANG_KEYMAPS    1
  193. #endif
  194.  
  195. #define SL_LYNX_USE_COLOR    1
  196. #define SL_LYNX_USE_BLINK    2
  197. #define SL_LYNX_OVERRIDE_COLOR    4
  198. #define start_bold()          LYaddAttr(1)
  199. #define start_reverse()       LYaddAttr(2)
  200. #define start_underline()     LYaddAttr(4)
  201. #define stop_bold()           LYsubAttr(1)
  202. #define stop_reverse()        LYsubAttr(2)
  203. #define stop_underline()      LYsubAttr(4)
  204.  
  205. #ifdef FANCY_CURSES
  206. #undef FANCY_CURSES
  207. #endif /* FANCY_CURSES */
  208.  
  209. /*
  210.  *  Map some curses functions to slang functions.
  211.  */
  212. #define stdscr NULL
  213. #ifdef SLANG_MBCS_HACK
  214. extern int PHYSICAL_SLtt_Screen_Cols;
  215. #define COLS PHYSICAL_SLtt_Screen_Cols
  216. #else
  217. #define COLS SLtt_Screen_Cols
  218. #endif /* SLANG_MBCS_HACK */
  219. #define LINES SLtt_Screen_Rows
  220. #define move SLsmg_gotorc
  221. #define addstr SLsmg_write_string
  222. extern void LY_SLerase NOPARAMS;
  223. #define erase LY_SLerase
  224. #define clear LY_SLerase
  225. #define standout SLsmg_reverse_video
  226. #define standend  SLsmg_normal_video
  227. #define clrtoeol SLsmg_erase_eol
  228.  
  229. #ifdef SLSMG_NEWLINE_SCROLLS
  230. #define scrollok(a,b) SLsmg_Newline_Behavior \
  231.    = ((b) ? SLSMG_NEWLINE_SCROLLS : SLSMG_NEWLINE_MOVES)
  232. #else
  233. #define scrollok(a,b) SLsmg_Newline_Moves = ((b) ? 1 : -1)
  234. #endif
  235.  
  236. #define addch SLsmg_write_char
  237. #define echo()
  238. #define printw SLsmg_printf
  239.  
  240. extern int curscr;
  241. extern BOOLEAN FullRefresh;
  242. #ifdef clearok
  243. #undef clearok
  244. #endif /* clearok */
  245. #define clearok(a,b) { FullRefresh = (BOOLEAN)b; }
  246. extern void LY_SLrefresh NOPARAMS;
  247. #ifdef refresh
  248. #undef refresh
  249. #endif /* refresh */
  250. #define refresh LY_SLrefresh
  251.  
  252. #ifdef VMS
  253. extern void VTHome NOPARAMS;
  254. #define endwin() clear(),refresh(),SLsmg_reset_smg(),VTHome()
  255. #else
  256. #define endwin SLsmg_reset_smg(),SLang_reset_tty
  257. #endif /* VMS */
  258.  
  259. #else /* Define curses functions: */
  260.  
  261. #ifdef FANCY_CURSES
  262.  
  263. #ifdef VMS
  264. /*
  265.  *  For VMS curses, [w]setattr() and [w]clrattr()
  266.  *  add and subtract, respectively, the attributes
  267.  *  _UNDERLINE, _BOLD, _REVERSE, and _BLINK. - FM
  268.  */
  269. #ifdef UNDERLINE_LINKS
  270. #define start_bold()        setattr(_UNDERLINE)
  271. #define stop_bold()        clrattr(_UNDERLINE)
  272. #define start_underline()    setattr(_BOLD)
  273. #define stop_underline()    clrattr(_BOLD)
  274. #else /* not UNDERLINE_LINKS */
  275. #define start_bold()        setattr(_BOLD)
  276. #define stop_bold()        clrattr(_BOLD)
  277. #define start_underline()    setattr(_UNDERLINE)
  278. #define stop_underline()    clrattr(_UNDERLINE)
  279. #endif /* UNDERLINE_LINKS */
  280. #define start_reverse()        setattr(_REVERSE)
  281. #define wstart_reverse(a)    wsetattr(a, _REVERSE)
  282. #define wstop_underline(a)    wclrattr(a, _UNDERLINE)
  283. #define stop_reverse()        clrattr(_REVERSE)
  284. #define wstop_reverse(a)    wclrattr(a, _REVERSE)
  285.  
  286. #else /* Not VMS: */
  287.  
  288. /*
  289.  *  For Unix FANCY_FANCY curses we interpose
  290.  *  our own functions to add or subtract the
  291.  *  A_foo attributes. - FM
  292.  */
  293. #if USE_COLOR_TABLE
  294. extern void LYaddWAttr PARAMS((WINDOW *win, int a));
  295. extern void LYaddAttr PARAMS((int a));
  296. extern void LYsubWAttr PARAMS((WINDOW *win, int a));
  297. extern void LYsubAttr PARAMS((int a));
  298. extern void LYaddWAttr PARAMS((WINDOW *win, int a));
  299. extern void LYsubWAttr PARAMS((WINDOW *win, int a));
  300. extern void lynx_set_color PARAMS((int a));
  301. extern void lynx_standout  PARAMS((int a));
  302. extern int  lynx_chg_color PARAMS((int, int, int));
  303. #undef  standout
  304. #define standout()         lynx_standout(TRUE)
  305. #undef  standend
  306. #define standend()         lynx_standout(FALSE)
  307. #else
  308. #define LYaddAttr        attrset
  309. #define LYaddWAttr        wattrset
  310. #define LYsubAttr        attroff
  311. #define LYsubWAttr        wattroff
  312. #endif
  313.  
  314. #ifdef UNDERLINE_LINKS
  315. #define start_bold()        LYaddAttr(A_UNDERLINE)
  316. #define stop_bold()        LYsubAttr(A_UNDERLINE)
  317. #define start_underline()    LYaddAttr(A_BOLD)
  318. #define stop_underline()    LYsubAttr(A_BOLD)
  319. #else /* not UNDERLINE_LINKS: */
  320. #define start_bold()        LYaddAttr(A_BOLD)
  321. #define stop_bold()        LYsubAttr(A_BOLD)
  322. #define start_underline()    LYaddAttr(A_UNDERLINE)
  323. #define stop_underline()    LYsubAttr(A_UNDERLINE)
  324. #endif /* UNDERLINE_LINKS */
  325. #if defined(SNAKE) && defined(HP_TERMINAL)
  326. #define start_reverse()        LYaddWAttr(stdscr, A_DIM)
  327. #define wstart_reverse(a)    LYaddWAttr(a, A_DIM)
  328. #define stop_reverse()        LYsubWAttr(stdscr, A_DIM)
  329. #define wstop_reverse(a)    LYsubWAttr(a, A_DIM)
  330. #else
  331. #define start_reverse()        LYaddAttr(A_REVERSE)
  332. #define wstart_reverse(a)    LYaddWAttr(a, A_REVERSE)
  333. #define stop_reverse()        LYsubAttr(A_REVERSE)
  334. #define wstop_reverse(a)    LYsubWAttr(a, A_REVERSE)
  335. #endif /* SNAKE && HP_TERMINAL */
  336. #endif /* VMS */
  337.  
  338. #else /* Not FANCY_CURSES: */
  339.  
  340. /*
  341.  *  We only have [w]standout() and [w]standin(),
  342.  *  so we'll use them synonymously for bold and
  343.  *  reverse, and ignore underline. - FM
  344.  */
  345. #define start_bold()        standout()
  346. #define start_underline()    /* nothing */
  347. #define start_reverse()        standout()
  348. #define wstart_reverse(a)    wstandout(a)
  349. #define stop_bold()        standend()
  350. #define stop_underline()    /* nothing */
  351. #define stop_reverse()        standend()
  352. #define wstop_reverse(a)    wstandend(a)
  353.  
  354. #endif /* FANCY_CURSES */
  355. #endif /* USE_SLANG */
  356.  
  357. #ifdef USE_SLANG
  358. #define LYGetYX(y, x)   y = SLsmg_get_row(), x = SLsmg_get_column()
  359. #else
  360. #ifdef getyx
  361. #define LYGetYX(y, x)   getyx(stdscr, y, x)
  362. #else
  363. #define LYGetYX(y, x)   y = stdscr->_cury, x = stdscr->_curx
  364. #endif /* getyx */
  365. #endif /* USE_SLANG */
  366.  
  367. extern void lynx_enable_mouse PARAMS((int));
  368. extern void lynx_force_repaint NOPARAMS;
  369. extern void lynx_start_title_color NOPARAMS;
  370. extern void lynx_stop_title_color NOPARAMS;
  371. extern void lynx_start_link_color PARAMS((int flag, int pending));
  372. extern void lynx_stop_link_color PARAMS((int flag, int pending));
  373. extern void lynx_stop_target_color NOPARAMS;
  374. extern void lynx_start_target_color NOPARAMS;
  375. extern void lynx_start_status_color NOPARAMS;
  376. extern void lynx_stop_status_color NOPARAMS;
  377. extern void lynx_start_h1_color NOPARAMS;
  378. extern void lynx_stop_h1_color NOPARAMS;
  379. extern void lynx_start_prompt_color NOPARAMS;
  380. extern void lynx_stop_prompt_color NOPARAMS;
  381. extern void lynx_start_radio_color NOPARAMS;
  382. extern void lynx_stop_radio_color NOPARAMS;
  383. extern void lynx_stop_all_colors NOPARAMS;
  384.  
  385. #endif /* LYCURSES_H */
  386.