home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 10 / Fresh_Fish_10_2352.bin / useful / util / edit / mg / src.lzh / h / window.h < prev   
C/C++ Source or Header  |  1990-05-23  |  2KB  |  64 lines

  1. #ifndef    WINDOW_H
  2. #define WINDOW_H
  3. /*
  4.  * There is a window structure allocated for every active display window. The
  5.  * windows are kept in a big list, in top to bottom screen order, with the
  6.  * listhead at "wheadp". Each window contains its own values of dot and mark.
  7.  * The flag field contains some bits that are set by commands to guide
  8.  * redisplay; although this is a bit of a compromise in terms of decoupling,
  9.  * the full blown redisplay is just too expensive to run for every input
  10.  * character.
  11.  */
  12.  
  13. #ifndef LIST_H
  14. #include "list.h"
  15. #endif
  16.  
  17. struct window {
  18.     struct list     w_list;    /* List header               */
  19.     struct buffer  *w_bufp;    /* Buffer displayed in window     */
  20.     struct line    *w_linep;/* Top line in the window     */
  21.     struct line    *w_dotp;    /* Line containing "."         */
  22.     struct line    *w_markp;/* Line containing "mark"     */
  23.     short           w_doto;    /* Byte offset for "."         */
  24.     short           w_marko;/* Byte offset for "mark"     */
  25.     char            w_toprow;    /* Origin 0 top row of window     */
  26.     char            w_ntrows;    /* # of rows of text in window     */
  27.     char            w_force;/* If NZ, forcing row.         */
  28.     char            w_flag;    /* Flags.             */
  29. };
  30. #define w_wndp    w_list.l_p.l_wp
  31. #define w_name    w_list.l_name
  32.  
  33. /*
  34.  * Window flags are set by command processors to tell the display system what
  35.  * has happened to the buffer mapped by the window. Setting "WFHARD" is
  36.  * always a safe thing to do, but it may do more work than is necessary.
  37.  * Always try to set the simplest action that achieves the required update.
  38.  * Because commands set bits in the "w_flag", update will see all change
  39.  * flags, and do the most general one.
  40.  */
  41. #define WFFORCE 0x01        /* Force reframe.         */
  42. #define WFMOVE    0x02        /* Movement from line to line.     */
  43. #define WFEDIT    0x04        /* Editing within a line.     */
  44. #define WFHARD    0x08        /* Better to a full display.     */
  45. #define WFMODE    0x10        /* Update mode line.         */
  46.  
  47. /*
  48.  * Window Externals
  49.  */
  50. extern struct window *curwp;
  51. extern struct window *wheadp;
  52. extern struct window *popbuf();
  53. extern struct window *wpopup();
  54. /*
  55.  * Prototypes for window functions.
  56.  */
  57. #ifndef    NO_PROTO
  58. int             showbuffer(struct buffer * bp, struct window * wp, int flags);
  59. struct window  *popbuf(struct buffer * bp);
  60. struct window  *wpopup(void);
  61. void            modeline(struct window * wp);
  62. #endif
  63. #endif
  64.