]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/hackguide.doc
ncurses 6.1 - patch 20190824
[ncurses.git] / doc / hackguide.doc
index 2324322a4e67a6a539f688dd27c6b13fe2dfecff..1bafad2ad10bd0d012173f38d81252df61481d66 100644 (file)
@@ -205,7 +205,7 @@ How to Design Extensions
        If  your bug produces a core-dump, please include a symbolic stack
        trace generated by gdb(1) or your local equivalent.
        Tell  us about every terminal on which you have reproduced the bug
-       --  and  every  terminal  on  which  you  cannot. Ideally, sent us
+       --  and  every  terminal  on  which  you  cannot. Ideally, send us
        terminfo sources for all of these (yours might differ from ours).
        Include  your ncurses version and your OS/machine type, of course!
        You can find your ncurses version in the curses.h file.
@@ -352,10 +352,10 @@ The Engine Room
 
    Here are some more details about mouse event handling:
 
-   The lib_mouse()code is logically split into a lower level that accepts
-   event  reports  in  a  device-dependent format and an upper level that
-   parses mouse gestures and filters events. The mediating data structure
-   is a circular queue of event structures.
+   The  lib_mouse()  code  is  logically  split  into  a lower level that
+   accepts  event reports in a device-dependent format and an upper level
+   that  parses  mouse  gestures  and  filters events. The mediating data
+   structure is a circular queue of event structures.
 
    Functionally, the lower level's job is to pick up primitive events and
    put  them  on  the circular queue. This can happen in one of two ways:
@@ -382,24 +382,23 @@ The Engine Room
    The  brains  of this operation are the modules hashmap.c, hardscroll.c
    and  lib_doupdate.c; the latter two use lib_mvcur.c. Essentially, what
    happens looks like this:
-
-   The  hashmap.c  module tries to detect vertical motion changes between
-   the  real  and virtual screens. This information is represented by the
-   oldindex  members  in  the  newscr  structure.  These  are modified by
-   vertical-motion  and  clear  operations,  and  both are re-initialized
-   after each update. To this change-journalling information, the hashmap
-   code  adds  deductions  made using a modified Heckel algorithm on hash
-   values generated from the line contents.
-
-   The  hardscroll.c module computes an optimum set of scroll, insertion,
-   and   deletion   operations  to  make  the  indices  match.  It  calls
-   _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
-
-   Then  lib_doupdate.c  goes  to  work.  Its  job  is to do line-by-line
-   transformations  of curscr lines to newscr lines. Its main tool is the
-   routine  mvcur()  in  lib_mvcur.c.  This  routine does cursor-movement
-   optimization,  attempting to get from given screen location A to given
-   location B in the fewest output characters possible.
+     * The  hashmap.c  module  tries  to  detect  vertical motion changes
+       between   the  real  and  virtual  screens.  This  information  is
+       represented by the oldindex members in the newscr structure. These
+       are modified by vertical-motion and clear operations, and both are
+       re-initialized  after  each  update.  To  this  change-journalling
+       information,  the  hashmap  code  adds  deductions  made  using  a
+       modified  Heckel  algorithm on hash values generated from the line
+       contents.
+     * The  hardscroll.c  module  computes  an  optimum  set  of  scroll,
+       insertion,  and  deletion operations to make the indices match. It
+       calls _nc_mvcur_scrolln() in lib_mvcur.c to do those motions.
+     * Then  lib_doupdate.c  goes  to work. Its job is to do line-by-line
+       transformations  of curscr lines to newscr lines. Its main tool is
+       the   routine   mvcur()   in   lib_mvcur.c.   This   routine  does
+       cursor-movement  optimization, attempting to get from given screen
+       location  A  to  given  location B in the fewest output characters
+       possible.
 
    If  you  want to work on screen optimizations, you should use the fact
    that  (in  the  trace-enabled  version  of  the  library) enabling the