* Redesign redisplay to get line-contents strings from the screen
authorChris Hanson <org/chris-hanson/cph>
Mon, 1 Apr 1991 10:08:00 +0000 (10:08 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 1 Apr 1991 10:08:00 +0000 (10:08 +0000)
commit86d127eb78a04c59df720b26b07ee3e1e375fe3c
tree42d831eb6d46cdce8db0c2a6ff44f48fb9a7e55d
parent9cc4434828cf30664f227399ab1bc835059568bb
* Redesign redisplay to get line-contents strings from the screen
  abstraction and write directly on those strings, thus avoiding much
  intermediate copying and the consequent computation.  Eliminate as
  much intermediate consing as possible from the image-generation
  code.

* Eliminate `string-base' window class, which was storing too much
  information for each buffer line.  Instead, use new `outline'
  abstraction, which keeps track of two pieces of information for each
  line: the number of characters in the line and the height of the
  line's image on the screen.  This is all that is needed when
  computing what needs to be redrawn -- all other information is
  already being stored in the screen abstraction.

* New `outline' and `o3' objects are explicitly managed for each
  window.  Instead of being discarded after use, they are saved for
  reuse later, preventing the generation of garbage during most
  redisplay.

* Fix bug in redisplay: if the image of the last line in a window
  extends past the bottom of the window, and the point moves, we must
  check to see if it has gone offscreen, even if it is on a displayed
  line.
12 files changed:
v7/src/edwin/bufwfs.scm
v7/src/edwin/bufwin.scm
v7/src/edwin/bufwiu.scm
v7/src/edwin/bufwmc.scm
v7/src/edwin/edtfrm.scm
v7/src/edwin/edwin.pkg
v7/src/edwin/image.scm
v7/src/edwin/make.scm
v7/src/edwin/modlin.scm
v7/src/edwin/modwin.scm
v7/src/edwin/screen.scm
v7/src/edwin/utlwin.scm