display.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:2k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _DISPLAY_H
  2. #define _DISPLAY_H
  3. #ifndef _STDIO_H
  4. #include <stdio.h>
  5. #endif
  6. #define MAXARGS 5
  7. struct display {
  8. unsigned cookie; /* Magic cookie to detect bogus pointers */
  9. #define D_COOKIE 0xbeef
  10. uint8 cols; /* Screen width */
  11. uint8 col; /* cursor column, 0 to cols-1 */
  12. uint8 savcol; /* Saved cursor column */
  13. uint8 rows; /* Screen height */
  14. uint8 row; /* cursor row, 0 to rows-1 */
  15. uint8 savrow; /* Saved cursor row */
  16. uint8 slast; /* Last row in scrolled region */
  17. int scroll; /* Scroll offset */
  18. int argi; /* index to current entry in arg[] */
  19. int arg[MAXARGS]; /* numerical args to ANSI sequence */
  20. uint8 attrib; /* Current screen attribute */
  21. enum {
  22. DISP_NORMAL, /* No ANSI sequence in progress */
  23. DISP_ESCAPE, /* ESC char seen */
  24. DISP_ARG /* ESC[ seen */
  25. } state; /* State of ANSI escape sequence FSM */
  26. struct {
  27. unsigned int dirty_screen:1; /* Whole screen needs update */
  28. unsigned int dirty_cursor:1; /* Cursor has moved */
  29. unsigned int no_line_wrap:1; /* Don't wrap past last col */
  30. unsigned int no_scroll:1; /* Set for wrap-scrolling */
  31. unsigned int scrollbk; /* Scrollback is active */ 
  32. } flags; /* Status flags */
  33. uint8 *buf; /* Internal screen image */
  34. /* "Dirty" info. Keeps track of which lines (and parts of lines)
  35.  * have changed since the last screen update. lcol is initialized
  36.  * to the right edge, while rcol is initialized to the left edge.
  37.  * Whenever lcol <= rcol, the line is considered to be dirty.
  38.  */
  39. struct dirty {
  40. uint8 lcol; /* Leftmost dirty column */
  41. uint8 rcol; /* Rightmost dirty column */
  42. } *dirty; /* One per line */
  43. uint8 *tabstops; /* Tab stops */
  44. FILE *sfile; /* Save file for scrollback */
  45. long sfseek; /* Write pointer for scrollback file */
  46. long sfoffs; /* Scrollback offset */
  47. long sfsize; /* Size of scrollback file, lines */
  48. long sflimit; /* Limit on sfsize */
  49. };
  50. struct display *newdisplay(int rows,int cols,int noscrol,int sfsize);
  51. void displaywrite(struct display *dp,void *buf,int cnt);
  52. void dupdate(struct display *dp);
  53. void closedisplay(struct display *dp);
  54. void statwrite(struct display *dp,int col,void *buf,int cnt,int attrib);
  55. void dscrollmode(struct display *dp,int flag);
  56. void dhome(struct display *dp);
  57. void dend(struct display *dp);
  58. void dpgup(struct display *dp);
  59. void dpgdown(struct display *dp);
  60. void dcursup(struct display *dp);
  61. void dcursdown(struct display *dp);
  62. void debug(char *s);
  63. #endif _DISPLAY_H