$18(Example II: Bounding boxes, cursors and pointers) $p1 One of the major components of the screen in an interactive graphics system is the representation of a pointing device and cursor operations, marking the areas occupied by the selected objects. $p1 In the example the pointer is implemented as a $22[Template](pointer) drawing node, which takes a bit-map representation of a shape (here a hand) in the memory and deposits it, with current colour, at the position indicated by the current working coordinates. Normally, it will be placed under $22[Colour](pointercolour) and $22[Move](mouseX,mouseY) nodes. Such constructs are usually placed as the last horizontal link within the window structure. It may appear on the very top of the graph, providing general pointing capability on the screen. Others may be linked within the applications windows, with appropriately zeroed and clipped mouse coordinates supplied as arguments. $b1 # $p1 A $22[Cursor](cursorpointer) node provides a nested declaration of a graph to be used for drawing cursors. Cursorpointer points at the top of the graph, which assumes a predeclared 4-element argument array with the format of a node bounding box information field. $p1 The evaluation process upon return to the node from the downwards evaluation updates the node bounding box information, being the cummulative effect of executing the node and the subordinate graph. This information is stored as dimensions relative to the working coordinates upon entry to the node. Having updated the bounding box information and upon seeing execution flag $22[Cursor] set to 1 the evaluation process calls the current cursor drawing graph with the environment in which the current argument array had been replaced by the node bounding box definition field. $p1 The construct allows to create individual cursors for various applications with manipulation of flags being the only cost of invoking them. Text strings can be underlined on their baseline by a small downwards $22[Move](0,-1), vertically composed with $22[Colour](cursorcolour) and two horizontally linked $22[Line,idxA](0,0) and $22[Line,idxA](2,0) nodes. To underline a string just below its lowest descendent it is enough to add a vertically composed $22[Move,idxB](0,1). Similarly, full background and framing cursors can be defined. $p1 Bounding box information is also used by the VLSI editor for joining of cells, where the $22[Move] positioning individual RAM cells picks up its arguments from the top node of the cell. Similarly, the positioning of the interface cells at the end of X iteration loop obtains its Y argument from the node on top of the loop. $p1 Variation in fonts is achieved through a nested $22[font](fontpointer) node, which declares a pointer to an array of 256 short integers being offsets to templates of individual characters within the font. $n