diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 1deb0ea..cde4de7 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -7466,6 +7466,633 @@ int main(void) {
 @
 \chapter{view3d}
 \label{view3d}
+\section{view3d Call Graph}
+This was generated by the GNU cflow program with the argument list.
+Note that the line:NNNN numbers refer to the line in the code after
+it has been tangled from this file.
+\begin{verbatim}
+cflow --emacs -l -n -b -T --omit-arguments view3d.c
+\end{verbatim}
+\begin{verbatim}
+;; This file is generated by GNU cflow 1.3. -*- cflow -*-
+    2 {   0} +-main() <int main () line:10360>
+    3 {   1}   +-NIL()
+    4 {   1}   +-XOpenDisplay()
+    5 {   1}   +-getenv()
+    6 {   1}   +-fprintf()
+    7 {   1}   +-exit()
+    8 {   1}   +-DefaultScreen()
+    9 {   1}   +-RootWindow()
+   10 {   1}   +-XSetErrorHandler()
+   11 {   1}   +-theHandler() <int theHandler () line:5139>
+   12 {   2}     +-XGetErrorText()
+   13 {   2}     \-fprintf()
+   14 {   1}   +-XCreateAssocTable() 
+                 <HashTable *XCreateAssocTable () line:2722>
+   15 {   2}     +-malloc()
+   16 {   2}     +-hash_init()
+   17 {   2}     +-TrivEqual() <int TrivEqual () line:2712>
+   18 {   2}     \-TrivHashCode() <int TrivHashCode () line:2717>
+   19 {   1}   +-XInitSpadFill()
+   20 {   1}   +-exitWithAck()
+   21 {   1}   +-mergeDatabases() <void mergeDatabases () line:5146>
+   22 {   2}   | +-XrmInitialize()
+   23 {   2}   | +-strcpy()
+   24 {   2}   | +-strcat()
+   25 {   2}   | +-XrmGetFileDatabase()
+   26 {   2}   | +-XrmMergeDatabases()
+   27 {   2}   | +-XResourceManagerString()
+   28 {   2}   | +-XrmGetStringDatabase()
+   29 {   2}   | +-getenv()
+   30 {   2}   | +-strlen()
+   31 {   2}   | \-gethostname()
+   32 {   1}   +-XrmGetResource()
+   33 {   1}   +-strncpy()
+   34 {   1}   +-strcpy()
+   35 {   1}   +-strcmp()
+   36 {   1}   +-XInitShades()
+   37 {   1}   +-malloc()
+   38 {   1}   +-strlen()
+   39 {   1}   +-XSync()
+   40 {   1}   +-XQueryFont()
+   41 {   1}   +-XGContextFromGC()
+   42 {   1}   +-DefaultGC()
+   43 {   1}   +-XLoadQueryFont()
+   44 {   1}   +-PSGlobalInit() <int PSGlobalInit () line:2246>
+   45 {   2}   | +-tempnam()
+   46 {   2}   | +-sprintf()
+   47 {   2}   | +-free()
+   48 {   2}   | +-getenv()
+   49 {   2}   | \-fprintf()
+   50 {   1}   +-monoColor()
+   51 {   1}   +-XCreateGC()
+   52 {   1}   +-carefullySetFont()
+   53 {   1}   +-PSCreateContext() <int PSCreateContext () line:2368>
+   54 {   2}     +-malloc()
+   55 {   2}     +-fprintf()
+   56 {   2}     +-exit()
+   57 {   2}     +-sprintf()
+   58 {   2}     +-fopen()
+   59 {   2}     \-fclose()
+   60 {   1}   +-check()
+   61 {   1}   +-write()
+   62 {   1}   +-readViewman() <int readViewman () line:7972>
+   63 {   2}     +-sprintf()
+   64 {   2}     +-check()
+   65 {   2}     \-read()
+   66 {   1}   +-saymem()
+   67 {   1}   +-make3DComponents() <viewPoints *make3DComponents () line:3365>
+   68 {   2}     +-readComponentsFromViewman() 
+                   <void readComponentsFromViewman () line:3270>
+   69 {   3}       +-readViewman() <int readViewman () line:7972> [see 62]
+   70 {   3}       +-saymem()
+   71 {   3}       \-fprintf()
+   72 {   2}     +-scaleComponents() <void scaleComponents () line:3095>
+   73 {   3}     | \-absolute() <float absolute () line:8273>
+   74 {   2}     +-NIL()
+   75 {   2}     +-triangulate() <void triangulate () line:3184>
+   76 {   3}     | +-makeTriangle() <void makeTriangle () line:3165>
+   77 {   4}     |   +-samePoint()
+   78 {   4}     |   \-saymem()
+   79 {   3}     | \-saymem()
+   80 {   2}     +-calcNormData() <void calcNormData () line:3324>
+   81 {   3}     | +-NIL()
+   82 {   3}     | +-refPt3D()
+   83 {   3}     | \-getMeshNormal() <void getMeshNormal () line:5180>
+   84 {   4}     |   \-sqrt()
+   85 {   2}     +-makeViewport() <viewPoints *makeViewport () line:9303>
+   86 {   3}       +-saymem()
+   87 {   3}       +-fprintf()
+   88 {   3}       +-exitWithAck()
+   89 {   3}       +-RootWindow()
+   90 {   3}       +-strcpy()
+   91 {   3}       +-sin()
+   92 {   3}       +-cos()
+   93 {   3}       +-ROTATE() <void ROTATE () line:8884>
+   94 {   3}       +-ROTATE1() <void ROTATE1 () line:8903>
+   95 {   3}       +-SCALE() <void SCALE () line:8922>
+   96 {   3}       +-TRANSLATE() <void TRANSLATE () line:8929>
+   97 {   3}       +-XCreateBitmapFromData()
+   98 {   3}       +-XQueryColor()
+   99 {   3}       +-XCreatePixmapCursor()
+  100 {   3}       +-XCreateWindow()
+  101 {   3}       +-XInternAtom()
+  102 {   3}       +-XSetWMProtocols()
+  103 {   3}       +-XSetNormalHints()
+  104 {   3}       +-strlen()
+  105 {   3}       +-XSetStandardProperties()
+  106 {   3}       +-XSync()
+  107 {   3}       +-makeControlPanel() 
+                     <controlPanelStruct *makeControlPanel () line:4422>
+  108 {   4}       | +-saymem()
+  109 {   4}       | +-fprintf()
+  110 {   4}       | +-exitWithAck()
+  111 {   4}       | +-RootWindow()
+  112 {   4}       | +-getControlXY() <controlXY getControlXY () line:4360>
+  113 {   5}       | | +-XQueryTree()
+  114 {   5}       | | +-XFree()
+  115 {   5}       | | \-XGetWindowAttributes()
+  116 {   4}       | +-XCreateBitmapFromData()
+  117 {   4}       | +-XQueryColor()
+  118 {   4}       | +-XCreatePixmapCursor()
+  119 {   4}       | +-XCreateWindow()
+  120 {   4}       | +-XSetNormalHints()
+  121 {   4}       | +-XSetStandardProperties()
+  122 {   4}       | +-initButtons() <int initButtons () line:2745>
+  123 {   4}       | +-XMakeAssoc() <void XMakeAssoc () line:2731>
+  124 {   5}       |   \-hash_insert()
+  125 {   4}       | +-XMapWindow()
+  126 {   4}       | \-strcpy()
+  127 {   3}       +-makeLightingPanel() <int makeLightingPanel () line:4712>
+  128 {   4}       | +-XCreateBitmapFromData()
+  129 {   4}       | +-XQueryColor()
+  130 {   4}       | +-XCreatePixmapCursor()
+  131 {   4}       | +-XCreateWindow()
+  132 {   4}       | +-XSetNormalHints()
+  133 {   4}       | +-XSetStandardProperties()
+  134 {   4}       | +-XMapWindow()
+  135 {   4}       | +-initLightButtons() <int initLightButtons () line:4626>
+  136 {   4}       | +-XMakeAssoc() <void XMakeAssoc () line:2731> [see 123]
+  137 {   4}       | +-sin()
+  138 {   4}       | \-cos()
+  139 {   3}       +-makeVolumePanel() <void makeVolumePanel () line:9734>
+  140 {   4}       | +-XCreateBitmapFromData()
+  141 {   4}       | +-XQueryColor()
+  142 {   4}       | +-XCreatePixmapCursor()
+  143 {   4}       | +-XCreateWindow()
+  144 {   4}       | +-XSetNormalHints()
+  145 {   4}       | +-XSetStandardProperties()
+  146 {   4}       | +-initVolumeButtons() <int initVolumeButtons () line:9612>
+  147 {   4}       | +-XMakeAssoc() <void XMakeAssoc () line:2731> [see 123]
+  148 {   4}       | \-XMapWindow()
+  149 {   3}       +-makeSavePanel() <int makeSavePanel () line:7056>
+  150 {   4}       | +-XCreateBitmapFromData()
+  151 {   4}       | +-XQueryColor()
+  152 {   4}       | +-XCreatePixmapCursor()
+  153 {   4}       | +-XCreateWindow()
+  154 {   4}       | +-XSetNormalHints()
+  155 {   4}       | +-XSetStandardProperties()
+  156 {   4}       | +-initSaveButtons() <int initSaveButtons () line:7135>
+  157 {   4}       | +-XMakeAssoc() <void XMakeAssoc () line:2731> [see 123]
+  158 {   4}       | \-XMapWindow()
+  159 {   3}       +-makeQuitPanel() <int makeQuitPanel () line:6939>
+  160 {   4}       | +-XCreateBitmapFromData()
+  161 {   4}       | +-XQueryColor()
+  162 {   4}       | +-XCreatePixmapCursor()
+  163 {   4}       | +-XCreateWindow()
+  164 {   4}       | +-XSetNormalHints()
+  165 {   4}       | +-XSetStandardProperties()
+  166 {   4}       | +-initQuitButtons() <int initQuitButtons () line:7024>
+  167 {   4}       | +-XMakeAssoc() <void XMakeAssoc () line:2731> [see 123]
+  168 {   4}       | \-XMapWindow()
+  169 {   3}       \-putControlPanelSomewhere() 
+                     <void putControlPanelSomewhere () line:4509>
+  170 {   4}         +-getControlXY() 
+                     | <controlXY getControlXY () line:4360> [see 112]
+  171 {   4}         +-XRaiseWindow()
+  172 {   4}         +-XMoveWindow()
+  173 {   4}         +-drawControlPanel() <void drawControlPanel () line:3835>
+  174 {   5}         | +-GSetForeground() <int GSetForeground () line:2419>
+  175 {   6}         |   +-XSetForeground()
+  176 {   6}         |   +-fopen()
+  177 {   6}         |   +-fprintf()
+  178 {   6}         |   +-PSfindGC() <char *PSfindGC () line:2405>
+  179 {   7}         |   | \-fprintf()
+  180 {   6}         |   \-fclose()
+  181 {   5}         | +-GSetLineAttributes() 
+                     |   <int GSetLineAttributes () line:2479>
+  182 {   6}         |   +-XSetLineAttributes()
+  183 {   6}         |   +-fprintf()
+  184 {   6}         |   +-fopen()
+  185 {   6}         |   +-PSfindGC() <char *PSfindGC () line:2405> [see 178]
+  186 {   6}         |   \-fclose()
+  187 {   5}         | +-GDrawLine() <int GDrawLine () line:1995>
+  188 {   6}         |   +-XDrawLine()
+  189 {   6}         |   +-fopen()
+  190 {   6}         |   +-fprintf()
+  191 {   6}         |   +-PSfindGC() <char *PSfindGC () line:2405> [see 178]
+  192 {   6}         |   \-fclose()
+  193 {   5}         | +-writeControlTitle() 
+                     |  <void writeControlTitle () line:3798>
+  194 {   6}         |   +-strlen()
+  195 {   6}         |   +-XClearArea()
+  196 {   6}         |   +-GSetForeground() 
+                     |     <int GSetForeground () line:2419> [see 174]
+  197 {   6}         |   +-GDrawString() <int GDrawString () line:2181>
+  198 {   7}         |   | +-XDrawString()
+  199 {   7}         |   | +-fopen()
+  200 {   7}         |   | +-fprintf()
+  201 {   7}         |   | +-PSfindGC() <char *PSfindGC () line:2405> [see 178]
+  202 {   7}         |   | \-fclose()
+  203 {   6}         |   \-centerX() <int centerX () line:2557>
+  204 {   7}         |     +-XGContextFromGC()
+  205 {   7}         |     +-XQueryFont()
+  206 {   7}         |     +-XTextWidth()
+  207 {   7}         |     \-XFreeFontInfo()
+  208 {   5}         | +-GDrawString() <int GDrawString () line:2181> [see 197]
+  209 {   5}         | +-strlen()
+  210 {   5}         | +-monoColor()
+  211 {   5}         | +-XFillRectangle()
+  212 {   5}         | +-GDrawRectangle() <int GDrawRectangle () line:2094>
+  213 {   6}         |   +-XDrawRectangle()
+  214 {   6}         |   +-fopen()
+  215 {   6}         |   +-fprintf()
+  216 {   6}         |   +-PSfindGC() <char *PSfindGC () line:2405> [see 178]
+  217 {   6}         |   \-fclose()
+  218 {   5}         | +-XChangeShade()
+  219 {   5}         | +-XShadeRectangle()
+  220 {   5}         | +-GDrawImageString() <int GDrawImageString () line:1930>
+  221 {   6}         | | +-XDrawImageString()
+  222 {   6}         | | +-fopen()
+  223 {   6}         | | +-fprintf()
+  224 {   6}         | | +-PSfindGC() <char *PSfindGC () line:2405> [see 178]
+  225 {   6}         | | \-fclose()
+  226 {   5}         | +-centerX() <int centerX () line:2557> [see 203]
+  227 {   5}         | +-centerY() <int centerY () line:2571>
+  228 {   6}         |   +-XGContextFromGC()
+  229 {   6}         |   +-XQueryFont()
+  230 {   6}         |   \-XFreeFontInfo()
+  231 {   5}         | +-GDraw3DButtonOut() <int GDraw3DButtonOut () line:2125>
+  232 {   6}         |   +-GDrawRectangle() 
+                     |   | <int GDrawRectangle () line:2094> [see 212]
+  233 {   6}         |   \-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  234 {   5}         | +-GDrawArc() <int GDrawArc () line:1963>
+  235 {   6}         |   +-XDrawArc()
+  236 {   6}         |   +-fopen()
+  237 {   6}         |   +-fprintf()
+  238 {   6}         |   +-PSfindGC() <char *PSfindGC () line:2405> [see 178]
+  239 {   6}         |   \-fclose()
+  240 {   5}         | +-GDrawLines() <int GDrawLines () line:2025>
+  241 {   6}         |   +-XDrawLines()
+  242 {   6}         |   +-fopen()
+  243 {   6}         |   +-fprintf()
+  244 {   6}         |   +-PSfindGC() <char *PSfindGC () line:2405> [see 178]
+  245 {   6}         |   \-fclose()
+  246 {   5}         | +-clearControlMessage() 
+                     | | <void clearControlMessage () line:3808>
+  247 {   6}         | | +-strcpy()
+  248 {   6}         | | +-strlen()
+  249 {   6}         | | +-GDrawImageString() 
+                     | | | <int GDrawImageString () line:1930> [see 220]
+  250 {   6}         | | \-centerX() <int centerX () line:2557> [see 203]
+  251 {   5}         | +-strcpy()
+  252 {   5}         | +-writeControlMessage() 
+                     | | | <void writeControlMessage () line:3819>
+  253 {   6}         | | +-strlen()
+  254 {   6}         | | +-XClearArea()
+  255 {   6}         | | +-GSetForeground() 
+                     | | | <int GSetForeground () line:2419> [see 174]
+  256 {   6}         | | +-GDrawImageString() 
+                     | | | <int GDrawImageString () line:1930> [see 220]
+  257 {   6}         | | +-centerX() <int centerX () line:2557> [see 203]
+  258 {   6}         | | \-XFlush()
+  259 {   5}         | +-drawColorMap() <void drawColorMap () line:3740>
+  260 {   6}         | | +-XClearArea()
+  261 {   6}         | | +-XChangeShade()
+  262 {   6}         | | +-XShadeRectangle()
+  263 {   6}         | | +-GDrawString() 
+                     | | |<int GDrawString () line:2181> [see 197]
+  264 {   6}         | | +-GSetForeground() 
+                     | | | <int GSetForeground () line:2419> [see 174]
+  265 {   6}         | | +-XSolidColor()
+  266 {   6}         | | +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  267 {   6}         | | +-monoColor()
+  268 {   6}         | | \-XSync()
+  269 {   5}         | \-XFlush()
+  270 {   4}         +-XSync()
+  271 {   4}         +-XMapWindow()
+  272 {   4}         \-XFlush()
+  273 {   2}     +-XCreateImage()
+  274 {   2}     +-DefaultVisual()
+  275 {   2}     +-DefaultDepth()
+  276 {   2}     +-writeTitle() <void writeTitle () line:8936>
+  277 {   3}     | +-XGetWindowAttributes()
+  278 {   3}     | +-GSetForeground() 
+                 | | <int GSetForeground () line:2419> [see 174]
+  279 {   3}     | +-XClearWindow()
+  280 {   3}     | +-strlen()
+  281 {   3}     | +-GDrawImageString() 
+                 | | <int GDrawImageString () line:1930> [see 220]
+  282 {   3}     | \-centerX() <int centerX () line:2557> [see 203]
+  283 {   2}     +-postMakeViewport() <void postMakeViewport () line:9510>
+  284 {   2}     +-drawViewport()
+  285 {   2}     +-XMapWindow()
+  286 {   2}     \-XFlush()
+  287 {   1}   +-bsdSignal()
+  288 {   1}   +-goodbye() <void goodbye () line:8301>
+  289 {   2}     +-PSClose() <int PSClose () line:2544>
+  290 {   3}       +-free()
+  291 {   3}       \-unlink()
+  292 {   2}     +-FreePixels()
+  293 {   2}     +-check()
+  294 {   2}     +-write()
+  295 {   2}     +-XCloseDisplay()
+  296 {   2}     \-exit()
+  297 {   1}   +-sprintf()
+  298 {   1}   +-XCreatePixmap()
+  299 {   1}   +-DisplayPlanes()
+  300 {   1}   \-processEvents() <void processEvents () line:6003>
+  301 {   2}     +-ConnectionNumber()
+  302 {   2}     +-saymem()
+  303 {   2}     +-fprintf()
+  304 {   2}     +-exitWithAck()
+  305 {   2}     +-RootWindow()
+  306 {   2}     +-XGetWindowAttributes()
+  307 {   2}     +-FD_ZERO()
+  308 {   2}     +-FD_SET()
+  309 {   2}     +-XEventsQueued()
+  310 {   2}     +-select()
+  311 {   2}     +-FD_ISSET()
+  312 {   2}     +-XPending()
+  313 {   2}     +-XNextEvent()
+  314 {   2}     +-goodbye() <void goodbye () line:8301> [see 288]
+  315 {   2}     +-XSync()
+  316 {   2}     +-XCheckWindowEvent()
+  317 {   2}     +-writeTitle() <void writeTitle () line:8936> [see 276]
+  318 {   2}     +-XResizeWindow()
+  319 {   2}     +-drawViewport()
+  320 {   2}     +-XMapWindow()
+  321 {   2}     +-drawLightingPanel() <void drawLightingPanel () line:4936>
+  322 {   3}       +-GSetForeground() 
+                   | <int GSetForeground () line:2419> [see 174]
+  323 {   3}       +-GSetLineAttributes() 
+                   | <int GSetLineAttributes () line:2479> [see 181]
+  324 {   3}       +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  325 {   3}       +-writeControlTitle() 
+                   | <void writeControlTitle () line:3798> [see 193]
+  326 {   3}       +-strlen()
+  327 {   3}       +-GDrawString() <int GDrawString () line:2181> [see 197]
+  328 {   3}       +-centerX() <int centerX () line:2557> [see 203]
+  329 {   3}       +-GDraw3DButtonOut() 
+                   | <int GDraw3DButtonOut () line:2125> [see 231]
+  330 {   3}       +-monoColor()
+  331 {   3}       +-drawLightTransArrow() 
+                     | <void drawLightTransArrow () line:4867>
+  332 {   4}         +-XClearArea()
+  333 {   4}         +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  334 {   4}         \-GSetForeground() 
+                       <int GSetForeground () line:2419> [see 174]
+  335 {   3}       +-centerY() <int centerY () line:2571> [see 227]
+  336 {   3}       \-drawLightingAxes() <void drawLightingAxes () line:4789>
+  337 {   4}         +-XGetWindowAttributes()
+  338 {   4}         +-XClearWindow()
+  339 {   4}         +-sin()
+  340 {   4}         +-cos()
+  341 {   4}         +-GSetForeground() 
+                     | <int GSetForeground () line:2419> [see 174]
+  342 {   4}         +-monoColor()
+  343 {   4}         +-proj2PX()
+  344 {   4}         +-proj2PY()
+  345 {   4}         \-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  346 {   2}     +-drawVolumePanel() <void drawVolumePanel () line:10091>
+  347 {   3}       +-GSetForeground() 
+                   | <int GSetForeground () line:2419> [see 174]
+  348 {   3}       +-GSetLineAttributes() 
+                   | <int GSetLineAttributes () line:2479> [see 181]
+  349 {   3}       +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  350 {   3}       +-writeControlTitle() 
+                   | <void writeControlTitle () line:3798> [see 193]
+  351 {   3}       +-strlen()
+  352 {   3}       +-GDrawString() <int GDrawString () line:2181> [see 197]
+  353 {   3}       +-centerX() <int centerX () line:2557> [see 203]
+  354 {   3}       +-monoColor()
+  355 {   3}       +-GDraw3DButtonOut() 
+                   | <int GDraw3DButtonOut () line:2125> [see 231]
+  356 {   3}       +-centerY() <int centerY () line:2571> [see 227]
+  357 {   3}       +-drawClipXBut() <void drawClipXBut () line:9789>
+  358 {   4}         +-XClearArea()
+  359 {   4}         +-GSetForeground() 
+                     | <int GSetForeground () line:2419> [see 174]
+  360 {   4}         +-monoColor()
+  361 {   4}         +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  362 {   4}         +-GFillArc() <int GFillArc () line:2213>
+  363 {   5}           +-XFillArc()
+  364 {   5}           +-fopen()
+  365 {   5}           +-fprintf()
+  366 {   5}           +-PSfindGC() <char *PSfindGC () line:2405> [see 178]
+  367 {   5}           \-fclose()
+  368 {   4}         \-GDrawString() <int GDrawString () line:2181> [see 197]
+  369 {   3}       +-drawClipYBut() <void drawClipYBut () line:9846>
+  370 {   4}         +-XClearArea()
+  371 {   4}         +-GSetForeground() 
+                     | <int GSetForeground () line:2419> [see 174]
+  372 {   4}         +-monoColor()
+  373 {   4}         +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  374 {   4}         +-GFillArc() <int GFillArc () line:2213> [see 362]
+  375 {   4}         \-GDrawString() <int GDrawString () line:2181> [see 197]
+  376 {   3}       +-drawClipZBut() <void drawClipZBut () line:9904>
+  377 {   4}         +-XClearArea()
+  378 {   4}         +-GSetForeground() 
+                     | <int GSetForeground () line:2419> [see 174]
+  379 {   4}         +-monoColor()
+  380 {   4}         +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  381 {   4}         +-GFillArc() <int GFillArc () line:2213> [see 362]
+  382 {   4}         \-GDrawString() <int GDrawString () line:2181> [see 197]
+  383 {   3}       +-drawFrustrum() <void drawFrustrum () line:10064>
+  384 {   4}       | +-XClearArea()
+  385 {   4}       | +-GSetForeground() 
+                   | | <int GSetForeground () line:2419> [see 174]
+  386 {   4}       | +-pow()
+  387 {   4}       | +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  388 {   4}       | +-frusX()
+  389 {   4}       | +-frusY()
+  390 {   4}       | +-drawHitherControl() 
+                   | | <void drawHitherControl () line:9981>
+  391 {   5}       | | +-GSetForeground() 
+                   | | | <int GSetForeground () line:2419> [see 174]
+  392 {   5}       | | +-GDraw3DButtonOut() 
+                   | | | <int GDraw3DButtonOut () line:2125> [see 231]
+  393 {   5}       | | +-frusY()
+  394 {   5}       | | +-fabs()
+  395 {   5}       | | +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  396 {   5}       | | +-frusX()
+  397 {   5}       | | \-GDrawString() <int GDrawString () line:2181> [see 197]
+  398 {   4}       | \-drawEyeControl() <void drawEyeControl () line:10026>
+  399 {   5}       |   +-GSetForeground() 
+                   |   | <int GSetForeground () line:2419> [see 174]
+  400 {   5}       |   +-GDraw3DButtonOut() 
+                   |   | <int GDraw3DButtonOut () line:2125> [see 231]
+  401 {   5}       |   +-frusX()
+  402 {   5}       |   +-frusY()
+  403 {   5}       |   +-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  404 {   5}       |   +-pow()
+  405 {   5}       |   +-GSetLineAttributes() 
+                   |   | <int GSetLineAttributes () line:2479> [see 181]
+  406 {   5}       |   +-monoColor()
+  407 {   5}       |   +-GDrawString() <int GDrawString () line:2181> [see 197]
+  408 {   5}       |   \-strlen()
+  409 {   3}       \-drawClipVolume() <void drawClipVolume () line:9931>
+  410 {   4}         +-XClearArea()
+  411 {   4}         +-GSetForeground() 
+                     | <int GSetForeground () line:2419> [see 174]
+  412 {   4}         +-GSetLineAttributes() 
+                     | <int GSetLineAttributes () line:2479> [see 181]
+  413 {   4}         +-GDrawRectangle() 
+                     | <int GDrawRectangle () line:2094> [see 212]
+  414 {   4}         \-GDrawLine() <int GDrawLine () line:1995> [see 187]
+  415 {   2}     +-drawQuitPanel() <void drawQuitPanel () line:6993>
+  416 {   3}       +-strlen()
+  417 {   3}       +-GSetForeground() 
+                   | <int GSetForeground () line:2419> [see 174]
+  418 {   3}       +-GDrawString() <int GDrawString () line:2181> [see 197]
+  419 {   3}       +-centerX() <int centerX () line:2557> [see 203]
+  420 {   3}       +-centerY() <int centerY () line:2571> [see 227]
+  421 {   3}       +-GDraw3DButtonOut() 
+                   | <int GDraw3DButtonOut () line:2125> [see 231]
+  422 {   3}       \-monoColor()
+  423 {   2}     +-drawSavePanel() <void drawSavePanel () line:7110>
+  424 {   3}     | +-GSetForeground() 
+                 | | <int GSetForeground () line:2419> [see 174]
+  425 {   3}     | +-GDraw3DButtonOut() 
+                 | | <int GDraw3DButtonOut () line:2125> [see 231]
+  426 {   3}     | +-strlen()
+  427 {   3}     | +-monoColor()
+  428 {   3}     | +-GDrawString() <int GDrawString () line:2181> [see 197]
+  429 {   3}     | +-centerX() <int centerX () line:2557> [see 203]
+  430 {   3}     | \-centerY() <int centerY () line:2571> [see 227]
+  431 {   2}     +-drawControlPanel() 
+                 | <void drawControlPanel () line:3835> [see 173]
+  432 {   2}     +-XFlush()
+  433 {   2}     +-XCheckTypedWindowEvent()
+  434 {   2}     +-XCheckMaskEvent()
+  435 {   2}     +-getPotValue() <mouseCoord getPotValue () line:5276>
+  436 {   2}     +-getLinearPotValue() 
+                 | <mouseCoord getLinearPotValue () line:5291>
+  437 {   2}     +-XQueryPointer()
+  438 {   2}     +-XUnmapWindow()
+  439 {   2}     +-putControlPanelSomewhere() 
+                 | <void putControlPanelSomewhere () line:4509> [see 169]
+  440 {   2}     +-writeControlMessage() 
+                 | <void writeControlMessage () line:3819> [see 252]
+  441 {   2}     +-XLookUpAssoc() <int *XLookUpAssoc () line:2736>
+  442 {   3}       \-hash_find()
+  443 {   2}     +-drawColorMap() <void drawColorMap () line:3740> [see 259]
+  444 {   2}     +-clearControlMessage() 
+                 | <void clearControlMessage () line:3808> [see 246]
+  445 {   2}     +-strcpy()
+  446 {   2}     +-drawLightingAxes() 
+                 | <void drawLightingAxes () line:4789> [see 336]
+  447 {   2}     +-drawLightTransArrow() 
+                 | <void drawLightTransArrow () line:4867> [see 331]
+  448 {   2}     +-inside()
+  449 {   2}     +-drawFrustrum() <void drawFrustrum () line:10064> [see 383]
+  450 {   2}     +-lessThan() <int lessThan () line:8813>
+  451 {   2}     +-greaterThan() <int greaterThan () line:8820>
+  452 {   2}     +-equal() <int equal () line:8835>
+  453 {   2}     +-drawClipXBut() <void drawClipXBut () line:9789> [see 357]
+  454 {   2}     +-drawClipVolume()
+                 |  <void drawClipVolume () line:9931> [see 409]
+  455 {   2}     +-drawClipYBut() <void drawClipYBut () line:9846> [see 369]
+  456 {   2}     +-drawClipZBut() <void drawClipZBut () line:9904> [see 376]
+  457 {   2}     +-GSetForeground() <int GSetForeground () line:2419> [see 174]
+  458 {   2}     +-monoColor()
+  459 {   2}     +-GDrawString() <int GDrawString () line:2181> [see 197]
+  460 {   2}     +-centerX() <int centerX () line:2557> [see 203]
+  461 {   2}     +-centerY() <int centerY () line:2571> [see 227]
+  462 {   2}     +-XClearArea()
+  463 {   2}     +-buttonAction() <void buttonAction () line:5298>
+  464 {   3}     | +-XUnmapWindow()
+  465 {   3}     | +-clearControlMessage()
+                 | |  <void clearControlMessage () line:3808> [see 246]
+  466 {   3}     | +-strcpy()
+  467 {   3}     | +-writeControlMessage()
+                 | |  <void writeControlMessage () line:3819> [see 252]
+  468 {   3}     | +-XChangeShade()
+  469 {   3}     | +-XShadeRectangle()
+  470 {   3}     | +-GSetForeground()
+                 | |  <int GSetForeground () line:2419> [see 174]
+  471 {   3}     | +-GDrawRectangle()
+                 | | <int GDrawRectangle () line:2094> [see 212]
+  472 {   3}     | +-XFillRectangle()
+  473 {   3}     | +-strlen()
+  474 {   3}     | +-monoColor()
+  475 {   3}     | +-GDrawImageString()
+                 | | <int GDrawImageString () line:1930> [see 220]
+  476 {   3}     | +-centerX() <int centerX () line:2557> [see 203]
+  477 {   3}     | +-centerY() <int centerY () line:2571> [see 227]
+  478 {   3}     | +-drawViewport()
+  479 {   3}     | +-XInitShades()
+  480 {   3}     | +-drawColorMap() <void drawColorMap () line:3740> [see 259]
+  481 {   3}     | +-writeTitle() <void writeTitle () line:8936> [see 276]
+  482 {   3}     | +-XMapWindow()
+  483 {   3}     | +-normalizeVector() <void normalizeVector () line:5204>
+  484 {   4}     |   \-sqrt()
+  485 {   3}     | +-equal() <int equal () line:8835> [see 452]
+  486 {   3}     | +-drawControlPanel()
+                 | | <void drawControlPanel () line:3835> [see 173]
+  487 {   3}     | +-PSInit() <int PSInit () line:2340>
+  488 {   4}     |   +-fprintf()
+  489 {   4}     |   +-sprintf()
+  490 {   4}     |   +-tmpnam()
+  491 {   4}     |   \-GdrawsSetDimension()
+                 |     <int GdrawsSetDimension () line:1896>
+  492 {   5}     |     +-fopen()
+  493 {   5}     |     +-XGetWindowAttributes()
+  494 {   5}     |     +-fprintf()
+  495 {   5}     |     \-fclose()
+  496 {   3}     | +-PSCreateFile() <int PSCreateFile () line:1827>
+  497 {   4}     |   +-fopen()
+  498 {   4}     |   +-fprintf()
+  499 {   4}     |   +-fclose()
+  500 {   4}     |   +-filecopy() <void filecopy () line:1820>
+  501 {   5}     |   | +-getc()
+  502 {   5}     |   | \-putc()
+  503 {   4}     |   \-unlink()
+  504 {   3}     | +-strcat()
+  505 {   3}     | +-XGetWindowAttributes()
+  506 {   3}     | +-write_pixmap_file()
+  507 {   3}     | \-fprintf()
+  508 {   2}     \-spadAction() <int spadAction () line:7989>
+  509 {   3}       +-close()
+  510 {   3}       +-readViewman() <int readViewman () line:7972> [see 62]
+  511 {   3}       +-refPt3D()
+  512 {   3}       +-scalePoint() <void scalePoint () line:7979>
+  513 {   3}       +-XUnmapWindow()
+  514 {   3}       +-putControlPanelSomewhere() 
+                   | <void putControlPanelSomewhere () line:4509> [see 169]
+  515 {   3}       +-drawControlPanel() 
+                   | <void drawControlPanel () line:3835> [see 173]
+  516 {   3}       +-drawColorMap() <void drawColorMap () line:3740> [see 259]
+  517 {   3}       +-check()
+  518 {   3}       +-write()
+  519 {   3}       +-goodbye() <void goodbye () line:8301> [see 288]
+  520 {   3}       +-XMoveWindow()
+  521 {   3}       +-XSync()
+  522 {   3}       +-XResizeWindow()
+  523 {   3}       +-normalizeVector() 
+                   | <void normalizeVector () line:5204> [see 483]
+  524 {   3}       +-drawLightingAxes() 
+                   | <void drawLightingAxes () line:4789> [see 336]
+  525 {   3}       +-drawLightTransArrow() 
+                   | <void drawLightTransArrow () line:4867> [see 331]
+  526 {   3}       +-writeTitle() <void writeTitle () line:8936> [see 276]
+  527 {   3}       +-writeControlTitle() 
+                   | <void writeControlTitle () line:3798> [see 193]
+  528 {   3}       +-XFlush()
+  529 {   3}       +-sprintf()
+  530 {   3}       +-writeViewport() <int writeViewport () line:10218>
+  531 {   4}       | +-XGetWindowAttributes()
+  532 {   4}       | +-sprintf()
+  533 {   4}       | +-system()
+  534 {   4}       | +-fprintf()
+  535 {   4}       | +-fopen()
+  536 {   4}       | +-perror()
+  537 {   4}       | +-refPt3D()
+  538 {   4}       | +-fclose()
+  539 {   4}       | +-XWriteBitmapFile()
+  540 {   4}       | +-write_pixmap_file()
+  541 {   4}       | +-XResizeWindow()
+  542 {   4}       | +-drawViewport()
+  543 {   4}       | +-writeTitle() <void writeTitle () line:8936> [see 276]
+  544 {   4}       | +-XInitShades()
+  545 {   4}       | +-PSInit() <int PSInit () line:2340> [see 487]
+  546 {   4}       | \-PSCreateFile() <int PSCreateFile () line:1827> [see 496]
+  547 {   3}       +-fprintf()
+  548 {   3}       +-strcpy()
+  549 {   3}       +-writeControlMessage() 
+                   | <void writeControlMessage () line:3819> [see 252]
+  550 {   3}       \-buttonAction() <void buttonAction () line:5298> [see 463]
+\end{verbatim}
 \section{Constants and Headers}
 \subsection{System includes}
 <<view3d>>=
diff --git a/changelog b/changelog
index 2d518ea..09c1d80 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20091125 tpd src/axiom-website/patches.html 20091125.06.tpd.patch
+20091125 tpd books/bookvol8 add call graph for view3d
 20091125 tpd src/axiom-website/patches.html 20091125.05.tpd.patch
 20091125 tpd books/bookvol7 add call graph for spadbuf
 20091125 tpd src/axiom-website/patches.html 20091125.04.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 3549aba..dadd814 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2282,5 +2282,7 @@ books/bookvol7 add call graph for htadd <br/>
 books/bookvol7 add call graph for hthits <br/>
 <a href="patches/20091125.05.tpd.patch">20091125.05.tpd.patch</a>
 books/bookvol7 add call graph for spadbuf <br/>
+<a href="patches/20091125.06.tpd.patch">20091125.06.tpd.patch</a>
+books/bookvol8 add call graph for view3d <br/>
  </body>
 </html>
