|
|
1.1 ! root 1: /* Interface definitions for display code. ! 2: Copyright (C) 1985 Richard M. Stallman. ! 3: ! 4: This file is part of GNU Emacs. ! 5: ! 6: GNU Emacs is distributed in the hope that it will be useful, ! 7: but WITHOUT ANY WARRANTY. No author or distributor ! 8: accepts responsibility to anyone for the consequences of using it ! 9: or for whether it serves any particular purpose or works at all, ! 10: unless he says so in writing. Refer to the GNU Emacs General Public ! 11: License for full details. ! 12: ! 13: Everyone is granted permission to copy, modify and redistribute ! 14: GNU Emacs, but only under the conditions described in the ! 15: GNU Emacs General Public License. A copy of this license is ! 16: supposed to have been given to you along with GNU Emacs so you ! 17: can know your rights and responsibilities. It should be in a ! 18: file named COPYING. Among other things, the copyright notice ! 19: and this notice must be preserved on all copies. */ ! 20: ! 21: ! 22: /* Nonzero means do not assume anything about current ! 23: contents of actual terminal screen */ ! 24: ! 25: extern int screen_garbaged; ! 26: ! 27: /* Desired terminal cursor position (to show position of dot), ! 28: origin one */ ! 29: ! 30: extern int cursX, cursY; ! 31: ! 32: /* Nonzero means last display completed and cursor is really at cursX, cursY. ! 33: Zero means it was preempted. */ ! 34: ! 35: extern int display_completed; ! 36: ! 37: /* Display line structure. ! 38: This structure records the contents of a line ! 39: either as already on the display ! 40: or as we desire to have it on the display. ! 41: ! 42: PhysScreen is a vector of pointers to lines ! 43: describing the actual contents of the screen. ! 44: DesiredScreen is a vector of pointers to lines ! 45: describing what we want to put on the screen. ! 46: These were made from the buffers being displayed ! 47: by the file window.c ! 48: ! 49: The code in this file compares those two vectors of display lines ! 50: and performs the updating. ! 51: ! 52: As display lines are used only to go in those vectors, ! 53: the most display lines that ever ought to exist is ! 54: twice the maximum screen size. That many are created ! 55: initially and put in a pool. If the pool is ever empty ! 56: and a line is needed, that indicates a bug. ! 57: */ ! 58: ! 59: struct display_line ! 60: { ! 61: struct display_line *next; /* Chain for free lines. */ ! 62: short length; /* the number of valid characters in body */ ! 63: char highlighted; /* 1 means write this line in standout mode */ ! 64: char physical; /* Mark bit for gc'ing, in update_screen */ ! 65: char body[MScreenWidth + 4]; /* the actual text of the line */ ! 66: }; ! 67: ! 68: /* Allocate a line structure for screen line `vpos' (origin 0) ! 69: to start output in it at `hpos' (origin 0, may be negative) */ ! 70: ! 71: struct display_line *get_display_line (), *new_display_line ();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.